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

# SoUnits(3iv)

node that scales to convert units of length

## NAME

SoUnits — node that scales to convert units of length

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoTransformation \> SoUnits

## SYNOPSIS

**#include \<Inventor/nodes/SoUnits.h\>**

**enum Units {** **SoUnits::METERS**

**SoUnits::CENTIMETERS**

**SoUnits::MILLIMETERS**

**SoUnits::MICROMETERS**

**SoUnits::MICRONS**

**SoUnits::NANOMETERS**

**SoUnits::ANGSTROMS**

**SoUnits::KILOMETERS**

**SoUnits::FEET**

**SoUnits::INCHES**

**SoUnits::POINTS**

**SoUnits::YARDS**

**SoUnits::MILES**

**SoUnits::NAUTICAL\_MILES**

**}**

Fields from class SoUnits:

**SoSFEnum**	**units**

Methods from class SoUnits:

	**SoUnits()**\
 **static SoType**	**getClassTypeId()**

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)**\
 **SbBool**	**set(const char \*fieldDataString)**\
 **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**

## DESCRIPTION

**This node defines a uniform 3D scale about the origin relative to the previously defined units. The default units for all data are meters. Adding a units node with the value INCHES** will have the same effect as adding an **SoScale** node with the **scaleFactor** of (.0254, .0254, .0254). Any subsequent **SoUnits** node will take the previous units into account. When building a composite object out of a bunch of pieces, it would be a good practice to add an **SoUnits** node at the beginning of each of the pieces, under an **SoSeparator** node, to make sure all the pieces fit together with the same scale.

## FIELDS

**SoSFEnum**	**units**\
 Defines the current unit.

## METHODS

	**SoUnits()**\
 Creates a unit conversion node with default settings.

**static SoType**	**getClassTypeId()**\
 Returns type identifier for this class.

## ACTION BEHAVIOR

**SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction**\
 Accumulates the scale that is the ratio of the size from the previous unit to the current unit into the current transformation.

**SoGetMatrixAction**\
 Returns the matrix corresponding to the units scaling.

## FILE FORMAT/DEFAULTS

```
Units {
units	METERS
}
```

## SEE ALSO

**SoScale, SoTransform**
