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

Maya脚本报错:如何获取仍处于选中状态的隐藏对象名称?

Maya 2024 切换选中对象可见性脚本修复

问题根源

你遇到的// Error: No object matches name: .visibility报错,本质是对象被隐藏后,视图中的选中状态会自动失效,此时ls -selection返回空数组,执行getAttr $sel.visibility就变成了getAttr .visibility,自然找不到对应属性。

修复后的脚本

下面的脚本会处理空选中、多对象场景,同时确保即使对象处于隐藏状态也能正确获取选中目标:

// 模拟 Display > Show Selection / Hide Selection 功能
string $sel[] = `ls -selection -showHidden`; // 强制获取包括隐藏对象在内的选中项
if (size($sel) == 0) {
    error "请先选中对象!";
}

for ($obj in $sel) {
    // 检查对象是否存在visibility属性(避免形状节点等特殊情况)
    if (`attributeExists "visibility" $obj`) {
        bool $isVisible = `getAttr ($obj + ".visibility")`;
        if ($isVisible) {
            setAttr ($obj + ".visibility") 0;
        } else {
            setAttr ($obj + ".visibility") 1;
        }
    }
}

关于Maya「显示/隐藏选中对象」的实现逻辑

Maya的Display > Show Selection和Display > Hide Selection底层逻辑是:

  • 先通过ls -selection -showHidden获取所有选中对象(包括隐藏状态的)
  • 遍历每个对象,直接修改其visibility属性:隐藏时设为0,显示时设为1
  • 隐藏对象在视图中无法保持选中状态,因此必须通过-showHidden参数强制获取选中项

额外说明

  • 原脚本中HideSelectedObjects和ShowSelectedObjects是Maya内置命令,但它们依赖视图选中状态,对象隐藏后会失效,不如直接操作属性可靠
  • 加入attributeExists检查是为了避免选中形状节点(比如mesh的shape)时出错,部分形状节点的可见性由父变换节点控制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:31:08