Код, который я сделал, несмотря на двойную, тройную и четырехкратную проверку, отказывается загружать выбранные элементы в текстовые поля, что предполагает, что вы можете заставить maya преодолеть вновь обретенную ненависть к функции cmds.windows
Ошибки, которые я получаю, являются тройными, если вы попытаетесь загрузить код в новое окно, вы просто получите
Ошибка: имя 'окно' не определено ', если вы сделаете этоС этим препятствием вы столкнетесь с двумя проблемами: первая из них - просто вставка приведенного ниже кода. Меню будет загружаться очень хорошо, но если вы нажмете «Load A Node» или «Load B Node», вы получите ошибку "# Error: Объект 'window1 | columnLayout9 | sld_surfaceTextHJ' не найден.
Я никогда не вставлял в код "sld_surfaceTextHJ", поэтому я не знаю, почему Maya продолжает спрашивать об этом.Однако, если вы позаботитесь об этом и попытаетесь изменить имя 'sld_surfaceTextA' или 'sld_surfaceTextB' на любое другое имя, вы получите третью ошибку: # Ошибка: имя 'window1 | columnLayout9 | sld_surfaceTextHJ' не определено.
Скрипт работал нормально, загружая выборки, но кажется, что все скрипты, которые я сделал в этом формате, отказываются работать.
Вот если вы захотите попробовать
import maya.cmds as cmds
if cmds.window(window, exists =True):
cmds.deleteUI(window)
window = cmds.window(title='DS selection connector demo')
column = cmds.columnLayout(adj=True)
sld_textFldA = cmds.textField('sld_surfaceText1', width =240)
load_button = cmds.button( label='Load A Node', c = set_textfield)
sld_textFldB = cmds.textField('sld_surfaceText2', width =240)
load_button = cmds.button( label='Load B Node', c = set_textfield)
node_button = cmds.button( label='Connect Node', c = make_node)
def set_textfieldA(_):
sel = cmds.ls(selection=True)
cmds.textField(sld_textFldA, edit=True, text=sel[0])
def set_textfieldB(_):
sel = cmds.ls(selection=True)
cmds.textField(sld_textFldB, edit=True, text=sel[0])
def connect_node(_):
text_value = cmds.textField(sld_textFldA, q = True, text=True)
text_value = cmds.textField(sld_textFldB, q = True, text=True)
if text_value:
print "created:", cmds.connectAttr('transform', n=text_value +'_firstGuy')
print "created:", cmds.connectAttr('transform', n=text_value +'_secondGuy')
else:
cmds.warning("select an object and add it to the window first!")
cmds.showWindow( window )
Ожидаемые результаты довольно просты: вы нажимаете «Load A Node» на любом узле, который вы создаете, чтобы загрузить первый Node, затем вы нажимаете «Load B Node» на втором созданном вами узле: затем при нажатии «Connect Node»атрибут translate вашего первого узла должен быть подключен ко второму узлу, как редактор соединений.