如何在Python-Maya脚本中从组中获取属性?
“#错误:第1行:名称错误:文件第38行:未定义名称“Person1”#” 虽然如果我查看大纲视图,Person1是存在的。这项任务我做错了什么?应该很简单如何在Python-Maya脚本中从组中获取属性?,python,graphics,scripting,3d,maya,Python,Graphics,Scripting,3d,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)
#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
#创建一个人
将maya.cmds作为cmds导入
随机输入
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(主体、个人组)
Arm1=cmds.polyCube(n='Arm1',w=0.2,h=0.2,d=0.9)
cmds.move(0.5,0.75,0.35)
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)
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(负责人,个人组)
#在一行中创建多个实例
对于范围(1,40)内的i:
cmds.duplicate(个人组)
cmds.select('Person%d'(i+1))
cmds.move(1.5*i,0,0,relative=True)
if(i>=10)和(iPerson1可能存在于项目的其他位置,但它不存在于该文件中。如果它是在不同文件中定义的类,则需要导入它。需要使用函数获取组的属性
pHeight = cmds.getAttr('Person%d.translateY' %(i+1))
或
或者,如果您正在使用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()
非常感谢!我确实尝试过这个,但语法有点混乱,这很有效:)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()