the way it's set up for now is that the dock positions are in files like
t0.g:
G53 G0 X212.5 Y0 W1 ; open dock
but in tfree0.g I have to put some code before and after:
M98 P"t/beforefreeall.g" ; <-- lift Z, retract, increase steppers current, move Y limt, etc.
G0 F40000
M98 P"t0.g" ; <- go in front of the dock
M98 P"t/freeall.g" ; <- close the dock, go to contact, move back to the safe zone
if I could use a G59 ignoring tool offset, I would do something like that:
t0.g:
G10 L2 P9 X212.5 Y0 W1 ; open dock
and tfree0.g:
M98 P"t0.g" ; <- define G59.3
M98 P"t/freeall.g" ; <-- do everything in one file, Including moving to the origin when I feel it's the right time
the other interesting thing, is that I could also define the Y of the dock which could compensate for racking in the Y axis or inconsistencies in the dock manufacturing.
and then freeall.g could become freeorgetall.g because there is little difference between get or free in my system (just the W axis position and the filament retract/extrude I think).