如何在Maya中选择所有的定位器,关节和网格并将它们一起重命名?这是我目前所看到的:
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__' #
如果您试图重命名形状上面的转换,则需要实际传入形状。你所做的就是将选择传递给listRelatives
,它在旧Maya的
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')
当重命名时,你想使用长名称——以防你有多个对象在不同的父对象下具有相同的短名称——并且从最长的完整路径到最短的完整路径,这样你就不会重命名一个对象的父对象,从而改变它的路径。
'or[]'确保您得到一个空列表而不是None,因此脚本在没有定位器时也会运行。
** edit **
根据OP的要求,更新为包含网格。对于连接,不需要执行listRelatives步骤——但是长名称和重新排序是至关重要的,因为复制的连接很容易创建重复的名称