Source code for bana.OpenMaya.MObject

"""
    bana.OpenMaya.MObject
    ~~~~~~~~~~~~~~~~~~~~~

    Extensions for the ``maya.OpenMaya.MObject`` class.

    :copyright: Copyright 2014-2017 by Christopher Crouzet.
    :license: MIT, see LICENSE for details.
"""

import gorilla
from maya import OpenMaya


@gorilla.patches(OpenMaya.MObject)
class MObject(object):

    @classmethod
[docs] def bnFind(cls, pattern=None, fnType=OpenMaya.MFn.kInvalid): """DG node iterator. Categories: :term:`foundation`. Parameters ---------- pattern : str *Full name* pattern of the DG nodes to match. Wildcards are allowed. fnType : maya.OpenMaya.MFn.Type Function set type to match. Yields ------ maya.OpenMaya.MObject The DG nodes found. See Also -------- :ref:`pattern_matching`, :ref:`retrieving_nodes`. """ iterator = OpenMaya.MItDependencyNodes(fnType) if pattern is None: while not iterator.isDone(): yield iterator.thisNode() iterator.next() else: match = OpenMaya.MGlobal.bnMakeMatchFullNameFunction(pattern) while not iterator.isDone(): obj = iterator.thisNode() if match(OpenMaya.MFnDependencyNode(obj).name()): yield obj iterator.next()
@classmethod
[docs] def bnGet(cls, pattern=None, fnType=OpenMaya.MFn.kInvalid): """Retrieve a single DG node. Categories: :term:`foundation`. Parameters ---------- pattern : str *Full name* pattern of the DG node to match. Wildcards are allowed. fnType : maya.OpenMaya.MFn.Type Function set type to match. Returns ------- maya.OpenMaya.MObject The DG node found. If none or many were found, ``None`` is returned. See Also -------- :ref:`pattern_matching`, :ref:`retrieving_nodes`. """ iterator = OpenMaya.MObject.bnFind(pattern=pattern, fnType=fnType) obj = next(iterator, None) return obj 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 ``MObject`` 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).hashCode()