硬汉嵌入式论坛

 找回密码
 立即注册
查看: 185|回复: 0
收起左侧

AI编写的STP分割工具【开源】

[复制链接]

12

主题

489

回帖

525

积分

金牌会员

积分
525
发表于 2026-6-22 16:25:11 | 显示全部楼层 |阅读模式
腾讯家的AI软件有好几拨,之前一直用WorkBuddy,6月份的时候出了一个软件叫Marvis(马维斯)

每天有1千万Token免费使用。模型不能选,但大概率是Hy3
用它做了一个3D模型分割工具,全AI生成,我比较熟悉C#,所以让他生成的脚本是C#代码。
开源在这里【https://gitee.com/xa87/step-splitter
有需要的可以下载

一个轻量、自包含的 Windows 桌面应用,用于可视化浏览、筛选并分割导出 STEP 3D 模型文件。
核心功能
  • 可视化 STEP 文件解析:加载标准 STEP/STP 文件,解析实体结构
  • 双视图树形浏览:
    • 产品结构视图(按装配层次)
    • 实体类型视图(按几何/拓扑类型)
  • 3D 线框实时预览:
    • 纯 GDI+ 自绘 3D 线框渲染(无第三方 3D 引擎依赖)
    • 支持旋转/平移/缩放交互
    • 勾选过滤显示(勾几个显示几个)
  • 智能实体筛选:勾选任意节点,自动包含其所有几何依赖
  • 一键分割导出:导出勾选的实体及其完整依赖链为独立 STEP 文件
  • 完全离线运行:无需网络,无需安装大型 CAD 软件
🚀 快速开始系统要求
  • Windows 10/11
  • .NET 8.0 Desktop Runtime(如未安装会自动提示)
  • 无需安装 CAD 软件
下载与运行
自行下载编译
首次使用
  • 点击 浏览 按钮选择 STEP 文件(支持 .stp、.step 扩展名)
  • 点击 加载 解析文件
  • 在左侧树形结构中勾选要导出的实体
  • 点击 预览导出 查看导出详情
  • 确认无误后点击 导出选中的实体
🎮 操作指南主界面布局┌─────────────────────────────────────────────────────────────┐│ [文件路径输入框] [浏览] [加载]                               │├─────────────┬───────────────────────────────────────────────┤│             │ 3D 线框预览区                                 ││             │ ┌───────────────────────────────────────────┐ ││  左侧树形   │ │             旋转/平移/缩放                │ ││  结构浏览器 │ │                [刷新]                     │ ││             │ └───────────────────────────────────────────┘ ││             │                                               ││             │ 实体详情/导出预览                             │└─────────────┴───────────────────────────────────────────────┘

3D 预览操作操作说明
左键拖拽旋转视角(Yaw/Pitch)
右键拖拽绕视向轴旋转(Roll)
Shift + 左键拖拽平移视图
鼠标滚轮缩放视图
R 键重置视角到初始位置
刷新按钮应用当前勾选状态到预览(勾选时不实时刷新,避免卡顿)树形浏览器
  • 产品结构:按 STEP 文件中的装配层次显示(PRODUCT → PRODUCT_DEFINITION → ...)
  • 按类型分组:按实体类型分组(EDGE_CURVE、CARTESIAN_POINT、LINE、CIRCLE 等)
  • 勾选逻辑:
    • 勾选父节点自动勾选所有子节点
    • 部分勾选时父节点显示为「部分选中」状态
    • 勾选后点击 刷新 按钮更新 3D 预览

导出流程
  • 勾选目标:在树形结构中勾选要导出的实体(可多选)
  • 预览检查:点击 预览导出 查看:
    • 用户勾选实体数量
    • 含依赖的总实体数量
    • 预估文件大小
    • 按类型统计的实体分布
  • 导出保存:点击 导出选中的实体,选择保存路径
🔧 技术特性轻量级架构
  • 纯 C# .NET 8 WinForms:无外部 C++ 运行时依赖(如 300MB+ 的 OCCT)
  • 自研 3D 渲染:GDI+ 双缓冲线框绘制,性能优化
  • 内存友好:流式解析,支持大型 STEP 文件
精确的几何提取
  • 完整线框提取:从 MANIFOLD_SOLID_BREP 到 EDGE_CURVE 的完整引用链解析
  • 支持曲线类型:
    • LINE(直线段):使用 VERTEX_POINT 精确端点
    • CIRCLE(圆弧/整圆):支持弧段角度计算
  • 几何诊断:内置详细解析统计,便于调试
智能依赖收集
  • 递归依赖分析:自动收集勾选实体的所有几何依赖(点、方向、向量、放置等)
  • 避免数据丢失:确保导出的 STEP 文件可被其他 CAD 软件正确打开
  • 引用完整性:保持实体间的 ID 引用关系不变
📁 项目结构StepSplitter/├── StepSplitter.csproj          # 项目文件├── Program.cs                   # 应用入口├── Forms/│   └── MainForm.cs             # 主界面(树形浏览+3D预览+导出)├── Services/│   ├── StepParser.cs           # STEP 文件解析器│   ├── StepTreeBuilder.cs      # 双视图树形构建器│   ├── StepWireframeExtractor.cs # 3D线框几何提取器│   ├── StepExportService.cs    # 智能导出服务│   └── StepParameterParser.cs  # 参数解析工具├── Models/│   └── StepEntity.cs           # STEP 实体数据模型├── Controls/│   └── WireframeViewer.cs      # 3D线框预览控件└── README.md                   # 本文档

🛠️ 开发者指南构建要求
  • Visual Studio 2022 或 .NET 8 SDK
  • Windows 10/11 开发环境
编译命令# 克隆项目git clone https://gitee.com/xa87/step-splitter.gitcd StepSplitter# 还原依赖dotnet restore# 调试构建dotnet build -c Debug# 发布构建(自动输出到 publish/ 目录)dotnet publish -c Release -o publish

项目特点
  • 自动发布:每次修改源码后执行 dotnet publish 到 publish 目录
  • 无第三方依赖:所有几何计算和渲染均为手写 C# 实现
  • UTF-8 无 BOM:导出文件使用标准 UTF-8 编码,兼容性最佳
  • 跨会话状态:支持拖放文件、窗口布局记忆
📊 支持的 STEP 实体类型类型说明数量示例
CARTESIAN_POINT三维坐标点3,357
DIRECTION方向向量3,270
VECTOR带模长的向量1,908
LINE无限直线定义1,908
CIRCLE圆/圆弧定义512
EDGE_CURVE边界曲线(引用 LINE/CIRCLE)812
VERTEX_POINT曲线端点引用1,624
ORIENTED_EDGE有向边1,624
EDGE_LOOP边环406
ADVANCED_FACE高级曲面203
CLOSED_SHELL封闭壳1
MANIFOLD_SOLID_BREP流形边界表示实体1❓ 常见问题Q: 导出的文件在其他 CAD 软件中打不开?
A: 确保勾选了完整的几何结构。建议勾选顶层 PRODUCT 或 MANIFOLD_SOLID_BREP 节点,系统会自动包含所有依赖实体。
Q: 3D 预览中有些线段显示不正常?
A: 点击状态栏查看诊断信息。常见原因:
  • 缺失 VERTEX_POINT 引用:使用 LINE 的 VECTOR 方向作为替代
  • 圆弧显示为整圆:EDGE_CURVE 未提供起止点,按完整圆渲染
Q: 加载大型文件时卡顿?
A: 应用采用流式解析,但 3D 预览需要提取所有几何数据。对于超大型文件(>50MB),建议先勾选部分实体再预览。
Q: 如何只导出模型的某个局部?
A: 在「按类型分组」视图中找到对应的 EDGE_CURVE 实体,勾选后导出。系统会自动包含这些曲线所需的点、方向等依赖实体。
📄 许可证
MIT License - 详见 LICENSE 文件。
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
  • Fork 本仓库
  • 创建功能分支 (git checkout -b feature/amazing-feature)
  • 提交更改 (git commit -m 'Add amazing feature')
  • 推送到分支 (git push origin feature/amazing-feature)
  • 开启 Pull Request
📮 联系与支持
  • 问题反馈:GitHub Issues
  • 功能请求:通过 Issue 提交
  • 技术讨论:欢迎提交 PR 或参与代码审查

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-7-12 12:54 , Processed in 0.585071 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表