Итак, я работаю над простой демонстрацией, похожей на один из моих других вопросов, это довольно просто, просто запустите скрипт, загрузите объект в узел A, загрузите объект в узел B, нажмите «подключить узлы» и перевести из ваших 2 предметов будут связаны.
По крайней мере, я бы хотел, чтобы это произошло. Вместо этого я продолжаю получать «# Ошибка: имя« SetSource »не определено» или любая из моих других команд, говорящая «Не определено», как ни странно, я могу временно исправить это, если я просто перейду к «c = SetSource» или любая другая команда , вырежьте их из кода, повторно запустите окно, затем вставьте их обратно на место, и они будут работать: но это хлопотно, и я просто хочу, чтобы это работало сразу при запуске.
Вторая проблема заключается в том, что когда я загружаю данные в текстовое поле и пытаюсь соединить их с помощью кнопки «Подключить узлы», я получаю сообщение об ошибке «# Ошибка: исходный атрибут «Объект, который вы загрузили в текстовое поле узла A», не может быть найден».
Есть пара вещей, которые я уже пробовал, например: проблема с запуском. Я попытался обернуть кнопки и текстовые поля в их собственную маленькую категорию «def», я назвал ее ui(): и разместил ui() в конце кода. , и это заставляет его работать нормально при запуске, за исключением того, что когда я запускал скрипт, он отказывался загружать что-либо в текстовые поля
для команды подключения для подключения переводов я попытался поставить 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)
Мой ожидаемый результат состоит в том, чтобы код просто работал при запуске, не вызывая мои определения «неопределенно», и чтобы узлы подключения просто подключали переводы.