Click or drag to resize
SoTransformManip Class

Base class for all transform nodes with built-in 3D user interfaces.

Inheritance Hierarchy

Namespace: OIV.Inventor.Manips
Assembly: OIV.Inventor (in OIV.Inventor.dll) Version: 2024.1.1.0 (2024.1.1)
Syntax
public class SoTransformManip : SoTransform

The SoTransformManip type exposes the following members.

Constructors
  NameDescription
Public methodSoTransformManip

Constructor.

Top
Methods
  NameDescription
Public methodAffectsState

Returns true if a node has an effect on the state during traversal.

(Inherited from SoNode.)
Public methodCallback
Public methodCombineLeft

Convenience function that combines the effects of another transformation node into the current transformation stored in this node.

(Inherited from SoTransform.)
Public methodCombineRight

Convenience function that combines the effects of another transformation node into the current transformation stored in this node.

(Inherited from SoTransform.)
Public methodCopy
Calls Copy(false).
(Inherited from SoNode.)
Public methodCopy(Boolean)

Creates and returns an exact copy of the node.

(Inherited from SoNode.)
Public methodCopyFieldValues(SoFieldContainer)
Calls CopyFieldValues(fc, false).
(Inherited from SoFieldContainer.)
Public methodCopyFieldValues(SoFieldContainer, Boolean)

Copies the contents of fc's fields into this object's fields.

(Inherited from SoFieldContainer.)
Public methodDispose
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.)
Public methodDistribute
(Inherited from SoNode.)
Public methodDoAction
Public methodEnableNotify

Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false).

(Inherited from SoFieldContainer.)
Public methodEquals
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
Public methodFieldsAreEqual

Returns true if this object's fields are exactly equal to fc's fields.

(Inherited from SoFieldContainer.)
Public methodGet

Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string.

(Inherited from SoFieldContainer.)
Public methodGetAllFields

Returns a list of fields, including the eventIn's and eventOut's.

(Inherited from SoFieldContainer.)
Public methodGetAlternateRep

This method is called by actions to allow the node to provide an "alternate representation" when appropriate (typically depending on the action type).

(Inherited from SoNode.)
Public methodGetBoundingBox
Public methodGetDragger

Returns the dragger being used by this manipulator.

Public methodGetEventIn

Returns a the eventIn with the given name.

(Inherited from SoFieldContainer.)
Public methodGetEventOut

Returns the eventOut with the given name.

(Inherited from SoFieldContainer.)
Public methodGetField

Returns a the field of this object whose name is fieldName.

(Inherited from SoFieldContainer.)
Public methodGetFieldName

Returns the name of the given field in the fieldName argument.

(Inherited from SoFieldContainer.)
Public methodGetFields

Appends references to all of this object's fields to resultList, and returns the number of fields appended.

(Inherited from SoFieldContainer.)
Public methodGetHashCode
Overrides GetHashCode().
(Inherited from SoNetBase.)
Public methodGetMatrix
Public methodGetName

Returns the name of an instance.

(Inherited from SoBase.)
Public methodGetPrimitiveCount
(Inherited from SoTransform.)
Public methodGetRenderEngineMode

Returns the supported Render engine mode.

(Inherited from SoNode.)
Public methodGetRenderUnitID
(Inherited from SoNode.)
Public methodGetRotationSpaceMatrix

Returns composite matrix that transforms from object space to rotation space (the space after the scale and rotation).

(Inherited from SoTransform.)
Public methodGetScaleSpaceMatrix

Returns composite matrix that transforms from object space to scale space (the space after the scale).

(Inherited from SoTransform.)
Public methodGetStringName (Inherited from SoBase.)
Public methodGetTranslationSpaceMatrix

Returns composite matrix that transforms from object space to translation space (the space after scale, rotation, and translation).

(Inherited from SoTransform.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGLRender
Public methodGLRenderBelowPath
(Inherited from SoNode.)
Public methodGLRenderInPath
(Inherited from SoNode.)
Public methodGLRenderOffPath
(Inherited from SoNode.)
Public methodGrabEventsCleanup
(Inherited from SoNode.)
Public methodGrabEventsSetup
(Inherited from SoNode.)
Public methodHandleEvent
Public methodHasDefaultValues

Returns true if all of the object's fields have their default values.

(Inherited from SoFieldContainer.)
Public methodIsBoundingBoxIgnoring

This method is used by getBoundingBox action traversal to know if the current node must be traversed or not, ie the bounding should be ignored.

(Inherited from SoNode.)
Public methodIsNotifyEnabled

Notification is the process of telling interested objects that this object has changed.

(Inherited from SoFieldContainer.)
Public methodIsOverride

Returns the state of the override flag.

(Inherited from SoNode.)
Public methodIsSynchronizable

Gets the ScaleViz synchronizable state of this object.

(Inherited from SoBase.)
Public methodMultLeft

Convenience function that combines the effects of a matrix transformation into the current transformation stored in this node.

(Inherited from SoTransform.)
Public methodMultRight

Convenience function that combines the effects of a matrix transformation into the current transformation stored in this node.

(Inherited from SoTransform.)
Public methodPick
Public methodPointAt

Sets the node to translate the origin to the fromPoint and rotate the negative z-axis (0,0,-1) to lie on the vector from fromPoint to toPoint .

(Inherited from SoTransform.)
Public methodRayPick
(Inherited from SoNode.)
Public methodRecenter

Changes the center of the transformation to the given point without affecting the overall effect of the transformation.

(Inherited from SoTransform.)
Public methodReplaceManip

Replaces the tail of the path, which must be this manipulator, with the given OIV.Inventor.Nodes.SoTransform node.

Public methodReplaceNode

Replaces the tail of the path with this manipulator.

Public methodSearch
Public methodSet

Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.

(Inherited from SoFieldContainer.)
Public methodSetMatrix

Sets the fields in the node to implement the transformation represented by the given matrix.

(Inherited from SoTransform.)
Public methodSetName (Inherited from SoBase.)
Public methodSetOverride

Turns the override flag on or off.

(Inherited from SoNode.)
Public methodSetSynchronizable

Sets this to be a ScaleViz synchronizable object.

(Inherited from SoBase.)
Public methodSetToDefaults

Sets all fields in this object to their default values.

(Inherited from SoFieldContainer.)
Public methodToString
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.)
Public methodTouch

Marks an instance as modified, simulating a change to it.

(Inherited from SoNode.)
Public methodWrite
Top
Properties
  NameDescription
Public propertycenter

Origin for scale and rotation.

(Inherited from SoTransform.)
Public propertyIsDisposable
ISafeDisposable interface implementation.
(Inherited from SoDisposable.)
Public propertyrotation

Rotation specification.

(Inherited from SoTransform.)
Public propertyscaleFactor

Scale factors.

(Inherited from SoTransform.)
Public propertyscaleOrientation

Rotational orientation for scale.

(Inherited from SoTransform.)
Public propertytranslation

Translation vector.

(Inherited from SoTransform.)
Public propertyUserData
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.)
Top
Remarks

OIV.Inventor.Manips.SoTransformManip is the base class for all OIV.Inventor.Nodes.SoTransform nodes that have a built-in 3D user interface. Since it is derived from OIV.Inventor.Nodes.SoTransform, any changes to its fields result in the rotation, scaling, and/or translation of nodes that follow it in the scene graph.

Typically, you will want to replace a regular OIV.Inventor.Nodes.SoTransform with an OIV.Inventor.Manips.SoTransformManip (as when the user selects an object to be moved), or vice versa (as when the object is deselected, and the motion interface should go away). Use the OIV.Inventor.Manips.SoTransformManip.ReplaceNode(OIV.Inventor.SoPath) method to insert a manipulator into a scene graph, and the OIV.Inventor.Manips.SoTransformManip.ReplaceManip(OIV.Inventor.SoPath, OIV.Inventor.Nodes.SoTransform) method to remove it when done.

Every subclass of OIV.Inventor.Manips.SoTransformManip utilizes a dragger of some sort to provide a 3D interface. (This class does not have dragger; but all the subclasses do.) However a manipulator differs from a dragger; it influences other objects in the scene because, as an OIV.Inventor.Nodes.SoTransform, it alters the state. The fields values and movement of a dragger, on the other hand, affect only the dragger itself.

Each OIV.Inventor.Manips.SoTransformManip subclass utilizes its dragger by adding it as a hidden child. When an action is applied to the manipulator, such as rendering or handling events, the manipulator first traverses the dragger, and then the manipulator adds its transformation matrix to the state. When you click-drag-release over the manipulator, it passes these events down to the dragger, which moves as a result ("I can't <B> help </B> it, I'm a dragger!").

The manipulator maintains consistency between the fields of the dragger and its own fields. Let's say you use the mouse to rotate the dragger . Delegates insure that the rotation field of the manipulator will change by the same amount, resulting in the rotation of nodes which follow in the scene graph. Similarly, if you set any of the OIV.Inventor.Manips.SoTransformManip fields the manipulator will move the dragger accordingly. You can use this feature to impose constraints on a manipulator: If the user moves the manipulator so that a field value becomes too large, you can set the field back to your desired maximum, and the whole thing will move back to where you specified.

Since each OIV.Inventor.Manips.SoTransformManip uses a dragger to provide its interface, you will generally be told to look at the dragger's reference page for details of how it moves and what the different parts are for. The interface for the dragger and the manipulator will always be exactly the same. Usually, an OIV.Inventor.Manips.SoTransformManip will surround the objects that it influences (i.e., those that move along with it). This is because the manipulator turns on the surroundScale part of its dragger; so the dragger geometry expands to envelope the other objects (see the reference page for OIV.Inventor.Nodes.SoSurroundScale).

Because the dragger is a hidden child, you can see the dragger on screen and interact with it, but the dragger does not show up when you write the manipulator to file. Also, any OIV.Inventor.SoPath will end at the manipulator. (See the Actions section of this reference page for a complete description of when the dragger is traversed).

You can get this dragger from the manipulator using the OIV.Inventor.Manips.SoTransformManip.GetDragger() method. You will need to do this if you want to change the geometry of a manipulator, since the geometry actually belongs to the dragger.

FILE FORMAT/DEFAULT

TransformManip {
translation 0 0 0
rotation 0 0 1 0
scaleFactor 1 1 1
scaleOrientation 0 0 1 0
center 0 0 0
}

ACTION BEHAVIOR

OIV.Inventor.Actions.SoGLRenderAction, OIV.Inventor.Actions.SoCallbackAction, OIV.Inventor.Actions.SoGetBoundingBoxAction, OIV.Inventor.Actions.SoGetMatrixAction, OIV.Inventor.Actions.SoHandleEventAction, OIV.Inventor.Actions.SoRayPickAction First, traverses the dragger the way an OIV.Inventor.Nodes.SoGroup would. All draggers place themselves in space, but leave the current transformation unchanged when finished. Then the OIV.Inventor.Manips.SoTransformManip accumulates a transformation into the current transformation just like its base class, OIV.Inventor.Nodes.SoTransform.

OIV.Inventor.Actions.SoSearchAction Searches just like an OIV.Inventor.Nodes.SoTransform. Does not search the dragger, which is a hidden child.

OIV.Inventor.Actions.SoWriteAction Writes out just like an OIV.Inventor.Nodes.SoTransform. Does not write the dragger, which is a hidden child. If you really need to write valuable information about the dragger, such as customized geometry, you can retrieve the dragger with the OIV.Inventor.Manips.SoTransformManip.GetDragger() method and then write it out separately.

See Also
Inheritance Hierarchy
SystemObject
  OIV.InventorSoNetBase
    OIV.InventorSoDisposable
      OIV.Inventor.MiscSoBase
        OIV.Inventor.FieldsSoFieldContainer
          OIV.Inventor.NodesSoNode
            OIV.Inventor.NodesSoTransformation
              OIV.Inventor.NodesSoTransform
                OIV.Inventor.ManipsSoTransformManip
                  OIV.Inventor.ManipsSoCenterballManip
                  OIV.Inventor.ManipsSoHandleBoxManip
                  OIV.Inventor.ManipsSoJackManip
                  OIV.Inventor.ManipsSoTabBoxManip
                  OIV.Inventor.ManipsSoTrackballManip
                  OIV.Inventor.ManipsSoTransformBoxManip
                  OIV.Inventor.ManipsSoTransformerManip