78 import maya.OpenMaya 
as OpenMaya
 
   79 import maya.OpenMayaMPx 
as OpenMayaMPx
 
   82 kPluginCmdName=
"spMotionTrace" 
   85 kStartLongFlag = 
"-startFrame" 
   87 kEndLongFlag = 
"-endFrame" 
   89 kByLongFlag = 
"-byFrame" 
   92 class motionTrace(OpenMayaMPx.MPxCommand):
 
   94         OpenMayaMPx.MPxCommand.__init__(self)
 
  101     def doIt(self, args):
 
  103         This method is called from script when this command is called. 
  104         It should set up any class data necessary for redo/undo, 
  105         parse any given arguments, and then call redoIt. 
  109         if argData.isFlagSet(kStartFlag):
 
  110             self.__start = argData.flagArgumentInt(kStartFlag, 0)
 
  111         if argData.isFlagSet(kEndFlag):
 
  112             self.__end = argData.flagArgumentInt(kEndFlag, 0)
 
  113         if argData.isFlagSet(kByFlag):
 
  114             self.__by = argData.flagArgumentInt(kByFlag, 0)
 
  121         This method performs the action of the command. 
  122         This method iterates over all selected items and 
  123         prints out connected plug and dependency node type 
  136         while not iter.isDone():
 
  138             iter.getDependNode(dependNode)
 
  139             picked.append(dependNode)
 
  146         while (time <= self.__end):
 
  151             for i 
in range(picked.length()):
 
  153                 dependNode = picked[i]
 
  159                 txAttr = fnDependNode.attribute(
"translateX")
 
  161                 tx = txPlug.asDouble()
 
  163                 tyAttr = fnDependNode.attribute(
"translateY")
 
  165                 ty = tyPlug.asDouble()
 
  167                 tzAttr = fnDependNode.attribute(
"translateZ")
 
  169                 tz = tzPlug.asDouble()
 
  171                 print "adding", tx, ty, tz, 
"\n" 
  177         for i 
in range(picked.length()):
 
  178             self.__jMakeCurve(pointArrays[i])
 
  181     def __jMakeCurve(self, cvs):
 
  183         Make a degree 1 curve from the given CVs. 
  185         Note that in Python, a double underscore in front of a member name 
  186         make the method "private" to the class through name-mangling 
  191         for i 
in range(cvs.length()):
 
  197         curveFn.create(cvs, knots, deg, OpenMaya.MFnNurbsCurve.kOpen, 
False, 
False, nullObj)
 
  202     return OpenMayaMPx.asMPxPtr(motionTrace())
 
  208     syntax.addFlag(kStartFlag, kStartLongFlag, OpenMaya.MSyntax.kLong)
 
  209     syntax.addFlag(kEndFlag, kEndLongFlag, OpenMaya.MSyntax.kLong)
 
  210     syntax.addFlag(kByFlag, kByLongFlag, OpenMaya.MSyntax.kLong)
 
  215 def initializePlugin(mobject):
 
  216     mplugin = OpenMayaMPx.MFnPlugin(mobject, 
"Autodesk", 
"1.0", 
"Any")
 
  218         mplugin.registerCommand(kPluginCmdName, cmdCreator, syntaxCreator)
 
  220         sys.stderr.write(
"Failed to register command: %s\n" % kPluginCmdName)
 
  225 def uninitializePlugin(mobject):
 
  226     mplugin = OpenMayaMPx.MFnPlugin(mobject)
 
  228         mplugin.deregisterCommand(kPluginCmdName)
 
  230         sys.stderr.write(
"Failed to unregister command: %s\n" % kPluginCmdName)