Autodesk Maya中的setAttr函数

时间:2017-08-01 10:36:45

标签: python maya

我还在Maya学习Python。我无法让我的代码工作。我正在尝试创建一个定位器并将其置于我的选择之下,然后将定位器转换为零。

#Error: TypeError: file <maya console> line 7: Invalid argument 1, '[u'locator6']'. Expected arguments of type ( list, )

我总是收到此错误消息:

#There does not exist something with name 'translateX'

有时我会得到类似的其他代码:

loc

我知道当我用定位器的名称替换setAttr时它确实有效,但我尽量保持代码尽可能通用,而不是绑定到定位器的名称。

//removed code 函数如何在Maya中使用变量?各种论坛上的Maya文档和其他问题无法帮助...:/

2 个答案:

答案 0 :(得分:1)

setAttr将一个完整的属性作为其参数:

 cmds.setAtt( loc + ".translateX", 0)  

其中loc必须是单个字符串。像大多数创建命令一样spaceLocator返回一个列表,而不是一个字符串。所以整个事情是:

sel = cmds.ls(selection = True)
loc = cmds.spaceLocator()
cmds.parent(loc, sel)
cmds.setAttr(loc[0] + ".translateX", 0)

答案 1 :(得分:0)

我知道你似乎要求寻求maya cmds,但我想把它作为另一种选择。

在PyMel中,spaceLocator函数返回创建的对象本身。然后属性是对象内部的方法,允许您执行以下操作。我喜欢PyMel的一个原因!

import pymel.core as pm

sel = pm.selected()[0]
loc = pm.spaceLocator()
pm.parent(loc, sel)
loc.translateX.set(0)