Presented here is a somewhat terse step-by-step guide to installing a working version of FreeCAD 0.19 on macOS Big Sur using Conda.

Additional bonus steps explain how to use the new FreeCAD Extension Manager to install the Assembly4 Workbench and the Render Workbench (with rendering performed by Cycles).

If you use a 3DConnextion SpaceMouse I can report these steps will produce a build which supports it.

Last year I provided some FFmpeg patches to support ICC Profiles stored within MP4 (and MOV) files.

The patches were recently merged into master and will therefore be available in the next FFmpeg release.

\( ゚ヮ゚)/

ICC profiles can be stored in MOV/MP4 sample descriptor colour information atoms. The relevant extract from the ISO standard is:

I have moved on from learning basic part design and scripting in FreeCAD and now want to tackle assemblies.

Following on from my previous post, Building FreeCAD with 3DConnexion Support on macOS using Conda, this post presents similar instructions for building the very promising Assembly3 Workbench for FreeCAD.

Again, I wanted to use the latest source AND use a 3DConnexion SpaceMouse on a MacBook Pro. Using Conda and the Conda Forge feedstock for FreeCAD makes this a scriptable, repeatable process.

Presented here is a somewhat terse step-by-step guide to building FreeCAD from source using Conda and the Conda Forge feedstock for FreeCAD.

I need to do this to ensure I can run the latest FreeCAD code AND use a 3DConnexion SpaceMouse on a MacBook Pro.


There are several limitations when referencing items in FreeCAD via Python script. This includes needing to reference Part items such as edges and faces by name, whilst the names are liable (and likely) to change each time the model is modified.

There are also a number of exposed native methods in the Python scripting layer which expect (rarely documented) integer based constants. In this post I collate what I’ve learnt about these constants for future reference.

Beyond simple scripts, FreeCAD macro development really benefits from using a Python IDE. My Python IDE of choice is PyCharm.

I have been able to setup the same Python environment with FreeCAD and PyCharm using this great project https://github.com/FreeCAD/FreeCAD_Conda.

This allows the same Python syntax and semantics to be applied (especially important when switching from Python 2 to Python 3). Unfortunately however, having code completion for FreeCAD modules still eludes me…


I’ve been developing a fairly complex macro for FreeCAD and wanted to re-run it after making code changes without having to restart FreeCAD.

I found this forum posting which gave me the answer.

This post was discussing reloading code for workbenches and GUI Commands (which has some caveats) and it also works perfectly for macros.

This website is built using Hugo and deployed on Netlify. I’ve been very happy with both of these technologies since deciding to use them. I did find the Hugo documentation somewhat impenetrable: all the information and detail is there, but it’s a steep ol' curve for a newcomer. I’ve surmounted that curve and this site now features statically hosted blog comments - including moderation functionality.

This post aims to step through the required config and to point out some salient points.

Google Analytics tracking of internal links within your own website is super-simple. Tracking outbound links is slightly more involved. Google tells you how, but this requires remembering to modify each outbound link’s onclick event handler.


I’ve been developing a fairly complex macro for FreeCAD and wanted to split the code out into a module with separate files.


I’ve been writing a Python macro for FreeCAD as a learning exercise on both subjects. I thought it would be nice to display the Circled Information Source unicode character as a tooltip icon in a GUI form. It looks like this: 🛈 (if your current viewing font supports it).

After attempting this for a couple of hours, I wanted to stop learning Python and head back to Java…