1SoTransformBoxDragger(3IV)() SoTransformBoxDragger(3IV)()
2
3
4
6 SoTransformBoxDragger — box-like object you scale, rotate, and trans‐
7 late by dragging with the mouse
8
10 SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit >
11 SoDragger > SoTransformBoxDragger
12
14 #include <Inventor/draggers/SoTransformBoxDragger.h>
15
16 Fields from class SoTransformBoxDragger:
17
18 SoSFRotation rotation
19 SoSFVec3f translation
20 SoSFVec3f scaleFactor
21
22 Fields from class SoDragger:
23
24 SoSFBool isActive
25
26 Fields from class SoInteractionKit:
27
28 SoSFEnum renderCaching
29 SoSFEnum boundingBoxCaching
30 SoSFEnum renderCulling
31 SoSFEnum pickCulling
32
33 Parts from class SoBaseKit:
34
35 (SoNodeKitListPart) callbackList
36
37 Methods from class SoTransformBoxDragger:
38
39 SoTransformBoxDragger()
40 static const SoNodekitCatalog *
41 getClassNodekitCatalog() const
42 static SoType getClassTypeId()
43
44 Methods from class SoDragger:
45
46 void addStartCallback(SoDraggerCB *f, void *userData =
47 NULL)
48 void removeStartCallback(SoDraggerCB *f, void *userData =
49 NULL)
50 void addMotionCallback(SoDraggerCB *f, void *userData =
51 NULL)
52 void removeMotionCallback(SoDraggerCB *f, void *userData =
53 NULL)
54 void addFinishCallback(SoDraggerCB *f, void *userData =
55 NULL)
56 void removeFinishCallback(SoDraggerCB *f, void *userData =
57 NULL)
58 void addValueChangedCallback(SoDraggerCB *f, void *user‐
59 Data = NULL)
60 void removeValueChangedCallback(SoDraggerCB *f, void
61 *userData = NULL)
62 SbBool enableValueChangedCallbacks()
63 void setMinGesture(int pixels)
64 int getMinGesture() const
65 static void setMinScale(float newMinScale)
66 static float getMinScale()
67
68 Methods from class SoInteractionKit:
69
70 virtual SbBool setPartAsPath(const SbName &partName, SoPath *surro‐
71 gatePath )
72
73 Methods from class SoBaseKit:
74
75 virtual const SoNodekitCatalog *
76 getNodekitCatalog() const
77 virtual SoNode * getPart(const SbName &partName, SbBool
78 makeIfNeeded)
79 SbString getPartString(const SoBase *part)
80 virtual SoNodeKitPath * createPathToPart(const SbName &partName, SbBool
81 makeIfNeeded, const SoPath *pathToExtend =
82 NULL)
83 virtual SbBool setPart(const SbName &partName, SoNode *newPart)
84 SbBool set(char *partName, char *parameters)
85 SbBool set(char *nameValuePairs)
86 static SbBool isSearchingChildren()
87 static void setSearchingChildren(SbBool newVal)
88
89 Methods from class SoNode:
90
91 void setOverride(SbBool state)
92 SbBool isOverride() const
93 SoNode * copy(SbBool copyConnections = FALSE) const
94 virtual SbBool affectsState() const
95 static SoNode * getByName(const SbName &name)
96 static int getByName(const SbName &name, SoNodeList &list)
97
98 Methods from class SoFieldContainer:
99
100 void setToDefaults()
101 SbBool hasDefaultValues() const
102 SbBool fieldsAreEqual(const SoFieldContainer *fc) const
103 void copyFieldValues(const SoFieldContainer *fc, SbBool
104 copyConnections = FALSE)
105 void get(SbString &fieldDataString)
106 virtual int getFields(SoFieldList &resultList) const
107 virtual SoField * getField(const SbName &fieldName) const
108 SbBool getFieldName(const SoField *field, SbName &fieldName)
109 const
110 SbBool isNotifyEnabled() const
111 SbBool enableNotify(SbBool flag)
112
113 Methods from class SoBase:
114
115 void ref()
116 void unref() const
117 void unrefNoDelete() const
118 void touch()
119 virtual SoType getTypeId() const
120 SbBool isOfType(SoType type) const
121 virtual void setName(const SbName &name)
122 virtual SbName getName() const
123
124 Macros from class SoBaseKit:
125
126 SO_GET_PART(kit, partName, partClass)
127 SO_CHECK_PART(kit, partName, partClass)
128
129
131 SoTransformBoxDragger is a composite dragger shaped like a box with
132 small cubes at the corners. Click and drag any of these cubes to scale
133 the box uniformly. Drag any edge of the box to rotate the whole dragger
134 about its center, along an axis parallel to that edge. Pick any face of
135 the box for 2D translation in the plane of that face.
136
137 Although the box looks just about like a wireframe cube, it is composed
138 of many different simple draggers arranged in a composite assembly.
139 When one part is dragged, the transformBox makes sure they all move
140 together. Each of the parts of the box is a different dragger with the
141 default geometry changed. The faces of the box are SoTranslate2Drag‐
142 gers, the edges are SoRotateCylindricalDraggers, and the cubes are an
143 SoScaleUniformDragger. Drag them and the dragger will update its trans‐
144 lation, rotation and scaleFactor fields to reflect the changes. As with
145 all draggers, if you change the fields the dragger will move to match
146 the new settings.
147
148 Remember: This is not an SoTransform!. If you want to move other
149 objects with this dragger, you can either:
150
151 [a] Use an SoTransformBoxManip, which is subclassed from SoTransform.
152 It creates one of these draggers and uses it as the interface to change
153 its fields. (see the SoTransformBoxManip man page).
154
155 [b] Use field-to-field connections to connect the fields of this drag‐
156 ger to those of any SoTransformation node.
157
158 You can change the parts in any instance of this dragger using set‐
159 Part(). The default part geometries are defined as resources for this
160 SoTransformBoxDragger class. They are detailed in the Dragger Resources
161 section of the online reference page for this class. You can make your
162 program use different default resources for the parts by copying the
163 file /usr/share/data/draggerDefaults/transformBoxDragger.iv into your
164 own directory, editing the file, and then setting the environment vari‐
165 able SO_DRAGGER_DIR to be a path to that directory.
166
168 SoSFRotation rotation
169 Orientation of the dragger.
170
171 SoSFVec3f translation
172 Position of the dragger.
173
174 SoSFVec3f scaleFactor
175 Scale of the dragger.
176
177
179 SoTransformBoxDragger()
180 Constructor.
181
182 static const SoNodekitCatalog *
183 getClassNodekitCatalog() const
184 Returns an SoNodekitCatalog for this class
185
186 static SoType getClassTypeId()
187 Returns type identifier for this class.
188
189
191 ┌──────────────────────────────────────────────────────────────────┐
192 │ All parts │
193 │ NULL by │
194 │Part Name Part Type Default Type Default │
195 │ │
196 │callbackList NodeKitListPart -- yes │
197 │surroundScale SurroundScale -- yes │
198 │antiSquish AntiSquish -- no │
199 │scaler ScaleUniformDragger -- yes │
200 │rotator1 RotateCylindricalDragger -- yes │
201 │rotator2 RotateCylindricalDragger -- yes │
202 │rotator3 RotateCylindricalDragger -- yes │
203 │translator1 Translate2Dragger -- yes │
204 │translator2 Translate2Dragger -- yes │
205 │translator3 Translate2Dragger -- yes │
206 │translator4 Translate2Dragger -- yes │
207 │translator5 Translate2Dragger -- yes │
208 │translator6 Translate2Dragger -- yes │
209 │ │
210 └──────────────────────────────────────────────────────────────────┘
211 ┌───────────────────────────────────────────────────────────────┐
212 │ Extra information for list parts from above table │
213 │ │
214 │Part Name Container Type Permissible Types │
215 │ │
216 │callbackList Separator Callback, EventCallback │
217 │ │
218 └───────────────────────────────────────────────────────────────┘
220 .in 0n+.5i
221 Resource: transformBoxScalerScaler
222 .in 0n+.5i
223 Part: scaler.scaler
224 Appearance: Eight small white cubes at the corners of the box
225 Description: Picking this initiates uniform 3D scaling of the drag‐
226 ger.
227
228 .in 0n+.5i
229 Resource: transformBoxScalerScalerActive
230 .in 0n+.5i
231 Part: scaler.scalerActive
232 Appearance: Yellow version of the regular scaler part
233 Description: Displayed while the dragger is being scaled.
234
235 .in 0n+.5i
236 Resource: transformBoxScalerFeedback
237 .in 0n+.5i
238 Part: scaler.feedback
239 Appearance: Empty separator
240 Description: Removes any feedback geometry created in the construc‐
241 tor of the SoScaleUniformDragger.
242
243 .in 0n+.5i
244 Resource: transformBoxScalerFeedbackActive
245 .in 0n+.5i
246 Part: scaler.feedbackActive
247 Appearance: Empty separator
248 Description: Removes any feedbackActive geometry created in the con‐
249 structor of the SoScaleUniformDragger.
250
251 .in 0n+.5i
252 Resource: transformBoxRotatorRotator
253 .in 0n+.5i
254 Parts: rotator1.rotator
255 rotator2.rotator
256 rotator3.rotator
257 Appearance: Four white lines along the edges of the box
258 Description: Picking this begins rotational dragging. In each of the
259 three rotateCylindrical draggers, the lines of the
260 rotator part are oriented parallel to the axis of
261 rotation.
262
263 .in 0n+.5i
264 Resource: transformBoxRotatorRotatorActive
265 .in 0n+.5i
266 Parts: rotator1.rotatorActive
267 rotator2.rotatorActive
268 rotator3.rotatorActive
269 Appearance: Four yellow lines along the edges of the box
270 Description: Displayed while the dragger is being rotated
271
272 .in 0n+.5i
273 Resource: transformBoxRotatorFeedback
274 .in 0n+.5i
275 Parts: rotator1.feedback
276 rotator2.feedback
277 rotator3.feedback
278 Appearance: Empty separator
279 Description: Removes any feedback geometry created in the construc‐
280 tor of the SoRotateCylindricalDragger.
281
282 .in 0n+.5i
283 Resource: transformBoxRotatorFeedbackActive
284 .in 0n+.5i
285 Parts: rotator1.feedbackActive
286 rotator2.feedbackActive
287 rotator3.feedbackActive
288 Appearance: Thin purple line through center of box
289 Description: Displayed to show axis of rotation during rotational
290 dragging.
291
292 .in 0n+.5i
293 Resource: transformBoxTranslatorTranslator
294 .in 0n+.5i
295 Parts: translator1.translator
296 translator2.translator
297 translator3.translator
298 translator4.translator
299 translator5.translator
300 translator6.translator
301 Appearance: Invisible but pickable square surface
302 Description: Picking these begins 2-D translational dragging within
303 the plane of one of the sides of the box. The invisi‐
304 ble squares of the six translate2Draggers are
305 arranged to form the sides of the box. The squares
306 are easy to discern, although rendered as invisible;
307 they are bounded by the lines of the rotational drag‐
308 ger parts.
309
310 .in 0n+.5i
311 Resource: transformBoxTranslatorTranslatorActive
312 .in 0n+.5i
313 Parts: translator1.translatorActive
314 translator2.translatorActive
315 translator3.translatorActive
316 translator4.translatorActive
317 translator5.translatorActive
318 translator6.translatorActive
319 Appearance: Invisible square surface
320 Description: Shown during 2-D translational dragging.
321
322 .in 0n+.5i
323 Resource: transformBoxTranslatorXAxisFeedback
324 .in 0n+.5i
325 Parts: translator1.xAxisFeedback
326 translator2.xAxisFeedback
327 translator3.xAxisFeedback
328 translator4.xAxisFeedback
329 translator5.xAxisFeedback
330 translator6.xAxisFeedback
331 Appearance: Short thin purple line
332 Description: Only shown if dragger is moving and the axis is a per‐
333 missable direction of motion. When pressing <shift>,
334 motion is constrained, and this is displayed only if
335 the primary motion is in the X direction.
336
337 .in 0n+.5i
338 Resource: transformBoxTranslatorYAxisFeedback
339 .in 0n+.5i
340 Parts: translator1.yAxisFeedback
341 translator2.yAxisFeedback
342 translator3.yAxisFeedback
343 translator4.yAxisFeedback
344 translator5.yAxisFeedback
345 translator6.yAxisFeedback
346 Appearance: Short thin purple line
347 Description: Only shown if dragger is moving and the axis is a per‐
348 missable direction of motion. When pressing <shift>,
349 motion is constrained, and this is displayed only if
350 the primary motion is in the Y direction.
351
352
354 TransformBoxDragger {
355 renderCaching AUTO
356 boundingBoxCaching AUTO
357 renderCulling AUTO
358 pickCulling AUTO
359 isActive FALSE
360 rotation 0 0 1 0
361 translation 0 0 0
362 scaleFactor 1 1 1
363 callbackList NULL
364 surroundScale NULL
365 antiSquish AntiSquish {
366 sizing BIGGEST_DIMENSION }
367
368 scaler ScaleUniformDragger {
369 }
370
371 rotator1 RotateCylindricalDragger {
372 }
373
374 rotator2 RotateCylindricalDragger {
375 }
376
377 rotator3 RotateCylindricalDragger {
378 }
379
380 translator1 Translate2Dragger {
381 }
382
383 translator2 Translate2Dragger {
384 }
385
386 translator3 Translate2Dragger {
387 }
388
389 translator4 Translate2Dragger {
390 }
391
392 translator5 Translate2Dragger {
393 }
394
395 translator6 Translate2Dragger {
396 }
397
398 scaler.scaler <transformBoxScalerScaler resource>
399 scaler.scalerActive <transformBoxScalerScalerActive resource>
400 scaler.feedback <transformBoxScalerFeedback resource>
401 scaler.feedbackActive <transformBoxScalerFeedbackActive resource>
402 rotator1.rotator <transformBoxRotatorRotator resource>
403 rotator2.rotator <transformBoxRotatorRotator resource>
404 rotator3.rotator <transformBoxRotatorRotator resource>
405 rotator1.rotatorActive <transformBoxRotatorRotatorActive resource>
406 rotator2.rotatorActive <transformBoxRotatorRotatorActive resource>
407 rotator3.rotatorActive <transformBoxRotatorRotatorActive resource>
408 rotator1.feedback <transformBoxRotatorFeedback resource>
409 rotator2.feedback <transformBoxRotatorFeedback resource>
410 rotator3.feedback <transformBoxRotatorFeedback resource>
411 rotator1.feedbackActive <transformBoxRotatorFeedbackActive resource>
412 rotator2.feedbackActive <transformBoxRotatorFeedbackActive resource>
413 rotator3.feedbackActive <transformBoxRotatorFeedbackActive resource>
414 translator1.translator <transformBoxTranslatorTranslator resource>
415 translator2.translator <transformBoxTranslatorTranslator resource>
416 translator3.translator <transformBoxTranslatorTranslator resource>
417 translator4.translator <transformBoxTranslatorTranslator resource>
418 translator5.translator <transformBoxTranslatorTranslator resource>
419 translator6.translator <transformBoxTranslatorTranslator resource>
420 translator1.translatorActive <transformBoxTranslatorTranslatorActive resource>
421 translator2.translatorActive <transformBoxTranslatorTranslatorActive resource>
422 translator3.translatorActive <transformBoxTranslatorTranslatorActive resource>
423 translator4.translatorActive <transformBoxTranslatorTranslatorActive resource>
424 translator5.translatorActive <transformBoxTranslatorTranslatorActive resource>
425 translator6.translatorActive <transformBoxTranslatorTranslatorActive resource>
426 translator1.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
427 translator2.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
428 translator3.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
429 translator4.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
430 translator5.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
431 translator6.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
432 translator1.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
433 translator2.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
434 translator3.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
435 translator4.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
436 translator5.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
437 translator6.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
438 }
439
441 SoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLight‐
442 Dragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger,
443 SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger,
444 SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger,
445 SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger,
446 SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformer‐
447 Dragger, SoTranslate1Dragger, SoTranslate2Dragger
448
449
450
451
452 SoTransformBoxDragger(3IV)()