Switching from OpenSCAD to FreeCAD

After a long time trying to achieve anything in OpenSCAD, I abandoned it. I’m frustrated with my inability to constrain things easily, a lot of my time was spent translating and difference()ing various primitives. The best curve I could get was a cylinder. The performance is gnarly when you start to incorporate a lot of shapes and perform boolean operations. I still launch it when I need to split one object into multiple, or trim something off an object.

What else is there? I looked around the internet, but most of the good CAD programs are locked to Windows and require expensive licenses (over 100 in any currency per year is a difficult ask for most people). I decided to try FreeCAD - it seemed to be the program with the most interest, and the most recent commits. I don’t know if that means there are lots of bugs and requires constant maintenance, or if there’s a thriving community. Either way, it seemed more promising than some of the more dead applications with some bitter communities. Most people hadn’t heard of FreeCAD and didn’t have much to say about it, or complained that high complexity projects would crash.

I’ve now spent a few weeks with FreeCAD. I can finally create arbitrary curves, working on individual parts is trivial, I can clone parts and create variables via some dodgy spreadsheet mechanism. You can group parts in little folders, and for creating solid objects, this workflow is superior to an entirely code driven approach. OpenSCAD parts are mostly positionally dependant, meaning a lot of fiddling is required to re-arrange parts. In FreeCAD, with a constraints system, you can easily sketch a 2D plane on any axis and modify your object. I think stability is an issue. If you exceed some constraints in an obviously bogus way, like asking for a 5mm chamfer on a 4mm thick object, you can provoke the application into crashing instead of showing an error dialog. Re-arranging items inside a part is also somewhat difficult, so I usually approach everything in an addative way - if I can’t do something in a single sketch or pass, I’ll go in with multiple pocket and extrude calls.

Anyway, I successfully managed to design a control panel this way. By defining most of the major measurements in a spreadsheet, I was able to edit the object’s primary parameters with some ease. I could then create sketches with smaller footprints than the final model for printing test parts to ensure the fit was good. With my impatience, I didn’t actually get a perfect fit, because my final few prints were close enough. I have a little 1mm lift on one side thanks to this, but this wasn’t enough to make me go back and edit the design for a reprint.

I think my favourite demonstration of cloned parts working well was cloning several buttons Parts. I didn’t use the correct alignment interface FreeCAD provides, instead aligning them manually with pasted offsets. This bit me later when I changed the button spacing again, but turned out much easier than OpenSCAD. I could scroll wheel X and Y position so easily that I didn’t mind. Then, when I wanted to change that button in any way, I would hide everything else and edit the original button Part.

Anyway, in no time at all, I had a functioning lid and base that fits perfectly and incorporates multiple curves and radius constraints. This would have been fairly difficult for me in OpenSCAD.