菜单

Administrator
发布于 2025-07-14 / 32 阅读
0
0

MAYA批量添加前缀后缀 Python脚本

maya 自带的命名工具只能替换字符或者添加前缀,对象一多命名起来就很麻烦

想只添加之一?不输入不就没有

import maya.cmds as cmds
def batch_rename_objects():
    """ 批量重命名所选对象,添加前缀或后缀 """
    # 获取当前选择
    selected_objects = cmds.ls(selection=True)
    
    if not selected_objects:
        cmds.warning(" 请先选择要重命名的对象!")
        return
    
    # 从 UI 获取输入
    prefix = cmds.textField("prefixField", query=True, text=True)
    suffix = cmds.textField("suffixField", query=True, text=True)
    
    if not prefix and not suffix:
        cmds.warning(" 请输入前缀或后缀!")
        return
    
    # 批量重命名
    for obj in selected_objects:
        # 提取原始名称(不含命名空间)
        base_name = obj.split("|")[-1].split(":")[-1]
        
        # 构建新名称
        new_name = f"{prefix}{base_name}{suffix}"
        
        try:
            # 重命名对象
            cmds.rename(obj, new_name)
        except Exception as e:
            print(f" 重命名失败: {obj} -> {e}")
def create_rename_ui():
    """ 创建重命名 UI 窗口 """
    window_name = "batchRenameWindow"
    
    # 如果窗口已存在则删除
    if cmds.window(window_name, exists=True):
        cmds.deleteUI(window_name)
    
    # 创建窗口
    cmds.window(window_name, title=" 批量重命名工具 ", width=300)
    cmds.columnLayout(adjustableColumn=True)
    
    # UI 标题
    cmds.separator(height=10)
    cmds.text(" 批量添加前缀 / 后缀 ", align="center", font="boldLabelFont")
    cmds.separator(height=15)
    
    # 前缀输入框
    cmds.rowLayout(numberOfColumns=2, columnWidth2=(80, 200))
    cmds.text(" 前缀 :", align="right")
    prefix_field = cmds.textField("prefixField", placeholderText=" 输入前缀 ...")
    cmds.setParent("..")
    
    cmds.separator(height=10)
    
    # 后缀输入框
    cmds.rowLayout(numberOfColumns=2, columnWidth2=(80, 200))
    cmds.text(" 后缀 :", align="right")
    suffix_field = cmds.textField("suffixField", placeholderText=" 输入后缀 ...")
    cmds.setParent("..")
    
    cmds.separator(height=20)
    
    # 按钮区域
    cmds.rowLayout(numberOfColumns=3, columnAttach=(1, "both", 0))
    cmds.button(label=" 添加前缀 ", command=lambda _: batch_rename_objects())
    cmds.button(label=" 添加后缀 ", command=lambda _: batch_rename_objects())
    cmds.button(label=" 添加两者 ", command=lambda _: batch_rename_objects())
    cmds.setParent("..")
    
    cmds.separator(height=10)
    
    # 提示信息
    cmds.text(" 注意: 仅对选中对象有效 ", align="center", font="smallPlainLabelFont")
    
    # 显示窗口
    cmds.showWindow(window_name)
# 执行创建 UI 的函数
create_rename_ui()


评论