【发布时间】:2016-03-04 05:40:20
【问题描述】:
请多多包涵 - 我对这一切都不熟悉。我尝试了搜索,只找到了我正在寻找的点点滴滴,但没有找到我需要连接它们的东西。
基本上,我正在尝试创建一个 Python 脚本,该脚本允许用户简单地将 Maya 通道框上的多个选定属性“0”出。
到目前为止我有:
import maya.cmds as cmds
selObjs = cmds.ls(sl=1)
selAttrs = cmds.channelBox("mainChannelBox", q=1, sma=1)
print selObjs # returns [u'pCube1']
print selAttrs # returns [u'ty']
如果我想设置属性:
cmds.setAttr(selObjs + "." + selAttrs, '0')
当然这是错误的,那么在这个场景中如何正确执行 setAttr 命令呢? (目的包括如果我在频道框中有多个选定的属性,则必须设置它们。
我发现在 MEL 中,它是这样工作的。所以真的我只需要帮助弄清楚如何创建这个的python对应物:
string $object[] = `ls -sl`;
string $attribute[] = `channelBox -q -sma mainChannelBox`;
for ($item in $object)
for($attr in $attribute)
setAttr ($item + "." + $attr) 0;
之后,我需要一个 if 循环,如果选择的属性是比例属性,则值应该是 1 - 但这是我稍后会研究的内容,但不介意被告知。
谢谢!
【问题讨论】:
-
如果您使用您说“错误”的代码会发生什么?你有例外吗?我看到的显而易见的事情是,您正试图将单项列表视为字符串。您可能想尝试
cmds.setAttr(selObjs[0] + "." + selAttrs[0], '0'),或者像在 MEL 代码中那样编写for循环。 -
是的,我学到了艰难的方式,我在那里尝试做的是连接列表(而不是它们的内容)XD - 学习的痛苦
标签: python maya setattribute mel