在Python 3中,我试图将对象的属性连接到其代理对象的等效属性(由其“_proxy”后缀标识)。
以下是代码:
import maya.cmds as mc
attributes = ['.t', '.r', '.s']
controllers = mc.ls('ctrl_Lip*')
def corresponding_proxy(controller):
corresponding_proxy = mc.ls(controller+'_proxy')
return corresponding_proxy
for controller in controllers :
for attr in attributes :
mc.connectAttr(controller+attr, corresponding_proxy(controller)+attr)
返回的错误是:
# Error: TypeError: file <maya console> line 13: can only concatenate list (not "str") to list #
我不明白,因为我认为controller
,corresponding_proxy
和attr
都是字符串。
我错过了什么?
好的jasonharper是对的,回归controller+'_proxy'
让它发挥作用!
但它现在又向我抛出了另一个错误:
# Error: RuntimeError: file <maya console> line 14: The destination attribute 'ctrl_Lip_Up_1_proxy_proxy.t' cannot be found. #
...它并没有对整个对象列表进行操作,只是第一个对象,然后是错误。
好的,没关系! '''命令也返回了我创建的代理,所以我的循环也试图迭代代理本身...
非常感谢大家!解决了 ! 这是工作代码:
import maya.cmds as mc
attributes = ['.t', '.r', '.s']
controllers = mc.ls('ctrl_Lip*', tr=True)
for controller in controllers:
mc.duplicate(controller, n=controller+'_proxy')
def corresponding_proxy(controller):
return controller+'_proxy'
for controller in controllers:
for attr in attributes:
mc.connectAttr(controller+attr, corresponding_proxy(controller)+attr)