# StepSplitter **Repository Path**: xa87/step-splitter ## Basic Information - **Project Name**: StepSplitter - **Description**: STP文件分割工具,3D文件分割工具,支持将STP的部分零件独立另存为。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-02 - **Last Updated**: 2026-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # STEP 文件分割工具 (StepSplitter) > 一个轻量、自包含的 Windows 桌面应用,用于可视化浏览、筛选并分割导出 STEP 3D 模型文件。 ![界面截图](%E8%BF%90%E8%A1%8C%E6%88%AA%E5%9B%BE.png) ## ✨ 核心功能 - **可视化 STEP 文件解析**:加载标准 STEP/STP 文件,解析实体结构 - **双视图树形浏览**: - 产品结构视图(按装配层次) - 实体类型视图(按几何/拓扑类型) - **3D 线框实时预览**: - 纯 GDI+ 自绘 3D 线框渲染(无第三方 3D 引擎依赖) - 支持旋转/平移/缩放交互 - 勾选过滤显示(勾几个显示几个) - **智能实体筛选**:勾选任意节点,自动包含其所有几何依赖 - **一键分割导出**:导出勾选的实体及其完整依赖链为独立 STEP 文件 - **完全离线运行**:无需网络,无需安装大型 CAD 软件 ## 🚀 快速开始 ### 系统要求 - Windows 10/11 - .NET 8.0 Desktop Runtime(如未安装会自动提示) - 无需安装 CAD 软件 ### 下载与运行 自行下载编译 ### 首次使用 1. 点击 **浏览** 按钮选择 STEP 文件(支持 `.stp`、`.step` 扩展名) 2. 点击 **加载** 解析文件 3. 在左侧树形结构中勾选要导出的实体 4. 点击 **预览导出** 查看导出详情 5. 确认无误后点击 **导出选中的实体** ## 🎮 操作指南 ### 主界面布局 ``` ┌─────────────────────────────────────────────────────────────┐ │ [文件路径输入框] [浏览] [加载] │ ├─────────────┬───────────────────────────────────────────────┤ │ │ 3D 线框预览区 │ │ │ ┌───────────────────────────────────────────┐ │ │ 左侧树形 │ │ 旋转/平移/缩放 │ │ │ 结构浏览器 │ │ [刷新] │ │ │ │ └───────────────────────────────────────────┘ │ │ │ │ │ │ 实体详情/导出预览 │ └─────────────┴───────────────────────────────────────────────┘ ``` ### 3D 预览操作 | 操作 | 说明 | |------|------| | **左键拖拽** | 旋转视角(Yaw/Pitch) | | **右键拖拽** | 绕视向轴旋转(Roll) | | **Shift + 左键拖拽** | 平移视图 | | **鼠标滚轮** | 缩放视图 | | **R 键** | 重置视角到初始位置 | | **刷新按钮** | 应用当前勾选状态到预览(勾选时不实时刷新,避免卡顿) | ### 树形浏览器 - **产品结构**:按 STEP 文件中的装配层次显示(PRODUCT → PRODUCT_DEFINITION → ...) - **按类型分组**:按实体类型分组(EDGE_CURVE、CARTESIAN_POINT、LINE、CIRCLE 等) - **勾选逻辑**: - 勾选父节点自动勾选所有子节点 - 部分勾选时父节点显示为「部分选中」状态 - 勾选后点击 **刷新** 按钮更新 3D 预览 ### 导出流程 1. **勾选目标**:在树形结构中勾选要导出的实体(可多选) 2. **预览检查**:点击 **预览导出** 查看: - 用户勾选实体数量 - 含依赖的总实体数量 - 预估文件大小 - 按类型统计的实体分布 3. **导出保存**:点击 **导出选中的实体**,选择保存路径 ## 🔧 技术特性 ### 轻量级架构 - **纯 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 开发环境 ### 编译命令 ```bash # 克隆项目 git clone https://gitee.com/xa87/step-splitter.git cd 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](LICENSE) 文件。 ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 开启 Pull Request ## 📮 联系与支持 - **问题反馈**:[GitHub Issues](https://github.com/yourusername/StepSplitter/issues) - **功能请求**:通过 Issue 提交 - **技术讨论**:欢迎提交 PR 或参与代码审查 --- **Made with ❤️ for the CAD community** · 专为需要轻量级 STEP 处理工具的工程师设计 *(内容由AI生成,仅供参考)*