Hello,
i have written a small plugin that creates a curve in maya. all i need it to do is to delete the curve when i press undo. So far here is my code:
import maya.OpenMaya as om
import maya.OpenMayaMPx as OpenMayaMPx
import sys, math
kPluginCmdName="createCurve"
class curveTest(OpenMayaMPx.MPxCommand):
def __init__(self):
OpenMayaMPx.MPxCommand.__init__(self)
def doIt(self, args):
self.redoIt()
def redoIt(self):
#create the curve
curveFn = om.MFnNurbsCurve()
arr = om.MPointArray()
positions=[(1,2,3),(0,2,3),(2,3,4),(5,2,4)]
for pos in positions:
arr.append(*pos)
try:
if True:
curveTransform = curveFn.createWithEditPoints(
arr,
3,
om.MFnNurbsCurve.kOpen,
False,
False,
True
)
else:
print "no"
except:
sys.stderr.write( "Error creating curve.
" )
raise
def undoIt(self):
pass
#delete curve here
def isUndoable(self):
return True
def cmdCreator():
return OpenMayaMPx.asMPxPtr( curveTest() )
def initializePlugin(mobject):
mplugin = OpenMayaMPx.MFnPlugin(mobject)
try:
mplugin.registerCommand( kPluginCmdName, cmdCreator)
except:
sys.stderr.write( "Failed to register command: %s
" % kPluginCmdName )
raise
def uninitializePlugin(mobject):
mplugin = OpenMayaMPx.MFnPlugin(mobject)
try:
mplugin.deregisterCommand( kPluginCmdName )
except:
sys.stderr.write( "Failed to unregister command: %s
" % kPluginCmdName )
raise
i saw an example of how to do this elswhere but it doesnt work in my script. I guess because its not written in python syntax?
MFnDagNode dagFn(curveTransform)
MObject child;
child = dagFn.child(0);
MGlobal::deleteNode(child);
MGlobal::deleteNode(curveTransform);
could anyone give me some pointers here?.
also, if a curve creation functon is called many times throughout a script, would there just be a way to delete all the API created curves in one go? or do they need to be deleted in a particular way?
thanks alot,
Sam