Matthewjg95/mesh2cad
GitHub: Matthewjg95/mesh2cad
一款基于 OpenCascade 的桌面级逆向工程工作台,通过恢复设计意图将 STL 网格转换为可编辑、可制造的参数化 CAD 模型并导出干净的 STEP 文件。
Stars: 0 | Forks: 0
# 机械逆向工程助手
将 STL 转换为**可编辑、可制造的 CAD 模型**——通过恢复设计意图,而不是简单地封装三角面。
这不是一个 STL 转 STEP 的转换器。它是一个桌面级逆向工程工作台,像机械工程师那样审视网格:它会寻找原始设计师预期的平面、圆柱体、孔、型腔、凸台和壁,将它们重建为真正的解析 B-Rep 几何体(真正的圆和圆弧——绝非网格化),并导出干净的 AP242/AP214 STEP 文件,供您进行机械加工、激光切割或重新设计。
## 实际成果
驱动该开发过程的零件:M5Stack Tab5 的背板,从产品装配 STL 扫描而成。
| 方案 | 报价 (SendCutSend,数量 1) |
|---|---|
| 高保真重建的 3轴 CNC 加工 | **$1,188** |
| 由本工具生成的平整**板材版本** + 价值 $3 的六角铜柱 | **$12.05** |
钣金功能测量了零件自身的支撑柱(3.2 mm,Ø5.7),去除了所有深度特征,保留了轮廓和每个通孔作为真实的圆弧,并生成了孔位表,告知加工厂哪些孔用于哪些螺钉。
## 核心功能
- **阶段 1 – 修复**:焊接重合顶点,修复法向和绕序,填补小孔,拆分多实体装配体(GUI 中带有实体选择器)。
- **阶段 2 – 识别**:通过最小二乘法拟合、法向一致性检查和基于面片的置信度,将网格分割为解析曲面(平面 / 圆柱面 / 圆锥面 / 球面)。能在几秒钟内处理 10万+ 三角面的网格。
- **阶段 3 – 意图**:推断工程特征——基础拉伸、孔(带有阵列检测)、型腔/阶梯面、凸起/支撑柱、圆角、壁厚、镜像对称。近乎相等的尺寸会自动吸附到标准值;遇到歧义时会提问,绝不静默猜测。
- **阶段 4 – 交互**:孔位向导(分配 M2-M4 间隙 / 攻丝 / 挤压攻丝用途,或填补孔),加工成本节省菜单(去除装饰性凹槽,列出权衡以消除整个 CNC 装夹),带点击高亮的编号特征列表。
- **阶段 5 – 重建**:通过 OpenCascade 生成真正的 B-Rep 实体——包含恢复的圆弧和圆角矩形的轮廓线,解析圆柱孔,带岛屿的阶梯型腔,以及用于成型圆角的等截面加强筋。
- **阶段 6 – 验证**:闭合实体检查、开放边缘检查、微小碎面检查,并与扫描结果进行体积交叉验证。
- **阶段 7 – 导出**:STEP AP242/AP214,外加面向加工人员的 `*_holes.txt` 孔位表(包含位置、直径、螺纹用途——因为 STEP 几何无法承载螺纹标注)。
- **板材版本**:一键将任何板类零件展平为您指定材料厚度的激光/水刀切割板材。
- **DFM 成本模型**:逐特征估算加工成本(单件生产中,装夹和 CAM 编程是主要成本,而非切削时间),并支持按数量分摊计算。
## 安装
需要 Windows/Linux/macOS 上的 Python 3.12+。
```
python -m venv .venv
.venv/Scripts/pip install -r requirements.txt # Windows
# .venv/bin/pip install -r requirements.txt # Linux/macOS
```
## 运行
```
python -m mra
```
(Windows:双击 `MRA.bat`。)
工作流程:**导入 STL →(隔离实体)→ 修复网格 → 识别特征 → 重建 CAD**(向导会询问有关孔和成本权衡的问题)**→ 验证 → 导出 STEP** —— 或选择**板材版本**生成平整切割变体。
## 测试
```
.venv/Scripts/python -m pytest tests -q
```
85 项测试覆盖了使用布尔 CSG 构建的合成零件的各个阶段,外加 STEP 往返验证,确保输出为解析几何体(真正的 `CIRCLE` 实体,绝非点云)。
## 架构
```
mra/
core/ Datatypes: patches, features, tolerances, questions, loops
meshproc/ Stage 1 — import, repair, stats, body splitting
recognition/ Stage 2 — segmentation + surface fitting
intent/ Stage 3 — feature/intent recovery
reconstruction/ Stage 5 — B-Rep building, bridges, fillets, sheet
validation/ Stage 6 — solid health checks
export/ Stage 7 — STEP writer + hole schedules
dfm.py Machining cost model & simplification transforms
gui/ PySide6 workbench (viewport, wizards, dialogs)
```
每个非 GUI 模块都是可导入的,并且可以在无头模式下进行测试。`PROGRESS.md` 是完整的开发日志,包括走入的死胡同及其被放弃的原因。
## 诚实的局限性
- 专门针对*拉伸板材 / 外壳*类零件(板件、支架、盖板、壳体)进行了优化。有机形状将被如实重建为 FREEFORM 区域和疑问,而不是虚假的精度。
- 成型拔模角/加强筋在设计上被转换为简单的可加工加强筋(“优先考虑可制造几何体,而非三角面保真度”)。
- 复杂的薄壁成型外壳(包裹式外壳体)目前尚无法重建——工具会明确告知您这一点,而不是生成垃圾模型。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。专为创客而生。
标签:CAD, OpenCascade, PySide6, STL处理, 云资产清单, 几何建模, 机械设计, 逆向工具, 逆向工程