MDagPath Class Reference

+ Related help topics:

#include <MDagPath.h>

Class Description

DAG Path.

Provides methods for obtaining one or all Paths to a specified DAG Node, determining if a Path is valid and if two Paths are equivalent, obtaining the length, transform, and inclusive and exclusive matrices of a Path, as well as performing Path to Path assignment.

DAG Paths may be used as parameters to some methods in the DAG Node Function Set (MFnDagNode).

It is often useful to combine DAG Paths into DAG Path arrays (MDagPathArray).

Use this DAG Path Class to obtain and query Paths to DAG Nodes. A DAG path is a path from the world node to a particular object in the DAG.

If a DAG object is instanced, then an MDagPath is required to identify a particular instance. DAG paths are also required when doing world space transformations.

Use this class in conjunction with the DAG Iterator (MItDag), DAG Node Function Set (MFnDagNode) and DAG Path Array class (MDagPathArray) to query and edit the DAG.

+ Examples:

Public Member Functions

 MDagPath ()
 Class Constructor. More...
 
 MDagPath (const MDagPath &src)
 Copy constructor. More...
 
virtual ~MDagPath ()
 Class Destructor. More...
 
MStatus getAllPathsBelow (MDagPathArray &pathArray)
 Return all paths to leaf objects below this path excluding transforms. More...
 
bool hasFn (MFn::Type type, MStatus *ReturnStatus=nullptr) const
 Returns true if the object at the end of this DAG path supports the given function set. More...
 
MFn::Type apiType (MStatus *ReturnStatus=nullptr) const
 Returns the type of the object at the end of the path. More...
 
bool isValid (MStatus *ReturnStatus=nullptr) const
 Determines if Path is valid. More...
 
MObject node (MStatus *ReturnStatus=nullptr) const
 Retrieves the DAG Node for this DAG Path. More...
 
MObject transform (MStatus *ReturnStatus=nullptr) const
 Retrieves the lowest Transform in the DAG Path. More...
 
unsigned int length (MStatus *ReturnStatus=nullptr) const
 Determines the number of DAG Nodes in the Path not including the root. More...
 
MStatus extendToShape ()
 If the object at the end of this path is a transform and there is a shape node directly beneath it in the hierarchy, then the path is extended to that geometry node. More...
 
MStatus extendToShapeDirectlyBelow (unsigned int)
 This method is used if the end of the path is a transform and there are shapes directly below the transform. More...
 
MStatus numberOfShapesDirectlyBelow (unsigned int &) const
 If the object at the end of this path is a transform, this method will return the number of shapes directly below the transform. More...
 
MStatus push (const MObject &child)
 Push an object onto the end of the path. More...
 
MStatus pop (unsigned int num=1)
 Pop the given number of objects off of the end of the path. More...
 
unsigned int childCount (MStatus *ReturnStatus=nullptr) const
 Return the number of children that the object at the end of the path has. More...
 
MObject child (unsigned int i, MStatus *ReturnStatus=nullptr) const
 Return the child object at the given index, where the parent is the object at the end of the path. More...
 
MMatrix inclusiveMatrix (MStatus *ReturnStatus=nullptr) const
 Determines the inclusive matrix of the Path. More...
 
MMatrix exclusiveMatrix (MStatus *ReturnStatus=nullptr) const
 Determines the exclusive matrix of the Path. More...
 
MMatrix inclusiveMatrixInverse (MStatus *ReturnStatus=nullptr) const
 Determines the inverse inclusive matrix of the Path. More...
 
MMatrix exclusiveMatrixInverse (MStatus *ReturnStatus=nullptr) const
 Determines the inverse exclusive matrix of the Path. More...
 
MDagPathoperator= (const MDagPath &src)
 Assigns the DAG Path on the RHS of the operator to the DAG Path on the LHS. More...
 
bool operator== (const MDagPath &src) const
 Determines if the DAG Path on the LHS of the operator is equal to the DAG Path on the RHS. More...
 
MStatus set (const MDagPath &src)
 Sets this DAG Path equal to the specified DAG Path. More...
 
unsigned int pathCount (MStatus *ReturnStatus=nullptr) const
 Return the number of paths which make up this path. More...
 
MStatus getPath (MDagPath &path, unsigned int i=0) const
 Return the i'th path. More...
 
MString fullPathName (MStatus *ReturnStatus=nullptr) const
 Return a string representing the full path from the root of the dag to this object. More...
 
MString partialPathName (MStatus *ReturnStatus=nullptr) const
 Return a string representing the partial path from the root of the dag to this object. More...
 
bool isInstanced (MStatus *ReturnStatus=nullptr) const
 Returns true if the object at the end of the DAG path is instanced. More...
 
unsigned int instanceNumber (MStatus *ReturnStatus=nullptr) const
 For an instanced object, this returns the instance number that this path represents in the DAG. More...
 
bool isVisible (MStatus *ReturnStatus=nullptr) const
 Returns true if the DAG Node at the end of the path is visible to the viewport. More...
 
bool isTemplated (MStatus *ReturnStatus=nullptr) const
 Returns true if the DAG Node at the end of the path is templated. More...
 
MDAGDrawOverrideInfo getDrawOverrideInfo () const
 Get the draw override information for the given path. More...
 

Static Public Member Functions

static MStatus getAllPathsTo (const MObject &node, MDagPathArray &pathArray)
 Determines all Paths to the specified DAG Node. More...
 
static MStatus getAPathTo (const MObject &node, MDagPath &path)
 Determines the Path to the specified DAG Node. More...
 
static const char * className ()
 Returns the name of this class. More...
 
static MDagPath getAPathTo (const MObject &node, MStatus *ReturnStatus=nullptr)
 Obsolete. More...
 

Constructor & Destructor Documentation

OPENMAYA_MAJOR_NAMESPACE_OPEN MDagPath ( )

Class Constructor.

Creates a DAG Path

MDagPath ( const MDagPath src)

Copy constructor.

Duplicate the given path.

Parameters
[in]srcthe path to be copied
~MDagPath ( )
virtual

Class Destructor.

No additional action.

Member Function Documentation

MStatus getAllPathsTo ( const MObject node,
MDagPathArray pathArray 
)
static

Determines all Paths to the specified DAG Node.

Parameters
[in]nodeDAG Node for which Paths are determined
[out]pathArrayArray containing all DAG Paths to the specified Node (implicit return)
Returns
Status Code
Status Codes:
  • MS::kSuccess Success
  • MS::kInvalidParameter Invalid parameter passed for node - Node is not accessible, does not exist or is not a DAG Node
  • MS::kFailure Unknown failure to determine Paths
+ Examples:
MStatus getAPathTo ( const MObject node,
MDagPath path 
)
static

Determines the Path to the specified DAG Node.

The Path returned is rooted at the World. If the object is instanced and has multiple paths, then the first one that is found is returned.

Parameters
[in]nodeDAG Node for which Paths are determined
[out]pathreference to the path of the specified DAG Node
Returns
Status Code
Status Codes:
  • MS::kSuccess Success
  • MS::kInvalidParameter Invalid parameter passed for node - Node is not accessible, does not exist or is not a DAG Node
  • MS::kFailure Unknown failure to determine Path
+ Examples:
MStatus getAllPathsBelow ( MDagPathArray pathArray)

Return all paths to leaf objects below this path excluding transforms.

Parameters
[out]pathArrayArray containing all DAG Paths below this path excluding transforms.
Returns
Status Code
Status Codes:
  • MS::kSuccess Success
  • MS::kInvalidParameter Invalid DAG path
  • MS::kFailure Unknown failure to determine Paths
bool hasFn ( MFn::Type  type,
MStatus ReturnStatus = nullptr 
) const
MFn::Type apiType ( MStatus ReturnStatus = nullptr) const

Returns the type of the object at the end of the path.

Parameters
[out]ReturnStatusstatus code
Returns
Type of the object
Status Codes:
  • MS::kSuccess Success
  • MS::kFailure Invalid object
+ Examples:
MObject node ( MStatus ReturnStatus = nullptr) const

Retrieves the DAG Node for this DAG Path.

Parameters
[out]ReturnStatusStatus Code
Returns
DAG Node for this DAG Path
Status Codes:
  • MS::kSuccess Success
  • MS::kFailure Invalid object or no node
+ Examples:
MObject transform ( MStatus ReturnStatus = nullptr) const

Retrieves the lowest Transform in the DAG Path.

Parameters
[out]ReturnStatusStatus Code
Returns
Lowest Transform for this DAG Path
Status Codes:
  • MS::kSuccess Success
  • MS::kInvalidParameter This object has no transform (i.e. this is the world node)
  • MS::kFailure Invalid object
+ Examples:
unsigned int length ( MStatus ReturnStatus = nullptr) const

Determines the number of DAG Nodes in the Path not including the root.

Parameters
[out]ReturnStatusstatus code
Returns
Number of DAG Nodes not including the root
Status Codes:
  • MS::kSuccess Success
  • MS::kFailure Invalid object
+ Examples:
MStatus extendToShape ( )

If the object at the end of this path is a transform and there is a shape node directly beneath it in the hierarchy, then the path is extended to that geometry node.

NOTE: This method will fail if there multiple shapes below the transform.

Returns
Status code
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter DAG path does not lead to a transform or there is no geometry below it
  • MS::kFailure the object is invalid
+ Examples:
MStatus extendToShapeDirectlyBelow ( unsigned int  index)

This method is used if the end of the path is a transform and there are shapes directly below the transform.

The shape to extend to is set by passing in an appropriate index parameter.

Use the numberOfShapesDirectlyBelow() method to determine how many shapes are below

Parameters
[in]indexcontains the index of the shape to extend the path to
Returns
Status code
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter DAG path does not lead to a transform or there is no geometry below it
  • MS::kFailure the object is invalid
MStatus numberOfShapesDirectlyBelow ( unsigned int &  num) const

If the object at the end of this path is a transform, this method will return the number of shapes directly below the transform.

Parameters
[in]numon success, this parameter will be set to the number of shapes directly underneath the transform
Returns
Status code
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter DAG path does not lead to a transform or there is no geometry below it
  • MS::kFailure the object is invalid
+ Examples:
MStatus push ( const MObject child)

Push an object onto the end of the path.

The object must be a child of the object that is currently at the end of the path.

Parameters
[in]childchild object to push onto the path
Returns
Status code
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure unexpected error or invalid object
  • MS::kInvalidParameter child is invalid or is not a child of the object at the end of this path
+ Examples:
MStatus pop ( unsigned int  num = 1)

Pop the given number of objects off of the end of the path.

Parameters
[in]numnumber of objects to pop off of the path
Returns
Status code
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter the number of objects to pop is greater than the length of the path
  • MS::kFailure the object is invalid
+ Examples:
unsigned int childCount ( MStatus ReturnStatus = nullptr) const

Return the number of children that the object at the end of the path has.

Parameters
[out]ReturnStatusstatus code
Returns
The number of children
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure invalid object
+ Examples:
MObject child ( unsigned int  index,
MStatus ReturnStatus = nullptr 
) const

Return the child object at the given index, where the parent is the object at the end of the path.

Parameters
[in]indexchild's index
[out]ReturnStatusstatus code
Returns
A handle to the child
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter the index is out of range
  • MS::kFailure the object is invalid
+ Examples:
MMatrix exclusiveMatrix ( MStatus ReturnStatus = nullptr) const

Determines the exclusive matrix of the Path.

Parameters
[out]ReturnStatusstatus code
Returns
The matrix for all transforms in the Path excluding the end Node in the Path if it is Transform
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
MMatrix inclusiveMatrixInverse ( MStatus ReturnStatus = nullptr) const

Determines the inverse inclusive matrix of the Path.

Parameters
[out]ReturnStatusstatus code
Returns
The inverse of the matrix for all Transforms in the Path including the end Node in the Path if it is a Transform
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
MMatrix exclusiveMatrixInverse ( MStatus ReturnStatus = nullptr) const

Determines the inverse exclusive matrix of the Path.

Parameters
[out]ReturnStatusstatus code
Returns
The inverse of the matrix for all transforms in the Path excluding the end Node in the Path if it is Transform
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
MDagPath & operator= ( const MDagPath src)

Assigns the DAG Path on the RHS of the operator to the DAG Path on the LHS.

Parameters
[in]srcthe path to be copied
Returns
A bitwise copy of the the DAG Path on the LHS
bool operator== ( const MDagPath src) const

Determines if the DAG Path on the LHS of the operator is equal to the DAG Path on the RHS.

Parameters
[in]srcThe path to be compared.
Returns
True is the objects are equal
MStatus set ( const MDagPath src)

Sets this DAG Path equal to the specified DAG Path.

Parameters
[in]srcDAG Path to be copied.
Returns
Status code
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
unsigned int pathCount ( MStatus ReturnStatus = nullptr) const

Return the number of paths which make up this path.

Parameters
[out]ReturnStatusstatus code
Returns
The path count
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
MStatus getPath ( MDagPath path,
unsigned int  i = 0 
) const

Return the i'th path.

The zero'th path is the top-most path and must be rooted by the world. Additional paths are paths in the underworld of the object at the end of the previous path (path i-1).

Parameters
[out]pathreference to the destination path
[in]ithe index of the path to retrieve
Returns
Status code
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
  • MS::kInvalidParameter 'i' is out of range. Must be < pathCount().
+ Examples:
MString fullPathName ( MStatus ReturnStatus = nullptr) 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:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
bool isInstanced ( MStatus ReturnStatus = nullptr) const

Returns true if the object at the end of the DAG path is instanced.

It is instanced if there is more than one path to the node from the top of the DAG. Each instance of the node will be drawn separately in the view, but the geometry will be shared.

Parameters
[out]ReturnStatusstatus code
Returns
True if the DAG node at the end of the path is instanced
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
unsigned int instanceNumber ( MStatus ReturnStatus = nullptr) const

For an instanced object, this returns the instance number that this path represents in the DAG.

The instance number can be used to determine which element of the world space array attributes of a DAG node to connect to get information regarding this instance.

Parameters
[out]ReturnStatusstatus code
Returns
The instance number represented by this path
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
bool isVisible ( MStatus ReturnStatus = nullptr) const

Returns true if the DAG Node at the end of the path is visible to the viewport.

This method does not account for any viewport specific filtering.

If the object is not in the current render layer then it is not visible.

If the value of the visibility attribute is false for any DAG Node along the path, the object is invisible. Also, the object is invisible if it or its ancestor is in an invisible display layer. Additionally, intermediate objects are considered invisible as are objects which have the display geometry flag toggled to off (see the 'toggle' command).

Parameters
[out]ReturnStatusstatus code
Returns
True if the DAG node at the end of the path is visible
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
bool isTemplated ( MStatus ReturnStatus = nullptr) const

Returns true if the DAG Node at the end of the path is templated.

If the value of the template attribute is true for any DAG Node along the path, this method will return true. If the display override for any DAG node along the path is template, this method will return true. Finally, this method will return true if any DAG node along the path is in a templated display layer.

Parameters
[out]ReturnStatusstatus code
Returns
True if the DAG node at the end of the path is templated
Status Codes:
  • MS::kSuccess success
  • MS::kFailure the object is invalid
+ Examples:
MDAGDrawOverrideInfo getDrawOverrideInfo ( ) const

Get the draw override information for the given path.

It will check from the bottom object of this path, then go upwards to find the first enabled draw override and record that information. If no enabled draw override is found, a default draw override information will be given with draw override disabled inside it.

Returns
Draw override information of this path.
+ Examples:
const char * className ( )
static

Returns the name of this class.

Returns
The name of this class.
MDagPath getAPathTo ( const MObject node,
MStatus ReturnStatus = nullptr 
)
static

Obsolete.

This method is obsolete.

Deprecated:
The function signature was inconsistent with the rest of the API. Please use the other MDagPath::getAPathTo method instead.

Determines the Path to the specified DAG Node. The Path returned is rooted at the World. If the object is instanced and has multiple paths, then the first one that is found is returned.

Parameters
[in]nodeDAG Node for which Paths are determined
[out]ReturnStatusStatus Code
Returns
Path to the specified Node
Status Codes:
  • MS::kSuccess Success
  • MS::kInvalidParameter Invalid parameter passed for object - Node is not accessible, does not exist or is not a DAG Node
  • MS::kFailure Unknown failure to determine Path

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