I am not an engineer. I'm not even good at math, and my spatial reasoning skills are nonexistent. With that in mind, here are the CAD programs I've tried.
Blender, Pros: Free, surprisingly comprehensive. Cons: Not parametric, can't precisely measure or constrain models, all the extra stuff you get like rendering has no use in 3D printing.
Onshape: Pros: Easy to use, convenient (I've successfully edited a model on my phone), free*. Cons: Runs ~~on someone else's computer~~ in the cloud, not private, enshittification is sure to come shortly if history is any indication.
Fusion360: Pros: seems to be what everyone else is using. Cons: enshittification is already happening, runs locally with limited saves in the cloud so you don't own your files but also don't get the run anywhere convenience of the cloud.
Plasticity: Pros: buttery smooth workflow, pay once run forever, runs and saves locally. Cons: Not peremetric so hard to go back and adjust things later.
FreeCAD: Pros: free, open source. Cons: workflow as rough as sandpaper, constantly crashes.
Plasticity and Onshape have proven to be the most productive choices for me. If only Plasticity were parametric it would be the perfect software for me personally.
I want to like FreeCAD, I really do, but it's so hard to use. I love Plasticity, but it's meant for making 3D assets for games etc. using hard surface modelling, not so much for manufacturing.
If I may digress for a moment, I work as a network admin. I'm familiar mostly with Cisco at work, but use Ubiquiti at home. Cisco equipment is monstrously expensive from a consumer or prosumer perspective, and the only way to get true hands-on experience is to buy used equipment from ebay which may still be pricey.
Ubiquiti's market strategy seems to be to make the kind of gear that a network admin would want in their home. It's inexpensive relative to the big fish like Cisco, but has a fairly comprehensive feature set. The idea is to entice Joe IT guy to buy Ubiquiti gear for his house, fall in love with it, then push for the company to switch to Ubiquiti the next time they upgrade.
What I want is the Ubiquiti of CAD programs. Easy to use, low barrier to entry but comprehensive enough to use professionally.
Suggestions/comments?
You missed OpenSCAD but that might've been intentional if you're looking for something with low barrier to entry and a purely "visual" workflow. It's the diametric opposite of Blender, basically. Surprisingly non-comprehensive with very limited options of primitives to work with, but laser-focused on building precise, constrained, parametric models out of said primitives. The downside is that you have to code it. Like, in actual code. For the artistically-minded designer, it's probably not the right tool. But for people with the appropriate mental model and skillset, it's an extremely effective tool, and infinitely extensible. If you need to do something particularly complex, chances are someone's already written the functions and libraries to do it, and if you need to know how to do it too, you can just look at their code. Assuming you can read it.
The actual coding language itself is a bit janky and for me, counterintuitive and unpleasant in some ways. It certainly wouldn't be my first choice, but it's workable, and the elegance of the overall idea makes up for it. It's worth the extra investment in learning, and I can't go back to wrestling with what I find are clunky visual workflows anymore. I crave the hard numerical precision of actually and accurately defining the shapes I'm working with.
Yes! This so much.
I am entirely convinced that one of the more underserved niches in software is domain-specific languages for doing traditionally-mousey/clicky/GUI things. I'm so convinced of that that I've written just such a DSL and am actively working on a second one.
About the only really good examples of that that I know of are OpenSCAD and Graphviz. (And I guess the one I wrote.) I've love to know about more. (And, no, libraries that make GUI-sort-of use cases easier in some general purpose language don't count. There's really something about having syntax/builtins/standard library custom made specifically for the use case that I'm quite convinced has major benefits to overall usability.)
About OpenSCAD specifically, I also have some nit-picks about the language. There are cases where I've written code in other languages that outputs OpenSCAD code specifically to get around some limitations. (There's one project I'm working on and haven't Open Sourced yet that just begs so hard for maps/dicts/string-keyed-composite-types. And the ability to use modules as values. (Like, making it more of a "functional" language... or rather a "moduleal" language.)) But like you, none of that detracts enough to make me not love OpenSCAD.
Like, things that take in a text file with programming capabilities describing what to generate? I can think of a couple off the top of my head.
POV-Ray, raytracer
LaTeX, typesetting
Asymptote, MetaPost, vector graphics
abc, music composition
I’ll have to check out both OpenSCAD and Code Comic. Some completely non-CAD DSLs that you might be interested in, since you mentioned GraphViz:
Mermaid.js does something very similar to Graphviz. There are a couple other similar tools like that out there, but Mermaid is supported in a lot of places natively or as an easy to use plugin, like GitHub Markdown (and other git forges like Forgejo), Hedgedoc, Obsidian, SilverBullet, etc..
I’d also argue that LaTeX counts, and to a lesser extent, Markdown - compare using them to using Word.
And reveal.js is an equivalent for slide deck creation that would normally be done with PowerPoint.
I agree. I'm a software developer and absolutely love OpenSCAD.
It would be great if it supported things like fillets and chamfers, otherwise I'm very happy with it.
CAD without fillets and chamfers is PFU.
BOSL is a massive improvement over the barebones OpenSCAD functions, and if you need to do stuff like fillets and chamfers you should check it out. There are probably other libraries that do the same but I know BOSL(2) does, through functions like cuboid() and prismoid() and edge_profile() among many other things.
That is very cool!
Thank you for the suggestion.
https://hackaday.com/2025/02/18/belfry-openscad-library-bosl2-brings-useful-parts-and-tools-aplenty/