Source code for bana.OpenMaya.MFnDependencyNode
"""
bana.OpenMaya.MFnDependencyNode
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Extensions for the ``maya.OpenMaya.MFnDependencyNode`` class.
:copyright: Copyright 2014-2017 by Christopher Crouzet.
:license: MIT, see LICENSE for details.
"""
import gorilla
from maya import OpenMaya
@gorilla.patches(OpenMaya.MFnDependencyNode)
class MFnDependencyNode(object):
@classmethod
[docs] def bnFind(cls, pattern=None):
"""DG 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 objects
yielded.
Categories: :term:`foundation`.
Parameters
----------
pattern : str
Full name pattern of the DG nodes to match. Wildcards are allowed.
Yields
------
cls
The DG nodes found.
See Also
--------
:ref:`pattern_matching`, :ref:`retrieving_nodes`.
"""
iterator = OpenMaya.MItDependencyNodes(cls().type())
if pattern is None:
while not iterator.isDone():
yield cls(iterator.thisNode())
iterator.next()
else:
match = OpenMaya.MGlobal.bnMakeMatchFullNameFunction(pattern)
while not iterator.isDone():
node = cls(iterator.thisNode())
if match(node.name()):
yield node
iterator.next()
@classmethod
[docs] def bnGet(cls, pattern=None):
"""Retrieve a single DG 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
Full name pattern of the DG node to match. Wildcards are allowed.
Returns
-------
cls
The DG node found. If none or many were found, ``None`` is
returned.
See Also
--------
:ref:`pattern_matching`, :ref:`retrieving_nodes`.
"""
iterator = OpenMaya.MFnDependencyNode.bnFind(pattern=pattern)
node = next(iterator, None)
return node if next(iterator, None) is None else None
@gorilla.filter(True)
@gorilla.settings(allow_hit=True)
[docs] def __hash__(self):
"""Hash value that can be relied on.
This is required because the original method returns different values
for multiple instances pointing to a same object, thus making the
``MFnDependencyNode`` object not usable with hash-based containers such
as dictionaries and sets.
Categories: :term:`fix`.
Returns
-------
int
The hash value representing this object.
"""
return OpenMaya.MObjectHandle(self.object()).hashCode()
@gorilla.filter(True)
@gorilla.settings(allow_hit=True)
[docs] def __str__(self):
"""Name.
It is helpful when interacting with the commands layer by not having to
manually call the ``name()`` method each time a ``MFnDependencyNode``
object needs to be passed to a command.
Categories: :term:`fix`.
Returns
-------
str
The name.
"""
return self.name()