#include <MItDag.h>
Use the DAG iterator to traverse the DAG either depth first or breadth first, visiting each node and, if desired, retrieving the node (as an MObject). The DAG iterator provides a basic filtering capability, so that DAG node retrieval can be limited to a specific type (MFn::Type) of node. With filtering enabled the iterator checks to see if the node is compatible with the type of Function Set specified by the filter. See MFn::Type for a list of all valid Function set types.
Since each object, if retrieved, is returned as an MObject, the MObject::hasFn() method can be used to further check for compatible function set types since an MObjects may be compatible with more than one function set).
Any compatible Function Set can be attached to the retrieved object to query or or edit it. Often you will want to use the DAG node Function Set (MFnDagNode), which is compatible with all DAG objects, to perform basic queries on each node as the iterator traverses the DAG.
The iterator also provides the capability to reset the root of the iteration, the type of traversal, and the filter.
Additionally, the iterator can be queried for the root, mode and type of traversal, and to determine if the the traversal has been completed.
Public Types | |
enum | TraversalType { kInvalidType = 0, kDepthFirst, kBreadthFirst } |
Order in which nodes should be traversed. More... | |
Public Member Functions | |
MItDag (TraversalType=kDepthFirst, MFn::Type=MFn::kInvalid, MStatus *ReturnStatus=NULL) | |
MItDag (MIteratorType &dagInfoObject, TraversalType=kDepthFirst, MStatus *ReturnStatus=NULL) | |
MStatus | reset () |
MStatus | reset (const MObject &object, TraversalType=kDepthFirst, MFn::Type=MFn::kInvalid) |
MStatus | reset (const MDagPath &path, TraversalType=kDepthFirst, MFn::Type=MFn::kInvalid) |
MStatus | reset (MIteratorType &dagInfoObject, const MObject *object, const MDagPath *path, TraversalType=kDepthFirst) |
MObject | item (MStatus *ReturnStatus=NULL) |
This method is obsolete. | |
MObject | currentItem (MStatus *ReturnStatus=NULL) |
MStatus | next () |
MStatus | prune () |
bool | isDone (MStatus *ReturnStatus=NULL) const |
MObject | root (MStatus *ReturnStatus=NULL) |
unsigned int | depth (MStatus *ReturnStatus=NULL) const |
TraversalType | getType (MStatus *ReturnStatus=NULL) const |
MStatus | getPath (MDagPath &path) const |
MStatus | getAllPaths (MDagPathArray &paths) const |
MString | fullPathName (MStatus *ReturnStatus=NULL) const |
MString | partialPathName (MStatus *ReturnStatus=NULL) const |
bool | isInstanced (bool indirect=true, MStatus *ReturnStatus=NULL) const |
unsigned int | instanceCount (bool total, MStatus *ReturnStatus=NULL) const |
MStatus | traverseUnderWorld (bool flag) |
bool | willTraverseUnderWorld (MStatus *ReturnStatus=NULL) const |
virtual | ~MItDag () |
MItDag::MItDag | ( | MItDag::TraversalType | type = kDepthFirst , |
|
MFn::Type | filter = MFn::kInvalid , |
|||
MStatus * | ReturnStatus = NULL | |||
) |
Class Constructor
Initializes the root of iteration at the world node, sets the type of the traversal, and the filter. Sets a return status parameter to indicate success or failure.
[in] | type | Enumerated type that determines the direction of the traversal |
[in] | filter | Function set type (MFn::Type) |
[out] | ReturnStatus | Status Code (see below) |
MItDag::MItDag | ( | MIteratorType & | dagInfoObject, | |
MItDag::TraversalType | type = kDepthFirst , |
|||
MStatus * | ReturnStatus = NULL | |||
) |
Class Constructor
Initializes the root of iteration at the world node, sets the type of the traversal, and the filter list. Sets a return status parameter to indicate success or failure.
[in] | type | Enumerated type that determines the direction of the traversal |
[in] | dagInfoObject | Object which has details of type_filter or filter list. |
[out] | ReturnStatus | Status Code (see below) |
MItDag::~MItDag | ( | ) | [virtual] |
Class Destructor
Deletes iterator.
MStatus MItDag::reset | ( | ) |
Resets the iterator. The iterator is reset to the previous traversal setting.
MStatus MItDag::reset | ( | const MObject & | object, | |
MItDag::TraversalType | type = kDepthFirst , |
|||
MFn::Type | filter = MFn::kInvalid | |||
) |
Resets root, type and filter of the iterator.
[in] | object | Root node to begin traversal |
[in] | type | Enumerated type that determines the direction of the traversal |
[in] | filter | Function set type (MFn::Type) |
MStatus MItDag::reset | ( | const MDagPath & | path, | |
MItDag::TraversalType | type = kDepthFirst , |
|||
MFn::Type | filter = MFn::kInvalid | |||
) |
Resets root, type and filter of the iterator. This method is usefull when a node is instanced and a DAG path is necessary to specify which instance should be the root of the traversal.
[in] | path | Path to begin traversal |
[in] | type | Enumerated type that determines the direction of the traversal |
[in] | filter | Function set type (MFn::Type) |
MStatus MItDag::reset | ( | MIteratorType & | dagInfoObject, | |
const MObject * | object, | |||
const MDagPath * | path, | |||
MItDag::TraversalType | type = kDepthFirst | |||
) |
Resets root, type and filter list of the iterator. This method is usefull when a node is instanced and a DAG path is necessary to specify which instance should be the root of the traversal.
[in] | dagInfoObject | Iterator object having info on filter or filterlist. |
[in] | object | MObject, to which the iterator will be reset to. This may be NULL if we are setting the iterator root to dagpath object. |
[in] | path | MDagPath object, to which the iterator will be reset to. This may be NULL if we are setting the iterator root to MObject. |
[in] | type | Enumerated type that determines the direction of the traversal |
This method is obsolete.
[out] | ReturnStatus | Status Code (see below). |
Retrieves DAG node to which the iterator points.
[out] | ReturnStatus | Status Code (see below). |
MStatus MItDag::next | ( | ) |
Moves to the next node matching the filter in the graph.
MStatus MItDag::prune | ( | ) |
Prunes iteration tree at current node.
bool MItDag::isDone | ( | MStatus * | ReturnStatus = NULL |
) | const |
Indicates end of iteration path.
[out] | ReturnStatus | Status Code (see below) |
Returns the root (start node) of the current traversal. The constructor sets the root of traversal to the world node. The root can be changed by the reset() method.
[out] | ReturnStatus | Status Code (see below) |
unsigned int MItDag::depth | ( | MStatus * | ReturnStatus = NULL |
) | const |
Returns the height or depth of the current node in the DAG relative to the root node. The root node has a depth of zero.
[out] | ReturnStatus | Status Code (see below) |
MItDag::TraversalType MItDag::getType | ( | MStatus * | ReturnStatus = NULL |
) | const |
Returns the direction of the traversal.
[out] | ReturnStatus | Status Code (see below) |
Determines a DAG Path to the current item in the iteration.
[out] | path | The DAG Path that is found (implicit return) |
MStatus MItDag::getAllPaths | ( | MDagPathArray & | paths | ) | const |
Determines all DAG Paths to current item in the iteration.
[out] | paths | Array of all DAG Paths that are found (implicit return) |
Return a string representing the full path from the root of the dag to this object.
[out] | ReturnStatus | Status Code (see below) |
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.
[out] | ReturnStatus | Status Code (see below) |
bool MItDag::isInstanced | ( | bool | indirect = true , |
|
MStatus * | ReturnStatus = NULL | |||
) | const |
Determines whether the current item (DAG node) in the iteration 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 multipuly instanced, but it has a directly instanced parent (node->parentCount()=1 and parent->parentCount >1).
[in] | indirect | Indirect instance flag |
[out] | ReturnStatus | Status Code (see below) |
unsigned int MItDag::instanceCount | ( | bool | total, | |
MStatus * | ReturnStatus = NULL | |||
) | const |
Determines the number of times the current item (DAG node) in the iteration 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.
[out] | ReturnStatus | Status Code (see below) |
MStatus MItDag::traverseUnderWorld | ( | bool | flag | ) |
Specifies whether underworld traversal is turned on. The default is off.
The underworld for a shape is a sub dag that hangs off of the shape. For example, if you have a curve on surface for a shape then there will be an underworld or sub-dag for the curve on surface.
[in] | flag | turns on/off underworld traversal |
bool MItDag::willTraverseUnderWorld | ( | MStatus * | ReturnStatus = NULL |
) | const |
Returns true if this iterator will traverse into underworld items.
The underworld for a shape is a sub dag that hangs off of the shape. For example, if you have a curve on surface for a shape then there will be an underworld or sub-dag for the curve on surface.
[out] | ReturnStatus | Status Code (see below) |
Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. | Generated with 1.5.6 |