diff --git a/config/CreatBot_D1000/base.cfg b/config/CreatBot_D1000/base.cfg index cad5bc0eb..a7955b457 100644 --- a/config/CreatBot_D1000/base.cfg +++ b/config/CreatBot_D1000/base.cfg @@ -628,14 +628,16 @@ gcode: [gcode_macro _USER_PAUSE] gcode: - {% set extruderTools = [('extruder', 'last_extruder_temp'), + {% set extruderTools = [('extruder', 'last_extruder_temp'), ('extruder1', 'last_extruder1_temp')] %} - {% for extruder_name, name in extruderTools %} - {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} - {% set restore = False if printer[extruder_name] == '' + {% set act = printer.gcode_move.gcode_position %} + SAVE_VARIABLE VARIABLE=power_resume_z VALUE={act.z} + {% for extruder_name, name in extruderTools %} + {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} + {% set restore = False if printer[extruder_name] == '' else True if params.RESTORE|default(1)|int == 1 else False %} - SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" - {% endfor %} + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" + {% endfor %} [gcode_macro _USER_TEMP_RESUME] gcode: @@ -825,12 +827,16 @@ verbose: True [gcode_macro _RESUME_INTERRUPTED] gcode: + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set park_dz = client.custom_park_dz|default(2.0)|abs %} RESPOND TYPE=command MSG="action:prompt_end" SET_GCODE_OFFSET Z=0 MOVE=0 {% set z_height = params.Z_HEIGHT|default(printer.save_variables.variables.power_resume_z)|float %} + {% set is_paused = printer.save_variables.variables.power_loss_paused|default(False) %} {% set last_file = params.GCODE_FILE|default(printer.save_variables.variables.last_file)|string %} - M118 Initiating recovery of the last print task: {last_file} - RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\"" + {% set z_offset = park_dz if is_paused else 0 %} + M118 Initiating recovery of the last print task + RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset}\"" SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}" SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False diff --git a/config/CreatBot_D600Pro2/base.cfg b/config/CreatBot_D600Pro2/base.cfg index 1f852c76e..d6222852e 100644 --- a/config/CreatBot_D600Pro2/base.cfg +++ b/config/CreatBot_D600Pro2/base.cfg @@ -621,14 +621,16 @@ gcode: [gcode_macro _USER_PAUSE] gcode: - {% set extruderTools = [('extruder', 'last_extruder_temp'), + {% set extruderTools = [('extruder', 'last_extruder_temp'), ('extruder1', 'last_extruder1_temp')] %} - {% for extruder_name, name in extruderTools %} - {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} - {% set restore = False if printer[extruder_name] == '' + {% set act = printer.gcode_move.gcode_position %} + SAVE_VARIABLE VARIABLE=power_resume_z VALUE={act.z} + {% for extruder_name, name in extruderTools %} + {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} + {% set restore = False if printer[extruder_name] == '' else True if params.RESTORE|default(1)|int == 1 else False %} - SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" - {% endfor %} + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" + {% endfor %} [gcode_macro _USER_TEMP_RESUME] gcode: @@ -818,12 +820,16 @@ verbose: True [gcode_macro _RESUME_INTERRUPTED] gcode: + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set park_dz = client.custom_park_dz|default(2.0)|abs %} RESPOND TYPE=command MSG="action:prompt_end" SET_GCODE_OFFSET Z=0 MOVE=0 {% set z_height = params.Z_HEIGHT|default(printer.save_variables.variables.power_resume_z)|float %} + {% set is_paused = printer.save_variables.variables.power_loss_paused|default(False) %} {% set last_file = params.GCODE_FILE|default(printer.save_variables.variables.last_file)|string %} - M118 Initiating recovery of the last print task: {last_file} - RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\"" + {% set z_offset = park_dz if is_paused else 0 %} + M118 Initiating recovery of the last print task + RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset}\"" SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}" SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False diff --git a/config/CreatBot_F430NX/base.cfg b/config/CreatBot_F430NX/base.cfg index 5e0e4ef44..858e54a00 100644 --- a/config/CreatBot_F430NX/base.cfg +++ b/config/CreatBot_F430NX/base.cfg @@ -763,23 +763,25 @@ gcode: [gcode_macro _USER_PAUSE] gcode: - {% set extruderTools = [('extruder', 'last_extruder_temp'), + {% set extruderTools = [('extruder', 'last_extruder_temp'), ('extruder1', 'last_extruder1_temp')] %} - {% for extruder_name, name in extruderTools %} - {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} - {% set restore = False if printer[extruder_name] == '' + {% set act = printer.gcode_move.gcode_position %} + SAVE_VARIABLE VARIABLE=power_resume_z VALUE={act.z} + {% for extruder_name, name in extruderTools %} + {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} + {% set restore = False if printer[extruder_name] == '' else True if params.RESTORE|default(1)|int == 1 else False %} - SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" - {% endfor %} + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" + {% endfor %} - {% if printer["dual_carriage"] is defined %} - {% set current_idex_mode = printer["dual_carriage"].carriage_1|lower %} - {% if current_idex_mode == 'copy' or current_idex_mode == 'mirror' %} - SAVE_DUAL_CARRIAGE_STATE - SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder1 - SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=resume_dual VALUE=True + {% if printer["dual_carriage"] is defined %} + {% set current_idex_mode = printer["dual_carriage"].carriage_1|lower %} + {% if current_idex_mode == 'copy' or current_idex_mode == 'mirror' %} + SAVE_DUAL_CARRIAGE_STATE + SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder1 + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=resume_dual VALUE=True + {% endif %} {% endif %} - {% endif %} [gcode_macro _USER_TEMP_RESUME] gcode: @@ -981,12 +983,16 @@ verbose: True [gcode_macro _RESUME_INTERRUPTED] gcode: + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set park_dz = client.custom_park_dz|default(2.0)|abs %} RESPOND TYPE=command MSG="action:prompt_end" SET_GCODE_OFFSET Z=0 MOVE=0 {% set z_height = params.Z_HEIGHT|default(printer.save_variables.variables.power_resume_z)|float %} + {% set is_paused = printer.save_variables.variables.power_loss_paused|default(False) %} {% set last_file = params.GCODE_FILE|default(printer.save_variables.variables.last_file)|string %} - M118 Initiating recovery of the last print task: {last_file} - RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\"" + {% set z_offset = park_dz if is_paused else 0 %} + M118 Initiating recovery of the last print task + RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset}\"" SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}" SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False diff --git a/scripts/plr.sh b/scripts/plr.sh index 5a4a92239..10ff1a869 100755 --- a/scripts/plr.sh +++ b/scripts/plr.sh @@ -1,5 +1,5 @@ #!/bin/bash -# $1 z_height $2 filename +# $1 z_height $2 filename $3 z_offset mkdir -p ~/printer_data/gcodes/.plr filepath=$(sed -n "s/.*filepath *= *'\([^']*\)'.*/\1/p" /home/klipper/printer_data/config/config_variables.cfg) @@ -17,7 +17,8 @@ file_content=$(cat "${filepath}" | awk '/; thumbnail begin/{flag=1;next}/; thumb echo "$file_content" | sed 's/\r$//' | awk -F"Z" 'BEGIN{OFS="Z"} {if ($2 ~ /^[0-9]+$/) $2=$2".0"} 1' > /home/klipper/plrtmpA.$$ sed -i 's/Z\./Z0\./g' /home/klipper/plrtmpA.$$ -cat /home/klipper/plrtmpA.$$ | sed -e '1,/Z'${1}'/ d' | sed -ne '/ Z/,$ p' | grep -m 1 ' Z' | sed -ne 's/.* Z\([^ ]*\).*/SET_KINEMATIC_POSITION Z=\1/p' > ${PLR_PATH}/"${plr}" +z_pos=$(echo "${1} + ${3}" | bc) +cat /home/klipper/plrtmpA.$$ | sed -e '1,/Z'${1}'/ d' | sed -ne '/ Z/,$ p' | grep -m 1 ' Z' | sed -ne "s/.* Z\([^ ]*\).*/SET_KINEMATIC_POSITION Z=${z_pos}/p" > ${PLR_PATH}/"${plr}" cat /home/klipper/plrtmpA.$$ | sed '/ Z'${1}'/q' | sed -ne '/\(M104\|M140\|M109\|M190\|M106\)/p' >> ${PLR_PATH}/"${plr}"