8 import maya.OpenMaya
as om
9 import maya.OpenMayaMPx
as omMPx
47 def pyNameFilterCreator( param ):
50 om.MGlobal.displayError(
'Cannot construct NameFilter object: empty parameter string' )
53 tokens = param.split(
',' )
55 om.MGlobal.displayError(
'Cannot construct NameFilter object: the parameter string has too many tokens' )
64 if tokens[1] ==
"reverse":
67 displayString =
'Cannot construct NameFilter object: expected "reverse" for the second token in the parameter string, got "' + tokens[1] +
'"'
68 om.MGlobal.displayError( displayString )
71 return omMPx.asMPxPtr( pyNameFilter(pattern = pattern, reverseLogic = reverseLogic) )
74 def initializePlugin( mObject ):
75 om.MCacheConfigRuleRegistry.registerFilter(
"pyNameFilter", pyNameFilterCreator );
77 def uninitializePlugin( mObject ):
78 om.MCacheConfigRuleRegistry.unregisterFilter(
"pyNameFilter" );
80 class pyNameFilter( omMPx.MPxCacheConfigRuleFilter ):
81 def __init__( self, pattern = None, reverseLogic = False ):
82 super(pyNameFilter, self).__init__()
83 self._pattern = pattern
84 self._reverseLogic = reverseLogic
86 def isMatch( self, evalNode ):
87 fnNode = om.MFnDependencyNode( evalNode.dependencyNode() )
88 nodeAbsName = fnNode.absoluteName( );
91 nodeNameMatchesPattern =
True if self._pattern
in nodeAbsName
else False
92 return nodeNameMatchesPattern
if False == self._reverseLogic
else not nodeNameMatchesPattern