Using CNC Work Offsets

Hi all! I wanted to share with you a new video I did on how to use work offsets, particularly how I use them in Mach 4. Let me know if you have any questions!


This is such an underutilized feature. Thanks so much for making this video.


Watched this video. Well done again! Thanks for doing this! You could have another career as a CNC instructor.


Another great video, Corbin. Thanks for posting it.

I’ve been using work offsets for about a year, and I posted 2 videos about it on my channel, but I didn’t know you could access the work offsets by using the commands in the MDI window. Thanks for that. I was using the Offset tab exclusively. That will really help.

I’m in agreement with you on wishing we had the ability to name the various work offsets we create in Mach4. I understand their reluctance in allowing it (standardization and all that,) but it would still be nice.


What I do, for linuxcnc at least, is write a job file (like setup_foo.ngc) that programs all the work offsets relative to the machine offset for a given setup.
Linuxcnc can do this without moving the machine. So no matter what I’ve done to my offsets, I can reset them to the right offsets for a given project just by running the setup job.

I don’t know Mach4 but if it can do it too, that would be something really useful someone could figure out and share.

1 Like

This is a great idea too! Are you just coding in the machine x/y/z offset, and using GCode to set it for a particular “Work Offset” (IE: G55, G56, etc)? I bet it could be done in Mach 4 with G92 to not move the actual machine. I’d have to experiment a bit with it.

1 Like

There’s a couple of ways of doing it, but LinuxCNC gives you access to all those numbers via gcode expressions:

So you can just store them directly:
#5221 = 15.5 (set G54 X offset)

But there’s also a G10 code to just set the offsets:

G10 L2 P1 X15.5 Y10 Z5 (set G54 offsets)

1 Like

Looks like Mach has G10 L2 also:

1 Like

Cool, thanks! I’ll look into it – definitely could be useful.

1 Like

Great tutorial, nice to learn how to use the MDI function to control the offset. I always just cut and pasted in the offset table.

1 Like

If I understand this correctly, If I set the origin to be at 0,0 in the xy plane in fusion then this will correspond to where I set G54 on the physical work table as you demonstrated. Does this then become the upper left of lower left origin of the work piece if the model is in the upper right quadrant of fusion?

Do you set Z to the top of the table or top of the stock manually?

Yes and no. In Fusion, you create a Setup. In that Setup you define the origin, along with the direction of the X/Y/Z axis. So, on the workpiece, it is wherever you set the origin point to be.

So, in this picture below, I have the origin on the top /left / back of the workpiece, and I intend to mount the workpiece vertically on my spoilboard.

On my CNC machine, I find where I want that exact point to be, and save it in an offset (say G55) as 0,0,0.

It depends, but in general for work that is flat on my CNC table, I set the origin to be my CNC table, and in Fusion I set the origin point to be the bottom of the workpiece, like in this setup:

I then save that point as an offset on my table in another location, like G56, and set the WCS in Fusion as I talked about.

However, if you don’t have an ATC, then saving the Z isn’t important; you will always have to touch off your bit on your CNC table every tool change.

I only use the ‘top’ of my workpiece when I’m doing something that is specific to the top – IE: such as VCarve’s, or vertical joinery. Otherwise, I prefer my CNC table as the Z origin.

This help?

In fusion, you should see a marker that’s the “origin” of the CAM. That’s the 0,0,0 point that all the operations are relative to. In the real world, you need for your CNC machine to have its 0,0,0 point at the same point relative to your stock. You can set the X, Y, and Z components of these independently as long as you end up at the right spot.

In the past, when I’ve taught CAD, I actually glued three sticks together and painted them red/green/blue to make a real world “origin marker” that I’d hold against the real world object for reference.

What makes work offsets confusing is that your CNC machine can keep track of more than one of them, and which one it uses needs to match which one (or ones!) the Fusion CAM is expecting.

As for which corner the origin is, it depends on which corner in Fusion your corner is. The origin marker tells you which way is “positive” so note if you placed the origin at the bottom of your stock or at the top, and do the same on your CNC machine. If you always touch off on your spoilboard, you’d always set the origin to be the bottom in fusion, for example.

1 Like

Great video and info, Thanks

1 Like

Great video. Since I learned to use offsets I dont even X,Y zero my material most of the time. I have an offset programmed to match a corner made by location pins. I simply home my machine then select the offset and home to machine in Mach4 terminology. Works perfect every time. A real time saver too. The only thing left is to zero Z for each bit.

1 Like

Awesome! That’s pretty much how I do it too. It is such a time saver.

Funny enough - I thought my offset was not working once. It was not zeroing to the bottom left of my material. WTH I thought? It turns out that corner was not square. Using the location pins it was not matching up. I had to go and recut it on the table saw to square the two short sides. One end was just 1/32" off in width. Enough to throw off the zero. Once I did that it was perfect. Offset was where it was supposed to be. The other end was square. It just so happened that I chose to use the corner that was not.