mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-24 07:03:56 -06:00
Merge branch 'CURA-5491-pause-at-height'
Contributes to issue CURA-5491.
This commit is contained in:
commit
b67339c3bf
1 changed files with 50 additions and 33 deletions
|
@ -137,6 +137,9 @@ class PauseAtHeight(Script):
|
||||||
redo_layers = self.getSettingValueByKey("redo_layers")
|
redo_layers = self.getSettingValueByKey("redo_layers")
|
||||||
standby_temperature = self.getSettingValueByKey("standby_temperature")
|
standby_temperature = self.getSettingValueByKey("standby_temperature")
|
||||||
|
|
||||||
|
is_griffin = False
|
||||||
|
is_ultigcode = False
|
||||||
|
|
||||||
# T = ExtruderManager.getInstance().getActiveExtruderStack().getProperty("material_print_temperature", "value")
|
# T = ExtruderManager.getInstance().getActiveExtruderStack().getProperty("material_print_temperature", "value")
|
||||||
|
|
||||||
# use offset to calculate the current height: <current_height> = <current_z> - <layer_0_z>
|
# use offset to calculate the current height: <current_height> = <current_z> - <layer_0_z>
|
||||||
|
@ -153,6 +156,10 @@ class PauseAtHeight(Script):
|
||||||
|
|
||||||
# Scroll each line of instruction for each layer in the G-code
|
# Scroll each line of instruction for each layer in the G-code
|
||||||
for line in lines:
|
for line in lines:
|
||||||
|
if ";FLAVOR:Griffin" in line:
|
||||||
|
is_griffin = True
|
||||||
|
if ";FLAVOR:UltiGCode" in line:
|
||||||
|
is_ultigcode = True
|
||||||
# Fist positive layer reached
|
# Fist positive layer reached
|
||||||
if ";LAYER:0" in line:
|
if ";LAYER:0" in line:
|
||||||
layers_started = True
|
layers_started = True
|
||||||
|
@ -252,52 +259,62 @@ class PauseAtHeight(Script):
|
||||||
else:
|
else:
|
||||||
prepend_gcode += ";current layer: {layer}\n".format(layer = current_layer)
|
prepend_gcode += ";current layer: {layer}\n".format(layer = current_layer)
|
||||||
|
|
||||||
# Retraction
|
if not is_griffin:
|
||||||
prepend_gcode += self.putValue(M = 83) + "\n"
|
# Retraction
|
||||||
if retraction_amount != 0:
|
prepend_gcode += self.putValue(M = 83) + "\n"
|
||||||
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
|
if retraction_amount != 0:
|
||||||
|
if is_ultigcode:
|
||||||
|
prepend_gcode += self.putValue(G = 10) + "; retract for ultigcode\n"
|
||||||
|
else:
|
||||||
|
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
|
||||||
|
|
||||||
# Move the head away
|
# Move the head away
|
||||||
prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
|
prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
|
||||||
|
|
||||||
# This line should be ok
|
# This line should be ok
|
||||||
prepend_gcode += self.putValue(G = 1, X = park_x, Y = park_y, F = 9000) + "\n"
|
prepend_gcode += self.putValue(G = 1, X = park_x, Y = park_y, F = 9000) + "\n"
|
||||||
|
|
||||||
if current_z < 15:
|
if current_z < 15:
|
||||||
prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n"
|
prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n"
|
||||||
|
|
||||||
# Set extruder standby temperature
|
if not is_ultigcode: # We don't know about what temperatures are used in ultigcode, so do not touch
|
||||||
prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n"
|
# Set extruder standby temperature
|
||||||
|
prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n"
|
||||||
|
|
||||||
# Wait till the user continues printing
|
# Wait till the user continues printing
|
||||||
prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n"
|
prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n"
|
||||||
|
|
||||||
# Set extruder resume temperature
|
if not is_griffin:
|
||||||
prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n"
|
if not is_ultigcode: # will be 0 for ultigcode
|
||||||
|
# Set extruder resume temperature
|
||||||
|
prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n"
|
||||||
|
|
||||||
# Push the filament back,
|
# Push the filament back,
|
||||||
if retraction_amount != 0:
|
if retraction_amount != 0:
|
||||||
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
|
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
|
||||||
|
|
||||||
# Optionally extrude material
|
# Optionally extrude material
|
||||||
if extrude_amount != 0:
|
if extrude_amount != 0:
|
||||||
prepend_gcode += self.putValue(G = 1, E = extrude_amount, F = extrude_speed * 60) + "\n"
|
prepend_gcode += self.putValue(G = 1, E = extrude_amount, F = extrude_speed * 60) + "\n"
|
||||||
|
|
||||||
# and retract again, the properly primes the nozzle
|
# and retract again, the properly primes the nozzle
|
||||||
# when changing filament.
|
# when changing filament.
|
||||||
if retraction_amount != 0:
|
if retraction_amount != 0:
|
||||||
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
|
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
|
||||||
|
|
||||||
# Move the head back
|
# Move the head back
|
||||||
prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
|
prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
|
||||||
prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n"
|
prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n"
|
||||||
if retraction_amount != 0:
|
if retraction_amount != 0:
|
||||||
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
|
if is_ultigcode:
|
||||||
prepend_gcode += self.putValue(G = 1, F = 9000) + "\n"
|
prepend_gcode += self.putValue(G = 11) + "; unretract for ultigcode\n"
|
||||||
prepend_gcode += self.putValue(M = 82) + "\n"
|
else:
|
||||||
|
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
|
||||||
|
prepend_gcode += self.putValue(G = 1, F = 9000) + "\n"
|
||||||
|
prepend_gcode += self.putValue(M = 82) + "\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"
|
||||||
|
|
||||||
layer = prepend_gcode + layer
|
layer = prepend_gcode + layer
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue