渲染 画布背景 · Canvas Background

将曲线绘制到 Grasshopper 画布背景,并支持按矩形框自动移动排版电池
📂 LK → GUI 📄 CanvasBackground.cs 🔘 双按钮 ⚠ 移动操作不可逆

📖 功能概述

这是 LK 自动排版体系的核心执行组件,兼具两项独立功能

🎨 模式一:绘制背景

将曲线列表镜像变换后渲染到 Grasshopper 画布的背景层,形成视觉辅助线框。

📦 模式二:电池自动排版

通过第二个按钮开启,根据矩形框的分组信息,将框架内的电池批量移动到指定位置——自动对齐、自动排版

⚠️ 重要提醒:电池移动功能不可逆。组件标题栏提示「电池更新位置使用请注意,操作不可逆,使用前请注意备份文件」。请在使用电池移动功能之前备份你的 Grasshopper 文件

📥 输入参数

名称类型必填说明
曲线 (C) Curve 必需 需要添加到画布背景的曲线列表。组件会进行镜像变换(关于 ZX 平面),让曲线在 Grasshopper 画布上正确显示。该输入端默认隐藏
以下参数仅在模式二(按钮 2 开启后)显示:
矩形框 (R) Curve 可选** 定义电池移动目标位置的矩形框列表。每个矩形框对应目标组件应该移动到的位置区域。必须是闭合曲线
名称列表 (N) Text 可选** 电池分组的名称列表。用于将矩形框索引与目标名称匹配。

** 仅在模式二开启后可见及有效。

📤 输出参数

名称类型说明
无输出(模式一) 模式一只绘制背景,不输出数据。
以下参数仅在模式二开启后显示:
程序名称列表 (N) Text 通过 SelectedComponents 识别出的各矩形框中「Connected」或「LK_Rename Object」组件输入端数据源的昵称列表。
重复名称列表 (N) Text 如果程序名称列表中存在重复项,这里会列出所有重复的名称。用户可通过此输出排查命名冲突。

🔘 双按钮操作

组件带有两个按钮,功能各不相同:

按钮操作效果
按钮 1(默认) 点击触发 执行背景曲线绘制。将输入的曲线镜像变换后更新到画布背景。
按钮 2(扩展) 点击切换开关 切换模式二的开/关状态。开启时,组件会显示额外的输入/输出参数,并在求解时执行电池移动逻辑。按钮状态通过 Write / Read 持久化保存。

🎨 功能一:背景绘制

当组件求解时,ProcessBackgroundDrawing 方法执行以下操作:

💡 为什么需要镜像?Rhino 的坐标系统与 Grasshopper 画布的坐标系统在 Y 轴方向上相反。ZX 平面镜像将 Rhino 坐标转换为 GH 画布坐标。

📦 功能二:电池自动排版

当按钮 2 开启时,组件在求解后会额外执行 ProcessComponentMoving 方法。这是一个复杂的电池自动排版流程:

整体流程

1
输入
矩形框列表
2
识别每组
电池名称
3
匹配目标
位置索引
4
Plan
移动电池组

步骤① — 矩形框预处理

步骤② — 识别寻址名称

通过 SelectedComponents.RunScript 分析每个矩形框内的组件:

步骤③ — 匹配目标位置

步骤④ — 移动电池组

🧪 典型使用场景

场景说明
自动排版系统 配合 LKWireframeAutoConnectRenameObject 组成完整的 LK 自动排版流水线。
批量对齐电池 在大型 Grasshopper 程序中,用矩形框将混乱的电池分组调整到整齐的网格布局中。
背景辅助线 仅使用模式一,在画布上绘制分区背景,帮助视觉理解程序结构。

⚠️ 注意事项

📋 组件信息

名称画布背景
英文名Canvas Background
分类LK → GUI
基类GH_Component(自定义 UI 属性 + 双按钮)
GUID{FF17E09A-FC16-4305-A762-8A55A342EF60}