in your loop you need to build up all the point positions then after the loop you need to draw your curve, setting all your points in order at once
On Sat, Feb 26, 2011 at 10:39 PM, martinmrom...@gmail.com < martinmrom...@gmail.com> wrote: > Hello Everyone, > > I am currently working on a basic tool, it is WIP. The purpose of the > tool is to create a curve from an object's translation. I know that > Maya has something like this already however, I wanted to create the > actual script myself using Python. > > I have a problem with the script, it seems to be creating a curve at > every frame instead of creating one whole curve drawing the whole > path, any hints? > > Thanks so much! > > import maya.cmds as cmds > """ > > This tool creates a curve or multiple curves from an animated object's > translation. > Author: > Martin LaLand Romero > > """ > > def main(): > """ > This function runs the genCurvefromObj function. > """ > for i in genCurvefromObj(1, 95, 1): > print(i) > > """ > This function generates a curve based on the object's animation > path. > """ > def genCurvefromObj(frameStart, frameStop, step): > myObject = cmds.ls(selection = True) > > #This loop queries the position of the animated object and creates > a curve based on its position. > for object in myObject: > i = frameStart > while i <=frameStop: > yield i > i += step > print('The current frame is', cmds.currentTime( i, edit = > True)) > animationCurve = cmds.curve( p = [(0, 0, 0), (0, 0, 0), > (0, 0, 0), (0, 0, 0)], name = ('Jack_' + str(object) )) > cmds.currentTime(i, edit = True) > > #Get the object position on everyFrame. > pos = cmds.xform((object), r=True, query = True, t=True ) > > cmds.curve(animationCurve, append = True, p = pos,) > cmds.delete(animationCurve + ".cv[0]") > > if __name__ == "__main__": main() > > Even after revising the loop as shown below, the tool still doesn't > work. > > > frameStart = 1 > frameStop = 100 > step = 1 > > myObject = cmds.ls(selection = True) > > #This loop queries the position of the animated object and creates > a curve based on its position. > for object in myObject: > i = frameStart > while i <=frameStop: > #yield i > i += step > print('The current frame is', cmds.currentTime( i, edit = > True)) > animationCurve = cmds.curve( p = [(0, 0, 0), (0, 0, 0), (0, 0, > 0)], name = ('Jack_' + str(object) )) > cmds.currentTime(i, edit = True) > > #Get the object position on everyFrame. > pos = cmds.xform((object), r=True, query = True, t=True ) > > cmds.curve(animationCurve, append = True, p = pos,) > cmds.delete(animationCurve + ".cv[0]") > > Thank you guys, > > Cheers > Martin > > -- > http://groups.google.com/group/python_inside_maya > -- http://groups.google.com/group/python_inside_maya