Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在maya中选择所有定位器,并在Python中一次性重命名它们_Python_Select_Maya - Fatal编程技术网

在maya中选择所有定位器,并在Python中一次性重命名它们

在maya中选择所有定位器,并在Python中一次性重命名它们,python,select,maya,Python,Select,Maya,如何在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) 我做错了什么?我得到一

如何在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,而listRelatives在较旧的Maya中不返回任何内容

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[]确保您得到的是一个空列表,而不是一个空列表,因此,如果没有定位器也可以使用,脚本将运行

**编辑**

根据OP的要求进行更新以包括网格。对于关节,不需要执行listRelatives步骤,但是长名称和重新排序非常重要,因为复制的关节很容易创建重复的名称