True 4 Axis Milling

Ah, yes. CNC Zone is always fun. I quit hanging out there when this place got warm.

We will have a much more enlightening talk about this here so let me get it started;

When we talk about “true 4 and 5 axis milling” we are really talking about G93, G94 and to a lesser degree G95.

Does Mach4 support G93 “Inverse Timing?” Yes it does. And yes, we mostly mill in G94. That is pretty much the default. G93 is the magical secret sauce for true 4 axis milling though.

It isn’t so much an issue of support from Mach4 or other controllers as I found out, so true story time!

In 2010 I called the guys at CNCRouterParts and asked them if their machines could do “X.” They said no and directed me to Probotix who sold me an electronics and motor kit for the Sieg X3 mill. I got the ball screw conversion kit online and that was my first personal CNC machine.


It had a twist! I ordered the Sherline PN3700 rotary attachment and got an adapter plate and Probotix made the electronics package 4 axis.

I assembled a LinuxCNC based steel cutting 4 axis CNC machine for $3,600 in December 2010.

I still own the machine and use it in its original configuration, original electronics. Sweet little machine.

Where am I going with this? I paid $3,600 for my machine, right? I called around and started pricing software to output G93 based tool paths…

Yeah, many 10s of thousands of dollars :sob: Waaaaay more than I paid for the machine.

So I had to hand code everything. It was truly a pain too.

Anyways, so what apps generate true G93 tool paths? The only one I can afford is Fusion 360. And I buy credits to use it because its just too expensive to have full time access to it. Deskproto v7 does in fact use G93 BUT!!! It does NOT use 3D space for calculating tool paths. Its still a turkey on a spit.

I lost my original post processor I set up for 4 axis milling with AvidCNC when my old computer died and my 4th axis has been in storage since. I really don’t remember having to do anything to make it format 4 axis code correctly. There was a lot of other stuff that bugged me though. The trick here is go get one from MachSupport’s forum. Just compare the code and if there is anything different its pretty easy to copy over. Its JavaScript so it won’t take a PHD to alter it.

The hard part is actually in Fusion 360, you use 5 axis milling paths BUT you set up your machine to only have 4 axis (you do that in your machine library). Some tool path generators will also have a “inhibit 5th axis” checkbox (that might be removed now in favor of machine definitions, it’s been a year or so). When you do all of that correct, the magic happens!

3 axis is really simple. You place the cutter using 2 axis (X and Y) and then you vary the Z axis as needed. Not much to it. Thus you will hear the term “2.5D” in reference to 3 axis machines.

When you get into 4 and 5 axis, oh boy! You are in 3D space now. Suddenly the model you are cutting and the cutter itself have to be calculated in 3D space. The approximations in 2.5D milling was very forgiving compared to true 3D. Suddenly the curved shape of the ball or bull nosed end mill really does matter! Even more scary, collisions are now in 3D space as well. Wow! That is a lot of math… makes my head hurt just talking about it :expressionless:

There is a reason this is so darn expensive! Hate Autodesk all you want, but you aren’t getting true 4 axis anywhere else as cheap.

1 Like

Darn, So in my 60’s I finally start to understand cnc, and I carve out a bust “turkey on a spit” style there are areas, like behind the ear in this pic that are, well I guess considered undercuts. Couldn’t the smart machine stop spinning the A axis and jog the Y over just a bit and cut behind the ear… No matter how nice I ask it just won’t. If I could achieve indexing that may do the trick. Seriously John, I do thank you for responding, It is clear that you are very knowledgeable in this area

The AvidCNC post processor does not have inverse timing disabled or the code changed in a way that would prohibit its use;

var aOutput = createVariable({prefix:"A"}, abcFormat);
var bOutput = createVariable({prefix:"B"}, abcFormat);
var cOutput = createVariable({prefix:"C"}, abcFormat);

var useInverseTimeFeed = true; // use 1/T feeds

The real magic requires you to set up the machine correctly in F360;

  if (!machineConfiguration.isMachineCoordinate(0)) {
  if (!machineConfiguration.isMachineCoordinate(1)) {
  if (!machineConfiguration.isMachineCoordinate(2)) {

So output G93 from Fusion 360 using the AvidCNC post processor is pretty straight forwards. I will get to your example later when I have the time. I have a lot to get done today so I might have to get back to you tomorrow.

I know you saw this, Brian, but in case anyone else is interested, I linked to a post on Mark Meier’s blog in another thread. It’s a pretty good walk-through of the indexing process in Fusion 360 as far as 3D-surfacing on the rotary goes.

He has another post where he walks through using G93 inverse-time mode for clay extruding:

I’ve been curious about exploring new capabilities for lower-end CNCs, and in that vein, I wrote some Python code to do some simultaneous 4-axis milling on the rotary:

That was for the coffee table in this thread.

For a simpler example, I tweaked some 3+1 output from Fusion to make spiral posts for an hourglass.

When I first looked at this about 3 years ago, I couldn’t figure out how to make Fusion do a rotary swarf cut, not even using 5-axis with one axis constrained. I’ve looked a few times since and found only sparse documentation and no examples. John, is that something you’ve done? I guess I’ll have to work through it next time I have the right project. I didn’t want to start a trial yet, but I did try setting up a machine definition and didn’t find it difficult, and I looked up the current day rate for the Machining extension, which is $33/day.


Oh, I know. Its part of a secret cult :rofl:

The online examples are all for high end Doosan and Haas. Even ol John Saunders at NYCNC only gets the “turkey on a spit” despite repeatedly calling it “true 4 axis.”

So its understandable the confusion on the topic. Let me get my taxes done :roll_eyes: and then I can spend some time on the topic. I should probably do a video on it. But I hate being on video :frowning:

Quick pointer, if the words “wrap” or “warp” are used, it’s NOT true 4 axis.

UPDATE: (yeah, that was fast, happens when I jump in the shower) I forgot that I have moved to a probe and disconnected all of the AvidCNC touch plate stuff. Ugh, getting that stupid rotary axis remounted is going to be a pain because I need to write a bunch of calibration scripts for it and the probe. I probably need a better process for mounting it anyways. Ok, so instead of plasma and water table stuff, 4th axis just got moved to the top of the projects list. I am scared of it rusting in storage anyways. I have a bottle of G96 and I go over once a month and wipe it down. It would just be better to get a mounting process that doesn’t require 2 days of futzing with it. :cry:

Here is a recent 4 axis tut from Autodesk;

I promise I will get back to this topic as soon as I can. It just expensive to get that turned on and get back up to speed with all of the new stuff they have in that package.

I found my “Venus de Milo” model so I have a bust to work with. It’s kind of like the monkey in Blender or the Utah Teapot for multi-axis machining.

No problem John, i’m retired no rush. I’ve been busy myself, heck it took two days to reply to this post.

1 Like

Here is where the hidden features have gotten to in Fusion 360 for enabling true 4 axis milling;

Buried in the Preferences you will need to turn these features on before using the advanced machining extension. Essentially this is part of the magic where we want the 3D model space calculations but in a 4 axis context (aka, NOT the ‘Turkey on a Spit’ thing).

The way it works normally with 4 axis is a tool path is calculated as 2D and then “wrapped” around the axis of rotation. While this works for most simple usage, more complex stuff like carving Venus de Milo or the bust of your favorite President doesn’t do what you are expecting.

The “Restrict to 4 Axis” means your 5 axis, true 3D space tool paths are limited to the 4 axis on your machine. “Rotary Pocket and Rotary Contour Strategies” will make the 2+1 (turkey on a spit) work better by allowing a bit of motion on the axis in parallel to the rotary motion/rotation for better pocket and contour. But that last part isn’t as necessary as the first one in the “True 4 Axis” context.

1 Like