I have a magnetic plate on top of which I can put different print beds for different textures. When I switch from one bed to another, I’d like to use a z-probe to set the new bed height. Do I need to run DELTA_CALIBRATE or is there another command that only adjusts the z origin?
You shouldn’t call DELTA_CALIBRATE as this command can change endstop offsets, Delta radius, etc …
Just use probe to detect new Z-Height
command: PROBE
Or (if you know bed height differences) - then you can use one bed as a true reference and when using other you can manually define Z offset via G92 command - it can re-define current Z position in runtime.
if you can control bed in slicer then G92 can be integrated in slicer, something like this:
G0 X0 Y0 Z200.2
G92 Z200
this will offset Z0 coordinate to 0.2mm higher, this will hold until G28 (Homing) is called, which usually always present in beginning of print.
By the code of SET_GCODE_OFFSET and G92
I would say following: G92 - will update just base_position - current position of a toolhead SET_GCODE_OFFSET - will do the same update of base_position but additionally it will update homing_position - which will be used on next homing sequence
So I would say SET_GCODE_OFFSET - offsets will survive G28 (Re-Homing) but not klipper restart, G92 - offsets will be reset after G28 (Re-Homing)
Yes PROBE is just prints bed height to the console, but it also remember it in internal variable probe variable
so you can build simple MACRO which can use it and invoke G92, something like this: P.S. this is simplified macro which just use probe value for new Z position, it needs additional calculations as current position of toolhead most probably is different than when it was probed
[gcode_macro APPLY_PROBE_TO_Z_OFFSET]
gcode:
{% set z_probe = printer.probe.last_z_result|float %}
{% if z_probe > 0. %}
G92 Z{z_probe}
{% endif %}
Then you can call PROBE and then your MACRO, but those should be called separately, they can’t be joined under single macro because MACRO will not see updated variables in PROBE.
You still can override G28 and include PROBE there and integrate APPLY_PROBE_TO_Z_OFFSET into your START_PRINT macro as G28 and START_PRINT are called separately.