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处理, 云资产清单, 几何建模, 机械设计, 逆向工具, 逆向工程