我觉得这应该很容易,但我所有的搜索都是徒劳的。
我在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.rename(newname[0]+'_JNT')
答案 0 :(得分:1)
你实际上没有使用你的循环。您只需要使用当前引用选择的循环变量each
:
import maya.cmds as mc
sel=mc.ls(selection=True)
for each in sel:
newname=each.split('_')
mc.rename(newname[0]+'_JNT')
答案 1 :(得分:1)
由于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)
答案 2 :(得分:0)
其他人已正确解决了代码中的错误。
Maya还有一个内置工具来执行此操作,在修改 - >下搜索和替换名称。它完全符合您的代码所做的。它还可以替换场景中的所有名称,或仅替换您的选择。