Homing your printer systematically before a print is redundant, a waste of time and sometimes even an issue (if your homing probe is misbehaving and you’ve already dialed an offset by need to restart the print for a clean first layer for instance) I recently came upon this G28 macro that only homes of the printed is not already homed.

[gcode_macro G28]
# Only home if needed.
rename_existing: G28.1
gcode:
    {% if PA %}
        G28.1 {PA}
    {% else %}
        {% if printer.toolhead.homed_axes != "xyz" %}
            G28.1
        {% endif %}
    {% endif %}

All you have to do is add this to your macro.cfg file and it will override any G28 command from any gcode and only execute a home if needed. If you want to execute a home even if not needed, you can send the command G28.1 or give it a parameter, like G28 X, or G28 XYZ and it will force the homing

  • IMALlama@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 year ago

    If you’re having some level of variation in your z-offset, or you run an enclosed printer that grows some in z when it heats, this macro is great: https://github.com/protoloft/klipper_z_calibration

    Just make sure your probe location is in the same spot as your bed mesh zero point.

    Note that it’s intended for klicky probes, but you could probably use it with other probes with some modification.

  • papalonian@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Yup, I got this set up when my BLTouch mount broke and I had to zip tie it to the print head resulting in less-than-perfect repeatability. Changing the default G28 command is a good way to do it, I did it by making a new macro CG28 and put that in my START_PRINT macro in place of G28.