在maya python中更改对象名称的一部分

时间:2018-02-03 02:46:23

标签: 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.rename(newname[0]+'_JNT')

3 个答案:

答案 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还有一个内置工具来执行此操作,在修改 - >下搜索和替换名称。它完全符合您的代码所做的。它还可以替换场景中的所有名称,或仅替换您的选择。