Z-axis misses the surface entirely (but evenly!)

I’ve got an OMIO CNC router driven by Mach3. Have been trying to mill really basic jobs via a DXF design, then emit GCODE and load it up into Mach3. I carefully zero out the machine coordinates, setup work coordinates, open the GCODE file and then regen tool paths just to make sure all is well

The results are consistent every time: the router head spins up >>then rises off the work surface<< and faithfully executes the tool paths and plunges I told it to do….but at about 50mm above the work surface.

Somehow, I’m not getting SheetCam to produce GCODE that gets the right z-zero’d on the surface of the work material.

I can even visualize the tool paths in Mach3 and it’s quite clear the z-plane in which it runs is 50mm off the material.

Is there an option in SheetCam to ensure the z-axis start point comes down on the material?

Very confused. Grateful for any help anyone can provide.

I’m assuming this means you click menu View-‘Code editor’ and then File-‘Run post processor’ or the corresponding tool icons. And then the resulting gcode file is loaded into Mach3.

this can happen a couple of ways, one of which is choosing the wrong Z zero option on menu Options-Machine-‘Post processor’ window, wrong relative to the surface that you zero Z on. In this example, its wrong if I actually zero Z on ‘Top of work’. as the following shows…


the G0 Z14 is rapid to (see following pic) MaterialThickness + Plunge safety clearance. ‘Height of bottom of material above table’ is likely factored into the resulting distance also. The subsequent two Z motions in the gcode follow suit with plunge to top of material (10mm) and then plunge to begin the cut at 8mm, which is 8mm too high from top of work.

I have always run my jobs with Z zero ‘Top of work’ option, and ‘Height of bottom of material above table’ at 0mm. In this case, MaterialThickness is not a factor until/unless I try to drive the bit through the material, then I need to make an adjustment to one of these options accordingly to allow that.

Do you have a tool length offset defined in your tool definition? The tool length offset is added to the Z coordinate.

Really helpful post, appreciate it. Still not fixed yet, but you are giving me valuable clues.

So i just use standard operating procedure to z-zero the work coordinates on the router to touch the surface; so it feels like its the right setup in SheetCam to tell it to start there as well in machine coordinates. Your post helped me cross-check that i had that correct, which i did.

I looked at the g-code produced, and it gave me:

[…few standard codes omitted here…]
[…my comments below have a “//” before them]
N0090 S2000 (Mill/router, 3 mm diameter)
N0100 T2 M06 //tool choice, i guess
N0110 G43 H2 //tool length compensation
N0120 G00 Z48.0000 //First movement: take z way up!
N0130 S2000 M03 //Spin up the router to 2000rpm
N0140 X-17.6750 Y-17.6750 //Move to 1st hole location
N0150 Z42.0000 //Position drill near the surface
N0160 G01 Z35.0000 F99.9998 //Drill 10mm downwards
N0170 G00 Z48.0000 //Return back up way high
[…etc…]

So that GCODE mysteriously is raising the router almost all the way to the top of the machine’s range near the trigger, and then starts pecking downwards trying to drill but it just hits thin air.

This is the GCODE i see in the editor in SheetCam as well as the same identical GCODE i see in the left-side window in Mach3.

For tool dimensions, I have:
Diameter: 3mm
Flute length: 15mm
Tool length offset: 38mm
Depth per pass: 10mm

Those are the dimensions of the tool, but of course its mounted in the collet and sticks out from the base of the collet downwards by 23.16mm (which is not reflected in any of the SheetCam parameters).

So I appreciate the clues here, but am wondering if anyone can spot some screw-up i’ve made here or perhaps has other helpful suggestions.

Set your tool length offset to 0. This value is added to the Z coordinate.
In Options-<machine-<post processor make sure Z zero is set to ‘Top of work’.

That did it. Exactly right.

Somehow, i thought that offset value (given the diagram in the tool creation UI) was to just help with calculating speeds and feeds, but now I see it’s essentially a global Z offset.

Thank you for your help.