2016-08-23 2 views
0

도형 노드의 이름을 부모 노드와 비슷한 이름으로 만들려면 어떻게해야합니까? (형상/객체 당 모양 노드가 1 개만 있다고 가정)모양 노드의 이름을 부모와 같게 만들기

예를 들어,

all = cmds.ls(sl=True, dag=True, shapes=True) 
for shape in all: 
    prt = cmds.listRelatives(shape, parent=True) 
    for i in prt: 
     child = cmds.listRelatives(i, c = True) 
     for c in child: 
      cmds.rename(c, str(prt) + "Shape") 

내가 같은 u_test_geo1__Shape

답변

1
all = cmds.ls(sl=True, dag=True, shapes=True) 
for shape in all: 
    ''' 
     shape contain the dag path 
     exm.: 
     grp_a 
      grp_aShape 
      grp_b 
       grp_bShape 
     print cmds.ls('grp_a', dag=1, shapes=1) 
     >>('grp_a|grp_aShape', 'grp_b|grp_bShape') 
     now rename the object, we have already the dag path so 
     the input of the rename command is unique, you can also split the dag 
     path by '|'[0] as parent 
    ''' 
    cmds.rename(shape, "{0}Shape".format(cmds.listRelatives(shape, parent=True)[0])) 

테스트 계층 구조 펑키 이름을 얻을 : parent_geo은 그러나 그 모양 노드가 testing_geo2Shape 대신 나는 다음을 수행하려고

test_geo1Shape이며, test_geo1라고 같았습니다 :

grp_a 
    shape grp_a 
    grp_b 
      same name like shape grp_c 
grp_c 
    shape grp_c 
    grp_d 
      same name like shape grp_c 
grp_e 
    same name like shape grp_c 

상단 grp 만 선택

+0

ls로 메쉬 모양을 찾으려면 여러 중간 모양이 감지되지 않도록 플래그 ni = True를 사용해야 할 수 있습니다. 이름을 바꾸기 전에 maya가 "새 이름의 이름 바꾸기"를 방지하기 위해 이름이 이미 존재하는지 확인해야 할 수도 있습니다. – DrWeeny

+0

@ 금색이므로 zip 및 형식 메서드로 테스트 해보고 몇 가지 선택을 시도합니다. 모든 것을 선택/막 노드/그냥 모양의 노드 등하지만, 불행히도 코드를 작동시킬 수 없습니다 .. 후자의 코드도 마찬가지 이군 – dissidia

+0

@dissidia true, 중첩 된 그룹 또는 둘 이상의 동일한 모양의 경우 이름, 내가 바꾼다 –