Source code for bana.OpenMaya.MFnDagNode
"""
bana.OpenMaya.MFnDagNode
~~~~~~~~~~~~~~~~~~~~~~~~
Extensions for the ``maya.OpenMaya.MFnDagNode`` class.
:copyright: Copyright 2014-2017 by Christopher Crouzet.
:license: MIT, see LICENSE for details.
"""
import gorilla
from maya import OpenMaya
@gorilla.patches(OpenMaya.MFnDagNode)
class MFnDagNode(object):
@classmethod
[docs] def bnFind(cls, pattern=None, recursive=True, traverseUnderWorld=True):
"""DAG node iterator.
The calling class defines the function set type for which the nodes
need to be compatible with. It also represents the type of the object
returned.
Categories: :term:`foundation`.
Parameters
----------
pattern : str
Path or full path pattern of the DAG nodes to match. Wildcards are
allowed.
recursive : bool
``True`` to search recursively.
traverseUnderWorld : bool
``True`` to search within the underworld.
Yields
------
maya.OpenMaya.MDagNode
The nodes found.
Note
----
The pattern matching's global context is set to *full path* if the
parameter ``traverseUnderWorld`` is ``True``, and to *path* otherwise.
See :ref:`pm_matching_rules`.
See Also
--------
:ref:`pattern_matching`, :ref:`retrieving_nodes`.
"""
iterator = OpenMaya.MDagPath.bnFind(
pattern=pattern, fnType=cls().type(), recursive=recursive,
traverseUnderWorld=traverseUnderWorld)
return (cls(dagPath) for dagPath in iterator)
@classmethod
[docs] def bnGet(cls, pattern=None, recursive=True, traverseUnderWorld=True):
"""Retrieve a single DAG node.
The calling class defines the function set type for which the node
needs to be compatible with. It also represents the type of the object
returned.
Categories: :term:`foundation`.
Parameters
----------
pattern : str
Path or full path pattern of the DAG node to match. Wildcards are
allowed.
recursive : bool
``True`` to search recursively.
traverseUnderWorld : bool
``True`` to search within the underworld.
Returns
-------
maya.OpenMaya.MFnDagNode
The DAG node found. If none or many were found, ``None`` is
returned.
Note
----
The pattern matching's global context is set to *full path* if the
parameter ``traverseUnderWorld`` is ``True``, and to *path* otherwise.
See :ref:`pm_matching_rules`.
See Also
--------
:ref:`pattern_matching`, :ref:`retrieving_nodes`.
"""
dagPath = OpenMaya.MDagPath.bnGet(
pattern=pattern, fnType=cls().type(), recursive=recursive,
traverseUnderWorld=traverseUnderWorld)
return None if dagPath is None else cls(dagPath)
@gorilla.filter(True)
@gorilla.settings(allow_hit=True)
[docs] def __str__(self):
"""Full path name.
It is helpful when interacting with the commands layer by not having to
manually call the ``fullPathName()`` method each time a ``MFnDagNode``
object needs to be passed to a command.
Categories: :term:`fix`.
Returns
-------
str
The full path name.
"""
return self.fullPathName()
[docs] def bnFindChildren(self, pattern=None, fnType=OpenMaya.MFn.kInvalid,
recursive=True, traverseUnderWorld=True):
"""DAG node iterator over the children.
Categories: :term:`foundation`.
Parameters
----------
pattern : str
Path or full path pattern of the DAG nodes to match, relative to
the current node. Wildcards are allowed.
fnType : maya.OpenMaya.MFn.Type
Function set type to match.
recursive : bool
``True`` to search recursively.
traverseUnderWorld : bool
``True`` to search within the underworld.
Yields
------
maya.OpenMaya.MDagNode
The nodes found.
Note
----
The pattern matching's global context is set to *full path* if the
parameter ``traverseUnderWorld`` is ``True``, and to *path* otherwise.
See :ref:`pm_matching_rules`.
See Also
--------
:ref:`pattern_matching`, :ref:`retrieving_nodes`.
"""
dagPath = OpenMaya.MDagPath()
self.getPath(dagPath)
iterator = dagPath.bnFindChildren(
pattern=pattern, fnType=fnType, recursive=recursive,
traverseUnderWorld=traverseUnderWorld)
return (OpenMaya.MFnDagNode(dagPath) for dagPath in iterator)
[docs] def bnGetChild(self, pattern=None, fnType=OpenMaya.MFn.kInvalid,
recursive=True, traverseUnderWorld=True):
"""Retrieve a single DAG node child.
Categories: :term:`foundation`.
Parameters
----------
pattern : str
Path or full path pattern of the DAG nodes to match, relative to
the current node. Wildcards are allowed.
fnType : maya.OpenMaya.MFn.Type
Function set type to match.
recursive : bool
``True`` to search recursively.
traverseUnderWorld : bool
``True`` to search within the underworld.
Returns
-------
maya.OpenMaya.MDagNode
The node found.
Note
----
The pattern matching's global context is set to *full path* if the
parameter ``traverseUnderWorld`` is ``True``, and to *path* otherwise.
See :ref:`pm_matching_rules`.
See Also
--------
:ref:`pattern_matching`, :ref:`retrieving_nodes`.
"""
dagPath = OpenMaya.MDagPath()
self.getPath(dagPath)
dagPath = dagPath.bnGetChild(
pattern=pattern, fnType=fnType, recursive=recursive,
traverseUnderWorld=traverseUnderWorld)
return None if dagPath is None else OpenMaya.MFnDagNode(dagPath)