2015-05-08 1 views
0

Я не могу понять, как получить метод класса pasteTheseKeys() для работы. Я пробовал прохождение (self) в качестве параметра, но у меня была ошибка, которую я передавал по двум параметрам, когда мне кажется, что я перехожу в 1 с собой. Я удалил аргумент self и теперь получаю это сообщение.NameError: file <maya console> строка 1: имя "pasteTheseKeys" не определено

# 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()) 
+0

Пожалуйста, добавьте всю трассу. –

+0

В Maya с использованием Python я не получаю трассировку. Обычно только одна строка или две. Если дано, я не понял, как его отобразить. – BakMamba74

ответ

1

функция pasteTheseKeys() должно быть определенно с самостоятельным параметром для использования вне функции. или используйте staticmethod декоратор, если ему не нужно принимать себя.

@staticmethod 
def pasteTheseKeys(): 
    ... 
+0

Я попытался добавить в @staticmethod, как вы предлагали, и получаю то же сообщение об ошибке. Когда я передаю себя как параметр - def pasteTheseKeys (self): и удаляю кавычки и круглые скобки из того места, где я его вызываю (self.btn1 = mc.button bla bla) Я получаю сообщение об ошибке в неправильном количестве аргументов передается функции. – BakMamba74

+0

вы используете self внутри функции, поэтому я должен быть аргументом (здесь не использовать staticmethod). можете ли вы поделиться тем, как вы вызываете эту функцию? – srj

+0

self.btn1 = mc.button (label = "PASTE ANIMATION", command = self.pasteTheseKeys, bgc = [0,1,0.1,0.5]) – BakMamba74

 Смежные вопросы

  • Нет связанных вопросов^_^