LeoHougaard/meshmind-cad

GitHub: LeoHougaard/meshmind-cad

一款本地自主的机械逆向工具,能将 STL 网格重建为带可验证特征树的可编辑 STEP 模型。

Stars: 0 | Forks: 0

# MeshMind CAD MeshMind CAD 是一个本地、自主的机械 STL-to-STEP 重建器。它能够 检查 mesh,推断出紧凑的特征方案,构建可编辑的 CadQuery 几何模型,将重建曲面与原始模型进行比较,并 导出最佳的 valid solid。 当前的引擎可以处理恒定和多层机械拉伸、 任意平面草图拉伸、阶梯零件、盲孔、boss、 基本方位和倾斜的圆柱体/管、对齐的开口、沉头孔、 旋转体、锥形放样、圆角/倒角,以及混合直线/圆弧 和变曲率 spline 轮廓。它会刻意报告 **best effort**, 而不是假装几何上较差的重建是精确的。 ## 在 Windows 上运行 在 PowerShell 中: ``` git clone https://github.com/LeoHougaard/meshmind-cad.git cd meshmind-cad .\run.ps1 ``` 首次运行会安装项目本地的 Python 3.12 环境和 JavaScript 包。打开 。 ## 输出 每次成功的重建都会生成: - `reconstruction.step` — 可编辑的边界表示 (B-rep) 实体 - `reconstruction.py` — 可读的 CadQuery 构建历史记录 - `plan.json` — 经过验证、可机器编辑的特征参数 - `reconstruction.stl` — 预览用的网格细分 - `report.json` — 拟合度指标、假设和警告 `plan.json` 使用有序的 v2 特征树 schema。每个特征都有一个稳定的 id、时间线位置、依赖列表、可读名称、抑制状态,以及 测量参数的来源。浏览器编辑器可以修改标量尺寸、 向量和草图几何形状;重新排序或抑制操作;锁定参数; 撤销/重置本地更改;然后在替换 当前导出文件之前重新构建并重新验证结果。之前保存的修订版本会保留在 `runs//history/` 下。 混合草图会将直线、恒定半径的圆弧, 以及变曲率相切 spline 线段保留为独立可编辑的几何形状。 测量到的基本方位圆柱切割在 X、 Y 或 Z 轴上会作为 Round hole 特征输出;任意轴的 圆柱体则保留为定向圆柱特征。 要直接在编辑器中重新打开已保存的重建结果,请使用 `http://127.0.0.1:8421/?run=`。 浏览器重建作为本地后台任务运行。进度覆盖层会 报告当前的几何阶段、已用时间、测试过的候选方案,以及 当前正在评估的构建中的特征数量。该进度条是由 重建事件驱动的,而不是循环的时间估算。 每个有效的中间实体也会在 浏览器中渲染为临时的 CAD。这仅使用浏览器 GPU 进行 交互式可视化;OpenCascade 重建和几何 验证仍然是 CPU 操作。 当较新的特征树修订版本替换预览时,摄像机视角会被保留。 运行产物会保存在 `runs//` 下。除非 您显式配置外部 language-model endpoint,否则输入内容永远不需要离开 计算机。 ## 重建工作原理 1. 使用 Trimesh 加载并归一化三角 mesh。 2. 检测连贯的平面变化层级、解析曲面块,同时检测 基本方位和测量到的 3D 特征轴。 3. 对 每个草图轮廓拟合解析直线、圆、圆弧和相切 spline 线段。 4. 将相等的相邻截面分组到拉伸层中,并将倾斜的 解析圆柱体与多边形切片近似分离开来。 5. 构建相互竞争的单特征和多特征参数化 CadQuery 实体, 包括圆锥体、旋转体、放样和边缘处理等备选方案。 6. 对每个实体进行细分,并计算双向表面距离、体积 误差、有效性以及微小的复杂度惩罚。 7. 导出最佳候选方案,并仅在通过 自动几何阈值时将其标记为高置信度。 language model 是一个可选的规划器,而不是几何 kernel。模型 响应必须根据类型化的特征 schema 进行验证,并由 CadQuery 重建,且必须保留其几何评分。模型生成的代码永远不会被执行。 ## 可选的 AI 指导 MeshMind 接受任何兼容 OpenAI 的 chat-completions endpoint。在启动前,将 `.env.example` 的值复制到您的 PowerShell 环境中: ``` $env:MESHMIND_LLM_URL = "http://127.0.0.1:8000/v1" $env:MESHMIND_LLM_MODEL = "your-model" $env:MESHMIND_LLM_KEY = "" .\run.ps1 ``` 然后您可以输入指令,例如“优先使用标称尺寸”或“保持 安装孔精确”。如果没有这些变量,重建将保持完全的 确定性和本地化。 ## 测试 ``` python -m uv sync python -m uv run pytest python -m uv run ruff check . cd web npm run build ``` 测试从可编辑的 STEP 几何形状开始,将其细分为 STL, 丢弃历史记录,进行重建,并验证特征结构和结果 实体。测试用例包括阶梯轴、盲孔、混合直线/圆弧轮廓、 圆角板,以及一个盲孔与垂直孔的组合。 对于大型数据集评估,请参阅 [datasets/README.md](datasets/README.md) 以及 `tools/` 下的语料库工具。研究结果和分阶段架构 请见 [docs/RESEARCH_AND_ROADMAP.md](docs/RESEARCH_AND_ROADMAP.md)。 ## 当前边界 特征方案仍然将一些盲孔、boss 和异常复杂的 边缘处理过渡表示为等效的布尔拉伸层,而不是 原始的命名设计操作。自由形态的装饰性曲面、装配体、 多实体重建、受损的扫描数据以及一般的非机械 mesh 仍然超出了已验证的范围。在进行加工之前,应始终对 `best_effort` 结果进行审查。 ## 技术渊源 该实现是原创的,并使用了宽松/开放的 CAD 基础设施: CadQuery/OCCT 用于 B-rep 构建和 STEP 导出,Trimesh/SciPy/Shapely 用于 几何分析,FastAPI/Three.js 用于本地应用程序。 为该架构提供启发 的相关工作包括 [CADFit](https://github.com/AutodeskAILab/CADFit),它展示了 在 CadQuery 程序上的渲染与对比搜索,以及 [CAD-Recode](https://github.com/filaPro/cad-recode),它研究了直接从 点云生成 CadQuery 的方法。CADFit 的代码库采用非商业许可,并包含专利提示,因此其实现并未被复制到本项目 中。 ## 许可证 MIT。依赖项保留其各自的许可证。
标签:3D建模, CAD, CadQuery, STL转STEP, 云资产清单, 数据可视化, 特征树, 逆向工具, 逆向工程