如何在 Python 中从组中获取属性 - Maya 脚本


'# 错误:第 1 行:名称

错误:文件 第 38 行:未定义名称"Person1"# '

虽然如果我看我的大纲,Person1 存在。我做错了什么?它应该很简单..

#create one person
import maya.cmds as cmds
import random
personGroup = cmds.group( empty=True, name='Person1' )
Body = cmds.polyCube(n = 'Body', w =0.8, h=1.1, d=0.3)
cmds.move(0,0.5,0)
cmds.parent( Body, personGroup )
Arm1 = cmds.polyCube(n= 'Arm1', w=0.2 ,h=0.2, d=0.9)
cmds.move(0.5, 0.75, 0.35)
cmds.xform(os=True, rp=[0,0,-0.3])
cmds.parent( Arm1, personGroup )
Arm2 = cmds.duplicate(n = 'Arm2')
cmds.move(-0.5, 0.75, 0.35)
cmds.xform(os=True, rp=[0,0,-0.3])
#cmds.parent( Arm2, personGroup )
Head = cmds.polySphere(n= 'Head', r = 0.28)
cmds.move(0, 1.3, 0)
cmds.parent( Head, personGroup )

#create multiple instances in a row
for i in range (1,40):
    cmds.duplicate(personGroup)
    cmds.select('Person%d' %(i+1))
    cmds.move(1.5*i,0,0, relative=True) 
    if (i >= 10) and (i <= 20): 
        cmds.select('Person%d' %(i+1))
        cmds.move(1.5*i,1.5,-1.5, relative=True) 
    pHeight = Person1.translateY

您需要使用 getAttr 函数来获取组的属性。

pHeight = cmds.getAttr('Person%d.translateY' %(i+1))

pHeight = cmds.getAttr('Person1.translateY')

或者,如果您使用的是 PyMel,那么:

import pymel.core as pc
person = pc.PyNode('Person%d' %(i+1))
pHeight = person.translateY.get()
# Or
person = pc.PyNode('Person1')
pHeight = person.translateY.get()

Person1 可能存在于项目中的其他位置,但它不存在于该文件中。如果它是在其他文件中定义的类,则需要导入它。

最新更新