多个文本字段拒绝加载所选对象

Multiple text fields refusing to load selected objects

尽管经过双重、三重和四重检查,我编写的代码拒绝将选定的项目加载到文本字段中,这是假设您可以让 maya 克服它对 cmds.windows 函数的新发现的仇恨

我得到的错误是三重的,如果您尝试将代码加载到新的 window 中,您将得到

Error: name 'window' is not defined" assuming you make it past that hurdle you will run into 2 problems: the first is just from pasting the code below. The menu will load just fine, but if you hit either "Load A Node" or "Load B Node" you will get the error "# Error: Object 'window1|columnLayout9|sld_surfaceTextHJ' not found.

我从来没有把"sld_surfaceTextHJ"放在代码里,所以我不知道为什么maya一直要求它。但是,如果您幽默并尝试将名称 'sld_surfaceTextA' 或 'sld_surfaceTextB' 更改为任何其他名称,您将收到第三个错误: # Error: name 'window1|columnLayout9|sld_surfaceTextHJ' is not defined.

该脚本过去可以很好地加载选择,但似乎我按照这种格式制作的每个脚本都无法正常工作。

这里是如果你想尝试一下

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" 以加载第一个节点,然后在您创建的第二个节点上点击 "Load B Node":然后点击 "Connect Node" 你的第一个节点的翻译属性应该像连接编辑器一样连接到你的第二个节点。

没关系伙计们,对于任何感兴趣的人:这是固定代码,我还没有弄清楚连接属性部分:但是对于任何正在寻找简单的 textField 选择加载器演示的人,这里是:

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_textfield1)

sld_textFldB = cmds.textField('sld_surfaceText2', width =240)
load_button = cmds.button( label='Load B Node', c = set_textfield2)


def set_textfield1(_):
    sel = cmds.ls(selection=True)
    cmds.textField(sld_textFldA, edit=True, text=sel[0])

def set_textfield2(_):
    sel = cmds.ls(selection=True)
    cmds.textField(sld_textFldB, edit=True, text=sel[0])


cmds.showWindow( window )