diff --git a/macros.cfg b/macros.cfg index 34ac8d2..253421c 100644 --- a/macros.cfg +++ b/macros.cfg @@ -14,14 +14,23 @@ gcode: G92 E0.0 ; reset extruder G1 Z2.0 ; move nozzle to prevent scratch +# [gcode_macro CANCEL_PRINT] +# description: Cancel the actual running print +# rename_existing: CANCEL_PRINT_BASE +# gcode: +# TURN_OFF_HEATERS +# M107 ; turn off fan +# CANCEL_PRINT_BASE + [gcode_macro CANCEL_PRINT] -description: Cancel the actual running print -rename_existing: CANCEL_PRINT_BASE +rename_existing: BASE_CANCEL_PRINT gcode: - TURN_OFF_HEATERS - M107 ; turn off fan - CANCEL_PRINT_BASE - + SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value + CLEAR_PAUSE + SDCARD_RESET_FILE + PRINT_END + BASE_CANCEL_PRINT + [gcode_macro PRINT_START] # Use PRINT_START for the slicer starting script - please customize for your slicer of choice #gcode: @@ -206,3 +215,63 @@ gcode: G1 E10 F300 ; extrude a little to soften tip G1 E-40 F1800 ; retract some, but not too much or it will jam M82 ; set extruder to absolute + +[gcode_macro M600] +gcode: + #LCDRGB R=0 G=1 B=0 ; Turn LCD green + PAUSE ; Pause + +[gcode_macro PAUSE] +rename_existing: BASE_PAUSE +gcode: + # Parameters + {% set z = params.Z|default(10)|int %} ; z hop amount + + {% if printer['pause_resume'].is_paused|int == 0 %} + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z} ; set z hop variable for reference in resume macro + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target} ; set hotend temp variable for reference in resume macro + + # SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0 ; disable filament sensor + SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume + BASE_PAUSE ; pause print + {% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %} ; check that zhop doesn't exceed z max + G91 ; relative positioning + G1 Z{z} F900 ; raise Z up by z hop amount + {% else %} + { action_respond_info("Pause zhop exceeds maximum Z height.") } ; if z max is exceeded, show message and set zhop value for resume to 0 + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0 + {% endif %} + G90 ; absolute positioning + G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} F6000 ; park toolhead at front center + SAVE_GCODE_STATE NAME=PAUSEPARK ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error) + M104 S0 ; turn off hotend + SET_IDLE_TIMEOUT TIMEOUT=43200 ; set timeout to 12 hours + {% endif %} + +[gcode_macro RESUME] +rename_existing: BASE_RESUME +variable_zhop: 0 +variable_etemp: 0 +gcode: + # Parameters + {% set e = params.E|default(2.5)|int %} ; hotend prime amount (in mm) + + {% if printer['pause_resume'].is_paused|int == 1 %} + # SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=1 ; enable filament sensor + #INITIAL_RGB ; reset LCD color + SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value + {% if etemp > 0 %} + M109 S{etemp|int} ; wait for hotend to heat back up + {% endif %} + RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=100 ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error) + G91 ; relative positioning + M83 ; relative extruder positioning + {% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %} + G1 Z{zhop * -1} E{e} F900 ; prime nozzle by E, lower Z back down + {% else %} + G1 Z{zhop * -1} F900 ; lower Z back down without priming (just in case we are testing the macro with cold hotend) + {% endif %} + RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=60 ; restore position + BASE_RESUME ; resume print + {% endif %} +