---
name: "SoScaleUniformDragger"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoScaleUniformDragger/3iv"
---

# SoScaleUniformDragger(3iv)

object you can scale uniformly in 3D by dragging with the mouse

## NAME

SoScaleUniformDragger — object you can scale uniformly in 3D by dragging with the mouse

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoBaseKit \> SoInteractionKit \> SoDragger \> SoScaleUniformDragger

## SYNOPSIS

**#include \<Inventor/draggers/SoScaleUniformDragger.h\>**

Fields from class SoDragger:

**SoSFBool**	**isActive**

Fields from class SoInteractionKit:

**SoSFEnum**	**renderCaching**\
 **SoSFEnum**	**boundingBoxCaching**\
 **SoSFEnum**	**renderCulling**\
 **SoSFEnum**	**pickCulling**

Parts from class SoBaseKit:

**(SoNodeKitListPart)**	**callbackList**

Methods from class SoDragger:

**void**	**addStartCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeStartCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**addMotionCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeMotionCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**addFinishCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeFinishCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**addValueChangedCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeValueChangedCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **SbBool**	**enableValueChangedCallbacks()**\
 **void**	**setMinGesture(int pixels)**\
 **int**	**getMinGesture() const**\
 **static void**	**setMinScale(float newMinScale)**\
 **static float**	**getMinScale()**\
 **static const SoNodekitCatalog \***\
 	**getClassNodekitCatalog() const**\
 **static SoType**	**getClassTypeId()**

Methods from class SoInteractionKit:

**virtual SbBool**	**setPartAsPath(const SbName &partName, SoPath \*surrogatePath )**

Methods from class SoBaseKit:

**virtual const SoNodekitCatalog \***\
 	**getNodekitCatalog() const**\
 **virtual SoNode \***	**getPart(const SbName &partName, SbBool makeIfNeeded)**\
 **SbString**	**getPartString(const SoBase \*part)**\
 **virtual SoNodeKitPath \***	**createPathToPart(const SbName &partName, SbBool makeIfNeeded, const SoPath \*pathToExtend = NULL)**\
 **virtual SbBool**	**setPart(const SbName &partName, SoNode \*newPart)**\
 **SbBool**	**set(char \*partName, char \*parameters)**\
 **SbBool**	**set(char \*nameValuePairs)**\
 **static SbBool**	**isSearchingChildren()**\
 **static void**	**setSearchingChildren(SbBool newVal)**

Methods from class SoNode:

**void**	**setOverride(SbBool state)**\
 **SbBool**	**isOverride() const**\
 **SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 **virtual SbBool**	**affectsState() const**\
 **static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

Macros from class SoBaseKit:

**SO\_GET\_PART(kit, partName, partClass)**

**SO\_CHECK\_PART(kit, partName, partClass)**

## DESCRIPTION

**SoScaleUniformDragger** is a simple dragger that scales uniformly in all 3 dimensions when dragged with the mouse. The local space is determined by its location in the scene graph. Transformation nodes placed before it will affect both the dragger and the plane of motion.

This node has a **scaleFactor** field which always reflects its size in local space. If you set the field, the dragger will change accordingly. You can also connect fields of other nodes or engines from this one to make them follow the dragger's motion.

This dragger contains four parts, *scaler*, *scalerActive*, *feedback*, and *feedbackActive*.

Each of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. You can change the parts in any instance of this dragger using **setPart()**.

You can make your program use different default resources for the parts by copying the file **/usr/share/data/draggerDefaults/scaleUniformDragger.iv** into your own directory, editing the file, and then setting the environment variable **SO\_DRAGGER\_DIR** to be a path to that directory.

## CATALOG PARTS

| | | | |
| --- | --- | --- | --- |
| **All parts** |
|  |  |  | **NULL by** |
| **Part Name** | **Part Type** | **Default Type** | **Default** |
|  |
| callbackList | NodeKitListPart | -- | yes |
| scaler | Separator | -- | yes |
| scalerActive | Separator | -- | yes |
| feedback | Separator | -- | yes |
| feedbackActive | Separator | -- | yes |
|  |

| | | |
| --- | --- | --- |
| **Extra information for list parts from above table** |
| **Part Name** | **Container Type** | **Permissible Types** |
|  |
| callbackList | Separator | Callback, EventCallback |
|  |

## DRAGGER RESOURCES

.in 0n+.5i Resource:	**scaleUniformScaler**\
 .in 0n+.5i Part:	scaler\
 Appearance:	8 small white cubes at the corners of a larger 2x2x2 cube.\
 Description:	picking this initiates the scaling

.in 0n+.5i Resource:	**scaleUniformScalerActive**\
 .in 0n+.5i Part:	scalerActive\
 Appearance:	yellow version of scaler, but with extra yellow box connecting corners\
 Description:	displayed instead of scaler while in motion

.in 0n+.5i Resource:	**scaleUniformFeedback**\
 .in 0n+.5i Part:	feedback\
 Appearance:	thin purple 3-D crosshair\
 Description:	shows center of scale when still

.in 0n+.5i Resource:	**scaleUniformFeedbackActive**\
 .in 0n+.5i Part:	feedbackActive\
 Appearance:	thin, slightly brighter purple 3-D crosshair\
 Description:	shows center of scale while in motion

## FILE FORMAT/DEFAULTS

```
ScaleUniformDragger {
renderCaching	AUTO
boundingBoxCaching	AUTO
renderCulling	AUTO
pickCulling	AUTO
isActive	FALSE
scaleFactor	1 1 1
callbackList	NULL
scaler	<scaleUniformScaler resource>
scalerActive	<scaleUniformScalerActive resource>
feedback	<scaleUniformFeedback resource>
feedbackActive	<scaleUniformFeedbackActive resource>
}
```

## SEE ALSO

**SoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger,** **SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger,** **SoTranslate1Dragger, SoTranslate2Dragger**
