如何成为TD 系列【2】--给场景中的物体名字添加后缀

# -*- coding:utf-8 -*-
# 导入maya命令模块
from maya import cmds
# 列一个字典,给物体种类相应的尾缀
SUFFIXES = {
    "mesh": "geo",
    "joint": "jnt",
    "camera": None,
}
DEFAULT = "grp"


def rename(activate=False):
    """
    这个函数是用来进行重命名的
    Args:
        activate: 是否(执行函数)要对选择的物体进行重命名

    Returns:重命名后的物体列表

    """
    # 在激活状态下,没有选择物体,则返回空列表,选择了物体则返回物体列表
    objects = cmds.ls(selection=activate, dag=True, long=True)
    # 如果没有选择物体,则弹出警告
    if activate and not objects:
        raise RuntimeError("you don't have any objects selected")

    # 将物体根据名称路径的长短进行排序,因为要先修改子物体再修改父物体,所以顺序进行调换
    objects.sort(key=len, reverse=True)

    # 对列表中的每一个物体进行重命名
    for obj in objects:
        shortName = obj.split("|")[-1]
        # maya每个物体是由tranform节点和形状节点组成,获取类型需要获取形状节点的类型,所以要取其子物体类型
        children = cmds.listRelatives(obj, children=True, fullPath=True) or []
        if len(children) == 1:
            ObjectType = cmds.objectType(children[0])
        else:
            ObjectType = cmds.objectType(obj)
        # 根据key名来获取对应的value,如果没有则返回DEFAULT
        suffix = SUFFIXES.get(ObjectType, DEFAULT)
        # 如果物体是摄像机,就跳过本次循环
        if not suffix:
            continue
        # 如果已经有尾缀了,就跳过本次循环
        if obj.endswith(suffix):
            continue
        newName = "%s_%s" % (shortName, suffix)
        # 将物体重命名
        cmds.rename(obj, newName)
        # 替换object列表中obj的名称
        index = objects.index(obj)
        objects[index] = obj.replace(shortName, newName)
    return objects

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值