MFnDagNode Class Reference

#include <MFnDagNode.h>

Class Description

DAG Node Function Set.

Provides methods for attaching Function Sets to, querying, and adding children to DAG Nodes. Particularly useful when used in conjunction with the DAG Iterator class (MItDag).

The MFnDagNode function set is used to query and set the attributes of nodes in the DAG (Directed Acyclic Graph). The DAG is a graph that describes the hierarchy of the objects in the model. At each level of the hierarchy there is a four by four transformation matrix that affects all of the objects beneath it in the DAG.

In the DAG, geometry objects (also known as shapes) do not have transformation information associated with them. Only transform nodes have actual transform matrices (see MFnTransform).

Each node that exists in the DAG is also a dependency node that exists in the dependency graph. This makes it possible to control the attributes of a DAG node based on calculations performed by dependency nodes.

There are two ways to specify a DAG node in Maya. The first is to use an MObject handle, which acts as a pointer to a specific node in the DAG. Given only an MObject, it is not possible to do world space operations on a DAG node because there may be more than one path through the DAG to any given node. In other words, it is not possible to identify a particular instance only given an MObject.

In many cases it is preferable to use a DAG path (MDagPath) to specify a DAG node. A DAG path always refers to a specific instance of an object. This makes it possible to perform unambiguous world space transformations.

It is also possible to iterate over the nodes in the DAG using a DAG iterator (MItDag).

+ Examples:
+ Inheritance diagram for MFnDagNode:

Public Types

enum  { kNextPos = 0xff }
 Anonymous enum to store constant values. More...
 
enum  MObjectColorType { kUseDefaultColor = 0, kUseIndexColor, kUseRGBColor }
 Enum to set how an object is colored. More...
 
- Public Types inherited from MFnDependencyNode
enum  MAttrClass { kLocalDynamicAttr = 1, kNormalAttr, kExtensionAttr, kInvalidAttr }
 Specifies the scope of the attribute. More...
 
enum  MdgTimerState { kTimerOff, kTimerOn, kTimerUninitialized, kTimerInvalidState }
 Possible states for the node's timer. More...
 
enum  MdgTimerMetric {
  kTimerMetric_callback, kTimerMetric_compute, kTimerMetric_dirty, kTimerMetric_draw,
  kTimerMetric_fetch, kTimerMetric_callbackViaAPI, kTimerMetric_callbackNotViaAPI, kTimerMetric_computeDuringCallback,
  kTimerMetric_computeNotDuringCallback, kTimerMetrics
}
 The different timer metrics which can be queried. More...
 
enum  MdgTimerType { kTimerType_self, kTimerType_inclusive, kTimerType_count, kTimerTypes }
 The types of timers which can be queried. More...
 

Public Member Functions

virtual MFn::Type type () const
 Function set type. More...
 
virtual ~MFnDagNode ()
 Destructor. More...
 
 MFnDagNode ()
 Class Constructor. More...
 
 MFnDagNode (MObject &object, MStatus *ret=NULL)
 This method is not available in Python. More...
 
 MFnDagNode (const MDagPath &object, MStatus *ret=NULL)
 Class Constructor. More...
 
MObject create (const MTypeId &typeId, MObject &parent=MObject::kNullObj, MStatus *ReturnStatus=NULL)
 Creates a new DAG node with the given type tag. More...
 
MObject create (const MTypeId &typeId, const MString &name, MObject &parent=MObject::kNullObj, MStatus *ReturnStatus=NULL)
 Creates a new DAG node with the given type tag. More...
 
MObject create (const MString &type, MObject &parent=MObject::kNullObj, MStatus *ReturnStatus=NULL)
 Creates a new DAG node with the given type tag. More...
 
MObject create (const MString &type, const MString &name, MObject &parent=MObject::kNullObj, MStatus *ReturnStatus=NULL)
 Creates a new DAG node with the given type tag. More...
 
unsigned int parentCount (MStatus *ReturnStatus=NULL) const
 Determines the number of parent Nodes of the Node. More...
 
MObject parent (unsigned int i, MStatus *ReturnStatus=NULL) const
 Queries the DAG Node attached to the Function Set for the parent Node corresponding to the given index. More...
 
MStatus addChild (MObject &child, unsigned int index=kNextPos, bool keepExistingParents=false)
 Makes the given DAG Node a child of the DAG Node to which this instance of the Function Set is attached. More...
 
MStatus removeChild (MObject &child)
 Removes the given DAG Node from the parent. More...
 
MStatus removeChildAt (unsigned int index)
 Removes the child at the given index from the parent. More...
 
unsigned int childCount (MStatus *ReturnStatus=NULL) const
 Determines the number of child Nodes of the Node. More...
 
MObject child (unsigned int i, MStatus *ReturnStatus=NULL) const
 Queries the DAG Node attached to the Function Set for the child Node corresponding to the given index. More...
 
MObject dagRoot (MStatus *ReturnStatus=NULL)
 Determines the root of the first DAG Path to the DAG Node attached to the Function Set. More...
 
bool hasParent (const MObject &node, MStatus *ReturnStatus=NULL) const
 Determines whether or not the given Node is a parent of the DAG Node attached to the Function Set. More...
 
bool hasChild (const MObject &node, MStatus *ReturnStatus=NULL) const
 Determines whether or not the given Node is a child of the DAG Node attached to the Function Set. More...
 
bool isChildOf (const MObject &node, MStatus *ReturnStatus=NULL) const
 Determines whether or not the DAG Node attached to the Function Set is a child of the given node. More...
 
bool isParentOf (const MObject &node, MStatus *ReturnStatus=NULL) const
 Determines whether or not the DAG Node attached to the Function Set is a parent of the given node. More...
 
bool inUnderWorld (MStatus *ReturnStatus=NULL) const
 Determines whether or not the DAG Node is an underworld node. More...
 
bool inModel (MStatus *ReturnStatus=NULL) const
 Determines whether or not the DAG Node is in the model. More...
 
bool isInstanceable (MStatus *ReturnStatus=NULL) const
 Returns true if the DAG node can be instanced, and false otherwise. More...
 
MStatus setInstanceable (const bool how)
 Sets whether or not the DAG node is instanceable. More...
 
bool isInstanced (bool indirect=true, MStatus *ReturnStatus=NULL) const
 Determines whether the DAG Node attached to the Function Set is directly or indirectly instanced. More...
 
bool isInstancedAttribute (const MObject &attr, MStatus *ReturnStatus=NULL) const
 Returns true if the specified attribute is instanced. More...
 
unsigned int instanceCount (bool total, MStatus *ReturnStatus=NULL) const
 Determines the number of times the Node attached to the Function Set is instanced. More...
 
MObject duplicate (bool instance=false, bool instanceLeaf=false, MStatus *ReturnStatus=NULL) const
 This method duplicates the DAG hierarchy rooted at the current node. More...
 
MStatus getPath (MDagPath &path) const
 Returns a DAG Path to the DAG Node attached to the Function Set. More...
 
MStatus getAllPaths (MDagPathArray &paths) const
 Determines all DAG Paths to the DAG Node attached to the Function Set. More...
 
MString fullPathName (MStatus *ReturnStatus=NULL) const
 Return a string representing the full path from the root of the dag to this object. More...
 
MString partialPathName (MStatus *ReturnStatus=NULL) const
 Return a string representing the partial path from the root of the dag to this object. More...
 
MMatrix transformationMatrix (MStatus *ReturnStatus=NULL) const
 Returns the object space transformation matrix for this DAG node. More...
 
bool isIntermediateObject (MStatus *ReturnStatus=NULL) const
 Returns true if this object is an intermediate in a geometry calculation. More...
 
MStatus setIntermediateObject (bool isIntermediate)
 Sets whether this object is an intermediate in a geometry calculation. More...
 
int objectColor (MStatus *ReturnStatus=NULL) const
 This method is obsolete. More...
 
MStatus setObjectColor (int color)
 Sets the index for the current user defined inactive color used by the node. More...
 
bool usingObjectColor (MStatus *ReturnStatus=NULL) const
 
MStatus setUseObjectColor (bool useObjectColor)
 
MObjectColorType objectColorType (MStatus *ReturnStatus=NULL) const
 Determines whether or not the user defined inactive color will be used for the node, or whether the default inactive color will be used. More...
 
MStatus setObjectColorType (MObjectColorType type)
 Sets whether or not the user defined inactive object color will be used. More...
 
MStatus setObjectColor (const MColor &color)
 Sets the color value for the current user defined inactive color used by the node. More...
 
MColor objectColorRGB (MStatus *ReturnStatus=NULL) const
 Determines the RGB color for the current user defined inactive color used by the node. More...
 
int objectColorIndex (MStatus *ReturnStatus=NULL) const
 Determines the index for the current user defined inactive color used by the node. More...
 
MColor hiliteColor (MStatus *ReturnStatus=NULL) const
 Determines the current hilite color used by the node. More...
 
bool usingHiliteColor (MStatus *ReturnStatus=NULL) const
 Determines whether or not the hilite color will be used for the node. More...
 
MColor dormantColor (MStatus *ReturnStatus=NULL) const
 Determines the dormant color used by this node. More...
 
MColor activeColor (MStatus *ReturnStatus=NULL) const
 Determines the active color used by this node. More...
 
bool drawOverrideEnabled (MStatus *ReturnStatus=NULL) const
 Determines whether or not draw override is turned on for this node. More...
 
bool drawOverrideIsReference (MStatus *ReturnStatus=NULL) const
 Determines whether or not Display Type of the draw override is Reference for this node. More...
 
bool drawOverrideIsTemplate (MStatus *ReturnStatus=NULL) const
 Determines whether or not Display Type of the draw override is Template for this node. More...
 
bool drawOverrideColor (MColor &color, MStatus *ReturnStatus=NULL) const
 Determines the draw override color used by this node. More...
 
MStatus getConnectedSetsAndMembers (unsigned int instanceNumber, MObjectArray &sets, MObjectArray &comps, bool renderableSetsOnly) const
 Returns all the sets connected to the specified instance of this DAG object. More...
 
MBoundingBox boundingBox (MStatus *ReturnStatus=NULL) const
 Returns the bounding box for the dag node in object space. More...
 
MDagPath dagPath (MStatus *ReturnStatus=NULL) const
 Returns the DagPath to which the Function Set is attached. More...
 
virtual MStatus setObject (const MDagPath &path)
 Attaches Function Set to the DAG Node that has the given DAG Path. More...
 
virtual MStatus setObject (MObject &object)
 Attaches Function Set to given DAG Node. More...
 
MObject model (MStatus *ReturnStatus=NULL) const
 This method is obsolete. More...
 
 MFnDagNode (const MObject &object, MStatus *ret=NULL)
 No script support. More...
 
virtual MStatus setObject (const MObject &object)
 No script support. More...
 
- Public Member Functions inherited from MFnDependencyNode
virtual ~MFnDependencyNode ()
 Destructor.
 
 MFnDependencyNode ()
 Default constructor.
 
 MFnDependencyNode (MObject &object, MStatus *ReturnStatus=NULL)
 Constructor. More...
 
MObject create (const MTypeId &typeId, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type tag. More...
 
MObject create (const MTypeId &typeId, const MString &name, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type tag. More...
 
MObject create (const MString &type, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type. More...
 
MObject create (const MString &type, const MString &name, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type. More...
 
MTypeId typeId (MStatus *ReturnStatus=NULL) const
 Returns the type id of this node. More...
 
MString typeName (MStatus *ReturnStatus=NULL) const
 Returns the type name of this node. More...
 
MString name (MStatus *ReturnStatus=NULL) const
 Returns the name of this node. More...
 
MString absoluteName (MStatus *ReturnStatus=NULL) const
 Returns the absolute name of this node. More...
 
MString pluginName (MStatus *ReturnStatus=NULL) const
 Returns the name of the plug-in this MFnDependendencyNode was defined in. More...
 
MString setName (const MString &name, bool createNamespace=false, MStatus *ReturnStatus=NULL)
 Sets the name of this node. More...
 
MUuid uuid (MStatus *ReturnStatus=NULL) const
 Returns the node's UUID. More...
 
void setUuid (const MUuid &uuid, MStatus *ReturnStatus=NULL)
 Sets the node's UUID. More...
 
MStatus getConnections (MPlugArray &array) const
 Get all of the current connections to this node as an array of plugs. More...
 
unsigned int attributeCount (MStatus *ReturnStatus=NULL) const
 Returns the number of attributes that this node has. More...
 
MObject attribute (unsigned int index, MStatus *ReturnStatus=NULL) const
 Finds the attribute of this node at the given index. More...
 
MObject reorderedAttribute (unsigned int index, MStatus *ReturnStatus=NULL) const
 Some nodes, such as the various animCurve nodes, require that their attributes be set in a specific order for proper operation. More...
 
MObject attribute (const MString &attrName, MStatus *ReturnStatus=NULL) const
 Finds the attribute of this node that has the given name. More...
 
MAttrClass attributeClass (const MObject &attr, MStatus *ReturnStatus=NULL) const
 Returns the class (normal, dynamic, extension) of the specified attribute. More...
 
MStatus getAffectedAttributes (const MObject &attr, MObjectArray &affectedAttributes) const
 Returns an array of attributes that are affected by the attribute passed in. More...
 
MStatus getAffectedByAttributes (const MObject &attr, MObjectArray &affectedByAttributes) const
 Returns an array of attributes that affect the attribute passed in, attr. More...
 
MPlug findPlug (const MObject &attr, bool wantNetworkedPlug, MStatus *ReturnStatus=NULL) const
 Attempt to find a plug for the given attribute. More...
 
MPlug findPlug (const MString &attrName, bool wantNetworkedPlug, MStatus *ReturnStatus=NULL) const
 Attempt to find a plug for the given attribute. More...
 
MPlug findPlug (const MObject &attr, MStatus *ReturnStatus=NULL) const
 This method is obsolete. More...
 
MPlug findPlug (const MString &attrName, MStatus *ReturnStatus=NULL) const
 This method is obsolete. More...
 
MStatus addAttribute (const MObject &attr)
 Add a new dynamic attibute to this node. More...
 
MStatus removeAttribute (const MObject &attr)
 Remove a dynamic attribute from a node. More...
 
MPxNodeuserNode (MStatus *ReturnStatus=NULL) const
 If the function set's node is a plug-in node, then this method will extract the MPxNode pointer from it. More...
 
bool isFromReferencedFile (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node came from a referenced file. More...
 
bool isShared (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node is shared. More...
 
bool isTrackingEdits (MStatus *ReturnStatus=NULL) const
 Returns whether or not edits on the given node are being tracked by the generalized edit system. More...
 
bool hasUniqueName (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node's name is unique within the scene. More...
 
MString parentNamespace (MStatus *ReturnStatus=NULL) const
 Returns the name of the namespace in which this node resides. More...
 
bool isLocked (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node is locked. More...
 
MStatus setLocked (bool locked)
 Locks or unlocks this node. More...
 
bool isNewAttribute (const MObject &attr, MStatus *ReturnStatus=NULL) const
 Indicates whether or not the specified attribute was added to this node within the current scene. More...
 
MStatus setFlag (unsigned int flag, bool state)
 Sets the state of the specified flag for the node. More...
 
bool isFlagSet (unsigned int flag, MStatus *ReturnStatus=NULL) const
 Retrieves the current state of the specified flag for a node. More...
 
bool isDefaultNode (MStatus *ReturnStatus=NULL) const
 Returns true if the node is a default node. More...
 
MStatus setDoNotWrite (bool flag)
 Use this method to mark the "do not write" state of this node. More...
 
bool canBeWritten (MStatus *ReturnStatus=NULL) const
 Returns the do not write state of the node. More...
 
bool hasAttribute (const MString &name, MStatus *ReturnStatus=NULL) const
 Returns true if the node already has an attribute with the given name. More...
 
MObject getAliasAttr (bool force, MStatus *ReturnStatus=NULL)
 Returns the node's alias attribute, which is a special attribute used to store information about the node's attribute aliases. More...
 
bool setAlias (const MString &alias, const MString &name, const MPlug &plug, bool add=true, MStatus *ReturnStatus=NULL)
 Sets or removes an alias (i.e. More...
 
bool findAlias (const MString &alias, MObject &attrObj, MStatus *ReturnStatus=NULL) const
 Retrieves the attribute with the given alias. More...
 
bool getAliasList (MStringArray &strArray, MStatus *ReturnStatus=NULL)
 Returns a list of all attribute aliases for this node. More...
 
MString plugsAlias (const MPlug &plug, MStatus *ReturnStatus=NULL)
 Returns the alias for the plug's attribute or the empty string if that attribute has no alias. More...
 
MStatus setIcon (const MString &filename)
 Associates a custom icon with the node for display in the Maya UI. More...
 
MString icon (MStatus *ReturnStatus=NULL) const
 Returns the custom icon filename associated with the node. More...
 
MStatus getExternalContent (MExternalContentInfoTable &table) const
 Returns the external content (files) that this node depends on. More...
 
MStatus addExternalContentForFileAttr (MExternalContentInfoTable &table, const MObject &attr) const
 Adds content info to the specified table from a file path attribute. More...
 
MStatus setExternalContentForFileAttr (const MObject &attr, const MExternalContentLocationTable &table)
 Sets content info in the specified attribute from the table. More...
 
MStatus setExternalContent (const MExternalContentLocationTable &table)
 Changes the location of external content. More...
 
MString setName (const MString &name, MStatus *ReturnStatus)
 OBSOLETE FUNCTION, NO SCRIPT SUPPORT. More...
 
 MFnDependencyNode (const MObject &object, MStatus *ReturnStatus=NULL)
 NO SCRIPT SUPPORT. More...
 
bool getPlugsAlias (const MPlug &plug, MString &aliasName, MStatus *ReturnStatus=NULL)
 NO SCRIPT SUPPORT. More...
 
virtual const adsk::Data::Associationsmetadata (MStatus *ReturnStatus=NULL) const
 This method is not available in Python. More...
 
virtual MStatus setMetadata (const adsk::Data::Associations &)
 This method is not available in Python. More...
 
virtual MStatus deleteMetadata ()
 This method is not available in Python. More...
 
virtual MStatus validateMetadata (MString &errors) const
 This method is not available in Python. More...
 
MStatus dgTimerOn ()
 Indicates that this node should collect DG timing data whenever DG timing is enabled. More...
 
MStatus dgTimerOff ()
 Indicates that this node should no longer collect DG timing data when DG timing is enabled. More...
 
MdgTimerState dgTimerQueryState (MStatus *ReturnStatus=NULL)
 The function returns the current on/off state of the node's timer. More...
 
MStatus dgTimerReset ()
 The function resets the dependency graph timers and counters for this node to zero. More...
 
double dgTimer (const MdgTimerMetric timerMetric, const MdgTimerType timerType, MStatus *ReturnStatus=NULL) const
 The function returns the specified timer value for the current node. More...
 
MStatus dgCallbacks (const MdgTimerType type, MStringArray &callbackName, MDoubleArray &value)
 Node callbacks that occur when timing is enabled get logged with the node and can be queried via this method. More...
 
MStatus dgCallbackIds (const MdgTimerType type, const MString &callbackName, MCallbackIdArray &callbackId, MDoubleArray &value)
 This method provides a further breakdown of the per-callback time returned via dgCallbacks() by returning the data on a per-callbackId basis. More...
 
MStatus addAttribute (const MObject &attr, MAttrClass type)
 This method is obsolete. More...
 
MStatus removeAttribute (const MObject &attr, MAttrClass type)
 This method is obsolete. More...
 
- Public Member Functions inherited from MFnBase
virtual ~MFnBase ()
 Class Destructor. More...
 
bool hasObj (MFn::Type) const
 Determines whether or not the Function Set is compatible with the specified Maya Object within the API RTTI system. More...
 
bool hasObj (const MObject &) const
 Determines whether or not the Function Set is compatible with the specified Maya Object within the API RTTI system. More...
 
MObject object (MStatus *ReturnStatus=NULL) const
 Returns the MObject that is attached to the Function Set. More...
 

Protected Member Functions

virtual const char * className () const
 Class name. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from MFnDependencyNode
static MString classification (const MString &nodeTypeName)
 Retrieves the classification string for a node type. More...
 
static unsigned int allocateFlag (const MString pluginName, MStatus *ReturnStatus=NULL)
 Allocates a node flag for sole use by the caller. More...
 
static MStatus deallocateFlag (const MString pluginName, unsigned int flag)
 Deallocates a node flag which was previously allocated by a call to allocateFlag. More...
 
static MStatus deallocateAllFlags (const MString pluginName)
 Deallocates all of the node flags which are currently allocated to the specified plugin. More...
 
static void enableDGTiming (bool enable)
 Globally enables or disables the DG node timing mechanism. More...
 
- Static Public Member Functions inherited from MFnBase
static const char * className ()
 Returns the name of this class. More...
 

Member Enumeration Documentation

anonymous enum

Anonymous enum to store constant values.

Enumerator
kNextPos 

used by addChild to indicate the next empty position in the list.

Enum to set how an object is colored.

Enumerator
kUseDefaultColor 

Use preference color.

kUseIndexColor 

Use index color.

kUseRGBColor 

Use RGB color.

Constructor & Destructor Documentation

~MFnDagNode ( )
virtual

Destructor.

Class Destructor.

Deletes the working copy of the DAG Path to the attached object, if the copy exists.

Class Constructor.

Creates a DAG Node Function Set without an attached DAG Node.

MFnDagNode ( MObject object,
MStatus ret = NULL 
)

This method is not available in Python.

Class Constructor

Creates a DAG Node Function Set and attaches it to the given DAG Node.

Parameters
[in]objectThe DAG Node to be attached.
[out]retStatus Code (see below)
Status Codes:
MFnDagNode ( const MDagPath object,
MStatus ret = NULL 
)

Class Constructor.

Creates a DAG Node Function Set and attaches it to the DAG Node that has the given DAG Path.

Parameters
[in]objectThe DAG Path of the Node to be attached.
[out]retStatus Code (see below)
Status Codes:
MFnDagNode ( const MObject object,
MStatus ret = NULL 
)

No script support.

Class Constructor.

Creates a DAG Node Function Set and attaches it to the given read only DAG Node.

Parameters
[in]objectThe read only DAG Node to be attached.
[out]retStatus Code (see below)
Status Codes:

Member Function Documentation

MObject create ( const MTypeId typeId,
MObject parent = MObject::kNullObj,
MStatus ReturnStatus = NULL 
)

Creates a new DAG node with the given type tag.

The new node is placed into the DAG.

If a parent is specified, the new node is parented to it, and the new node is returned. If no parent is specified and the new node is a transform, the new node is returned. Otherwise, a transform created and the new node is automatically parented to it. The returned object is the transform, not the new node.

Note
MFnDagNode::create() and other create methods from classes derived from MFnDagNode do not allow Assembly Edits. Use instead MDagModifier, MDGModifier, or use the createNode MEL/Python command, which do support Assembly Edits.
See also
MDagModifier::createNode()
MDGModifier::createNode()
Parameters
[in]typeIdtype id of the node to be created
[in]parentthe parent of the node to be created
[out]ReturnStatusStatus code.
Returns
A pointer to the new dependency node object or the transform added above it.
Status Codes:
MObject create ( const MTypeId typeId,
const MString name,
MObject parent = MObject::kNullObj,
MStatus ReturnStatus = NULL 
)

Creates a new DAG node with the given type tag.

The new node is placed into the DAG.

If a parent is specified, the new node is parented to it, and the new node is returned. If no parent is specified and the new node is a transform, the new node is returned. Otherwise, a transform created and the new node is automatically parented to it. The returned object is the transform, not the new node.

Note
MFnDagNode::create() and other create methods from classes derived from MFnDagNode do not allow Assembly Edits. Use instead MDagModifier, MDGModifier, or use the createNode MEL/Python command, which do support Assembly Edits.
See also
MDagModifier::createNode()
MDGModifier::createNode()
Parameters
[in]typeIdtype id of the node to be created
[in]namethe name to be assigned to the new node If the node's name is not unique, it will be given a unique name by changing its numerical suffix. For example, if this node is called "myNode" and a node by the same name exists, this node will be renamed to "myNode1".
[in]parentthe parent of the node to be created
[out]ReturnStatusStatus code.
Returns
A pointer to the new dependency node object or the transform added above it.
Status Codes:
MObject create ( const MString type,
MObject parent = MObject::kNullObj,
MStatus ReturnStatus = NULL 
)

Creates a new DAG node with the given type tag.

The new node is placed into the DAG.

If a parent is specified, the new node is parented to it, and the new node is returned. If no parent is specified and the new node is a transform, the new node is returned. Otherwise, a transform created and the new node is automatically parented to it. The returned object is the transform, not the new node.

Note
MFnDagNode::create() and other create methods from classes derived from MFnDagNode do not allow Assembly Edits. Use instead MDagModifier, MDGModifier, or use the createNode MEL/Python command, which do support Assembly Edits.
See also
MDagModifier::createNode()
MDGModifier::createNode()
Parameters
[in]typeName of the type of DAG node to create.
[in]parentThe DAG parent of this node.
[out]ReturnStatusStatus code.
Returns
The new dependency node or the transform added above it.
Status Codes:
MObject create ( const MString type,
const MString name,
MObject parent = MObject::kNullObj,
MStatus ReturnStatus = NULL 
)

Creates a new DAG node with the given type tag.

The new node is placed into the DAG.

If a parent is specified, the new node is parented to it, and the new node is returned. If no parent is specified and the new node is a transform, the new node is returned. Otherwise, a transform created and the new node is automatically parented to it. The returned object is the transform, not the new node.

Note
MFnDagNode::create() and other create methods from classes derived from MFnDagNode do not allow Assembly Edits. Use instead MDagModifier, MDGModifier, or use the createNode MEL/Python command, which do support Assembly Edits.
See also
MDagModifier::createNode()
MDGModifier::createNode()
Parameters
[in]typeName of the type of DAG node to create.
[in]nameName to be assigned to the new node. If the node's name is not unique it will be given a unique name by adding a numerical suffix. For example, if name contains "myNode" and a node with that name already exists, the new node will be named "myNode1".
[in]parentThe DAG parent of this node.
[out]ReturnStatusStatus code.
Returns
The new dependency node or the transform added above it.
Status Codes:
unsigned int parentCount ( MStatus ReturnStatus = NULL) const

Determines the number of parent Nodes of the Node.

Used to determine the upper bound for the parent index (max index = parentCount-1).

Parameters
[out]ReturnStatusStatus code.
Returns
Number of parent Nodes.
Status Codes:
+ Examples:
MObject parent ( unsigned int  i,
MStatus ReturnStatus = NULL 
) const

Queries the DAG Node attached to the Function Set for the parent Node corresponding to the given index.

Parameters
[in]iIndex to the parent Node
[out]ReturnStatusStatus code.
Returns
The parent Node for the given index.
Status Codes:
+ Examples:
MStatus addChild ( MObject child,
unsigned int  index = kNextPos,
bool  keepExistingParents = false 
)

Makes the given DAG Node a child of the DAG Node to which this instance of the Function Set is attached.

By default, the child will be added to the end of the child list. If an index is specified, and it is less than or equal to the upper bound, Maya will add the child to the specified index and shift the position of subsequent children onto the next position. If the index is greater than the upper bound, the behavior is undefined.

By default, the child is removed from its existing parents as a result of this operation. If the flag keepExistingParents is set to true, the child will keep its existing parents and a new instance connection will be created for the new node. Any instanced attributes downstream from the new child will be updated with new instance numbers.

Parameters
[in]childThe node to be added as child
[in]indexThe index that the child should be position. Defaulted to MFnDagNode::kNextPos
[in]keepExistingParentsShould the child be instanced?
Returns
Status Code
Status Codes:
MStatus removeChild ( MObject child)

Removes the given DAG Node from the parent.

Once the child is removed, all children at higher indices would shift 1 position to the left.

If the child being removed is an instance, any instance attributes downstream from the node being removed will be updated with the new instance count.

Parameters
[in]childThe Node to be removed as child
Returns
Status Code
Status Codes:
MStatus removeChildAt ( unsigned int  index)

Removes the child at the given index from the parent.

Once the child is removed, all children at higher indices would shift 1 position to the left.

If the child being removed is an instance, any instance attributes downstream from the node being removed will be updated with the new instance count.

Parameters
[in]indexThe index of the child.
Returns
Status Code
Status Codes:
unsigned int childCount ( MStatus ReturnStatus = NULL) const

Determines the number of child Nodes of the Node.

Used to determine the upper bound for the child index (max index = childCount-1).

Parameters
[out]ReturnStatusStatus code.
Returns
Number of child Nodes.
Status Codes:
+ Examples:
MObject child ( unsigned int  i,
MStatus ReturnStatus = NULL 
) const

Queries the DAG Node attached to the Function Set for the child Node corresponding to the given index.

Parameters
[in]iIndex to the child Node
[out]ReturnStatusStatus code.
Returns
The child Node for the given index.
Status Codes:
+ Examples:
MObject dagRoot ( MStatus ReturnStatus = NULL)

Determines the root of the first DAG Path to the DAG Node attached to the Function Set.

Parameters
[out]ReturnStatusStatus code.
Returns
The DAG root
Status Codes:
bool hasParent ( const MObject node,
MStatus ReturnStatus = NULL 
) const

Determines whether or not the given Node is a parent of the DAG Node attached to the Function Set.

Parameters
[in]nodePotential parent node
[out]ReturnStatusStatus code.
Returns
true if the node is a parent, false otherwise.
Status Codes:
bool hasChild ( const MObject node,
MStatus ReturnStatus = NULL 
) const

Determines whether or not the given Node is a child of the DAG Node attached to the Function Set.

Parameters
[in]nodenode to check
[out]ReturnStatusStatus code.
Returns
true if the node is a child, false otherwise.
Status Codes:
bool isChildOf ( const MObject node,
MStatus ReturnStatus = NULL 
) const

Determines whether or not the DAG Node attached to the Function Set is a child of the given node.

Parameters
[in]nodenode to check
[out]ReturnStatusStatus code.
Returns
true is a child, false otherwise.
Status Codes:
bool isParentOf ( const MObject node,
MStatus ReturnStatus = NULL 
) const

Determines whether or not the DAG Node attached to the Function Set is a parent of the given node.

Parameters
[in]nodenode to check
[out]ReturnStatusStatus code.
Returns
true is a parent, false otherwise.
Status Codes:
bool inUnderWorld ( MStatus ReturnStatus = NULL) const

Determines whether or not the DAG Node is an underworld node.

(An example of an underworld node is a curve on surface.)

Parameters
[out]ReturnStatusStatus code.
Returns
true if the node is an underworld node, false otherwise.
Status Codes:
bool inModel ( MStatus ReturnStatus = NULL) const

Determines whether or not the DAG Node is in the model.

Parameters
[out]ReturnStatusStatus code.
Returns
true if the node in the model, false otherwise.
Status Codes:
bool isInstanceable ( MStatus ReturnStatus = NULL) const

Returns true if the DAG node can be instanced, and false otherwise.

Parameters
[out]ReturnStatusStatus code.
Returns
true if the DAG node is instanceable, false otherwise.
Status Codes:
MStatus setInstanceable ( const bool  how)

Sets whether or not the DAG node is instanceable.

If the node is marked as noninstanceable, then if Maya attempts to create instances on the node the instancing operation will not succeed and instead an error will be reported. A node cannot be marked non-instanceable if it or any of its children are currently instanced. MS::kFailure will be returned it this occurs. The default instanceable state for newly created nodes if true, meaning that nodes can be instanced by default.

Parameters
[in]howtrue if the node should be made instanceable, false to make the node noninstanceable.
Returns
Status code
Status Codes:
  • MS::kSuccess successfully set the instanceable state on the node
  • MS::kFailure function set does not have a valid node, or the node or one of its child nodes is already instanced and you are attempting to flag the node as non-instanceable, or the node is locked.
bool isInstanced ( bool  indirect = true,
MStatus ReturnStatus = NULL 
) const

Determines whether the DAG Node attached to the Function Set is directly or indirectly instanced.

If indirect instance flag is false, the result is true if and only if the Node itself is multiply instanced (node->parentCount > 1).

If the indirect flag is true, the result is true if and only if the Node itself is multiply instanced (node->parentCount > 1) or if the Node is not multiply instanced, but it has a directly instanced parent (node->parentCount()=1 amd parent->parentCount >1).

Parameters
[in]indirectIndirect instance flag
[out]ReturnStatusStatus code.
Returns
true if the node is instanced (directly or indirectly according to indirect instance flag), false otherwise.
Status Codes:
bool isInstancedAttribute ( const MObject attribute,
MStatus ReturnStatus = NULL 
) const

Returns true if the specified attribute is instanced.

An instanced attribute is an array attribute whose index depends upon which instance of the node is being referred to.

Attributes are not instanced by default.

Parameters
[in]attributeThe attribute to test.
[out]ReturnStatusStatus code.
Returns
A boolean value indicating whether the attribute is instanced
Status Codes:
unsigned int instanceCount ( bool  total,
MStatus ReturnStatus = NULL 
) const

Determines the number of times the Node attached to the Function Set is instanced.

If indirect instance flag is false, the number of direct instances is returned.

If the indirect flag is true, the total number of times the Node is instanced in the DAG above it is returned.

Parameters
[in]totalIndirect instance flag
[out]ReturnStatusStatus code.
Returns
Number of instances (direct or indirect according to indirect instance flag).
Status Codes:
MObject duplicate ( bool  instance = false,
bool  leafInstance = false,
MStatus ReturnStatus = NULL 
) const

This method duplicates the DAG hierarchy rooted at the current node.

The copy will have the same parent, if any, as the original node.

If instance is false then a true copy will be made, otherwise a new node will be created which instances the child nodes of the original node. If instance is false then instanceLeaf is ignored.

If instance is true and instanceLeaf is false then the child nodes of the original node are instanced. If instanceLeaf is true, then the results are similar to a copy, but the leaf level objects are instanced.

If the function set is initialized without an MDagPath, then this method uses the first path to the node. This is only a problem if the node has been instanced, in which case the simple solution is to use an MDagPath to initialize the function set.

Parameters
[in]instanceDuplicate using instancing if true
[in]leafInstanceInstance only at the leaf level if true
[out]ReturnStatusStatus code.
Returns
A reference to the newly created node.
Status Codes:
+ Examples:
MStatus getPath ( MDagPath path) const

Returns a DAG Path to the DAG Node attached to the Function Set.

The difference between this method and the method dagPath below is that this one will not fail if the function set is not attached to a dag path, it will always return a path to the node. dagPath will fail if the function set is not attached to a dag path.

Parameters
[out]pathThe DAG Path that is found (implicit return)
Returns
Status Code
Status Codes:
+ Examples:
MStatus getAllPaths ( MDagPathArray paths) const

Determines all DAG Paths to the DAG Node attached to the Function Set.

Parameters
[out]pathsArray of all DAG Paths that are found (implicit return)
Returns
Status Code
Status Codes:
MString fullPathName ( MStatus ReturnStatus = NULL) const

Return a string representing the full path from the root of the dag to this object.

Parameters
[out]ReturnStatusStatus code.
Returns
The full path name
Status Codes:
+ Examples:
MString partialPathName ( MStatus ReturnStatus = NULL) const

Return a string representing the partial path from the root of the dag to this object.

The partial path is the minimum path that is still unique. This string may contain wildcards.

Parameters
[out]ReturnStatusStatus code.
Returns
The partial path name
Status Codes:
+ Examples:
MMatrix transformationMatrix ( MStatus ReturnStatus = NULL) const

Returns the object space transformation matrix for this DAG node.

In general, only transform nodes have matrices associated with them. Nodes such as shapes (geometry nodes) do not have transform matrices.

The identity matrix will be returned if this node does not have a transformation matrix.

Parameters
[out]ReturnStatusStatus code.
Returns
Object space transformation matrix.
Status Codes:
bool isIntermediateObject ( MStatus ReturnStatus = NULL) const

Returns true if this object is an intermediate in a geometry calculation.

When geometry calculations are performed using dependency nodes, it is sometimes necessary to use intermediate objects. These objects are not draw or rendered. For example, deformers use intermediate geometry during their calculations.

This method exists to provide a more convenient way of accessing the intermediateObject attribute of DAG nodes.

Parameters
[out]ReturnStatusStatus code.
Returns
True if this is an intermediate object.
Status Codes:
+ Examples:
MStatus setIntermediateObject ( bool  isIntermediate)

Sets whether this object is an intermediate in a geometry calculation.

When geometry calculations are performed using dependency nodes, it is sometimes necessary to use intermediate objects. These objects are not draw or rendered. For example, deformers use intermediate geometry during their calculations.

This method exists to provide a more convenient way of accessing the intermediateObject attribute of DAG nodes.

Parameters
[in]isIntermediatewhether to make this an intermediate object
Returns
Status Code
Status Codes:
+ Examples:
int objectColor ( MStatus ReturnStatus = NULL) const

This method is obsolete.

Deprecated:
Use MFnDagNode::objectColorIndex() and MFnDagNode::objectColorRGB() instead

Determines the index for the current user defined inactive color used by the node. Valid indices are from 0 to 7.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[out]ReturnStatusStatus code.
Returns
Index for current user defined inactive color (0 - 7)
Status Codes:
MStatus setObjectColor ( int  index)

Sets the index for the current user defined inactive color used by the node.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[in]indexIndex for current user color (0 - 7)
Returns
Status Code
Status Codes:
bool usingObjectColor ( MStatus ReturnStatus = NULL) const
Deprecated:
Use MFnDagNode::objectColorType() instead

Determines whether or not the user defined inactive color will be used for the node, or whether the default inactive color will be used.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[out]ReturnStatusStatus code.
Returns
True if using the user defined inactive object color
Status Codes:
MStatus setUseObjectColor ( bool  useObjectColor)
Deprecated:
Use MFnDagNode::setObjectColorType() instead

Sets whether or not the user defined inactive object color will be used.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[in]useObjectColorTrue means the user defined inactive object color will be used
Returns
Status Code
Status Codes:
MFnDagNode::MObjectColorType objectColorType ( MStatus ReturnStatus = NULL) const

Determines whether or not the user defined inactive color will be used for the node, or whether the default inactive color will be used.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[out]ReturnStatusStatus code.
Returns
Status Codes:
MStatus setObjectColorType ( MObjectColorType  type)

Sets whether or not the user defined inactive object color will be used.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[in]typeMFnDagNode::kUseDefaultColor - the color defined in the color preferences will be used.
MFnDagNode::kUseIndexColor - the user-defined inactive object indexed color will be used
MFnDagNode::kUseRGBColor - the user defined inactive RGB object color will be used
Returns
Status Code
Status Codes:
MStatus setObjectColor ( const MColor color)

Sets the color value for the current user defined inactive color used by the node.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[in]colorColor to be set
Returns
Status Code
Status Codes:
MColor objectColorRGB ( MStatus ReturnStatus = NULL) const

Determines the RGB color for the current user defined inactive color used by the node.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[out]ReturnStatusStatus code.
Returns
MColor defining the current RGB color
Status Codes:
int objectColorIndex ( MStatus ReturnStatus = NULL) const

Determines the index for the current user defined inactive color used by the node.

Valid indices are from 0 to 7.

This method is only meaningful for shape or joint nodes (e.g. nurbs curves/surfaces, meshes). It will work for other nodes, but will have no visible effect.

Parameters
[out]ReturnStatusStatus code.
Returns
Index for current user defined inactive color (0 - 7)
Status Codes:
MColor hiliteColor ( MStatus ReturnStatus = NULL) const

Determines the current hilite color used by the node.

Parameters
[out]ReturnStatusStatus code.
Returns
The current hilite color.
Status Codes:
bool usingHiliteColor ( MStatus ReturnStatus = NULL) const

Determines whether or not the hilite color will be used for the node.

hilite command sets this flag to true.

Parameters
[out]ReturnStatusStatus code.
Returns
True if using the hilite color.
Status Codes:
MColor dormantColor ( MStatus ReturnStatus = NULL) const

Determines the dormant color used by this node.

The order to determine the dormant color is:

  • hilite color if hilite color is used
  • object color if user defined object color is used
  • the dormant color for this kind of dag node
Parameters
[out]ReturnStatusStatus code.
Returns
The dormant color.
Status Codes:
MColor activeColor ( MStatus ReturnStatus = NULL) const

Determines the active color used by this node.

The active color is the active color for this kind of dag node.

Parameters
[out]ReturnStatusStatus code.
Returns
The active color.
Status Codes:
bool drawOverrideEnabled ( MStatus ReturnStatus = NULL) const

Determines whether or not draw override is turned on for this node.

Parameters
[out]ReturnStatusStatus code.
Returns
True if draw override is turned on.
Status Codes:
bool drawOverrideIsReference ( MStatus ReturnStatus = NULL) const

Determines whether or not Display Type of the draw override is Reference for this node.

Parameters
[out]ReturnStatusStatus code.
Returns
True if Display Type is Reference.
Status Codes:
bool drawOverrideIsTemplate ( MStatus ReturnStatus = NULL) const

Determines whether or not Display Type of the draw override is Template for this node.

Parameters
[out]ReturnStatusStatus code.
Returns
True if Display Type is Template.
Status Codes:
bool drawOverrideColor ( MColor color,
MStatus ReturnStatus = NULL 
) const

Determines the draw override color used by this node.

Returns true if there is a draw override color. Otherwise, returns false and color parameter is not changed.

Parameters
[out]colorThe draw override color.
[out]ReturnStatusStatus code.
Returns
True if a draw override color is used.
Status Codes:
MStatus getConnectedSetsAndMembers ( unsigned int  instanceNumber,
MObjectArray sets,
MObjectArray comps,
bool  renderableSetsOnly 
) const

Returns all the sets connected to the specified instance of this DAG object.

For each set in the "sets" array there is a corresponding entry in the "comps" array which are all the components in that set. If the entire object is in a set, then the corresponding entry in the comps array will have no elements in it.

Parameters
[in]instanceNumberThe instance number of the mesh to query
[out]setsStorage for the sets
[out]compsStorage for the components that are in the corresponding set
[in]renderableSetsOnlyIf true then this method will only return renderable sets
Returns
Status code
Status Codes:
+ Examples:
MBoundingBox boundingBox ( MStatus ReturnStatus = NULL) const

Returns the bounding box for the dag node in object space.

Parameters
[out]ReturnStatusStatus code.
Returns
The bounding box for the dag node
Status Codes:
+ Examples:
MDagPath dagPath ( MStatus ReturnStatus = NULL) const

Returns the DagPath to which the Function Set is attached.

The difference between this method and the method getPath above is that this one will fail if the function set is not attached to a dag path. getPath will find a dag path if the function set is not attached to one.

Parameters
[out]ReturnStatusStatus code.
Returns
An MDagPath that references the object to which the Function Set is attached. If the function set is not attached to a dag path an uninitialized MDagPath will be returned.
Status Codes:
MStatus setObject ( MObject object)
virtual

Attaches Function Set to given DAG Node.

Parameters
[in]objectTarget Node for attachment.
Returns
Status Code
Status Codes:

Reimplemented from MFnBase.

MObject model ( MStatus ReturnStatus = NULL) const

This method is obsolete.

Deprecated:
The model returned is an unknown type to the API and now the method always returns MObject::kNullObj.
Parameters
[out]ReturnStatusStatus code.
Returns
The model in which the DAG Node resides.
Status Codes:
MStatus setObject ( const MObject object)
virtual

No script support.

This method is not available in Python.

Attaches Function Set to given read only DAG Node.

Parameters
[in]objectTarget Node for attachment.
Returns
Status Code
Status Codes:

Reimplemented from MFnBase.


The documentation for this class was generated from the following files:
  • MFnDagNode.h
  • MFnDagNode.cpp