I do a bunch of random little things on my CNC router -- mostly I make and sell wood handgun grips.

I used 4 open-source CAD programs before finally just concluding I need SolidWorks to do serious modeling. But I do still use one of the open source alternatives sometimes.

* Blender

OK, technically I didn't really give this a try for CAD. I had used it in the past for scene modeling and I knew it was extremely powerful for that but a huge pain for doing CAD-type work. Doing CAD with triangle meshes is total madness, CSG is the only way to go.

* OpenSCAD

I'll write the most about this because it's the subject of the article. If you come into this from a Blender background, it is awesome: finally I can define my model with a few key parameters, and have the program generate all the other dimensions from there! And CSG makes way more sense than meshes -- I can make a box, then put a hole through that box, then cut a countersink on that hole. Awesome.

But all the other parametric CAD programs have that stuff too. You've got constraints in sketches, support for formulas in equations, and templating features like linear patterns. So you can typically get the same level of flexibility where if you want to change your model in a big way, you just edit the few dimensions from which all else is derived. There are cases where you can't "program" your model in terms of those 3 common CAD features, while you can in an OpenSCAD file. But they are few and far between.

And the way the other programs do it is not only easier to "write" by clicking buttons on a UI, but much, much easier to "read" by viewing the sketch drawing. You can see how a sketch is defined a lot faster than you can understand the OpenSCAD code that does the same thing. Trying to revisit an old OpenSCAD project has a steep learning curve.

I really did fall in love with this way of defining models for a short time, but I realized that I was making more work for myself when the models I get out of other parametric CAD tools are equally "programmable" for practical purposes.

* FreeCAD

First thoughts: Wow! This thing is pretty cool! I found the default controls for moving the view a little "off" based on my past experience but that's easy to adjust to. And at first, FreeCAD is really impressive because it brings complex features to the table like "loft", which is something I really missed from SolidWorks. It's almost a must-have for my grip designs.

The main problem I had with FreeCAD is that it just breaks too often. When I started making complex designs using those features I loved so much, FreeCAD would get unstable. It's very frustrating to work on parts when the editor keeps crashing, sometimes mid-save corrupting the current file. I would have to go back to the drawing board and try another way of defining the same shape in hopes that FreeCAD liked the new way better. Ultimately I just got too annoyed by it. Also, I really wished that I could use guide curves for lofts -- but here I am asking them both to make a complex feature MORE complex AND to fix the existing bugs with it, which is a really tall order.

FreeCAD is an amazing achievement for volunteer work but it's not useful to me.

* SolveSpace

With its unconventional looking UI, this seemed like it was going to be one of those idiosyncratic open source programs like Blender or GIMP where you spend half the time just cursing them out for doing things a weird way and making you learn it.

On the contrary, once I worked through the first tutorial on their official website, I felt like I had a pretty good understanding of the program. Some stuff like defining new workplanes was still a bit confusing, but I got the hang of it. The shortcut keys are super handy and easy to learn by hovering the buttons. Best of all, SolveSpace is fast and usually stable -- though you can get it to stack overflow, sometimes on save, by turning up the modeling resolution too far.

This lacks advanced features like the aforementioned loft, and sadly lacks a quick fillet/chamfer tool too. The modeling resolution thing can be a little bit of a pain (OpenSCAD has this problem even worse) coming from a commercial tool like SolidWorks where you don't even think about it until it's time to export to STL.

But overall, SolveSpace is a good example of keeping it simple, constraining the feature set to something manageable and then just doing that well. So I still use it now and then for quick stuff where I know I'm not going to need flowing 3d surfaces, just boxy extruded things with a few curved edges. It feels a lot more responsive than SolidWorks -- it's like using a text editor vs. using MS Word.