Endpoint Geometry of G43 and G44
The number that matters is the active tool radius and where along the move vector the control decides to stop. G43 is a linear move whose endpoint is corrected by that radius: the tool travels from the start point up to a position one radius short of the programmed target. G44 is the same move carried one radius past the target. The direction of the following block plays no part in the calculation.
That single property fixes where these codes belong. Without look-ahead into the next block there is no transition arc, no intersection point and no inside-corner shortening, so G43 and G44 are unsuitable for contour blocks and exact for a lead-in that has to stop on the material edge. One vector, one radius, one endpoint.
A second property catches people out: the correction is a position, not a mode. After a G43 block the tool sits where it was left until that same axis is programmed again. A following G40 cancels compensation but does not pull the axis back onto the programmed coordinate.
Anyone arriving from Fanuc-style ISO has to reset one expectation before reading a MillPlus program: G43 here is a contour approach move, not tool length compensation. Length arrives with the tool call.
| Quantity | Value | Where to read it |
|---|---|---|
Correction at a G43 endpoint |
One tool radius, subtracted along the move direction | Radius of the called tool in tool memory |
Correction at a G44 endpoint |
One tool radius, added past the target | Same tool memory entry |
| Influence of the following block | None | Fixed behavior of G43/G44 |
| Residual offset after the block | Held until that axis is reprogrammed | Actual-position display |
10 mm diameter cutter, G43 Y0 from Y10 |
Stops at Y5 | Worked example below |
8 mm cutter in a 10 mm slot, G43 Y-5
|
Stops at Y-1 | Ramp example below |
Three Lead-In Strategies
Every approach method on this control differs in one place only: the block where cutter compensation switches on and what geometry the control has available at that instant. Everything downstream — gouge, spur move, crash on restart — follows from that block.
| Strategy | Where compensation starts | First move after activation | Fit for contours | Restart at the contour |
|---|---|---|---|---|
G41/G42 activated in the approach block (typical CAM post output) |
Inside the approach block itself | Can run to a wrong intermediate point, then arc back to the correct one | Correct once running | Drives into the contour |
G43 pre-position, then G41/G42
|
On a block that is already one radius off the contour | Clean — the offset exists before comp is armed | No; the next block direction is ignored | Defined entry point to restart from |
G41 G61 in, G62 G40 out |
In a dedicated approach block with its own lead geometry | Clean, circular or tangential entry | Yes | Defined entry point to restart from |
The deciding criterion for production work is not elegance, it is what the control has to compute in the activation block. Give it a start point that already lies one radius off the finished surface and there is nothing left to resolve.
The First-Move Anomaly with G41
A CAM post typically writes the lead-in like this, with a cutter of R5 and the approach arc centre programmed first:
N1 G0 X0 Y0 Z0 (centre of the approach arc)
N2 G1
N3 G41 X-10
N4 G3 X0 Y0 I0 J10
N5 G1 X10
In N3 the machine runs linearly to X-10 Y+5, then swings through the arc to X-5 Y+10 — the point N3 should have delivered on its own. The extra leg is a spur into space the tool was never meant to occupy, and on a closed pocket or a tight fixture that spur is inside material.
Rebuilding the same lead-in with the offset established before compensation is armed removes the spur:
N1 G0 X0 Y0 Z0
N2 G1
N3 G43 X-10 (stops one radius short of X-10)
N4 G41 (comp arms from a point already offset)
N5 G3 X0 Y0 I0 J10
N6 G1 X10
Program G41 in its own block or on the following linear move, matching the skeletons below. The rest of the contour is unaffected — this is an activation-block problem, not a compensation problem.
Recommended Sequence: G61 In, G62 G40 Out
For contour work, use the dedicated approach and retract functions and keep G43 for simple lead-ins and centre-path moves. Two forms are in service:
G41 G61 X0 Y0 Z0 (compensated approach to the contour start point)
... (contour)
G62 G40 (compensated retract, comp cancelled)
G41 G62 X.. Y.. R.. I2=.. (approach a point on a quarter circle)
... (contour)
G62 R.. I2=.. (retract on the same lead geometry)
R carries the lead radius and I2= selects the lead form. Both G61 and G62 appear as approach blocks in the field, with G62 additionally carrying the lead geometry; confirm the exact split and the permitted I2= values against the programming manual for the software version actually installed before a post-processor is committed to one form. Programmers who trust the retract block will run G62 R.. I2=.. without a following G40. Close with G40 anyway, so that the modal state at the tool change is unambiguous.
- Position clear of the part in the plane, then feed to depth in free air.
- Take the contour start point from the drawing, not from the CAM approach arc centre.
- Arm
G41orG42together with the approach block and that start point. - Run the contour.
- Retract with
G62and its lead geometry, thenG40. - Lift in Z only after compensation is cancelled.
G43 Lead-In and the Modal Offset
The simplest working form needs two blocks — one to sit down one radius off the surface, one to arm compensation:
G0 X-10 Y-10 Z10
G0 Z-10
G43 X0 F1000
G41 G1 Y100 F1000
G40
G0 Z10
What the held offset does over a longer sequence is best read as actual positions. Cutter diameter 10 mm, radius 5 mm:
G0 X-10 Y10 Z-10 is X-10 Y10
G43 Y0 is X-10 Y5
G40 G1 X10 is X10 Y5
G0 X20 is X20 Y5
G1 X30 is X30 Y5
G1 X35 Y0 is X35 Y0
Y stays at 5 through four blocks. G40 does not clear it, rapid moves do not clear it, and only the block that programs Y explicitly puts the tool back on the programmed coordinate. Track that offset in the head or in a comment; a Y that silently carries 5 mm through a return move is how a finished face gets a witness cut.
Centre-Path Ramp with G43
The radius-aware endpoint is made for chamfering the end of a slot on the centre path, where the tool has to stop against the slot wall rather than on a compensated contour. Slot 10 mm, cutter 8 mm (R4), slot end radius centred at X0 Y0:
G1 X0 Y0 Z0
G43 Y-5 is X0 Y-1
G40 G1 X10 Z10 is X10 Y-1 Z10
G43 Y5 is X10 Y1 Z10
G40 G1 X0 Z0 is X0 Y1 Z0
G1 Y0
G43 X5 is X1 Y0 Z0
G1 X15 Z15 is X11 Y0
G40
Each G43 parks the tool 4 mm short of the wall, the ramp block then carries that plane offset while Z climbs. The correction acts in the active plane only, so verify the Z endpoint of the final ramp block in the graphic before running it at depth.
Restart After a Mid-Contour Interrupt
Stop a compensated contour part way through — to reset a coolant nozzle, to clear a chip — and the control loses the entry vector it built when compensation was armed. Press start again and the first commanded move goes from wherever the tool now stands directly to the compensated point the block calls for. The number that matters is the distance between actual position and that compensated point, and that straight line runs through the part. On a DMG 60T this ended in a crash and a vacuum fixture repair expensive enough to end further testing.
The countermeasure is structural: every contour gets a defined, radius-aware entry point that can be re-executed. Restart from the approach block, never from a contour block.
G43 X0
G41 ... (contour)
G40
G41 G61 X0 Y0 Z0 (start point)
... (contour)
G62 G40
Do not resume a compensated contour from a mid-contour block with the tool at an arbitrary position and the fixture loaded — that move is a straight line into the workpiece and the clamping.
Verification Before the First Part
- Set the called tool's radius to 0 in tool memory and run the graphic. The tool centre path must collapse onto the programmed contour; anything left over is a coordinate error, not a compensation error.
- Restore the radius, run the graphic again and look only at the block where compensation arms. The anomaly shows there as a spur out to a wrong point and back.
- Single-block the lead-in with Z clear of the part and compare the actual-position display against the expected values — X-10 Y5 for the 10 mm cutter example, Y-1 for the 8 mm cutter in the 10 mm slot.
- Confirm the modal state at the end of the tool: no residual
G43offset on any axis,G40active before the tool change. - Run the first lead-in at reduced feed override with a hand on feed hold.
If the lead-in still deviates after the tool radius has been verified in tool memory and the approach has been rebuilt with G43 or G61, stop testing on a loaded fixture. Pull the programming manual for the control software version actually installed and take the block sequence, the tool radius and the actual-position readings to the machine builder or the control manufacturer's support channel. Behavior in the compensation activation block is software-version specific and is not worth characterizing by scrapping parts and fixtures.
Frequently Asked Questions
Why do I need G43 if I already program G41 on MillPlus?
G41 only sets the compensation side; it does not give the control a clean entry point. G43 is a linear move that stops one tool radius short of the programmed endpoint, so compensation arms from a position that is already off the contour — which removes the wrong first move and gives a defined point to restart from.
Why does the tool run to the wrong point in the first block after G41?
With G41 X-10 and an R5 cutter the control drives linearly to X-10 Y+5 and then arcs to X-5 Y+10, the point that block should have reached directly. Replacing the activation block with G43 X-10 followed by G41 removes the spur; a G61 approach block does the same job for full contours.
Why does a restart after a mid-contour interrupt crash into the part?
Restarting from a contour block leaves the control without the entry vector it built when compensation was armed, so the next move runs in a straight line from the current position to the compensated target — through the material. Always restart from a defined approach block written as G43 X0 then G41, or G41 G61 X0 Y0 Z0.