mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 14:37:29 -06:00
Revised PauseAtHeight.py. The changes are:
For non-Repetier and non-Ultimaker printers - Move the prime extrusion so it occurs while the print head is still in the parked position so the blob doesn't happen over the print (GitHub #13584 and #11471 for reference). Add a user option to use M104 or M109 for the resume temperature to avoid an unnecessary delay if the resume temperature is the same as the standby temperature. committed as part of CURA-9822
This commit is contained in:
parent
1b12e99869
commit
725d1026dd
1 changed files with 30 additions and 15 deletions
|
@ -1,6 +1,10 @@
|
|||
# Copyright (c) 2021 Ultimaker B.V.
|
||||
# Copyright (c) 2023 UltiMaker
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
# Revised by GregValiant 10-17-2022
|
||||
# Changed "extrude" line to before the nozzle moves back to the print (if not Repetier or Griffin).
|
||||
# Add M104 option for Resume temperature
|
||||
|
||||
from ..Script import Script
|
||||
import re
|
||||
from UM.Application import Application #To get the current printer's settings.
|
||||
|
@ -42,7 +46,7 @@ class PauseAtHeight(Script):
|
|||
"pause_layer":
|
||||
{
|
||||
"label": "Pause Layer",
|
||||
"description": "At what layer should the pause occur?",
|
||||
"description": "Enter the Number of the LAST layer you want to finish prior to the pause (from the Cura preview).",
|
||||
"type": "int",
|
||||
"value": "math.floor((pause_height - 0.27) / 0.1) + 1",
|
||||
"minimum_value": "0",
|
||||
|
@ -156,6 +160,14 @@ class PauseAtHeight(Script):
|
|||
"type": "bool",
|
||||
"default_value": false
|
||||
},
|
||||
"standby_wait_for_temperature_enabled":
|
||||
{
|
||||
"label": "Use M109 for standby temperature? (M104 when false)",
|
||||
"description": "Wait for hot end after Resume? (If your standby temperature is lower than the Printing temperature CHECK and use M109",
|
||||
"type": "bool",
|
||||
"default_value": true,
|
||||
"enabled": "pause_method not in [\\\"griffin\\\", \\\"repetier\\\"]"
|
||||
},
|
||||
"standby_temperature":
|
||||
{
|
||||
"label": "Standby Temperature",
|
||||
|
@ -220,14 +232,14 @@ class PauseAtHeight(Script):
|
|||
"custom_gcode_before_pause":
|
||||
{
|
||||
"label": "G-code Before Pause",
|
||||
"description": "Any custom g-code to run before the pause, for example, M300 S440 P200 to beep. Separate multiple commands with a comma.",
|
||||
"description": "Custom g-code to run before the pause. EX: M300 to beep. Use a comma to separate multiple commands. EX: M400,M300,M117 Pause",
|
||||
"type": "str",
|
||||
"default_value": ""
|
||||
},
|
||||
"custom_gcode_after_pause":
|
||||
{
|
||||
"label": "G-code After Pause",
|
||||
"description": "Any custom g-code to run after the pause, for example, M300 S440 P200 to beep. Separate multiple commands with a comma.",
|
||||
"description": "Custom g-code to run after the pause. Use a comma to separate multiple commands. EX: M204 X8 Y8,M106 S0,M117 Resume",
|
||||
"type": "str",
|
||||
"default_value": ""
|
||||
}
|
||||
|
@ -279,6 +291,7 @@ class PauseAtHeight(Script):
|
|||
move_z = self.getSettingValueByKey("head_move_z")
|
||||
layers_started = False
|
||||
redo_layer = self.getSettingValueByKey("redo_layer")
|
||||
standby_wait_for_temperature_enabled = self.getSettingValueByKey("standby_wait_for_temperature_enabled")
|
||||
standby_temperature = self.getSettingValueByKey("standby_temperature")
|
||||
firmware_retract = Application.getInstance().getGlobalContainerStack().getProperty("machine_firmware_retract", "value")
|
||||
control_temperatures = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_temp_enabled", "value")
|
||||
|
@ -530,19 +543,23 @@ class PauseAtHeight(Script):
|
|||
elif pause_method != "griffin":
|
||||
if control_temperatures:
|
||||
# Set extruder resume temperature
|
||||
prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + " ; resume temperature\n"
|
||||
if standby_wait_for_temperature_enabled:
|
||||
WFT_numeric = 109
|
||||
Temp_resume_Text = " ; WAIT for resume temperature\n"
|
||||
else:
|
||||
WFT_numeric = 104
|
||||
Temp_resume_Text = " ; resume temperature\n"
|
||||
|
||||
prepend_gcode += self.putValue(M=WFT_numeric,
|
||||
S=int(target_temperature.get(current_t, 0))) + Temp_resume_Text
|
||||
|
||||
if extrude_amount != 0: # Need to prime after the pause.
|
||||
# Push the filament back.
|
||||
if retraction_amount != 0:
|
||||
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
|
||||
if extrude_speed == 0:
|
||||
extrude_speed = 25
|
||||
|
||||
# Prime the material.
|
||||
prepend_gcode += self.putValue(G = 1, E = extrude_amount, F = extrude_speed * 60) + "; Extra extrude after the unpause\n"
|
||||
|
||||
# And retract again to make the movements back to the starting position.
|
||||
if retraction_amount != 0:
|
||||
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
|
||||
if extrude_amount != 0:
|
||||
prepend_gcode += self.putValue(G=1, E=extrude_amount, F=extrude_speed * 60) + "\n"
|
||||
|
||||
# Move the head back
|
||||
if park_enabled:
|
||||
|
@ -556,8 +573,6 @@ class PauseAtHeight(Script):
|
|||
retraction_count = 1 if control_temperatures else 3 #Retract more if we don't control the temperature.
|
||||
for i in range(retraction_count):
|
||||
prepend_gcode += self.putValue(G = 11) + "\n"
|
||||
else:
|
||||
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
|
||||
|
||||
if current_extrusion_f != 0:
|
||||
prepend_gcode += self.putValue(G = 1, F = current_extrusion_f) + " ; restore extrusion feedrate\n"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue