dune3d/dune3d

GitHub: dune3d/dune3d

Dune 3D 是一款参数化 3D CAD 应用,结合了 OpenCASCADE 的几何能力和 Solvespace 的约束求解器,为电子项目外壳设计提供了比 FreeCAD 更流畅、比 Solvespace 更完整的建模体验。

Stars: 1542 | Forks: 61

# Dune 3D Dune 3D 是一款参数化 3D CAD 应用程序,支持 STEP 导入/导出、圆角和倒角。 ![在渐变背景上的灰色外壳中展示 PCB 的屏幕截图。](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/bb0b5036cb193156.png) ## 动机 既然已经有了 FreeCAD 和 Solvespace,为什么还要开发另一个开源 3D CAD 应用程序呢? 我使用 3D CAD 的主要用例是为我的电子项目设计 3D 打印外壳。我经常发现自己会拖延外壳的设计,并将此归因于我对现有开源 3D CAD 应用程序的不满。 虽然 FreeCAD 在技术上可以满足我的所有需求,但它的实现方式并不太合我的胃口。我最大的痛点在于其模态草图绘制器只能在 2D 模式下工作,3D 挤出没有约束,以及在设计中引用对象的风险。 另一方面,Solvespace 的工作流程做得很好,但由于不支持导入 STEP,且其几何内核不支持倒角和圆角,因此显得有些不足。 既然我之前通过开发 Horizon EDA 解决了 PCB CAD 的类似问题,我开始思考是否也能为 3D CAD 做到同样的事情。毕竟,制作一个 3D CAD 需要些什么呢? - 用于执行挤出、相交、倒角等操作的几何内核:虽然 OpenCASCADE 不是一个好用的库,但如果我们想要支持 STEP 导入/导出和圆角/倒角,它是唯一可行的选择。幸运的是,我在 Horizon EDA 中处理 STEP 文件时积累了一些使用它的经验。 - 3D 视口:显然,我们需要一种方法将 3D 几何图形显示在屏幕上,进行缩放/平移并选择对象。Horizon EDA 中的 3D 预览已经具备了所有这些功能,所以我有一个理解透彻的代码库可以复用。 - 约束求解器:与 Horizon EDA 中对象只是停留在你最后移动它们的位置不同,在 3D CAD 中,通常通过需要求解的约束来指定对象的位置。事实证明 Solvespace 的求解器可以作为库使用[^1],所以这部分也解决了。 - 编辑器基础架构:最后但同样重要的是,我们需要代码来处理工具、撤销/重做以及构成交互式编辑器的所有其他零碎部分。虽然会有一些差异,但我有信心可以复用并调整 Horizon EDA 中的交互式操作器。 既然所有构建模块都已具备,我开始着手将它们整合在一起,形成一个 3D CAD 应用程序。大约三个月后,它看起来已经颇有模有样了。 [^1]: 我最终直接使用了 solvespace 的求解器,而不是建议的[包装代码](https://github.com/solvespace/solvespace/blob/master/exposed/DOC.txt),因为它没有公开我需要的所有功能。 我还必须对求解器进行修补,使其对于我生成的方程类型足够快,方法是在适用的地方对方程进行符号求解。 ## 如何构建 请参阅[构建说明](https://docs.dune3d.org/en/latest/build-linux.html)。 ## 如何使用 与 Horizon EDA 类似,所有工具和操作都可以通过空格键菜单访问。 使用“set workplane”工具来设置组的工件平面。 也可以查阅[文档](https://docs.dune3d.org/)。 ## 哪里可以提问 项目的讨论平台包括一个 [Matrix 群组](https://matrix.to/#/#dune3d:selfnet.de)和 [GitHub Discussions](https://github.com/dune3d/dune3d/discussions)。 ## 常见问题 ### 哪里可以找到示例文件? 请参阅 [samples](https://github.com/dune3d/samples) 仓库。 ### 它能在 Windows 上运行吗? 请参阅[构建说明](https://docs.dune3d.org/en/latest/build-win32.html)了解如何在 Windows 上构建。 ### 它能在 macOS 上运行吗? 请参阅[构建说明](https://docs.dune3d.org/en/latest/build-macos.html)了解如何在 macOS 上构建。 ### 为什么不把它集成到 Horizon EDA 中? 在 Horizon EDA 中,没有任何地方适合实现 3D CAD。此外,我想尝试用不同的方式做一些事情,并尝试一下 Gtk 4。 ### 为什么不改进 Solvespace 或 FreeCAD? 在 FreeCAD 中实现 3D 参数化,或者将 Open CASCADE 放入 Solvespace,对于这两个项目的外部贡献者来说,似乎都是难以实现的巨大改变。而且我真的很喜欢编写 CAD 软件,所以就有了这个项目。
标签:3D CAD, 3D打印, Horizon EDA, Open CASCADE, PCB外壳设计, Solvespace, STEP导入导出, 倒角与圆角, 几何内核, 参数化建模, 客户端加密, 工程制图, 电子设计自动化, 约束求解器, 计算机辅助设计