LKExportSTP 导出STP · LKExport

将LK系统模型批量导出为STP(STEP)格式文件,支持自定义输出目录和自动路径生成
📂 LK → Util 📄 LKExportStp.cs 🔘 按钮触发 📤 文件导出

📖 功能概述

该组件将LK系统模型以STP(Standard for the Exchange of Product model data,即ISO 10303 STEP标准)格式导出到本地文件夹。支持以下核心功能:

📥 输入参数

名称类型必填说明
模型 Generic 必填 要导出的LK系统模型(通常为Brep类型)。必须是LK系统创建的、包含标准UserDictionary属性的模型。
路径 Text 可选 输出文件夹路径。留空时自动在桌面创建名为 "STP导出+当前日期(yyyyMMdd)" 的文件夹。支持自定义任意有效路径。
导出 Boolean 可选 触发开关。设为 True 开始导出。也可使用组件内置按钮代替。默认为 False。

📤 输出参数

名称类型说明
路径 Text STP文件的完整导出路径(含文件名和扩展名)。格式为:{文件夹路径}\{编号}.stp

🧠 核心算法详解

一、路径决策逻辑

1 尝试从输入2(路径参数)读取用户指定的文件夹路径
2 如果用户未输入路径,自动生成: 桌面\STP导出{当前日期yyyyMMdd}
3 检查生成的路径是否已存在,不存在则自动创建目录
4 读取模型的"编号"属性,拼装完整文件路径: {路径}\{编号}.stp
5 无论是否触发导出,优先输出文件路径到输出参数——这让用户可以在触发导出前预览路径是否正确

二、属性校验

导出前检查模型物件的UserDictionary是否包含以下必要键名:
pln (模型局部坐标平面)
编号 (模型编号,用作STP文件名)
缺少任一项则报错"模型不符合LK系统要求"并中断执行。

三、触发判断与导出执行

1 触发判断:检查布尔输入是否为True,或者内置按钮是否被按下。只有满足任一条件才继续导出。
2 模型归零:从属性中读取局部坐标平面(pln),构造 Transform.PlaneToPlane(pln, WorldXY) 变换矩阵,将模型副本平移到世界坐标系原点。这样导出的STP在其他3D软件中打开时位于原点附近,便于后续处理。
3 临时烘焙:将归零后的模型副本以临时物件形式添加到Rhino场景中(保持与原模型相同的图层索引)。这一步骤是因为Rhino的STP导出命令是基于当前场景中选择的物件,无法直接导出Grasshopper中的抽象Brep。
4 视口优化:临时禁用视图刷新(RedrawEnabled = false)以提高导出性能;清空当前选择,选中刚烘焙的模型;缩放视口到选中范围,确保命令操作准确。
5 执行导出命令:通过 RhinoApp.RunScript 执行 Rhino 内置的 -Export 命令,参数为目标文件路径。使用 _Enter 确认命令,echo: false 抑制命令回显。
6 清理收尾:finally 块中确保:删除烘焙的临时物件、取消所有选择、重新启用视图刷新。无论导出成功还是异常,这一步都会执行,确保场景不被污染。

⚙️ 完整执行流程

1. 读取数据:从DA获取模型(GH_Brep)、路径(string)、触发(bool)三个参数。

2. 路径处理:如果路径为空,自动在桌面创建"STP导出YYYYMMDD"文件夹;确保目录存在。

3. 属性校验:通过ReferenceID定位Rhino场景物件,检查pln和编号属性是否存在。不存在则报错退出。

4. 路径输出:拼接完整文件路径 {路径}\{编号}.stp 并输出到第一个参数。此时用户可以看到即将导出的位置。

5. 触发判断:如果未触发(布尔=False且按钮未按下)则在此结束,不执行后续导出操作。

6. 导出执行:
 a. 读取pln,构造平面到平面的变换
 b. 复制模型并应用变换(归零)
 c. 禁用视图刷新,烘焙模型副本到场景
 d. 选中烘焙物件,缩放到选中范围
 e. 运行 Rhino -Export 命令
 f. 等待命令完成(RhinoApp.Wait)
 g. 删除临时物件,启用视图刷新

🧪 典型使用场景

场景详细说明
单模型STP导出 在Grasshopper工作流中,连接一个LK模型到输入,指定或自动生成路径,点击按钮一键导出STP。适用于将单个构件交付给加工方。
批量自动导出 配合Grasshopper的树形数据处理逻辑,可以循环调用该组件,将多个构件逐一导出为独立的STP文件,每个文件以构件的"编号"属性命名。
跨软件交换 STP(STEP)格式是工业界通用的三维数据交换格式,可在SolidWorks、CATIA、Inventor、Fusion 360等软件中直接打开。模型归零处理确保导入目标软件时位置正确。

⚠️ 注意事项

📋 组件信息

名称导出STP
英文名LKExport
分类LK → Util
Exposuresecondary(二级显示)
显示文本导出(按钮文本)
基类BoolButtonComponent
文件LKExportStp.cs
GUID{5D460A9A-8376-4EB3-BFDD-6D74EEC3A362}