图层拾取 按图层选取物件 · GetObjectByLayer

通过图层名称(支持正则表达式)和物件类型筛选,从 Rhino 文档中拾取物件 GUID
📂 LK → Layer📄 GetObjectByLayer.cs 🎛️ 右键菜单

📖 功能概述

输入一个图层名称(支持正则表达式),从 Rhino 活动文档中筛选出匹配的物件,输出其 GUID。可以通过右键菜单选择物件类型过滤器(如只取 Brep、只取 Curve 等)。

💡 核心特性:
  • 正则匹配 — 使用 C# Regex(忽略大小写)匹配图层全路径名
  • 类型筛选 — 13 种类型过滤:ALL / GeometryBase / Brep / Curve / Point / Surface / Dot / Mesh / Block / Hatch / Leader / Dim / Text / Other
  • GUID 输出 — 输出为 GUID 字符串列表,可配合 物件ID 类的组件做后续操作

📥 输入参数

名称类型必填说明
图层 (L) Generic 必需 图层名称(支持正则表达式)。会匹配图层的全路径名(含父级层级)。不能为空。

📤 输出参数

名称类型说明
物件ID (G) Guid 匹配图层的物件 GUID 列表。每个 GUID 对应一个 Rhino 文档对象。

🧠 运行流程

  1. 输入检查 — 图层名为空则报错;检查 Rhino 文档是否存在
  2. 编译正则 — 编译输入的图层模式为 Regex(忽略大小写),编译失败则报错
  3. 遍历文档对象 — 遍历 RhinoDoc.ActiveDoc.Objects
  4. 获取图层全路径doc.Layers[obj.Attributes.LayerIndex].FullPath
  5. 正则匹配 — 检查图层全路径是否匹配输入的正则
  6. 类型筛选 — 根据右键菜单选中的类型进一步过滤物件(ALL 时跳过此步骤)
  7. 收集 GUID — 将匹配物件的 Id 转为字符串加入结果列表
⚠️ 重要:筛选的是当前 Rhino 文档RhinoDoc.ActiveDoc)中的对象,不是 Grasshopper 输入端的几何数据。如没有打开的 Rhino 文档,组件会报错。

🧪 典型使用场景

📋 组件信息

名称按图层选取物件
英文名GetObjectByLayer
分类LK → Layer
基类RighrClickComponent
右键菜单物件类型过滤器(13种可选)
GUID{778A0F11-CF37-45F6-9558-BD2E77DD205A}

更新日期:2026-06-29