Files
linuxcnc/nc_files/OFFSETS.md
Thaddeus Hughes ad1f8719d6 big overhaul
2026-04-05 20:51:43 -05:00

138 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Offsets Quick Reference
## Coordinate Stack
```
What you see = machine position + work offset (G54...) + G52/G92 + tool length offset (G43)
```
`G53` bypasses everything and moves in machine coords.
## Work Offsets (G54G59.3)
9 available coordinate systems. G54 is default. Persist across power cycles (stored in `linuxcnc.var`).
### Touching off work zero
**In GMOCCAPY**: Jog to desired zero, click the axis letter (X/Y/Z) in the DRO, enter `0`. Done.
Internally: `G10 L20 P0 <axis> 0`
**Pendant**: Macro 5/6/7 = zero X/Y/Z. Macro 1/2 = halve X/Y (center-finding: zero one edge, jog to other edge, halve).
**In G-code**:
```gcode
G10 L20 P1 X0 Y0 Z0 ; set G54 origin to current position
G10 L20 P0 X0 ; set current system's X to 0
```
### Switching systems
```gcode
G55 ; all coords now relative to work offset 2
```
In GMOCCAPY: Offset page > click row > "Set Active".
### Editing numerically
In GMOCCAPY: Offset page > double-click a cell > type value. This uses `G10 L2` (absolute set), not touch-off.
### Temporary offsets
```gcode
G52 X1 Y1 ; shift on top of active G5x (good for pattern repeats)
G52 X0 Y0 ; cancel
```
Avoid `G92` — it persists across program runs and causes confusion. Use `G92.1` to clear if needed.
## Tool Length
### Setting up a tool (first time)
1. In GMOCCAPY Tool page: set diameter (D column) and any known Z offset. Click "Apply Changes".
2. Or in G-code: `G10 L1 P1 Z-2.5 R0.125` (R = **radius**, stored as D = diameter = 2R)
### Loading a tool
```gcode
T1 M6 ; select + change (pops up dialog, operator confirms)
G43 ; activate its Z offset — REQUIRED or Z is wrong
```
### Touching off tool length
Jog tool tip down to top of workpiece, then in MDI:
```gcode
G10 L10 P1 Z0 ; "tip is at Z=0, calculate and store the offset"
G43 ; activate it
```
Or: GMOCCAPY DRO > click Z letter > enter `0` (but this sets the **work offset**, not the tool offset — different thing).
### Canceling
```gcode
G49 ; cancel tool length offset
```
Standard practice: `G49` before each tool change, `G43` after.
## Cutter Radius Compensation (G41/G42)
Offsets the toolpath left or right of the programmed line by the tool's radius. Program the actual part edge; the machine handles the rest.
```gcode
G41 ; offset LEFT of path (climb milling outside profiles)
G42 ; offset RIGHT
G40 ; cancel
```
The D word in G41/G42 is a **tool number** (not a diameter): `G41 D1` looks up tool 1's diameter from the table. Omit D to use the current tool.
Rules:
- Lead-in move after G41/G42 must be >= tool radius
- Lead-out move with G40 must be >= tool radius
- Must be in G17 (XY plane)
```gcode
G41 ; comp on
G1 X0 Y0 F10 ; lead-in (this IS the first compensated move)
G1 X2 Y0 ; cut along part edge — tool rides 1 radius to the left
G1 X2 Y2
G40 ; comp off (next linear move is lead-out)
G0 X-1 Y-1
```
Dynamic variant: `G41.1 D0.250` — D is a literal diameter value, not a tool number.
**Our macros** handle radius compensation internally via `#<_td>`. Don't use G41/G42 with macro calls.
## Tool Table Columns (mill)
| Column | Meaning |
|--------|---------|
| T | Tool number |
| P | Pocket (we use P = T) |
| Z | Length offset |
| D | Diameter (not radius) |
## DRO Modes (click axis value to cycle)
| Mode | Color | Shows |
|------|-------|-------|
| Relative | Black | Work coords (what G-code sees) |
| Absolute | Blue | Machine coords (G53) |
| DTG | Yellow | Distance to go |
Green digits = homed. Red = unhomed.
## Named Parameters
| Parameter | Value |
|-----------|-------|
| `#<_current_tool>` / `#5400` | Tool in spindle |
| `#5410` | Current tool diameter |
| `#<_td>` | Our macros' tool diameter (user-set, not built-in) |