我似乎无法正确利用addAttr方法。我使用的是与从pymel.core调用时使用的参数相同的参数,但结果却不尽相同。
我正在尝试添加自定义消息属性,以便以后可以轻松搜索某些类型的对象。当我从pymel.core进行操作并包含与参数相同的对象引用时,它可以正常工作。
#get object reference
test_object = pm.ls(sl=1)[0]
#this one spits out an error
test_object.addAttr(longName = 'custom', attributeType = 'message')
#this one works fine
pm.addAttr(test_object, longName = 'custom', attributeType = 'message')
我不断收到此错误 错误:TypeError:文件第1行:addAttr()恰好接受2个参数(给定1个) 当我以这种方式使用它时,它还会寻找什么其他参数?我显然缺少有关方法如何工作的明显信息,但我无法弄清楚。
答案 0 :(得分:0)
来自cgsociety线程
pCube.addAttr('timeBasedAttr', keyable=True, attributeType='float', min=0.0, max=1.0)
您应该写:
test_object.addAttr('custom', attributeType = 'message')
我已经尝试过,并且不会输出错误。
答案 1 :(得分:0)
在Maya PyMel中为DG节点公开的addAttr方法具有以下签名。
addAttr(attr, **kwargs)
此处attr
是代表属性名称的位置参数。可以将pm.addAttr()
方法中使用的所有其他相关标志提供给kwarg。因此,您必须将属性名称作为第一个参数传递。
node.addAttr('custom', attributeType='message')
希望这会有所帮助。