5 Axis CNC Milling: It's all in the Software
March 2021 Update
I’ve finally completed a multi-axis upgrade on my CNC, though it was part of a much larger CNC upgrade; due to my struggles with the Mach3 knockoff controller, and changes to the pricing model of Fusion360, I never got what was described here to work. The third post in my CNC upgrade series (why I upgraded my CNC, the key subsystems, and the build process) delves into the multi-axis setup I ultimately got working including why I switched to DeskProto for the CAM part of multi-axis milling, and a to-be-written post will detail some of the 4- and 5-axis parts I’ve made.
Upgrading to Multi-Axis Milling
About six months ago, I started exploring enhancements to my 3-axis XCarve machine to enable it to do 4- or 5-axis machining with this post. I did purchase this inexpensive Chinese-made 5-axis Mach3 controller and do some initial testing with it unconnected to any steppers, and it does seem like it will do the work.
However, before making the next series of investments into hardware, I needed to convince myself that I could indeed get an inexpensive software solution to actually generate the command files, something I did not investigate much in that initial post. To cut to the chase, I’ve unfortunately been stymied with a number of different solutions, but I have reason to be optimistic which I’ll touch on at the end.
Continuous 5-Axis Milling Options
Commercial software: too expensive. A few commercial software offerings, such as BobCad, have 5axis (either 3+2 or continuous 5 axis) milling solutions, starting in the mid-to-upper thousands of dollars. Nope.
Free software: not really free. I was thinking about software options from providers of economical 5-axis machines, like the previously mentioned 5-axis PocketNC. While it didn’t look like they had anything to offer here, I did stumble across 5AxisWorks, a British company making comparatively economical ($5,000-$10,000 for a machine with up to 1m x 1m x 0.6m working space) 5-axis machines. They have a package called 5xMonkey which generates 5-axis machine paths for solids designed in a commercial modeling package called Rhino. Unfortunately, however, Rhino costs a minimum of $1,000 for non-educational use.
Fusion 360 5-axis: major limits. Fusion 360 does have some 5-axis machining methods (swarf, contour, & flow), but these are all finishing operations, not roughing operations. That is, if the block of wood is already mostly done, these will give it the final polish, but not took the solid block of wood to the almost-complete phase. Also, it seems there are a few other limitations in how the 4th & 5th axes are defined that won’t work well with the combination rotary and trunion table approach that I’m pursuing.
3+2-Axis Milling Options
So given that I couldn’t find an easy path into continuous 5-axis milling, how about 3+2 axis? That is using the 4th & 5th axes for indexing and positioning the object, and then, once in a fixed position, use traditional 3-axis milling? That may not work well to carve, say, faces, but since I’m thinking of this more for small architectural models (like the Coliseum, or a cathedral) that is probably good enough. Even here, however, I’m stymied, but there is light at the end of the tunnel.
Basically, my thought is to use a software package to generate multiple 3-axis command files from different faces - for instance, imagine this cube (resting on a hexagonal work surface). You could mill it out with three different operations, though how you might think about those three different operations depend on the movement capabilities of your machine.
The three operations are related to each other by a movement of the the tool as in the above images - or by a movement of the work surface, as in the next three images.
My equipment will support the latter set of images. Defining the movement of the work surface both allows the generation of the commands to make that movement on the 4th & 5th axes, as well as the necessary transformations on the three separate X/Y/Z command files so that they can be merged into one larger command file with one coordinate system.
I imagined the workflow starting with a Fusion 360-designed 3D model. I would then decide the directions from which it needs to be milled: a 4-sided house might have the 5 orthogonal directions of the top and the four sides; the coliseum might also start from the top, but then have 16 directions rotating along the exterior to add window detail from roughly all sides of the round building.
So, how can I generate those independent command files? Still coming up short:
PyCam: Poorly supported. Since I’d be writing a script - likely in python - to merge & transform multiple transformations, I thought Pycam was a great place to start. Pycam is a python-based toolpath generator for 3-axis machining, that also has commands to rotate and translate the model. So those 5 - or 17! - different directions from which to mill the model could be programmatically defined and then combined all in one script. However, it turns out that Pycam is very difficult to install, and has limited users or community involvement in the last few years. Also, its not clear if it supports REST (REmaining STock) machining, important for this approach; this will be described next.
Fusion 360 Multi-Setup: major limits. OK, back to Fusion 360. It does allow multiple setups for machining, so I can create those 5 or 17 different operations manually. This will be a lot more tedious because not only do I have to manually create all those operations, but I have to manually enter the details in this to-be-written script to merge the files. But that part is potentially workable. The straw that breaks the camels back, so to speak, however is the cumbersome support for REST machining.
Looking at the two of the three operations needed to mill out the holes in this cube, you can see that the part at the center is milled out twice (and would be repeated with the third operation as well). On a small cube with three operations, maybe this is not such a big deal - the cutting head just spends a bit more time in the air. But if you imagine, say, roughing out the details of a building, that explodes out the time that’s required to mill the block into a finished object to many multiples of time really required - most of the “cutting” time is spent in the air. While Fusion 360 has some workarounds for this, they just are not all that practical, and would require many many manual steps each time the underlying model is slightly changed. And fixing this issue was something that had been asked of the Autodesk team for over three years, to no avail.
Light at the End of the Tunnel
So what’s the positive next step I alluded to earlier? Well, it seems finally that cumbersome Autodesk step will be addressed via adding REST machining support between multiple setups; it was “accepted” by the development team just this past Monday! [UPDATE AUGUST 2023: This is now an available feature in Fusion360]. Once I see that as supported, the next steps for me will be to:
Build a python script to merge multiple command files that have a defined geometric relationship between them;
Add stepper motor drivers and the wiring to my Mach3 controller;
Install the rotary / trunion table mechanism on my XCarve; and finally
Test carve a house!
Hopefully it isn’t another six months until the next steps, but I will be sure to share whatever the next big development in my 5-axis journey is! If you have any horror (or success) stories in your own journey along this process, please share below, or reach out to me directly!