2014-04-17 4 views
0

원형 격자를 만드는 함수를 만들었습니다. 그리고 나중에 노드를 조작 할 수 있도록 목록으로 만들어진 원 노드를 수집해야합니다. 문제는 maya가 고유 한 것으로 자동 변경되기 전에 nodeList에 노드 이름이 주어 졌음을 발견했다는 것입니다. 이 스크립트를 실행할 때 수집 된 이름은 모두 동일하지만 마야에서 선택하면 고유하게 증가됩니다.python + maya : 잘못된 이름을 가진 노드 목록을 반환합니다.

나는이

[u'mainShape_00', u'makeNurbCircle1'] 
[u'|mainShape_00', u'makeNurbCircle2'] 
[u'|mainShape_00', u'makeNurbCircle3']... 

때 여기

[u'mainShape_00', u'makeNurbCircle1'] 
[u'|mainShape_01', u'makeNurbCircle2'] 
[u'|mainShape_02', u'makeNurbCircle3']... 

스크립트

# Import Modules 
import maya.cmds as cmds 
import random 

# Scene setup 
try: 
    cmds.select(all=True) 
    cmds.delete() 
except: 
    pass 

# create 2D grid of circles 
numRows = 4 
numColumns = 3 
radiusMin = .1 
radiusMax = .75 

#create empty group for nodes 
nodeGroup = cmds.group(em=True, name='main_group_00') 
nodeList = [] 

for r in range(0,numRows): 
    for c in range(0,numColumns): 

     # Calculate random radius 
     radius = random.uniform(radiusMin,radiusMax) 

     # Create circle shape and transform it 
     node = cmds.circle(n='mainShape_00', ch=True, o=True, nr=(0, 0, 1), c=(0, 0, 0), r=radius) 
     cmds.xform(node, t=(r*(radiusMax*2), c*(radiusMax*2), 0)) 

     # Parent node under the group node 
     cmds.parent(node[0], nodeGroup, relative=False) 

     # Append nodes to list 
     nodeList.append(node) 

for n in nodeList: 
    shape = n 
    print shape 

답변

1

node 때문에 그 시간에 'mainShape_00'입니다해야합니다 반환하고있어, 그게의 이름은 무슨이다 . nodeGroup에 양육 될 때까지 충돌이 발생하지 않습니다. 양육 후 실제 이름을 잡아 :

node[0] = cmds.parent(node[0], nodeGroup, relative=False)[0] 

이 새로 부모가 원래 node[0]을 대체

+0

나는 본다. 나는 왜 그것이 새로운 이름을 돌려 보내지 않고 있는지에 관해 혼란스러워했다. – JokerMartini

+0

네,'maya.cmds'는 문자열에서만 작동합니다. 따라서 이름 변경을 추적 할 수는 없습니다. 당신은 pymel을 한번보세요. – mhlester

0

node[0]가 왜로서 자신에게 노드 이름을 지정하지 :

x = 0 
padding = str(x).zfill(2) 
mainShapeName = 'mainShape_' + padding 
x += 1 

# Create circle shape and transform it 
node = cmds.circle(n=mainShapeName, ch=True, o=True, nr=(0, 0, 1), c=(0, 0, 0), r=radius) 
cmds.xform(node, t=(r*(radiusMax*2), c*(radiusMax*2), 0)) 

자신을 증가하여 피 마야 문제. 각 그룹마다 고유 한 이름을 지정해야합니다.

건배.

관련 문제