Presenting a set of template Rust, WASM and Deno projects on GitHub which make use of GitHub Actions and Workflows for continuous integration.

I’ve previously outlined my reasons for evaluating Rust and Deno. Using these technologies, I am looking to achieve:

  • A scriptable high-level layer (Deno REPL) controlling a performant lower-level core (Rust).
  • A single executable binary via Deno Compile.
  • Cross platform executables via cross-compilation support for Deno and Rust.
  • Ability to dynamically load and run additional logic after installation via Deno’s support for the Javascript import() function.
  • Agnostic support for running as an OS process or in a browser runtime via Deno’s web platform APIs and the ability to compile Rust to WASM.
  • Simple project scaffolding via Deno’s stated goal to “provide built-in tooling to improve developer experience”.

I wanted to see if these could all be achieved using free SaaS tooling for continuous integration including:

  • code analysis
  • automated dependency updates
  • automated unit testing and integration/acceptance testing
  • automated semantic releases
  • automatically generated API documentation

I created the template projects and GitHub workflow and actions discussed here to see if the technologies could deliver on their promises and thus achieve my aims.

A new feature release version of Legify is available at:

This provides a new legify-technic-pin macro which renders a technic pin onto an existing Part Design workbench body.

Therefore the “s” in the name of the project “freecad-legify-macros” now has real meaning! 😜

I ordered some 3D prints of bricks designed with the legify macro code available at:

Presented below are two assemblies as rendered within FreeCAD and assembled in real life.

A new feature release version of Legify is available at:

Beyond a number of measurement improvements, rendering of technic pins is now implemented.

I have just completed the finishing touches on Technic pin support:

I’ve been developing a FreeCAD macro for a while which uses the PartDesign workbench:

I’m just wrapping up support for rendering technic pins (work in progress screenshot below) and this effort has led me to a few more nuggets of information relating to PartDesign and Python scripting in FreeCAD.

I reached a milestone last weekend with a successful render of a brick assembly in FreeCAD.

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.

The plan for Flowscripter has always included the following goals:

  • Use TypeScript.
  • Use dynamic import of ES modules.
  • Rely on existing module dependency directives to auto-install plugin dependencies i.e. not inventing a new module dependency framework.
  • Providing Flowscripter as a single downloadable binary with no need for pre-installed dependencies e.g. Node.js, ffmpeg.
  • Support native extensions written in Rust.

A bugix version of Legify is available at:

It provides improvements to measurements and rendering based on using the macro generated parts in Assembly V4 and TechDraw workbenches.

Example TechDraw diagrams for individual parts and assemblies are provided below.

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:

The latest and most likely last version of Legify is available at:

I’ve achieved my goals with this project, which were to:

  • Get to grips with FreeCAD and parametric modelling concepts: sketches, constraints, datum planes etc.
  • Learn Python and use it for FreeCAD scripting

I’m now moving on to learn about assemblies and technical drawings.

As part of my efforts to accurately model Lego bricks, I need to visualise the finer features of Lego pieces and measure various dimensions accurately.

Googling for “excel timecode” didn’t produce any results which met my requirements:

  • support 29.97 drop-frame SMPTE timecode
  • calculate a duration given an in-point and out-point
  • provide conversion to and from timecode, frame count and microseconds
  • not based on Excel macros so that the solution can be easily redistributed

Because of this, I am pleased to present a solution which does meet the above requirements:

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.