diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py index b31b8efa7c..1511179d71 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py @@ -58,16 +58,25 @@ class PauseAtHeight(Script): "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\\\"" }, + "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": { "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", - "value": "0", + "value": "60", "minimum_value": "0", "minimum_value_warning": "0", "maximum_value_warning": "1800", - "unit": "s" + "unit": "s", + "enabled": "hold_steppers_on" }, "head_park_enabled": { @@ -192,6 +201,22 @@ class PauseAtHeight(Script): "default_value": "RepRap (Marlin/Sprinter)", "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": { "label": "G-code Before Pause", @@ -242,6 +267,7 @@ class PauseAtHeight(Script): pause_at = self.getSettingValueByKey("pause_at") pause_height = self.getSettingValueByKey("pause_height") pause_layer = self.getSettingValueByKey("pause_layer") + hold_steppers_on = self.getSettingValueByKey("hold_steppers_on") disarm_timeout = self.getSettingValueByKey("disarm_timeout") retraction_amount = self.getSettingValueByKey("retraction_amount") retraction_speed = self.getSettingValueByKey("retraction_speed") @@ -260,6 +286,8 @@ class PauseAtHeight(Script): display_text = self.getSettingValueByKey("display_text") gcode_before = self.getSettingValueByKey("custom_gcode_before_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_command = { @@ -437,19 +465,26 @@ class PauseAtHeight(Script): prepend_gcode += "M117 " + display_text + "\n" # Set the disarm timeout - if disarm_timeout > 0: - prepend_gcode += self.putValue(M = 18, S = disarm_timeout) + " ; Set the disarm timeout\n" + if hold_steppers_on: + 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 if gcode_before: - prepend_gcode += gcode_before + "\n" + prepend_gcode += gcode_before.replace(";","\n") + "\n" # Wait till the user continues printing prepend_gcode += pause_command + " ; Do the actual pause\n" # Set a custom GCODE section before pause if gcode_after: - prepend_gcode += gcode_after + "\n" + prepend_gcode += gcode_after.replace(";","\n") + "\n" if pause_method == "repetier": #Push the filament back, @@ -479,15 +514,7 @@ class PauseAtHeight(Script): else: Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect") - extrusion_mode_string = "absolute" - 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" + prepend_gcode += self.putValue(M = 82) + "\n" # reset extrude value to pre pause value prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"