FreeCAD version 17 is almost ready to be released. It will have a thoroughly overhauled CAM workbench called 'Path'. I've done some videos and posts about this workbench over the last year or so and it has come a long way.

I'm starting a new video tutorial series which will be more thorough and give more context to many aspects of Path. The first three episodes are up now. Please check it out and subscribe to get new videos as I publish them.

FreeCAD Path doesn't have a 4th Axis operation (yet) but certain kinds of things should still be possible. For example, engraving or pocketing on a cylindrical surface.

I've seen other software, both open-source and commercial, that allow the user to map a linear axis to a rotary axis. I decided to try writing a 'Dressup' for FreeCAD Path to do this.

The workflow looks like this:

First the user models shape and sets up the CAM operations as though it was a 2.5D job

Next, the user selects the operation and applies the dressup. The dressup currently has only two properties. First select the axis mapping. For example, to map the X axis to the A rotary choose (x->a). Configure the radius of the cylinder we're mapping onto.

The dressup executes and re-processes the base gcode.

It removes all G2 and G3 arcs and substitutes them with straight lines. The accuracy or 'deflection' will be another property soon.

The dressup then substitutes the axis parameter for each G1 move. It calculates the rotational distance corresponding to the linear distance in the original move.
If the move is a pure rotary move, it also recalculates the feed rate and inserts a rotational velocity. If the move is a coordinated move of linear and rotoray, no change is made. The controller (at least linuxcnc) will handle the conversion internally and process the move as a coordinated move naturally.

FreeCAD can't render rotary moves in the A or B axis so the gcode backplot just looks like lines in XZ (or YZ) Otherwise, it's handled the same. Postprocessing spits out the final gcode for linuxcnc and it's ready to run. Here's a little video I did cutting the FreeCAD logo in PVC.

A lot of projects include multiple parts made from a single sheet of uniform material - like a sheet of plywood. This causes some trouble in a CAD/CAM application

You want to keep your overall model/assembly intact, but the build assembly isn't the same as the cutting layout.

You need to translate and rotate parts to maximize material usage

You want to group operations to minimize tool changes on the machine.

For a while, I've been promising that we would include a solution to this in FreeCAD Path and now we're finally getting to it thanks to facilities in the Arch workbench - Panels!

Arch Panels are designed for exactly this purpose - designing parts from uniform sheet stock. In Arch, you can define a panel object and then create a 'Panel Cut' to represent the 2D cut pattern for that part. These 2D cuts can then be aggregated into a 'Panel Sheet' for cutting.

Is that confusing? Then just watch the video. It'll make sense, trust me. And for good measure, we now have a post-processor for smoothieboard, an exporter for linuxcnc tooltables, and improved tool handling. So there ya go.