Хорошо, поэтому я работаю над простой демонстрацией, похожей на один из моих других вопросов, это довольно просто, просто запустите скрипт, загрузите объект в узел A, загрузите объект в узел B, нажмите «подключить узлы»и перевод ваших двух предметов будет соединен.
По крайней мере, это то, что я хотел бы, чтобы произошло.Вместо этого я продолжаю получать «# Ошибка: имя« SetSource »не определено» или любую из моих других команд, говорящих «Не определено», как ни странно, я могу временно это исправить, если просто перейти к «c = SetSource» или любой из других командвырежьте их из кода, снова запустите окно, затем вставьте их обратно на место, и они будут работать: но это хлопотно, и я просто хочу, чтобы оно работало прямо при запуске.
Вторая проблема - это когдаЯ загружаю вещи в текстовое поле и пытаюсь соединить их с помощью кнопки «Подключить узлы», появляется сообщение об ошибке: «Ошибка: не найден исходный атрибут« Объект, загруженный вами в текстовое поле узла ».
Тамэто пара вещей, которые я уже пробовал, например: проблема с запуском. Я пытался обернуть кнопки и текстовые поля в их собственную маленькую категорию «def», я назвал это ui (): и разместил ui () в конце кода,и это заставляет его работать нормально при запуске, за исключением того, что когда я запустил скрипт, он отказался загружать что-либо в текстовые поля
для команды подключения to соединить переводы, я попытался поместить def connect (attr, * args) вместо просто def_connect (), но если я попытаюсь сделать attr командой * args, она просто игнорируется, и мне говорят «attr не определено»
Я вроде в конце моей веревки здесь.Я компилирую все, что я сделал в других скриптах, чтобы создать один мастер-скрипт для сборки вспомогательных соединений в такелаже, и это двойное текстовое поле - последнее, что стоит на моем пути.
import maya.cmds as cmds
if cmds.window("dumWin", exists =True):
cmds.deleteUI("dumWin")
window = cmds.window("dumWin",title='DS selection connector demo')
column = cmds.columnLayout(adj=True)
cmds.showWindow(window)
sld_textFldA = cmds.textField('sld_surfaceText1', width =240)
load_button = cmds.button( label='Load A Node', c = SetSource)
sld_textFldB = cmds.textField('sld_surfaceText2', width =240)
load_button = cmds.button( label='Load B Node', c = SetTarget)
load_button = cmds.button( label='Connect Nodes', c = connect)
def SetSource(_):
sel = cmds.ls(selection=True)
cmds.textField(sld_textFldA, edit=True, text=sel[0])
def SetTarget(_):
sel = cmds.ls(selection=True)
cmds.textField(sld_textFldB, edit=True, text=sel[0])
def connect(_):
cmds.connectAttr( source + '.', target + '.', f=True)
Мой ожидаемый результат - получитькод просто работает при запуске, не вызывая мои defs "undefined" и просто соединяйте узлы подключения, переводит