尽管进行了两次,三次和四次检查,但我编写的代码仍拒绝将选定的项目加载到文本字段中,也就是说,假设您可以使maya克服它对cmds.windows函数的新仇恨
我得到的错误有三点,如果您尝试将代码加载到新窗口中,您将得到
错误:未定义名称“窗口””,如果您克服了这个障碍,则会遇到两个问题:第一个是粘贴下面的代码。菜单将加载得很好,但是如果您按下“ “加载A节点”或“加载B节点”,将显示错误消息“#错误:找不到对象'window1 | columnLayout9 | sld_surfaceTextHJ”。
我从未在代码中放入“ sld_surfaceTextHJ”,所以我不知道为什么玛雅人一直在要求它。但是,如果您对其进行幽默处理,然后尝试将名称'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 )
预期结果非常简单:在创建的任何节点上单击“加载A节点”以加载第一个节点,然后在创建的第二个节点上单击“加载B节点”:然后单击“连接节点”您的第一个节点的translate属性应与连接编辑器一样连接至第二个节点。
答案 0 :(得分:0)
没关系,对于任何感兴趣的人:这是固定代码,我仍然还没有弄清楚connect属性部分:但是对于寻找简单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 )