【问题标题】:Maya Python: Renaming object with for loopsMaya Python:使用 for 循环重命名对象
【发布时间】:2020-06-07 18:27:27
【问题描述】:

所以我一直在观看 Josh Sobel Python 脚本教程,并且我一直在尝试让 For 循环在某些功能上工作:比如当您使用 nHair 使用毛囊创建带状脊椎时,您需要重新使用毛囊-命名。我的目标是让 For 循环查找以某个名称前缀开头的名称,列出它们,然后重命名列表中的对象。我确实有一些编码方法可以满足我的要求:但与 For 循环不同,它们长、笨重并且占用大量代码。这是我到目前为止所得到的:

'''
import DS_jointRename_Demo
reload (DS_jointRename_Demo)
DS_jointRename_Demo.gui()
'''

import re
import maya.cmds as cmds
import maya.mel as mel

if cmds.window("renameWin", exists =True):
    cmds.deleteUI("renameWin", window = True)

myWindow = cmds.window("renameWin",t='DS_jointRename_Demo',w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)

def gui():

    cmds.button( label="Build Examples", c = buildExamples)
    cmds.separator( w=200, h=3)
    cmds.button( label="renameHeiarchy", c = renameHeiarchy)
    cmds.separator( w=200, h=9)
    cmds.button( label="renameGroupCont", c = renameGroupCont)
    cmds.separator( w=200, h=9)

    cmds.setParent('..')
    cmds.showWindow(myWindow)

def buildExamples(*args):
    cmds.joint(n='exampleGarbage_name11293')
    cmds.joint(n='exampleGarbage_name11397')
    cmds.joint(n='exampleGarbage_name15763')
    cmds.joint(n='exampleGarbage_name11548')
    cmds.joint(n='exampleGarbage_name11837')
    cmds.group(n='exampleGroup1',world=True,empty=True)
    cmds.parent('exampleGarbage_name11293','exampleGroup1')

    cmds.group(n='exampleGroup2',world=True,empty=True)
    cmds.joint(n='exampleWaste_name11293')

    cmds.joint(n='exampleWaste_name12973')
    cmds.parent('exampleWaste_name12973','exampleGroup2')

    cmds.joint(n='exampleWaste_name94563')
    cmds.parent('exampleWaste_name94563','exampleGroup2')

    cmds.joint(n='exampleWaste_name96397')
    cmds.parent('exampleWaste_name96397','exampleGroup2')

    cmds.joint(n='exampleWaste_name49456')
    cmds.parent('exampleWaste_name49456','exampleGroup2')

def renameHeiarchy(*args):
    garbageList = cmds.ls('exampleGarbage_name*')
    for i in garbageList:
        print garbageList
        cmds.rename(garbageList,'exampleGroup1_joint')

def renameGroupCont(*args):
    wasteList = cmds.ls('exampleWaste_name*')
    for i in wasteList:
        print wasteList
        cmds.rename(wasteList,'exampleGroup2_joint')

我想让这个脚本做的是在你按下“构建示例”之后,我想 renameHeiarchy 将 exampleGroup1 中的关节层次结构重命名为“exampleGroup1_joint plus number increment”

exampleGroup2,与一个不同的是,它的关节不是在层次结构中的父级:而是在组之下。无论哪种方式,当我在“构建示例”下运行任一按钮时,我都会收到“# Error: Too many objects or values。”

我只想让 for 循环重命名每个组的内容。如果您的 For 循环对它们都有效,则奖励

【问题讨论】:

    标签: python for-loop rename maya pymel


    【解决方案1】:

    rename 命令需要两个字符串,但你给它一个列表作为第一个参数。试试这个:cmds.rename(i,'exampleGroup2_joint')

    【讨论】:

    • Awesome Haggi Krey,这似乎已经做到了,但是我唯一剩下的问题是它没有在第一组中逐步命名关节。另外,有没有办法获得一个检查特定组的列表?
    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2016-11-18
    • 2021-01-26
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多