CreaLayer 创建/修改图层 · CL

如果指定图层名称在 Rhino 中存在即修改属性,不存在即创建新图层
📂 LK → Layer📄 ModifyLayers.cs 🔘 按钮 📢 运行时检查

📖 功能概述

输入图层名称和待设置的属性(颜色、可见性、锁定状态、线型),在 Rhino 活动文档中创建新图层或修改已有图层。触发方式有两种:连线输入"执行(C)"端口为 true,或点击组件内置按钮。

💡 核心特性:
  • 存在则修改,否则创建 — 通过 LayerChange.AddLayer() 统一处理创建与修改
  • 按钮触发 / 数据触发 — 可以从输入端口"执行(C)"用布尔值驱动,也可手动点击组件内置按钮执行
  • 线型回退策略 — 指定线型在文档中不存在时,自动回退到预设替代线型并发出 Remark 警告
  • 图标资源Resources.CreaLayer(注:类名与 C# 关键字冲突,此处无影响)

🔘 按钮机制

组件继承自 BoolButtonComponent,内置一个按钮。按钮有两个作用:

  1. 状态显示 — 按钮标签显示 Action(由 DisplayText => "Action" 定义)
  2. 触发条件ButtonActivate() 方法返回 true 时,即使输入"执行"为 false 也能触发图层操作

执行条件:layerCreat || ButtonActivate() — 输入执行为 true 按钮被点击按下时,执行图层操作。

📥 输入参数

名称类型必填说明
图层名称 (L)Text必需图层名称(完整路径)。无效名称时会报错 无效图层名称
颜色 (C)Color可选图层颜色。默认为 Color.Black
可见性 (V)Bool可选图层是否显示。默认为 true(可见)。
锁定状态 (L)Bool可选图层是否锁定。默认为 false(未锁定)。
线型 (T)Text可选图层线型名称。默认为 Continuous。支持 HiddenDots 等。
执行 (C)Bool可选触发执行。默认为 false。设为 true 或点击按钮均可触发。

📤 输出参数

名称类型说明
图层 (L)Text创建或修改的图层完整路径名称。

🧠 运行流程

核心流程

  1. 读取输入 — 依次读取图层名称、颜色、可见性、锁定、线型、执行布尔值
  2. 名称校验Layer.IsValidComponentName(layerName) 检查合法性,无效则报错返回
  3. 输出图层名 — 不论是否执行,先输出图层名称(方便调试查看)
  4. 判断是否执行layerCreat || ButtonActivate()
  5. 创建/修改LayerChange.AddLayer(layerName, doc, layerColor) 返回 layerIndex
  6. 设置属性 — 从 doc.Layers 获取 Layer 对象,设置 IsLocked、IsVisible、Color
  7. 线型处理 — 加载默认线型 → 查找指定线型 → 找不到时按特殊规则回退

线型回退策略

输入线型查找结果回退行为
Hidden未找到(linetypeIndex < 0)使用索引 0,报 Remark:使用序号'0'
Dots未找到使用索引 5,报 Remark:使用序号'5'
Continuous不查找linetypeIndex = -1(默认),不发出警告
其他未知线型未找到使用 -1(Continuous),报 Remark:使用'Continuous'替换
⚠️ 注意:Hidden 和 Dots 的回退索引是硬编码的(0 和 5),而非通过名称查找。如果文档加载了不同的默认线型顺序,这些索引可能不匹配,建议先调用 doc.Linetypes.LoadDefaultLinetypes() 加载标准线型列表。

🧪 典型使用场景

⚠️ 注意事项

📋 组件信息

名称创建/修改图层
英文名CL
分类LK → Layer
基类BoolButtonComponent
特色按钮触发、存在即修改/不存在即创建、线型回退策略
GUID{27A79174-F437-4D14-A553-64139E6527C8}

更新日期:2026-06-29