Update PauseAtHeight.py

Change M18 to M84, add beep option and allow newlines in "Additional GCODE" fields
This commit is contained in:
Dragos Circa 2022-03-28 13:04:24 +03:00 committed by GitHub
parent cba956be19
commit 2ef4836802
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -58,16 +58,25 @@ class PauseAtHeight(Script):
"default_value": "marlin", "default_value": "marlin",
"value": "\\\"griffin\\\" if machine_gcode_flavor==\\\"Griffin\\\" else \\\"reprap\\\" if machine_gcode_flavor==\\\"RepRap (RepRap)\\\" else \\\"repetier\\\" if machine_gcode_flavor==\\\"Repetier\\\" else \\\"bq\\\" if \\\"BQ\\\" in machine_name or \\\"Flying Bear Ghost 4S\\\" in machine_name else \\\"marlin\\\"" "value": "\\\"griffin\\\" if machine_gcode_flavor==\\\"Griffin\\\" else \\\"reprap\\\" if machine_gcode_flavor==\\\"RepRap (RepRap)\\\" else \\\"repetier\\\" if machine_gcode_flavor==\\\"Repetier\\\" else \\\"bq\\\" if \\\"BQ\\\" in machine_name or \\\"Flying Bear Ghost 4S\\\" in machine_name else \\\"marlin\\\""
}, },
"hold_steppers_on":
{
"label": "Keep motors engaged",
"description": "Keep the steppers engaged to allow change of filament without moving the head. Applying too much force will move the head/bed anyway",
"type": "bool",
"default_value": true,
"enabled": "pause_method != \\\"griffin\\\""
},
"disarm_timeout": "disarm_timeout":
{ {
"label": "Disarm timeout", "label": "Disarm timeout",
"description": "After this time steppers are going to disarm (meaning that they can easily lose their positions). Set this to 0 if you don't want to set any duration.", "description": "After this time steppers are going to disarm (meaning that they can easily lose their positions). Set this to 0 if you don't want to set any duration and disarm immediately.",
"type": "int", "type": "int",
"value": "0", "value": "60",
"minimum_value": "0", "minimum_value": "0",
"minimum_value_warning": "0", "minimum_value_warning": "0",
"maximum_value_warning": "1800", "maximum_value_warning": "1800",
"unit": "s" "unit": "s",
"enabled": "hold_steppers_on"
}, },
"head_park_enabled": "head_park_enabled":
{ {
@ -192,6 +201,22 @@ class PauseAtHeight(Script):
"default_value": "RepRap (Marlin/Sprinter)", "default_value": "RepRap (Marlin/Sprinter)",
"enabled": false "enabled": false
}, },
"beep_at_pause":
{
"label": "Beep at pause",
"description": "Make a beep when pausing",
"type": "bool",
"default_value": true
},
"beep_length":
{
"label": "Beep length",
"description": "How much should the beep last",
"type": "int",
"default_value": "1000",
"unit": "ms",
"enabled": "beep_at_pause"
},
"custom_gcode_before_pause": "custom_gcode_before_pause":
{ {
"label": "G-code Before Pause", "label": "G-code Before Pause",
@ -242,6 +267,7 @@ class PauseAtHeight(Script):
pause_at = self.getSettingValueByKey("pause_at") pause_at = self.getSettingValueByKey("pause_at")
pause_height = self.getSettingValueByKey("pause_height") pause_height = self.getSettingValueByKey("pause_height")
pause_layer = self.getSettingValueByKey("pause_layer") pause_layer = self.getSettingValueByKey("pause_layer")
hold_steppers_on = self.getSettingValueByKey("hold_steppers_on")
disarm_timeout = self.getSettingValueByKey("disarm_timeout") disarm_timeout = self.getSettingValueByKey("disarm_timeout")
retraction_amount = self.getSettingValueByKey("retraction_amount") retraction_amount = self.getSettingValueByKey("retraction_amount")
retraction_speed = self.getSettingValueByKey("retraction_speed") retraction_speed = self.getSettingValueByKey("retraction_speed")
@ -260,6 +286,8 @@ class PauseAtHeight(Script):
display_text = self.getSettingValueByKey("display_text") display_text = self.getSettingValueByKey("display_text")
gcode_before = self.getSettingValueByKey("custom_gcode_before_pause") gcode_before = self.getSettingValueByKey("custom_gcode_before_pause")
gcode_after = self.getSettingValueByKey("custom_gcode_after_pause") gcode_after = self.getSettingValueByKey("custom_gcode_after_pause")
beep_at_pause = self.getSettingValueByKey("beep_at_pause")
beep_length = self.getSettingValueByKey("beep_length")
pause_method = self.getSettingValueByKey("pause_method") pause_method = self.getSettingValueByKey("pause_method")
pause_command = { pause_command = {
@ -437,19 +465,26 @@ class PauseAtHeight(Script):
prepend_gcode += "M117 " + display_text + "\n" prepend_gcode += "M117 " + display_text + "\n"
# Set the disarm timeout # Set the disarm timeout
if disarm_timeout > 0: if hold_steppers_on:
prepend_gcode += self.putValue(M = 18, S = disarm_timeout) + " ; Set the disarm timeout\n" prepend_gcode += self.putValue(M = 84, S = 3600) + " ; Keep steppers engaged for 1h\n"
elif disarm_timeout > 0:
prepend_gcode += self.putValue(M = 84, S = disarm_timeout) + " ; Set the disarm timeout\n"
# Beep at pause
if beep_at_pause:
prepend_gcode += self.putValue(M = 300, S = 440, P = beep_length) + " ; Beep\n"
# Set a custom GCODE section before pause # Set a custom GCODE section before pause
if gcode_before: if gcode_before:
prepend_gcode += gcode_before + "\n" prepend_gcode += gcode_before.replace(";","\n") + "\n"
# Wait till the user continues printing # Wait till the user continues printing
prepend_gcode += pause_command + " ; Do the actual pause\n" prepend_gcode += pause_command + " ; Do the actual pause\n"
# Set a custom GCODE section before pause # Set a custom GCODE section before pause
if gcode_after: if gcode_after:
prepend_gcode += gcode_after + "\n" prepend_gcode += gcode_after.replace(";","\n") + "\n"
if pause_method == "repetier": if pause_method == "repetier":
#Push the filament back, #Push the filament back,
@ -479,15 +514,7 @@ class PauseAtHeight(Script):
else: else:
Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect") Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect")
extrusion_mode_string = "absolute" prepend_gcode += self.putValue(M = 82) + "\n"
extrusion_mode_numeric = 82
relative_extrusion = Application.getInstance().getGlobalContainerStack().getProperty("relative_extrusion", "value")
if relative_extrusion:
extrusion_mode_string = "relative"
extrusion_mode_numeric = 83
prepend_gcode += self.putValue(M = extrusion_mode_numeric) + " ; switch back to " + extrusion_mode_string + " E values\n"
# reset extrude value to pre pause value # reset extrude value to pre pause value
prepend_gcode += self.putValue(G = 92, E = current_e) + "\n" prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"