objcolor 获取物件颜色 · OC

输入 Rhino 物件,通过右键菜单选择"物件颜色"或"图层颜色"模式,输出对应颜色
📂 LK → Layer📄 ObjectColor.cs 🎛️ 右键菜单

📖 功能概述

接收一个 Rhino 物件的引用,通过右键菜单切换两种颜色提取模式:

💡 输入类型兼容:组件支持多种输入格式的自动解析,见下文的"输入类型解析链"。

🎛️ 右键菜单

选项索引Message 显示说明
物件颜色0(默认)物件颜色取物件本身的覆盖颜色,如果物件未单独设置颜色则返回图层颜色
图层颜色1图层颜色取物件所在图层的颜色

📥 输入参数

名称类型必填说明
物件 (O)Generic必需需要获取颜色的 Rhino 物件。支持多种输入类型(见解析链)。如果无法识别则报错。

📤 输出参数

名称类型说明
颜色 (C)Color获取到的颜色值(System.Drawing.Color)。列表输出。

🧠 运行流程

输入类型解析链

组件按以下优先级尝试将输入转换为 RhinoObject

优先级输入类型转换逻辑
1IGH_GeometricGoo通过 ReferenceID 在 Rhino 文档中查找对应对象
2RhinoObject(直接传入)直接使用
3GH_Guid通过 doc.Objects.FindId(guid) 查找
4GH_ObjectWrapper(内含 RhinoObject)解包提取 RhinoObject
⚠️ 空值处理:如果输入为空,报 Warning 输入的物件为空。如果所有转换尝试均失败,报 Error 无法识别输入的物件类型

颜色获取

  1. 模式判断 — 检查 SelectedIndex
  2. 物件颜色模式rhinoObject.Attributes.DrawColor(RhinoDoc.ActiveDoc)
  3. 图层颜色模式:获取 rhinoObject.Attributes.LayerIndex → 定位 Layer → 取 layer.Color
  4. 如果该模式取不到(例如物件没有关联图层),报 Warning 并返回
  5. 整个流程被 try-catch 包裹,异常时报 Error 获取物件颜色时出错: {message}

🧪 典型使用场景

📋 组件信息

名称获取物件颜色
英文名OC
分类LK → Layer
基类RighrClickComponent
右键菜单物件颜色 / 图层颜色(双模式切换)
GUID{2097CCC3-39B4-44BA-A749-0C3846AEAE13}

更新日期:2026-06-29