Question

'# Error: line 1: NameError: file line 38: name 'Person1' is not defined # '

Although if i look in my outliner, Person1 exists. What am i doing wrong for this assignment? it should be very simple..

#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
Était-ce utile?

La solution

You need to use the getAttr function to get the group's attribute.

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

or

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

Or if you were using PyMel then:

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()

Autres conseils

Person1 may exist elsewhere in your project, but it doesn't exist in that file. If it's a class that's defined in a different file, you need to import it.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top