Dune 3D 是一款参数化 3D CAD 应用程序,支持 STEP 导入/导出、圆角和倒角。
虽然 FreeCAD 技术上能够满足我的所有需求,但实现方式并不完全符合我的喜好。我对它最大的不满意之处是模态草图工具只能在 2D 模式下使用,3D 中缺乏挤压的约束,以及在设计中引用物体时存在的风险。另一方面,Solvespace 则在工作流程方面做得很好,但缺乏 STEP 导入功能,且几何内核不支持倒角和圆角。通过开发 Horizon EDA 解决 PCB CAD 相似问题后,我开始思考是否可以为 3D CAD 实现同样的功能。毕竟,要制作一个 3D CAD,需要做哪些工作呢?
- 几何核函数用于进行外延、交叉、倒角等操作:虽然这不是一个很好用的库,但如果我们想要实现 STEP 导入/导出和倒角,Open CASCADE 是唯一可行的选择。幸运的是,我从处理 Horizon EDA 中的 STEP 文件时已经有了一些经验。 - 3D 视口:显然,我们需要一种将 3D 几何图形放在屏幕上、缩放/平移和选择物体的方法。Horizon EDA 中的 3D 预览已经实现了所有这些功能,因此我有一个已经理解的代码库可以重用。 - 约束求解器:与 Horizon EDA 不同,在 Horizon EDA 中,物体会保持在上一次移动时的位置,而在 3D CAD 中,通过需要求解的约束来指定物体的位置是很常见的。事实证明,Solvespace 的求解器可以作为一个库[^1]使用,因此这部分也已覆盖。 - 编辑器基础架构:最后但并非最不重要,我们需要负责工具、撤销/重做以及构成交互式编辑器的其他各个部分的代码。虽然会有一些差异,但我确信可以重用和调整 Horizon EDA 中的交互式操作器。
与所有建筑物一起