Вы используете cmds, я настоятельно рекомендую вместо этого pymel
import pymel.core as pm
Но это не ваша проблема.
Проблема в логике.
У вас есть члены класса vars self.loadobject
& self.basename
. Эти 2 представляют название объектов пользовательского интерфейса Maya. Когда вы делаете запрос, вы перезаписываете эти переменные содержимым объектов пользовательского интерфейса Maya.
Затем, когда вы снова попытаетесь использовать эти 2 объекта, Майя говорит вам:
RuntimeError:
"Чувак, о ком! @ # $ Ты говоришь?"
Я извиняюсь за своих друзей в Autodesk, они либо подвергли цензуре вторую строку из-за грубого языка, либо просто не добавили полезного отладчика в Maya.
import maya.cmds as cmds
#x=MyUI()
class MyUI:
def __init__(self):
self.title = "Test UI"
self.window = cmds.window(self.title, widthHeight=(1000, 600),
resizeToFitChildren=1)
cmds.rowLayout("button1, button2, button3", numberOfColumns=5)
cmds.columnLayout(adjustableColumn=True, columnAlign="center",
rowSpacing=10)
self.loadobjectTEXT = "Select Object and Load name"
self.loadobjectFIELDNAME = cmds.textFieldButtonGrp(label="Load Object name",
buttonLabel="Load",
text=self.loadobjectTEXT,
buttonCommand=self.load)
self.basenameTEXT = "Enter basename."
self.basenameFIELDNAME = cmds.textFieldButtonGrp(label="Basename",
buttonLabel="Rename",
text=self.basenameTEXT,
buttonCommand=self.replace_name)
cmds.setParent(menu=True)
cmds.showWindow(self.window)
def load(self):
select_objects = cmds.ls(selection=True)
cmds.textFieldButtonGrp(self.loadobjectFIELDNAME, e=True, text=select_objects[0])
def replace_name(self, *args):
self.loadobjectTEXT = cmds.textFieldButtonGrp(self.loadobjectFIELDNAME,
q=True, text=True)
self.basenameTEXT = cmds.textFieldButtonGrp(self.basenameFIELDNAME,
q=True, text=True)
name = cmds.rename(self.loadobjectTEXT, self.basenameTEXT)
ctlname = "%s_ctl" % name
self.new_name = cmds.rename(name, ctlname)