FreeCAD: Open Source Design on the Bleeding Edge

Are you looking for software for designing physical objects for 3D printing or physical construction? Computer-aided design (CAD) software is used extensively in engineering when designing objects that will be physically constructed. Programs such as Blender or SketchUp can be used to design models for 3D printing but there’s a catch: it’s quite possible to design models that look great onscreen but don’t meet the “solid object” requirements of 3D printing. Since CAD programs are targeted at building real-world objects, they can be a better fit for designing things that will exist not just on the screen but in the physical world.

FreeCAD distinguishes itself by being open source, cross-platform, and designed for parametric modeling. Anyone is free to download or modify FreeCAD, and it works on Windows, Mac, and Linux. With parametric modeling, it’s possible to go back and change parameters in your design and have the rest of your design update. For example, if you design a project box to hold your electronics project and decide it needs to be wider, you could change the width parameter and the box would automatically update. FreeCAD allows you to design using its visual interface and also offers complete control via Python scripting.

Changing the size of a hole by changing a parameter

I recommend Bram De Vries’ FreeCAD tutorials on YouTube to help you get started with FreeCAD. The FreeCAD website has links to download the software and a getting started guide. FreeCAD is under heavy development (by a small group of individuals) so expect to encounter a little strangeness from time to time, and save often! If you’re used to using software developed by a large and well-compensated engineering team you may be surprised that certain features are missing, but on the other hand it’s really quite amazing how much FreeCAD offers in software that is truly free. You might find a few gaping holes in functionality, but you also won’t find any features that are locked out until you go “Premium”.

If you didn’t think I was geeky enough for loving FreeCAD, let me tell you my favorite feature: everything is scriptable using Python. FreeCAD is primarily written in Python and you have access to a live Python console while the program is running (View->Views->Python console) that you can use to interactively write code and immediately see the results. Scripting in FreeCAD isn’t through some limited programming interface, or with a limited programming language: you have access to pretty much everything inside FreeCAD using standard Python code. You can script repetitive tasks in the UI, generate new parts from scratch, or even add whole new “workbenches” that appear alongside the built-in features in the FreeCAD UI.

Creating a simple part interactively with Python

There are many example macros to try. One of my favorites allows you to generate an airfoil shape from online airfoil profiles. My own Polygon Construction Kit (Polycon) is built inside FreeCAD. The basic idea of Polycon is to convert a simple polygon model into a physical object by creating a set of 3D-printed connectors that can be used to reconstruct the polygon in the real world. The process involves iterating over the 3D model and generating a connector for each vertex of the polygon. Then each connector needs to be exported as an STL file for the 3D printing software.

By implementing Polycon as a FreeCAD module I was able to leverage a huge amount of functionality related to loading the 3D model, generating the connector shapes, and exporting the files for printing. FreeCAD’s UI makes it easy to see how the connectors look and make adjustments to each one as necessary. Then I can export all the connectors as well-organized STL files, all by pressing one button! Doing this manually instead of in code could literally take hundreds of hours, even for a simple model.

FreeCAD is developed by a small group of people and is still in the “alpha” stage, but it has the potential to become a very important tool in the open source ecosystem. FreeCAD fills the need for an open source CAD tool the same way that Blender and GIMP do for 3D graphics and image editing. Another open source CAD tool to check out is OpenSCAD. This tool lets you design solid 3D objects (the kind we like to print!) using a simple programming language. OpenSCAD is a great program–its simple syntax and interface is a great way to start designing solid objects using code and thinking in “X-Y-Z”. My first implementation of Polycon used OpenSCAD, but I eventually switched over to FreeCAD since it offers the ability to analyze shapes as well as create them, and Python is much more powerful than OpenSCAD’s programming language.

If you’re building 3D models to be printed or are just interested in trying out computer-aided design, FreeCAD is worth a look. Commercial offerings are likely going to be more polished and reliable, but FreeCAD’s parametric modeling, scriptability, and cross-platform support in an open source package are quite impressive. It’s a great tool for designing objects to be built in the real world.

About the Author

Michael Ang is a Berlin-based artist and engineer working at the intersection of art, engineering, and the natural world. His latest project is the Polygon Construction Kit, a toolkit used to bridge the virtual and physical realms by constructing real-world objects from simple 3D models. He is one of the organizers of Art Hack Day, an event for hackers whose medium is tech and artists whose medium is technology.