BakMamba74
BakMamba74

Reputation: 51

NameError: file <maya console> line 1: name "pasteTheseKeys" is not defined

I can't figure out how to get my class method pasteTheseKeys() to work. I tried passing (self) as a parameter but I got an error that I was passing in the 2 parameters when to me it looks I'm passing in 1 with self. I removed the self argument and now am getting this message.

# Animation Copy Tool
# Bakari Holmes 5/7/2015
# This is designed to copy and existing animation
# from one rig to another and make the process easier
# with a simple UI

import maya.cmds as mc
import functools
import maya.mel as mm
import pprint

class AnimCopyWindow(object):
    #@classmethod
    def showUI(cls):
        win = cls()
        win.create()
        return win
    def __init__(self):
        self.window = "Animation Copy Tool"
        self.title = "Animation Copier"
        self.size = (546,350)
    def pasteTheseKeys():
        self.offsetVal = mc.intFieldGrp(self.int_offset, q=True, value1=True)
        self.selObj_pasteKeys = mc.ls(sl=True)

        for objectQuant in self.selObj_pasteKeys:
            print objectQuant
            self.ct = mc.currentTime(query = True)
            self.t = self.ct + self.offsetVal
            mc.currentTime(self.t)
           # mc.selectKey(selObj_pasteKeys[objectQuant])
            mc.pasteKey(time=(self.t,self.t), f=(1.0,1.0), option="merge", copies=1, to=0, fo=0, vo=0)
    def create(self):
        # check to see if window exists already
        if mc.window(self.window,exists=True): 
            mc.deleteUI(self.window,window=True)

        self.window = mc.window(self.window, title=self.title,widthHeight=self.size,menuBar=True)
        self.copyAnim = mc.window(title="Transfer Animation Tool", backgroundColor=[0.3,0.3,0.3],sizeable=False,resizeToFitChildren=True)
        #set the layout for UI
        mc.columnLayout(adjustableColumn=True)
        self.tx_src = mc.textFieldGrp(label="Source Object", editable=False, text=sel[0])
        self.int_offset = mc.intFieldGrp(label="Frame Offset Amount", value1=0)
        #add paste animation button
        self.btn1 = mc.button(label="PASTE ANIMATION", command="pasteTheseKeys()", bgc=[0.1,0.1,0.5])

        #add close button window
        self.btn2 = mc.button(label="CLOSE WINDOW", command="mc.deleteUI", bgc=[0.2,0.2,0.2])


        mc.showWindow()


#copyAnim="copyAnim"

#store selected object info
sel = mc.ls(selection=True)

if (len(sel) != 1):
    mm.eval("warning Must select one animated object;")

else:
    mc.copyKey()
    win = AnimCopyWindow()
    win.create()

    pprint.pprint(channels())

Upvotes: 1

Views: 7473

Answers (1)

srj
srj

Reputation: 10121

the function pasteTheseKeys() needs to be defined with self parameter to be used outside the function. or use staticmethod decorator if it need not accept self.

@staticmethod
def pasteTheseKeys():
    ...

Upvotes: 2

Related Questions