在maya python中更改对象名称的一部分
我觉得这应该很容易,但我所有的搜索都是徒劳的 我在maya中,有一系列对象的名称以_LOC结尾,我想运行一个python脚本,将它们重命名为以_JNT结尾。我设法让它在单个对象上工作,但我的for循环只执行第一个对象,然后停止。以下是我目前掌握的情况:在maya python中更改对象名称的一部分,python,rename,maya,Python,Rename,Maya,我觉得这应该很容易,但我所有的搜索都是徒劳的 我在maya中,有一系列对象的名称以_LOC结尾,我想运行一个python脚本,将它们重命名为以_JNT结尾。我设法让它在单个对象上工作,但我的for循环只执行第一个对象,然后停止。以下是我目前掌握的情况: import maya.cmds as mc sel=mc.ls(selection=True) for each in sel: item=sel[0] newname=item.split('_') mc.rena
import maya.cmds as mc
sel=mc.ls(selection=True)
for each in sel:
item=sel[0]
newname=item.split('_')
mc.rename(newname[0]+'_JNT')
你实际上没有使用你的循环。您只需在当前引用选择的位置使用循环变量
each
:
import maya.cmds as mc
sel=mc.ls(selection=True)
for each in sel:
newname=each.split('_')
mc.rename(newname[0]+'_JNT')
你实际上没有使用你的循环。您只需在当前引用选择的位置使用循环变量
each
:
import maya.cmds as mc
sel=mc.ls(selection=True)
for each in sel:
newname=each.split('_')
mc.rename(newname[0]+'_JNT')
由于maya.cmds与mel处理字符串的方式相同,因此如果重命名子节点的父节点,脚本可能会失败,因为子节点的全名在maya中更改,但在选择列表中不会更改。这在很大程度上取决于您的设置 我建议改用pymel,因为它依赖于mobject而不是字符串:
import pymel.core as pm
sel=pm.ls(selection=True)
for each in sel:
newname=each.nodeName().replace("_LOC", "_JNT")
each.rename(newname)
由于maya.cmds与mel处理字符串的方式相同,因此如果重命名子节点的父节点,脚本可能会失败,因为子节点的全名在maya中更改,但在选择列表中不会更改。这在很大程度上取决于您的设置 我建议改用pymel,因为它依赖于mobject而不是字符串:
import pymel.core as pm
sel=pm.ls(selection=True)
for each in sel:
newname=each.nodeName().replace("_LOC", "_JNT")
each.rename(newname)
其他人已经正确地解决了代码中的错误
Maya还有一个内置的工具来执行此操作,在修改->搜索和替换名称下。它与代码所做的完全相同。它还能够替换场景中的所有名称,或仅替换您的选择。其他人已正确地解决了代码中的错误
Maya还有一个内置的工具来执行此操作,在修改->搜索和替换名称下。它与代码所做的完全相同。它还可以替换场景中的所有名称,或者仅替换您的选择。在
for
-循环中,您定义了每个但不使用它,请尝试将item=sel[0]
更改为item=each[0]
davewards是正确的,我认为这样做会更容易。替换(“'u LOC','u JNT'))在for
-循环中定义每个但不使用它,尝试将item=sel[0]
更改为item=each[0]
davewards是正确的,我认为这样做会更容易。替换('u LOC','u JNT'))使用cmds
处理指针而不是字符串时,也可以使用OpenMaya.MDagPath
。使用cmds
处理指针而不是字符串时,也可以使用OpenMaya.MDagPath
。