我还在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文档和其他问题无法帮助...:/
答案 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)