def create( layoutName, classNameOrParameterised, classVersion=None, envVarName=None ) : with IECoreMaya.UndoDisabled() : nodeName = maya.cmds.createNode( "ieTransientParameterisedHolderNode", skipSelect = True ) # Script jobs aren't available from maya.cmds. Maya Python bindings generate swig warnings # such as "swig/python detected a memory leak of type 'MCallbackId *', no destructor found" IECoreMaya.mel( 'scriptJob -uiDeleted "%s" "python( \\\"import IECoreMaya; IECoreMaya.FnTransientParameterisedHolderNode._deleteNode( \'%s\' )\\\" )" -protected' % ( layoutName, nodeName ) ) fnTPH = FnTransientParameterisedHolderNode( nodeName ) if isinstance( classNameOrParameterised, str ) : fnTPH.setParameterised( classNameOrParameterised, classVersion, envVarName ) else : assert( not classVersion ) assert( not envVarName ) fnTPH.setParameterised( classNameOrParameterised ) parameterised = fnTPH.getParameterised()[0] if parameterised : maya.cmds.setParent( layoutName ) IECoreMaya.ParameterUI.create( fnTPH.fullPathName(), parameterised.parameters() ) maya.cmds.setParent( layoutName ) return fnTPH
def test(self): maya.cmds.undoInfo(stateWithoutFlush=True) with IECoreMaya.UndoChunk('test1'): cube = maya.cmds.createNode('polyCube') sphere = maya.cmds.createNode('polySphere') with IECoreMaya.UndoDisabled(): plane = maya.cmds.createNode('polyPlane') maya.cmds.undo() self.assertFalse(maya.cmds.objExists(cube)) self.assertFalse(maya.cmds.objExists(sphere)) self.assertTrue(maya.cmds.objExists(plane))
def _deleteNode(nodeName): with IECoreMaya.UndoDisabled(): if maya.cmds.objExists(nodeName): maya.cmds.delete(nodeName)