📖 功能概述
该组件是整个LK型材制作流程的核心枢纽。它接收平面截面、基线、基准平面、Transform,以及各种加工特征(开孔、铣切),经过一套三阶段处理流程(U1→U2→U3),输出拉伸完成的型材实体以及完整的属性数据集。
该组件使用 ButtonComponent2(两个独立按钮),分别控制:
- 按钮1:截面简化模式(截面不简化 / 截面简化)
- 按钮2:型材方向(横向 / 竖向)
所有13个输入参数中,前面4个为必填(截面、基准平面、Transform、基线),其余均为可选。前11个几何参数在默认状态下全部隐藏,以保持画布整洁。
🧠 核心算法详解
一、U1:截面处理与扫掠
输入:截面、基准平面、Transform、基线、按钮1状态
输出:拉伸型材、截面pln、过程数据列表
步骤:
1 截面简化判断:如果按钮1状态="截面简化",用 SimplifySection 将原始截面进行简化处理;否则保留原截面。
2 截面ID获取:如果截面是外部引用几何体,取其ReferenceID;否则从UserDictionary的"ID"键读取GUID。
3 截面移位:将截面复制一份并施加Transform变换,从基准平面位置移动到目标位置。
4 SuperExtrude扫掠:将移位后的截面沿基线进行扫掠,生成实体型材。
5 数据打包:将截面ID、拉伸截面、截面pln、基线、Transform等信息打包为ArchivableDictionary列表,传递给后续过程。
二、U2:几何特征汇总
输入:端部铣切1、端部铣切2、铣切列表、圆孔列表、机丝孔列表、沉头孔列表
输出:铣切体汇总列表、过程数据列表
步骤:
1 将两类端部铣切Brep、以及四类开孔/铣切体的Brep分别打包为ArchivableDictionary。
2 将所有Brep(包括端部铣切、内部铣切、圆孔、机丝孔、沉头孔)汇总到一个列表中。
3 这个汇总列表将作为布尔差的切割工具集。
数据结构:
• arct1 = 端部铣切1(键 "a1-1")
• arct2 = 端部铣切2(键 "a2-2")
• arct3 = 铣切体列表(键 "a3-0" ~ "a3-n")
• arct4 = 圆孔列表(键 "a4-0" ~ "a4-n")
• arct5 = 机丝孔列表(键 "a5-0" ~ "a5-n")
• arct6 = 沉头孔列表(键 "a6-0" ~ "a6-n")
三、有效性与兼容性检查
在主流程U1→U2→U3之间,组件执行多项检查:
基线-切割面相交检查:
• 检查端部铣切1是否与基线相交(CurveBrep交集检测)
• 检查端部铣切2是否与基线相交
• 任一不相交 → 报错终止
铣切实体性检查:
• 铣切体必须为实体(IsSolid)
• 如果铣切体方向朝内(Inward),自动翻转(Flip)
兼容性检查(防止接错端口):
• 圆孔必须为标准圆柱 → 否则报错
• 铣切不能是标准圆柱 → 否则报错(防止把孔误接到铣切口)
• 沉头孔不能是标准圆柱 → 否则报错(防止把圆柱误接为沉头孔)
四、U3:信息聚合与属性生成
输入:Panel表皮、按钮2状态、类型、名称、U1数据、U2数据
输出:图层路径、信息Value列表、型材平面pln、物料编码、工程属性
步骤:
1 截面属性读取:通过截面ID找到Rhino物件,读取其"模号"、"物料编码"、"工程属性"。
2 表皮属性读取:通过Panel的ReferenceID,读取"单元号"、"批次"。
3 型材平面计算:取基线的中点,根据基线是否为直线以及横向/竖向模式,计算局部坐标平面:
• 直线基线:X轴 = 基线方向,Y轴 = 截面pln的X轴或Y轴(取决于横向/竖向)
• 曲线基线:X轴 = 基线方向,Y轴 = 通过旋转计算
4 图层路径:格式 模型::{单元号}::{类型}::{横向/竖向}::{名称}-{模号}
5 信息汇总:将所有收集到的数据合并为一个列表返回。
五、编号与加工图号生成
编号生成规则:
{单元号字母部分}-{单元号数字部分}-{序号(3位补零)}
• 从单元号(如 "A01-1")中取最后一段 "A01-1"
• 前2个字符为字母部分 "A0"
• 后续部分为数字部分 "1-1"
• 序号从"信息列表"中根据名称匹配,转为3位数字
加工图号:在编号前加 "JG-" 前缀。
信息列表解析:输入的各行按逗号分隔,提取序号、名称、物料编码、工程属性,分别存入列表。然后根据"名称"匹配查找对应的序号、物料编码和工程属性。
六、完整的属性集(32个Key)
输出的信息Key列表共32项,分为几个类别:
基础信息:名称、类型、模号、pln、面板ID、单元号、批次、截面ID、横向/竖向
几何属性:拉伸-截面、拉伸-截面pln、拉伸-路径、截面-TS、截面-基准pln
加工特征:起端切面、终端切面、内部切割体、圆孔、机丝孔、沉头孔
装配表信息:序号、L、W、T、单位、自由项1、自由项2、自由项3
管理信息:编号、物料编码、工程属性、加工图号
⚙️ 完整执行流程
Phase 1 — 截面扫掠(U1):
读取4个必填输入 → 截面简化/保留 → 获取截面ID → 截面移位 → SuperExtrude扫掠 → 输出型材实体和过程数据
阶段间检查:
基线-端部铣切1相交检查 → 基线-端部铣切2相交检查 → 铣切实体性检查 → 兼容性检查
Phase 2 — 特征汇总(U2):
读取端部铣切、铣切、开孔列表 → 打包为ArchivableDictionary → 汇总所有Brep
Phase 3 — 信息聚合(U3):
读取Panel、名称、类型、信息列表 → 从截面和Panel提取属性 → 计算pln和图层 → 生成编号/加工图号 → 解析信息列表
数据合并与输出:
组合全部32个Key → 组合Value列表(含新增的序号、L/W/T、单位、编号、物料编码等)→ 输出到7个端口