Переименуйте меня sh в соответствии с именем группы (проблема с уникальным именем узла формы) - PullRequest
0 голосов
/ 04 апреля 2020

Я работаю над сценарием python (программное обеспечение maya3d), чтобы «переименовать меня sh в соответствии с именем группы». После запуска скрипта появляется ошибка, возможно, потому что у меня одинаковое имя узла формы в двух группах. Вот сообщение об ошибке:

Ошибка: RuntimeError: строка файла 8: более одного объекта соответствует имени

Сценарий работает нормально, если объект с уникальным именем , Я нашел что-то для ignoreShape на странице переименования, но это не работает. Вот ссылка: https://download.autodesk.com/us/maya/2009help/CommandsPython/rename.html?&_ga=2.14607159.1860356590.1585850032-633810306.1580653271#flagignoreShape

enter image description here

Вот сценарий:

import maya.cmds as cmds

import maya.cmds as cmds

selection = cmds.ls( selection=True )
for each in selection:
    groupName = cmds.ls(each, selection=True )
    children = cmds.listRelatives(groupName, children=True)  
    for count,obj in enumerate(children):
        cmds.rename(obj,groupName[0]+str(count+1).zfill(2)+'_GEO')


selection = cmds.ls( selection=True )
for each in selection:
    groupName = cmds.ls(each, selection=True )
    children = cmds.listRelatives(groupName, children=True) 
    for child in children:
        newname=child.replace('_GRP','_')
        cmds.rename(child,newname)

Может кто-нибудь помочь мне с этим, пожалуйста. Спасибо.

1 Ответ

1 голос
/ 05 апреля 2020

Вот модифицированный код:

import maya.cmds as cmds

selection = cmds.ls(selection=True)
# group_name will contain the group name, no need to query again
for group_name in selection:
    # The key is to query the full path, so you'll get
    # "|aa_GRP|pCube1" (which is unique) instead of "pCube1" (which is not)
    children = cmds.listRelatives(group_name, children=True, fullPath=True)
    for i, obj in enumerate(children, start=1):
        cmds.rename(obj, '{group}{number:02}_GEO'.format(
            group=group_name,
            number=i))
...