Introducing MakerCAD
- Marcus Wu
- Engineering , Software , Maker cad
- August 24, 2025
MakerCAD
There is a new CAD software offering for makers. It’s free, open source software designed by a maker for all other makers. Meet MakerCAD
History / Raison d’être
Journey before destination. To talk about MakerCAD, I need to start with what got me started on the project. This story starts in 2015 when I started an epic journey of designing and 3D printing a Curta Calculator (Also see the series of acticles starting with 3D Printed Curta Part 1 ). When I started working on the Curta, the only CAD software I had used was OpenSCAD which is fantastic, but not the kind of CAD software one would attempt to design the Curta Calculator in (it could likely be done, but it would be quite difficult).
When I chose CAD software for the Curta, I found something free at the time which was OnShape in its beta period. I still use OnShape and I still enjoy using it, but I learned the hard way when OnShape came out of beta that I didn’t really own my work in OnShape – OnShape did. I say this because unless I was willing to pay for the professional version (and continue to pay), my work automatically became public under the free version. Think about that for a moment. I would be paying to keep my content / material from being released publicly. I’m not here to bad-mouth anybody (as I said, OnShape is a great product and I still enjoy using it today), but this felt like extortion.
This provided the seeds of thought for what would become MakerCAD. I started the first pass at MakerCAD in early 2018 after a little break, having completed Adam Savage’s Curta Calculator in the middle of 2017. This first pass was written in C++ as a node.js module. By 2019 I had basics with this node module working. However, as I added functionality I started having trouble with the constraint solver I was using, SolveSpace . By Early 2020 I realized that I needed to pivot in a different direction. In late 2020 I started dlineate based on An Electronic Primer on Geometric Constraint Solving that at the time was hosted on Purdue’s website. In Mid 2021 I had the basics of the constraint solver working and started to also work on a new Golang version of MakerCAD.
Fast forward 139 commits in dlineate and 41 commits in MakerCAD and I am still not done, but I am ready for people to start to look at it and work with it. As of now, the Git repositories for MakerCAD and dlineate are available on Github as public projects.
What MakerCAD is now
Currently, MakerCAD is a source CAD: CAD software that builds a model from code the user writes. I have grand plans for it, but I’ll get to that in a second. For now, let’s talk about what it can do. MakerCAD currently includes the following features:
- Create primitives: currently just rectangular cuboids (cubes) and cylinders
- Boolean operations: union and difference for now, but intersection is planned
- Sketching on a surface / plane: 2D drawing for bringing into 3D later
- 2D Constraint solving: Add constraints to your sketches and solve for complex geometry
- Extruding and Revolving: Turn 2D faces into 3D shapes
- Topology exploration: Find components (faces, edges, vertices) of 3D shapes and 2D faces and use them for additional modeling
- Fillets and chamfers
- Model Exporting: currently STL and Step formats
- Do all of the above with Golang: write functions, create constants, use complex math, or whatever you can come up with
- Use version control: version control by default since you’re writing code instead of hanlding binary models or file formats
- Collaborate: as you would with any other code projects; start a GitHub / BitBucket / whatever project and share with others
The Roadmap
The above functionality already covers much of what is needed to design most engineering oriented models, but there are many areas of improvement needed:
- Memory management: MakeCAD uses the C++ OpenCascade CAD kernel behind the scenes and in my focus to get stuff working, I have neglected memory management of the C++ allocated memory
- Extended API: Professional CAD suites offer much more functionality; Even other FOSS CAD suites offer more (see FreeCAD)
- Improved geometric constraint solving: While my constraint solver (dlineate , also written by me) works, there are certain configurations of problems that it does not solve. Usually there is a configuration that accomplishes the same geometry that does solve, but I would like it to be more comprehensive
- Streamline the workflow: Some of the ways of doing things right now may not be optimal, I hope a community is built around this and I get a little bit of help identifying where improvements can be made
- A UI: I intend to start simple with a code editor and preview window similar to OpenSCAD, but extend it to be a full blown click-and-drag type of CAD UI experience
How to get started
If you would like to check out MakerCAD and build some models, the README gives an overview of most of the API along with instructions for getting started.
If you would like to use MakerCAD without installing all of its dependencies, you can use a GitHub Action to run the project and collect the results.
See miwa-vise-block for an example project that uses this Github Action and also as an example for how to use the MakerCAD API.