2014-03-04 73 views
0

'#錯誤:第1行:NameError:文件行38:名稱'Person1'未定義#'如何從Python中的組中獲取屬性 - Maya腳本?

儘管如果我查看我的大綱,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 

回答

0

您需要使用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() 
+0

非常感謝!我確實嘗試過,但我的語法有點混雜,這有效:) – JasperK

+0

pymel是你的朋友,他幫助讓事情變得更容易,使用它:) –

0

Person1可能存在於您的項目的其他地方,但它不存在於該文件中。如果它是在不同文件中定義的類,則需要導入它。

相關問題