Branching Out Wood

Modern Functional Home Decor by David Wertheimer

5 Axis CNC Milling: It's all in the Software

David WertheimerComment
Mach3 5-axis controller for $270 from  Banggood.com ; just be ready for some  subpar documentation

Mach3 5-axis controller for $270 from Banggood.com; just be ready for some subpar documentation

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.

[Mach 3 controll picture]

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.

5xMonkey creates all the roughing and finishing toolpaths in one go

5xMonkey creates all the roughing and finishing toolpaths in one go

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.

Swarf machining uses the side of the tool - instead of the end - to get a clean finish on the surface

Swarf machining uses the side of the tool - instead of the end - to get a clean finish on the surface

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.

Rotary / trunion table solution to 4th & 5th axis planned for my XCarve

Rotary / trunion table solution to 4th & 5th axis planned for my XCarve

Milling head with 4th & 5th axes that is more typical of 5-axis milling machines

Milling head with 4th & 5th axes that is more typical of 5-axis milling machines

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.

Cube with three conical holes, requiring three milling operations from three different faces to shape.

Cube with three conical holes, requiring three milling operations from three different faces to shape.

mill-from-right.png

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.

mill-from-top.png
left-to-top.png

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.

Milling out the top, as the first operation, takes out the region in the center for the first time…

Milling out the top, as the first operation, takes out the region in the center for the first time…

… but now, without “REST” capabilities (or with REST features so clumsily implemented that it is a operationally impossible to keep it current during prototyping), that center region gets milled out again!

… but now, without “REST” capabilities (or with REST features so clumsily implemented that it is a operationally impossible to keep it current during prototyping), that center region gets milled out again!

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! Once I see that as supported, the next steps for me will be to:

  1. Build a python script to merge multiple command files that have a defined geometric relationship between them;

  2. Add stepper motor drivers and the wiring to my Mach3 controller;

  3. Install the rotary / trunion table mechanism on my XCarve; and finally

  4. 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!