After deciding I've had enough of a distraction from learning FreeCAD, I started watching a YouTube tutorial playlist by MangoJelly. Watching someone else use FreeCAD is instructive because it is a difficult piece of software to use without some guidance. When I dove to play on my own, I got far enough to create a new FreeCAD document then figuring out I need to launch a workbench. But a default FreeCAD installation has over twenty workbenches to choose from, and no guidance on where to start or even what a workbench is.

After about 4-5 videos into the MangoJelly playlist, I learned a workbench in FreeCAD is a mini CAD package inside FreeCAD designed for a particular task. A workbench generate data for the underlying FreeCAD infrastructure that could be consumed by another workbench, or be useful directly. To use an imperfect analogy: if Microsoft Office were FreeCAD, its workbenches would be Word, Excel, PowerPoint, Outlook, etc. Except unlike Office, we can install additional FreeCAD workbenches in addition to the default list and we can even write our own.

Workbenches make sense as a software architectural approach for a large open-source project like FreeCAD. People with interesting CAD ideas can prototype them as a FreeCAD workbench without writing a CAD system from scratch. As a demonstration of the power of workbenches, I was impressed by the fact entire code-cad packages can interface with FreeCAD in the form of a workbench.

  • There is an OpenSCAD workbench which bridges FreeCAD with OpenSCAD (which must be installed separately) to consume OpenSCAD script and converts the result into an OCCT mesh that can be used by other FreeCAD workbenches.
  • There is also a CadQuery 2 workbench that can be used in a similar way. With the advantage that since CadQuery is also built on OCCT, in theory its output data can be used by other FreeCAD workbenches more easily as OCCT primitives instead of converting into a mesh.

Such flexibility makes FreeCAD workbenches a very powerful mechanism to interoperate across different CAD-related domains. On the downside, such flexibility also means the workbench ecosystem can be confusing.

  • MangoJelly started the tutorial by using the "Part Design" workbench, and a few episodes later we are shown the "Part" workbench. Both build 3D geometries from 2D sketches and have similar operations like extrude and revolve. MangoJelly struggled to explain when to use one versus the other, leaving me confused. I wonder if FreeCAD would ever choose one and discard the other or would it just continue down the path of having two largely overlapping workbenches.
  • A cleaner situation exists with the "Raytracing" workbench which has not been maintained for some time. There now exists a "Render" workbench with most of the same features. Thus, the unmaintained "Raytracing" will no longer be a part of default FreeCAD installation after 0.20. This is perhaps the best-case scenario of FreeCAD workbench evolution.
  • But "Part" vs. "Part Design" is not the only competition between similar FreeCAD workbenches. There's no single recommended way to build multipart assemblies, something I would want to do with a Sawppy rover. As of this writing the FreeCAD wiki describes three viable approaches each represented by a workbench: "A2plus", "Assembly3" and "Assembly4". I guess evolution is still ongoing with no clear victor.

Learning about workbenches gave me a potential future project idea: If I build a future version of Sawppy rover in FreeCAD, would it make sense to also create an optional Sawppy workbench? That might be the best way to let rover builders change Sawppy-specific settings (heat-set insert diameter) without making them wade through the entire CAD file.

That's an idea to investigate later. In the meantime, I should at least learn how to work with the Part Design workbench that's used a lot as in MangoJelly's YouTube tutorials.