deleting curve with API


#1

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


#2

ok apparently all i needed was this line written in python syntax

om.MGlobal().deleteNode(self.curveTransform)