Why another 3D CAD application?
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 library, 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 create a 3D CAD application that fits my and hopefully other people’s needs.
TL;DR: Dune3D = Solver and workflow from SolveSpace + Open CASCADE + Horizon EDA user interface