Klipper3d / klipper

Klipper is a 3d-printer firmware
GNU General Public License v3.0
8.95k stars 5.16k forks source link

Define a default for virtual_sdcard on_gcode_error #6540

Closed KevinOConnor closed 2 months ago

KevinOConnor commented 2 months ago

The on_gcode_error parameter allows one to run a set of g-code commands if an error is found while running a print using the virtual_sdcard system. (Which is very common, as all the Klipper graphical frontends use this system to print.)

There is currently no default for this parameter. That's not ideal, as an error that occurs during a print could result in the toolhead stopping with the heaters enabled and the nozzle directly over a partial print.

This PR adds a default - if the parameter is not specified it will default to TURN_OFF_HEATERS. I think this is likely an improvement over the existing behavior.

Arguably, it would be even better to also raise the Z a few millimeters on a host detected command error. Unfortunately, it's difficult to do that reliably, and I fear it may be too complex to be a good default. So, this PR is a compromise - it just turns off the heaters by default.

Note that the motors are not disabled by a host detected command error in a virtual_sdcard print (neither before this PR nor after it).

-Kevin

P.S. I did come up with the following possible macro to try to raise the Z. I wasn't happy with it because of its complexity (and there are still cases where it would not work correctly):

{% if 'heaters' in printer %}
   TURN_OFF_HEATERS
{% endif %}

SAVE_GCODE_STATE NAME=_VIRTUAL_SDCARD_ERROR
{% if 'z' in printer.toolhead.homed_axes %}
  {% set gcode_z = printer.gcode_position.z %}
  {% set max_z = printer.toolhead.axis_maximum.z|default(gcode_z) %}
  {% set new_z = [ gcode_z + 10.0, [gcode_z, max_z]|max ]|min %}
  G90
  G1 Z{new_Z} F300
{% endif %}
RESTORE_GCODE_STATE NAME=_VIRTUAL_SDCARD_ERROR
github-actions[bot] commented 2 months ago

Thank you for your contribution to Klipper. Unfortunately, a reviewer has not assigned themselves to this GitHub Pull Request. All Pull Requests are reviewed before merging, and a reviewer will need to volunteer. Further information is available at: https://www.klipper3d.org/CONTRIBUTING.html

There are some steps that you can take now:

  1. Perform a self-review of your Pull Request by following the steps at: https://www.klipper3d.org/CONTRIBUTING.html#what-to-expect-in-a-review If you have completed a self-review, be sure to state the results of that self-review explicitly in the Pull Request comments. A reviewer is more likely to participate if the bulk of a review has already been completed.
  2. Consider opening a topic on the Klipper Discourse server to discuss this work. The Discourse server is a good place to discuss development ideas and to engage users interested in testing. Reviewers are more likely to prioritize Pull Requests with an active community of users.
  3. Consider helping out reviewers by reviewing other Klipper Pull Requests. Taking the time to perform a careful and detailed review of others work is appreciated. Regular contributors are more likely to prioritize the contributions of other regular contributors.

Unfortunately, if a reviewer does not assign themselves to this GitHub Pull Request then it will be automatically closed. If this happens, then it is a good idea to move further discussion to the Klipper Discourse server. Reviewers can reach out on that forum to let you know if they are interested and when they are available.

Best regards, ~ Your friendly GitIssueBot

PS: I'm just an automated script, not a human being.