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.