3D CAD application https://dune3d.org
Find a file
Lukas K. 527cd6cb68
Merge pull request #266 from saierd/cube-hover
changelog: Bugfixes/Editor: Update the axes cube hover effect when it rotates
2026-03-21 16:37:13 +01:00
.github/workflows Revert "win32 CI: use patched glib2" 2026-03-21 16:26:42 +01:00
3rd_party dxf import/export support non-ascii filenames on windows 2025-11-30 15:12:49 +01:00
scripts chamfer groups: add radius2 2026-02-25 23:17:23 +01:00
src update the axes cube hover effect when it rotates 2026-03-19 15:31:14 +00:00
wix wix: add file association 2024-08-17 01:22:21 +02:00
.cirrus.yml add freebsd CI 2025-08-26 22:27:08 +02:00
.clang-format inital import 2023-10-22 22:10:29 +02:00
.gitignore Add macOS support to Nix Flake (#73) 2024-02-14 22:50:29 +01:00
CHANGELOG.md version 1.4.0 2026-01-28 23:48:11 +01:00
check_dll.sh check_dll.sh: fix filenames 2024-01-14 22:52:07 +01:00
check_version.py check_version: check release URL 2024-10-17 00:16:46 +02:00
flake.lock update nix flake 2026-01-18 21:08:56 +01:00
flake.nix flake.nix: bump llvm to 21 on darwin 2026-01-23 19:43:54 +01:00
Info.plist mac: set up bundling 2025-03-28 13:23:42 +01:00
LICENSE inital import 2023-10-22 22:10:29 +02:00
macos-launcher.sh mac: set up bundling 2025-03-28 13:23:42 +01:00
make_bindist.sh win32: add missing DLLs 2025-12-02 01:17:45 +01:00
make_color_presets.py add color themes 2023-11-21 23:13:31 +01:00
make_icon_texture_atlas.py inital import 2023-10-22 22:10:29 +02:00
make_rc.py add win32 rc 2024-01-13 16:40:56 +01:00
make_version.py inital import 2023-10-22 22:10:29 +02:00
meson.build remove axes_lollipop.cpp 2026-03-19 15:31:10 +00:00
org.dune3d.dune3d.desktop desktop file: fix category 2025-03-01 19:22:18 +01:00
org.dune3d.dune3d.metainfo.xml version 1.4.0 2026-01-28 23:48:11 +01:00
README.md README: add links to matrix room and github discussions 2024-09-26 12:42:23 +02:00
screenshot.png inital import 2023-10-22 22:10:29 +02:00
version.py version 1.4.0 2026-01-28 23:48:11 +01:00

Dune 3D

Dune 3D is a parametric 3D CAD application that supports STEP import/export, fillets and chamfers.

Screenshot showing a PCB in a grey enclosure on a gradient background.

Motivation

So why another open-source 3D CAD application when FreeCAD and Solvespace exist? My primary use case for 3D CAD is designing 3D-printed enclosures for my electronics projects. I often found myself procrastinating designing the enclosure and attributed that to my dissatisfaction with the available open source 3D CAD applications.

While FreeCAD technically does everything I need, the way it's implemented isn't quite to my liking. My biggest pain points with it are the modal sketcher that only works in 2D, no constraints in 3D for extrusions and the perils of referencing things in the design.

Solvespace on the other hand gets the workflow part right, but falls short by not importing STEP and the geometry kernel not supporting chamfers and fillets.

Having solved the similar problem for PCB CAD by developing Horizon EDA, I began pondering whether I could pull off the same thing for 3D CAD. After all, what does it take to make a 3D CAD?

  • Geometry kernel to do extrusions, intersections, chamfers, etc.: While it's not a nice library to work with, Open CASCADE is the only viable choice if we want to have STEP import/export and fillets/chamfers. Fortunately, I have some experience with it from dealing with STEP files in Horizon EDA.
  • 3D viewport: Obviously, we need a way to put 3D geometry on screen, zoom/pan and select things. The 3D preview in Horizon EDA already does all of this, so I have a well-understood codebase I can reuse.
  • Constraint solver: Unlike with Horizon EDA where things just stay where you last moved them, in 3D CAD, it's commonplace to specify where things go by means of constraints that need to be solved. Turns out that Solvespace's solver is available as a library1, so that part's also covered.
  • Editor infrastructure: Last but not least, we need code that takes care of the tools, undo/redo and all of the other bits and pieces that make up an interactive editor. While there'll be some differences, I felt confident that I could reuse and adapt the interactive manipulator from Horizon EDA.

With all of the building blocks available, I set out to glue them together to form a 3D CAD application. About three months later, it's somewhat presentable.

How to build

See the build instructions.

How to use

Similar to Horizon EDA, all tools and actions are available from the spacebar menu.

Use the "set workplane" tool to set a group's workplane.

Also check out the documentation.

Where to go with questions

The project's discussion platforms are a matrix room and GitHub Discussions.

Anticipated questions

Where do I find sample files?

See the samples repository.

Does it run on Windows?

See the build instructions for how to build on Windows.

Does it run on macOS?

See the build instructions for how to build on macOS.

Why not integrate it into Horizon EDA?

There's no place in Horizon EDA where a 3D CAD would make sense to implement. Also, I wanted to do some things differently and give Gtk 4 a try.

Why not improve Solvespace or FreeCAD?

Making FreeCAD parametric in 3D or putting Open CASCADE into Solvespace seemed to be too big a change to pull off as an outside contributor to either project. I also really like writing CAD software, so here we are.


  1. I ended up directly using solvespace's solver instead of the suggested wrapper code since it didn't expose all of the features I needed. I also had to patch the solver to make it sufficiently fast for the kinds of equations I was generating by symbolically solving equations where applicable. ↩︎