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

2024-06-09 07:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得这应该很容易,但我所有的寻找都是徒劳的。在

我在玛雅,我有一系列的对象,它们的名字以_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')

Tags: 对象脚本for结尾情况mcitem名字
3条回答

因为玛雅.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)

你实际上没有使用你的循环。您只需要使用循环变量each,您当前引用的是选择:

import maya.cmds as mc

sel=mc.ls(selection=True)

for each in sel:
    newname=each.split('_')
    mc.rename(newname[0]+'_JNT')

其他人已经正确地解决了您代码中的错误。在

Maya在修改->搜索和替换名称下还有一个内置工具来执行此操作。它正是你的代码所做的。它还可以替换场景中的所有名称,或仅替换您的选择。在

相关问题 更多 >