Here is a tool i wrote that transfers animation on all selected objects from a source frame to a destination frame.
Hope you find it helpful,
#####requires all animated controls selected #cpPoseSingleFrame.py copy pose from one frame to another # #@author Nathaniel Anozie # ## #@note inspired by James Park (arcsecond dot net) learning about making python Maya ui from online tutorials #modify at own risk #last updated: 02/19/2014 -- adding better integration with Maya, fixed ui bug finding global variables #last updated: 02/18/2014 -- initial release import maya.cmds as cmds def cpPoseSingleFrame(): #global toField, fromField, winName winName = 'cpPoseSingleFrame' if( cmds.windowPref(winName, exists = True) ): cmds.windowPref(winName, remove = True) if( cmds.window(winName, exists = True ) ): cmds.deleteUI(winName) cmds.window(winName, t = "Copy pose on single fr", wh=(100,70),rtf=1) cmds.columnLayout(adjustableColumn = True, columnAttach = ["both",5], rowSpacing = 8, columnWidth = 100) #fromField = cmds.intFieldGrp( numberOfFields=1, label='From Frame', value1=1 ) #toField = cmds.intFieldGrp( numberOfFields=1, label='To Frame', value1=1 ) cmds.intFieldGrp( "fromField", numberOfFields=1, label='From Frame', value1=1 ) cmds.intFieldGrp( "toField", numberOfFields=1, label='To Frame', value1=1 ) cmds.button( "poseButton", label='Copy Pose', command=("cpPoseCollectAndCall()") ) cmds.showWindow( winName ) #global toField, fromField, winName def cpPoseCollectAndCall(): #global toField, fromField, winName toArg = cmds.intFieldGrp( "toField", value = True, query = True) fromArg = cmds.intFieldGrp( "fromField", value = True, query = True) anim = cmds.ls(selection = True) posePaste( fromFrame = fromArg[0] ,toFrame = toArg[0], anim = anim ) #copies animation between two frames -- copying from into to def posePaste(fromFrame = 35,toFrame = 21, anim = []): #fromFrame = 35 fromFrameRange = ( fromFrame, (fromFrame+1) ) #toFrame = 21 toFrameRange = (toFrame,toFrame) cmds.copyKey( anim, time = fromFrameRange, float = fromFrameRange, option = 'keys', hierarchy = 'none', controlPoints = 0, shape = 1) cmds.pasteKey( anim, time = toFrameRange, float = toFrameRange, option = 'merge', copies = 1, connect = 0, timeOffset = 0, floatOffset = 0, valueOffset=0 )
cheers,
-Nate