2015-09-16 1 views
0

Как выбрать все локаторы, суставы и сетку в Maya и переименовать их все вместе? Это то, что у меня есть до сих пор:выберите все локаторы в майе и переименуйте их все сразу в Python

for mesh in cmds.ls(type = ['mesh', 'joint', 'locator']): 
       item = cmds.listRelatives(type= ['joint','locator','mesh'] p=1)[0] 
       cmds.rename(item, item + "_" + text) 

Что я делаю неправильно? Я получаю сообщение об ошибке:

# Error: TypeError: file <maya console> line 2: 'NoneType' object has no attribute '__getitem__' # 

ответ

2

Если вы пытаетесь переименовать преобразования выше форм, вам нужно на самом деле проходят в формах. То, как вы сделали это вы передаете выбор для listRelatives, который возвращает None в старой Майе

locators = cmds.ls(type=('locator','mesh'), l=True) or [] 
loc_parents = cmds.listRelatives(*locators, p=True, f=True) or [] 
loc_parents.sort(reverse=True) 
for lp in loc_parents: 
    cmds.rename(lp, 'new_name') 

При переименовании вы хотите использовать длинные имена - в случае, если у вас есть несколько объектов с одинаковым коротким названием под разными родителями - и работать от самых длинных полных путей до кратчайшего, чтобы вы не переименовали родителя объекта и тем самым не изменили его путь.

Удостоверьтесь, что вы получаете пустой список вместо None, поэтому скрипт запускается, если нет локаторов.

** редактировать **

обновлен, чтобы включить сетки, за просьбу ФПА в. Для суставов нет необходимости делать шаг listRelatives - но длительные имена и переупорядочивание жизненно важны, поскольку его легко скопированные соединения для создания повторяющихся имен

 Смежные вопросы

  • Нет связанных вопросов^_^