You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:编写Maya脚本获取选中对象Channel Box可用属性

问题分析与修正

你的脚本存在几个关键问题导致无法正常运行:

  • mc.listAttr(usersel) 默认返回对象的所有属性,包含通道盒不显示的隐藏/不可关键帧属性,无法直接得到通道盒可见属性
  • 循环内判断逻辑错误:"rotateX" ==1 是字符串与数字的无效比较,永远为False,应该判断当前遍历的属性x是否等于目标属性
  • 未处理多对象选中的情况,原脚本会把所有对象的属性混在一起,输出逻辑混乱

修正后的脚本

要获取通道盒中显示的属性,需给listAttr添加keyable=True(通道盒默认显示的可关键帧属性)和visible=True参数,同时修正判断逻辑:

import maya.cmds as mc

# 获取选中的顶级节点,shortNames=False避免短名歧义
usersel = mc.ls(sl=True, dag=False, shortNames=False)

if not usersel:
    print("请先选中对象")
else:
    # 逐个处理选中的对象
    for obj in usersel:
        # 筛选通道盒可见的可关键帧属性
        channel_attrs = mc.listAttr(obj, keyable=True, visible=True)
        print(f"对象 {obj} 的通道盒属性:")
        for attr in channel_attrs:
            # 判断当前属性是否为rotateX
            if attr == "rotateX":
                print(f"  - {attr}: yes")
            else:
                print(f"  - {attr}: not")

关键说明

  • keyable=True:筛选出可设置关键帧的属性,这是通道盒默认显示的核心属性集合
  • visible=True:确保属性在通道盒中处于可见状态(部分可关键帧属性可能被手动隐藏)
  • 增加空选中判断,避免无对象时触发报错
  • 针对每个选中对象单独输出,结果更清晰直观

内容的提问来源于stack exchange,提问作者flys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:41:39