全系实现断料自动切头功能、添加床网调平淡出高度、修复重启时温度有概率异常问题、F430修改为闭环电机、优化复制镜像模式并修改回零舵机角度
Squashed commit of the following: commit 25bc7c6d9ee89e6cd4e326bb8497faf6a6256fcd Merge: 588ea4402 9b487abec Author: zkk <1007518571@qq.com> Date: Thu Dec 19 16:23:07 2024 +0800 Merge commit '9b487abec3449dea3673618c1a8b9e88f16b4c40' into release commit 9b487abec3449dea3673618c1a8b9e88f16b4c40 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 19 16:03:04 2024 +0800 F430NX更换为闭环Y电机 commit 641f767175387cacf9820affd616dcdb017590b9 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 19 10:42:11 2024 +0800 F430NX复制、镜像模式优化 commit ef148604da4f925305939e74cfb0edc7fbd261d1 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 19 10:40:25 2024 +0800 自动切头功能 commit fa74a82184caa6a914a32578b31aeb21f8299c7c Merge: 9307b8957 93efb1abd Author: zkk <1007518571@qq.com> Date: Wed Dec 18 15:53:46 2024 +0800 Merge branch 'develop' of https://server.creatbot.com/Gitea/CreatBot/CreatBotKlipper into develop commit 9307b89570a63040259b457ef7ff8969b394b527 Author: zkk <1007518571@qq.com> Date: Wed Dec 18 15:49:41 2024 +0800 修复重启时候有概率出现温度数值异常的问题 commit 9925c7864471f1f9f7b1e22f45dc4d1421c1245a Author: zkk <1007518571@qq.com> Date: Tue Dec 17 15:55:28 2024 +0800 实现二喷头的偏移值校准功能 commit 93efb1abdea67a732b17351b8c31ae5387eaaf91 Author: ruipeng <1041589370@qq.com> Date: Fri Dec 13 09:55:41 2024 +0800 配置网床调平淡出高度 commit 30b77165a7bdae2cd338c283fbab3c8baa37c694 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 12 14:03:30 2024 +0800 调整F430NX探测舵机角度,由90°->120° commit 588ea4402812b09100b2417b040d7daa2d2fbfaa Merge: 349f8f7a2 9be203c58 Author: zkk <1007518571@qq.com> Date: Thu Dec 12 10:39:56 2024 +0800 Merge commit '9be203c58f7c88e4f6963a1079d2dcfaa5401dde' into release commit 9be203c58f7c88e4f6963a1079d2dcfaa5401dde Author: ruipeng <1041589370@qq.com> Date: Wed Dec 11 15:24:05 2024 +0800 新增D600pro2、D1000的V0版机型 commit 349f8f7a249ac113700eed2b4a234473016d32c0 Merge: e554ddb83 401da556f Author: zkk <1007518571@qq.com> Date: Fri Nov 29 10:21:01 2024 +0800 Merge branch 'develop' into release commit 401da556f58df5e917a379dd54565ef5775f7ed2 Merge: 508378825 52ea64cf8 Author: zkk <1007518571@qq.com> Date: Fri Nov 29 10:12:48 2024 +0800 Merge branch 'develop' of https://server.creatbot.com/Gitea/CreatBot/CreatBotKlipper into develop commit 52ea64cf83535c84c378239b43a7f0a6a362a517 Author: ruipeng <1041589370@qq.com> Date: Thu Nov 28 10:55:09 2024 +0800 修复暂停掉温后,恢复时喷头温度不能恢复的问题 commit 508378825da2881043b88427a6df03230c9f66c0 Author: zkk <1007518571@qq.com> Date: Wed Nov 27 14:47:23 2024 +0800 D1000 z轴最大速度设置成7 commit 41c2cd39275dfecafd85a0cbe504f2f5f1cdeec6 Author: zkk <1007518571@qq.com> Date: Mon Nov 25 17:12:23 2024 +0800 优化热电偶最大报错次数 # Conflicts: # config/CreatBot_D1000/base.cfg resolved by 25bc7c6d9ee89e6cd4e326bb8497faf6a6256fcd version # config/CreatBot_D1000_V0/base.cfg resolved by 25bc7c6d9ee89e6cd4e326bb8497faf6a6256fcd version # config/CreatBot_D600Pro2/base.cfg resolved by 25bc7c6d9ee89e6cd4e326bb8497faf6a6256fcd version # config/CreatBot_D600Pro2_V0/base.cfg resolved by 25bc7c6d9ee89e6cd4e326bb8497faf6a6256fcd version # config/CreatBot_F430NX/base.cfg resolved by 25bc7c6d9ee89e6cd4e326bb8497faf6a6256fcd version
This commit is contained in:
parent
42c721569b
commit
94328730bd
@ -52,6 +52,7 @@ mesh_min: 40,60
|
||||
mesh_max: 1000, 1000
|
||||
probe_count: 6,6
|
||||
mesh_pps: 2,2
|
||||
fade_end: 10
|
||||
algorithm: bicubic
|
||||
bicubic_tension: 0.2
|
||||
|
||||
@ -360,29 +361,52 @@ gcode:
|
||||
|
||||
[gcode_macro T0]
|
||||
gcode:
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z=0
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
_RUNOUT_HANDLE
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %}
|
||||
{% set printing = printer.print_stats.state == "printing" %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z=0 MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z=0
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T0"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro T1]
|
||||
gcode:
|
||||
{% set sv = printer.save_variables.variables %}
|
||||
{% set x_offset = sv.dual_x_offset|default(60)|float %}
|
||||
{% set y_offset = sv.dual_y_offset|default(0)|float %}
|
||||
{% set z_offset = sv.dual_z_offset|default(0)|float %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
_RUNOUT_HANDLE
|
||||
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
|
||||
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
|
||||
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
|
||||
{% set x_offset = x_offset - 59 %}
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %}
|
||||
{% set printing = (printer.print_stats.state == "printing") %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z={z_offset} MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T1"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder1 filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro PROBE_SERVO_OPEN]
|
||||
gcode:
|
||||
@ -638,13 +662,57 @@ gcode:
|
||||
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=resume_extruder VALUE="'{printer.toolhead.extruder}'"
|
||||
|
||||
[gcode_macro _RESUME_EXTRUDER]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set autoshift_on = params.AUTOSHIFT|default(False) %}
|
||||
{% set toolchange = client.change_runout|lower|default("") %}
|
||||
{% set extruder_filament = client.filament_state.extruder %}
|
||||
{% set extruder1_filament = client.filament_state.extruder1 %}
|
||||
{% set resume_extruder = client.resume_extruder|default("extruder") %}
|
||||
|
||||
{% if autoshift_on %}
|
||||
{% if extruder_filament and extruder1_filament %}
|
||||
{% if toolchange == "t0" %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif toolchange == "t1" %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if extruder_filament %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif extruder1_filament %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if printer.toolhead.extruder != resume_extruder %}
|
||||
T{0 if resume_extruder|default("extruder") == "extruder" else 1 }
|
||||
{% endif %}
|
||||
_FILAMENT_UPDATE
|
||||
|
||||
[gcode_macro _EXTRUDER_TEMPERATURE_HANDLE]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set last_extruder_temp = client.last_extruder_temp %}
|
||||
{% set last_extruder1_temp = client.last_extruder1_temp %}
|
||||
{% set resume_extruder = client.resume_extruder|lower %}
|
||||
{% if resume_extruder != printer.toolhead.extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{last_extruder1_temp}"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder1_temp VALUE="{last_extruder_temp}"
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_TEMP_RESUME]
|
||||
gcode:
|
||||
{% set extruder_info = [
|
||||
{'index': 0, 'name': 'last_extruder_temp'},
|
||||
{'index': 1, 'name': 'last_extruder1_temp'}] %}
|
||||
|
||||
{% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %}
|
||||
{% set value = printer["gcode_macro RESUME"][temperature].temp %}
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" %
|
||||
(printer.toolhead.extruder, value)}'
|
||||
{% for info in extruder_info %}
|
||||
{% set variable = printer["gcode_macro RESUME"][info.name] %}
|
||||
{% if variable.restore %}
|
||||
@ -675,23 +743,27 @@ variable_last_extruder_temp: {'restore': False, 'temp': 0}
|
||||
variable_last_extruder1_temp: {'restore': False, 'temp': 0}
|
||||
variable_restore_idle_timeout: 0
|
||||
variable_idle_state: False
|
||||
variable_filament_state: False
|
||||
variable_filament_state: ""
|
||||
variable_change_runout: ""
|
||||
variable_autoshift: False
|
||||
variable_resume_extruder: ""
|
||||
gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
{% set do_resume = False %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% set runout = True %}
|
||||
##### end of definitions #####
|
||||
_FILAMENT_UPDATE
|
||||
_RESUME_EXTRUDER AUTOSHIFT={autoshift}
|
||||
_EXTRUDER_TEMPERATURE_HANDLE
|
||||
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
#### Printer comming from timeout idle state ####
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state %}
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False
|
||||
{% if last_extruder_temp.restore or last_extruder1_temp.restore %}
|
||||
# we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }'
|
||||
{client.user_temp_macro|default("")}
|
||||
{% set do_resume = True %}
|
||||
{% elif can_extrude %}
|
||||
@ -714,17 +786,20 @@ gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set velocity = printer.configfile.settings.pause_resume.recover_velocity %}
|
||||
{% set auto_extruder = params.AUTO|default(False) %}
|
||||
{% set sp_move = client.speed_move|default(velocity) %}
|
||||
{% set do_resume = true if params.DO_RESUME|default(False)|lower == 'true' else false %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set restore_idle_timeout = printer['gcode_macro RESUME'].restore_idle_timeout|default(0) %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% if filament_state %}
|
||||
{% if do_resume %}
|
||||
{% if do_resume or auto_extruder %}
|
||||
{% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} # restore idle_timeout time
|
||||
{client.user_resume_macro|default("")}
|
||||
_CLIENT_EXTRUDE
|
||||
RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE="None"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE="False"
|
||||
{% else %}
|
||||
{% set _d = prompt_txt.append("\"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder) %}
|
||||
{% endif %}
|
||||
@ -766,7 +841,7 @@ gcode:
|
||||
{% set runout = runout_resume if printer.toolhead.extruder == "extruder" else runout_resume1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE={ runout }
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE="{{'runout': runout, 'extruder': runout_resume, 'extruder1': runout_resume1}}"
|
||||
|
||||
[gcode_macro _RUNOUT_HANDLE]
|
||||
description: filament state update
|
||||
@ -778,11 +853,22 @@ gcode:
|
||||
|
||||
[gcode_macro _RUNOUT_PAUSE]
|
||||
gcode:
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set svv = printer.save_variables.variables %}
|
||||
{% set autoshift_extruder = svv.auto_change_nozzle|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set target_extruder = "extruder1" if printer.toolhead.extruder == "extruder" else "extruder" %}
|
||||
{% if not filament_state %}
|
||||
{% set msg_extruder = "extruder" if printer.toolhead.extruder == "extruder" else "extruder1" %}
|
||||
RESPOND TYPE=echo MSG='{"Noting! \"%s\" filament has been pulled out." % msg_extruder}'
|
||||
PAUSE
|
||||
{% if autoshift_extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE=True
|
||||
{% if printer["gcode_macro RESUME"].filament_state[target_extruder] %}
|
||||
RESUME
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! All extruders filament has been run out."}'
|
||||
{% endif %}
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! \"%s\" filament has been run out." % printer.toolhead.extruder}'
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
########################################
|
||||
@ -1001,3 +1087,27 @@ gcode:
|
||||
|
||||
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
|
||||
BED_MESH_PROFILE LOAD={default_profile}
|
||||
|
||||
########################################
|
||||
# Nozzle Calibrate
|
||||
########################################
|
||||
|
||||
[gcode_shell_command fetch_assets]
|
||||
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
|
||||
timeout: 5.
|
||||
verbose: False
|
||||
|
||||
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
G28 X Y
|
||||
G28 Z
|
||||
G91
|
||||
G0 x-60 F6000
|
||||
SET_GCODE_OFFSET Z=0 MOVE=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
|
||||
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D1000HS\" \"NozzleAglin.zip\""
|
||||
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"
|
@ -52,6 +52,7 @@ mesh_min: 40,60
|
||||
mesh_max: 1000, 1000
|
||||
probe_count: 6,6
|
||||
mesh_pps: 2,2
|
||||
fade_end: 10
|
||||
algorithm: bicubic
|
||||
bicubic_tension: 0.2
|
||||
|
||||
@ -296,29 +297,52 @@ gcode:
|
||||
|
||||
[gcode_macro T0]
|
||||
gcode:
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z=0
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
_RUNOUT_HANDLE
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %}
|
||||
{% set printing = printer.print_stats.state == "printing" %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z=0 MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z=0
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T0"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro T1]
|
||||
gcode:
|
||||
{% set sv = printer.save_variables.variables %}
|
||||
{% set x_offset = sv.dual_x_offset|default(60)|float %}
|
||||
{% set y_offset = sv.dual_y_offset|default(0)|float %}
|
||||
{% set z_offset = sv.dual_z_offset|default(0)|float %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
_RUNOUT_HANDLE
|
||||
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
|
||||
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
|
||||
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
|
||||
{% set x_offset = x_offset - 59 %}
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %}
|
||||
{% set printing = (printer.print_stats.state == "printing") %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z={z_offset} MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T1"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder1 filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro PROBE_SERVO_OPEN]
|
||||
gcode:
|
||||
@ -574,13 +598,57 @@ gcode:
|
||||
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=resume_extruder VALUE="'{printer.toolhead.extruder}'"
|
||||
|
||||
[gcode_macro _RESUME_EXTRUDER]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set autoshift_on = params.AUTOSHIFT|default(False) %}
|
||||
{% set toolchange = client.change_runout|lower|default("") %}
|
||||
{% set extruder_filament = client.filament_state.extruder %}
|
||||
{% set extruder1_filament = client.filament_state.extruder1 %}
|
||||
{% set resume_extruder = client.resume_extruder|default("extruder") %}
|
||||
|
||||
{% if autoshift_on %}
|
||||
{% if extruder_filament and extruder1_filament %}
|
||||
{% if toolchange == "t0" %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif toolchange == "t1" %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if extruder_filament %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif extruder1_filament %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if printer.toolhead.extruder != resume_extruder %}
|
||||
T{0 if resume_extruder|default("extruder") == "extruder" else 1 }
|
||||
{% endif %}
|
||||
_FILAMENT_UPDATE
|
||||
|
||||
[gcode_macro _EXTRUDER_TEMPERATURE_HANDLE]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set last_extruder_temp = client.last_extruder_temp %}
|
||||
{% set last_extruder1_temp = client.last_extruder1_temp %}
|
||||
{% set resume_extruder = client.resume_extruder|lower %}
|
||||
{% if resume_extruder != printer.toolhead.extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{last_extruder1_temp}"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder1_temp VALUE="{last_extruder_temp}"
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_TEMP_RESUME]
|
||||
gcode:
|
||||
{% set extruder_info = [
|
||||
{'index': 0, 'name': 'last_extruder_temp'},
|
||||
{'index': 1, 'name': 'last_extruder1_temp'}] %}
|
||||
|
||||
{% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %}
|
||||
{% set value = printer["gcode_macro RESUME"][temperature].temp %}
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" %
|
||||
(printer.toolhead.extruder, value)}'
|
||||
{% for info in extruder_info %}
|
||||
{% set variable = printer["gcode_macro RESUME"][info.name] %}
|
||||
{% if variable.restore %}
|
||||
@ -611,23 +679,27 @@ variable_last_extruder_temp: {'restore': False, 'temp': 0}
|
||||
variable_last_extruder1_temp: {'restore': False, 'temp': 0}
|
||||
variable_restore_idle_timeout: 0
|
||||
variable_idle_state: False
|
||||
variable_filament_state: False
|
||||
variable_filament_state: ""
|
||||
variable_change_runout: ""
|
||||
variable_autoshift: False
|
||||
variable_resume_extruder: ""
|
||||
gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
{% set do_resume = False %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% set runout = True %}
|
||||
##### end of definitions #####
|
||||
_FILAMENT_UPDATE
|
||||
_RESUME_EXTRUDER AUTOSHIFT={autoshift}
|
||||
_EXTRUDER_TEMPERATURE_HANDLE
|
||||
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
#### Printer comming from timeout idle state ####
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state %}
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False
|
||||
{% if last_extruder_temp.restore or last_extruder1_temp.restore %}
|
||||
# we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }'
|
||||
{client.user_temp_macro|default("")}
|
||||
{% set do_resume = True %}
|
||||
{% elif can_extrude %}
|
||||
@ -650,17 +722,20 @@ gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set velocity = printer.configfile.settings.pause_resume.recover_velocity %}
|
||||
{% set auto_extruder = params.AUTO|default(False) %}
|
||||
{% set sp_move = client.speed_move|default(velocity) %}
|
||||
{% set do_resume = true if params.DO_RESUME|default(False)|lower == 'true' else false %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set restore_idle_timeout = printer['gcode_macro RESUME'].restore_idle_timeout|default(0) %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% if filament_state %}
|
||||
{% if do_resume %}
|
||||
{% if do_resume or auto_extruder %}
|
||||
{% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} # restore idle_timeout time
|
||||
{client.user_resume_macro|default("")}
|
||||
_CLIENT_EXTRUDE
|
||||
RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE="None"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE="False"
|
||||
{% else %}
|
||||
{% set _d = prompt_txt.append("\"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder) %}
|
||||
{% endif %}
|
||||
@ -702,7 +777,7 @@ gcode:
|
||||
{% set runout = runout_resume if printer.toolhead.extruder == "extruder" else runout_resume1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE={ runout }
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE="{{'runout': runout, 'extruder': runout_resume, 'extruder1': runout_resume1}}"
|
||||
|
||||
[gcode_macro _RUNOUT_HANDLE]
|
||||
description: filament state update
|
||||
@ -714,11 +789,22 @@ gcode:
|
||||
|
||||
[gcode_macro _RUNOUT_PAUSE]
|
||||
gcode:
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set svv = printer.save_variables.variables %}
|
||||
{% set autoshift_extruder = svv.auto_change_nozzle|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set target_extruder = "extruder1" if printer.toolhead.extruder == "extruder" else "extruder" %}
|
||||
{% if not filament_state %}
|
||||
{% set msg_extruder = "extruder" if printer.toolhead.extruder == "extruder" else "extruder1" %}
|
||||
RESPOND TYPE=echo MSG='{"Noting! \"%s\" filament has been pulled out." % msg_extruder}'
|
||||
PAUSE
|
||||
{% if autoshift_extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE=True
|
||||
{% if printer["gcode_macro RESUME"].filament_state[target_extruder] %}
|
||||
RESUME
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! All extruders filament has been run out."}'
|
||||
{% endif %}
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! \"%s\" filament has been run out." % printer.toolhead.extruder}'
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
########################################
|
||||
@ -937,3 +1023,27 @@ gcode:
|
||||
|
||||
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
|
||||
BED_MESH_PROFILE LOAD={default_profile}
|
||||
|
||||
########################################
|
||||
# Nozzle Calibrate
|
||||
########################################
|
||||
|
||||
[gcode_shell_command fetch_assets]
|
||||
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
|
||||
timeout: 5.
|
||||
verbose: False
|
||||
|
||||
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
G28 X Y
|
||||
G28 Z
|
||||
G91
|
||||
G0 x-60 F6000
|
||||
SET_GCODE_OFFSET Z=0 MOVE=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
|
||||
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D1000HS\" \"NozzleAglin.zip\""
|
||||
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"
|
@ -52,6 +52,7 @@ mesh_min: 40,60
|
||||
mesh_max: 600, 600
|
||||
probe_count: 6,6
|
||||
mesh_pps: 2,2
|
||||
fade_end: 10
|
||||
algorithm: bicubic
|
||||
bicubic_tension: 0.2
|
||||
|
||||
@ -360,29 +361,52 @@ gcode:
|
||||
|
||||
[gcode_macro T0]
|
||||
gcode:
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z=0
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
_RUNOUT_HANDLE
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %}
|
||||
{% set printing = printer.print_stats.state == "printing" %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z=0 MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z=0
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T0"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro T1]
|
||||
gcode:
|
||||
{% set sv = printer.save_variables.variables %}
|
||||
{% set x_offset = sv.dual_x_offset|default(60)|float %}
|
||||
{% set y_offset = sv.dual_y_offset|default(0)|float %}
|
||||
{% set z_offset = sv.dual_z_offset|default(0)|float %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
_RUNOUT_HANDLE
|
||||
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
|
||||
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
|
||||
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
|
||||
{% set x_offset = x_offset - 59 %}
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %}
|
||||
{% set printing = (printer.print_stats.state == "printing") %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z={z_offset} MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T1"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder1 filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro PROBE_SERVO_OPEN]
|
||||
gcode:
|
||||
@ -631,13 +655,57 @@ gcode:
|
||||
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=resume_extruder VALUE="'{printer.toolhead.extruder}'"
|
||||
|
||||
[gcode_macro _RESUME_EXTRUDER]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set autoshift_on = params.AUTOSHIFT|default(False) %}
|
||||
{% set toolchange = client.change_runout|lower|default("") %}
|
||||
{% set extruder_filament = client.filament_state.extruder %}
|
||||
{% set extruder1_filament = client.filament_state.extruder1 %}
|
||||
{% set resume_extruder = client.resume_extruder %}
|
||||
|
||||
{% if autoshift_on %}
|
||||
{% if extruder_filament and extruder1_filament %}
|
||||
{% if toolchange == "t0" %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif toolchange == "t1" %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if extruder_filament %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif extruder1_filament %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if printer.toolhead.extruder != resume_extruder %}
|
||||
T{0 if resume_extruder|default("extruder") == "extruder" else 1 }
|
||||
{% endif %}
|
||||
_FILAMENT_UPDATE
|
||||
|
||||
[gcode_macro _EXTRUDER_TEMPERATURE_HANDLE]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set last_extruder_temp = client.last_extruder_temp %}
|
||||
{% set last_extruder1_temp = client.last_extruder1_temp %}
|
||||
{% set resume_extruder = client.resume_extruder|lower %}
|
||||
{% if resume_extruder != printer.toolhead.extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{last_extruder1_temp}"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder1_temp VALUE="{last_extruder_temp}"
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_TEMP_RESUME]
|
||||
gcode:
|
||||
{% set extruder_info = [
|
||||
{'index': 0, 'name': 'last_extruder_temp'},
|
||||
{'index': 1, 'name': 'last_extruder1_temp'}] %}
|
||||
|
||||
{% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %}
|
||||
{% set value = printer["gcode_macro RESUME"][temperature].temp %}
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" %
|
||||
(printer.toolhead.extruder, value)}'
|
||||
{% for info in extruder_info %}
|
||||
{% set variable = printer["gcode_macro RESUME"][info.name] %}
|
||||
{% if variable.restore %}
|
||||
@ -668,23 +736,29 @@ variable_last_extruder_temp: {'restore': False, 'temp': 0}
|
||||
variable_last_extruder1_temp: {'restore': False, 'temp': 0}
|
||||
variable_restore_idle_timeout: 0
|
||||
variable_idle_state: False
|
||||
variable_filament_state: False
|
||||
variable_filament_state: ""
|
||||
variable_change_runout: ""
|
||||
variable_autoshift: False
|
||||
variable_resume_extruder: ""
|
||||
gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
{% set do_resume = False %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% set runout = True %}
|
||||
##### end of definitions #####
|
||||
_FILAMENT_UPDATE
|
||||
_RESUME_EXTRUDER AUTOSHIFT={autoshift}
|
||||
_EXTRUDER_TEMPERATURE_HANDLE
|
||||
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
|
||||
#### Printer comming from timeout idle state ####
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state %}
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False
|
||||
{% if last_extruder_temp.restore or last_extruder1_temp.restore %}
|
||||
# we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }'
|
||||
{client.user_temp_macro|default("")}
|
||||
{% set do_resume = True %}
|
||||
{% elif can_extrude %}
|
||||
@ -707,17 +781,20 @@ gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set velocity = printer.configfile.settings.pause_resume.recover_velocity %}
|
||||
{% set auto_extruder = params.AUTO|default(False) %}
|
||||
{% set sp_move = client.speed_move|default(velocity) %}
|
||||
{% set do_resume = true if params.DO_RESUME|default(False)|lower == 'true' else false %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set restore_idle_timeout = printer['gcode_macro RESUME'].restore_idle_timeout|default(0) %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% if filament_state %}
|
||||
{% if do_resume %}
|
||||
{% if do_resume or auto_extruder %}
|
||||
{% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} # restore idle_timeout time
|
||||
{client.user_resume_macro|default("")}
|
||||
_CLIENT_EXTRUDE
|
||||
RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE="None"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE="False"
|
||||
{% else %}
|
||||
{% set _d = prompt_txt.append("\"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder) %}
|
||||
{% endif %}
|
||||
@ -759,7 +836,7 @@ gcode:
|
||||
{% set runout = runout_resume if printer.toolhead.extruder == "extruder" else runout_resume1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE={ runout }
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE="{{'runout': runout, 'extruder': runout_resume, 'extruder1': runout_resume1}}"
|
||||
|
||||
[gcode_macro _RUNOUT_HANDLE]
|
||||
description: filament state update
|
||||
@ -771,11 +848,22 @@ gcode:
|
||||
|
||||
[gcode_macro _RUNOUT_PAUSE]
|
||||
gcode:
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set svv = printer.save_variables.variables %}
|
||||
{% set autoshift_extruder = svv.auto_change_nozzle|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set target_extruder = "extruder1" if printer.toolhead.extruder == "extruder" else "extruder" %}
|
||||
{% if not filament_state %}
|
||||
{% set msg_extruder = "extruder" if printer.toolhead.extruder == "extruder" else "extruder1" %}
|
||||
RESPOND TYPE=echo MSG='{"Noting! \"%s\" filament has been pulled out." % msg_extruder}'
|
||||
PAUSE
|
||||
{% if autoshift_extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE=True
|
||||
{% if printer["gcode_macro RESUME"].filament_state[target_extruder] %}
|
||||
RESUME
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! All extruders filament has been run out."}'
|
||||
{% endif %}
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! \"%s\" filament has been run out." % printer.toolhead.extruder}'
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
########################################
|
||||
@ -994,3 +1082,27 @@ gcode:
|
||||
|
||||
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
|
||||
BED_MESH_PROFILE LOAD={default_profile}
|
||||
|
||||
########################################
|
||||
# Nozzle Calibrate
|
||||
########################################
|
||||
|
||||
[gcode_shell_command fetch_assets]
|
||||
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
|
||||
timeout: 5.
|
||||
verbose: False
|
||||
|
||||
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
G28 X Y
|
||||
G28 Z
|
||||
G91
|
||||
G0 x-60 F6000
|
||||
SET_GCODE_OFFSET Z=0 MOVE=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
|
||||
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D600Pro2HS\" \"NozzleAglin.zip\""
|
||||
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"
|
@ -52,6 +52,7 @@ mesh_min: 40,60
|
||||
mesh_max: 600, 600
|
||||
probe_count: 6,6
|
||||
mesh_pps: 2,2
|
||||
fade_end: 10
|
||||
algorithm: bicubic
|
||||
bicubic_tension: 0.2
|
||||
|
||||
@ -296,29 +297,52 @@ gcode:
|
||||
|
||||
[gcode_macro T0]
|
||||
gcode:
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z=0
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
_RUNOUT_HANDLE
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %}
|
||||
{% set printing = printer.print_stats.state == "printing" %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z=0 MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z=0
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=45
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T0"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro T1]
|
||||
gcode:
|
||||
{% set sv = printer.save_variables.variables %}
|
||||
{% set x_offset = sv.dual_x_offset|default(60)|float %}
|
||||
{% set y_offset = sv.dual_y_offset|default(0)|float %}
|
||||
{% set z_offset = sv.dual_z_offset|default(0)|float %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
_RUNOUT_HANDLE
|
||||
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
|
||||
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
|
||||
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
|
||||
{% set x_offset = x_offset - 59 %}
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %}
|
||||
{% set printing = (printer.print_stats.state == "printing") %}
|
||||
{% if filament_insert or printing == False %}
|
||||
SET_SERVO SERVO=switch_nozzle angle=135
|
||||
G4 P500
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z={z_offset} MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T1"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder1 filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro PROBE_SERVO_OPEN]
|
||||
gcode:
|
||||
@ -567,13 +591,57 @@ gcode:
|
||||
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=resume_extruder VALUE="'{printer.toolhead.extruder}'"
|
||||
|
||||
[gcode_macro _RESUME_EXTRUDER]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set autoshift_on = params.AUTOSHIFT|default(False) %}
|
||||
{% set toolchange = client.change_runout|lower|default("") %}
|
||||
{% set extruder_filament = client.filament_state.extruder %}
|
||||
{% set extruder1_filament = client.filament_state.extruder1 %}
|
||||
{% set resume_extruder = client.resume_extruder|default("extruder") %}
|
||||
|
||||
{% if autoshift_on %}
|
||||
{% if extruder_filament and extruder1_filament %}
|
||||
{% if toolchange == "t0" %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif toolchange == "t1" %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if extruder_filament %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif extruder1_filament %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if printer.toolhead.extruder != resume_extruder %}
|
||||
T{0 if resume_extruder|default("extruder") == "extruder" else 1 }
|
||||
{% endif %}
|
||||
_FILAMENT_UPDATE
|
||||
|
||||
[gcode_macro _EXTRUDER_TEMPERATURE_HANDLE]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set last_extruder_temp = client.last_extruder_temp %}
|
||||
{% set last_extruder1_temp = client.last_extruder1_temp %}
|
||||
{% set resume_extruder = client.resume_extruder|lower %}
|
||||
{% if resume_extruder != printer.toolhead.extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{last_extruder1_temp}"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder1_temp VALUE="{last_extruder_temp}"
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_TEMP_RESUME]
|
||||
gcode:
|
||||
{% set extruder_info = [
|
||||
{'index': 0, 'name': 'last_extruder_temp'},
|
||||
{'index': 1, 'name': 'last_extruder1_temp'}] %}
|
||||
|
||||
{% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %}
|
||||
{% set value = printer["gcode_macro RESUME"][temperature].temp %}
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" %
|
||||
(printer.toolhead.extruder, value)}'
|
||||
{% for info in extruder_info %}
|
||||
{% set variable = printer["gcode_macro RESUME"][info.name] %}
|
||||
{% if variable.restore %}
|
||||
@ -604,23 +672,29 @@ variable_last_extruder_temp: {'restore': False, 'temp': 0}
|
||||
variable_last_extruder1_temp: {'restore': False, 'temp': 0}
|
||||
variable_restore_idle_timeout: 0
|
||||
variable_idle_state: False
|
||||
variable_filament_state: False
|
||||
variable_filament_state: ""
|
||||
variable_change_runout: ""
|
||||
variable_autoshift: False
|
||||
variable_resume_extruder: ""
|
||||
gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
{% set do_resume = False %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% set runout = True %}
|
||||
##### end of definitions #####
|
||||
_FILAMENT_UPDATE
|
||||
_RESUME_EXTRUDER AUTOSHIFT={autoshift}
|
||||
_EXTRUDER_TEMPERATURE_HANDLE
|
||||
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
|
||||
#### Printer comming from timeout idle state ####
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state %}
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False
|
||||
{% if last_extruder_temp.restore or last_extruder1_temp.restore %}
|
||||
# we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }'
|
||||
{client.user_temp_macro|default("")}
|
||||
{% set do_resume = True %}
|
||||
{% elif can_extrude %}
|
||||
@ -643,17 +717,20 @@ gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set velocity = printer.configfile.settings.pause_resume.recover_velocity %}
|
||||
{% set auto_extruder = params.AUTO|default(False) %}
|
||||
{% set sp_move = client.speed_move|default(velocity) %}
|
||||
{% set do_resume = true if params.DO_RESUME|default(False)|lower == 'true' else false %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set restore_idle_timeout = printer['gcode_macro RESUME'].restore_idle_timeout|default(0) %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% if filament_state %}
|
||||
{% if do_resume %}
|
||||
{% if do_resume or auto_extruder %}
|
||||
{% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} # restore idle_timeout time
|
||||
{client.user_resume_macro|default("")}
|
||||
_CLIENT_EXTRUDE
|
||||
RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE="None"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE="False"
|
||||
{% else %}
|
||||
{% set _d = prompt_txt.append("\"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder) %}
|
||||
{% endif %}
|
||||
@ -695,7 +772,7 @@ gcode:
|
||||
{% set runout = runout_resume if printer.toolhead.extruder == "extruder" else runout_resume1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE={ runout }
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE="{{'runout': runout, 'extruder': runout_resume, 'extruder1': runout_resume1}}"
|
||||
|
||||
[gcode_macro _RUNOUT_HANDLE]
|
||||
description: filament state update
|
||||
@ -707,11 +784,22 @@ gcode:
|
||||
|
||||
[gcode_macro _RUNOUT_PAUSE]
|
||||
gcode:
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set svv = printer.save_variables.variables %}
|
||||
{% set autoshift_extruder = svv.auto_change_nozzle|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set target_extruder = "extruder1" if printer.toolhead.extruder == "extruder" else "extruder" %}
|
||||
{% if not filament_state %}
|
||||
{% set msg_extruder = "extruder" if printer.toolhead.extruder == "extruder" else "extruder1" %}
|
||||
RESPOND TYPE=echo MSG='{"Noting! \"%s\" filament has been pulled out." % msg_extruder}'
|
||||
PAUSE
|
||||
{% if autoshift_extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE=True
|
||||
{% if printer["gcode_macro RESUME"].filament_state[target_extruder] %}
|
||||
RESUME
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! All extruders filament has been run out."}'
|
||||
{% endif %}
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! \"%s\" filament has been run out." % printer.toolhead.extruder}'
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
########################################
|
||||
@ -930,3 +1018,27 @@ gcode:
|
||||
|
||||
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
|
||||
BED_MESH_PROFILE LOAD={default_profile}
|
||||
|
||||
########################################
|
||||
# Nozzle Calibrate
|
||||
########################################
|
||||
|
||||
[gcode_shell_command fetch_assets]
|
||||
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
|
||||
timeout: 5.
|
||||
verbose: False
|
||||
|
||||
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
G28 X Y
|
||||
G28 Z
|
||||
G91
|
||||
G0 x-60 F6000
|
||||
SET_GCODE_OFFSET Z=0 MOVE=0
|
||||
SET_SERVO SERVO=switch_nozzle angle=225
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
|
||||
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D600Pro2HS\" \"NozzleAglin.zip\""
|
||||
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"
|
@ -52,6 +52,7 @@ mesh_min: 34.6,17.4
|
||||
mesh_max: 420, 300
|
||||
probe_count: 5,4
|
||||
mesh_pps: 2,2
|
||||
fade_end: 5
|
||||
algorithm: bicubic
|
||||
bicubic_tension: 0.2
|
||||
|
||||
@ -68,16 +69,17 @@ position_endstop: -20
|
||||
position_max: 475
|
||||
homing_speed: 100
|
||||
homing_retract_dist: 10
|
||||
step_pulse_duration:0.0000025
|
||||
|
||||
[tmc5160 stepper_x]
|
||||
cs_pin: PE2
|
||||
spi_software_sclk_pin: PB3
|
||||
spi_software_mosi_pin: PB5
|
||||
spi_software_miso_pin: PB4
|
||||
run_current: 1.0
|
||||
run_current: 1.5
|
||||
interpolate: True
|
||||
sense_resistor: 0.075
|
||||
stealthchop_threshold: 200
|
||||
stealthchop_threshold: 300
|
||||
|
||||
[dual_carriage]
|
||||
axis: x
|
||||
@ -119,16 +121,7 @@ position_endstop: 0
|
||||
position_max: 300
|
||||
homing_speed: 60
|
||||
homing_retract_dist: 10
|
||||
|
||||
[tmc5160 stepper_y]
|
||||
cs_pin: PE3
|
||||
spi_software_sclk_pin: PB3
|
||||
spi_software_mosi_pin: PB5
|
||||
spi_software_miso_pin: PB4
|
||||
run_current: 2.3
|
||||
interpolate: True
|
||||
sense_resistor: 0.075
|
||||
stealthchop_threshold: 200
|
||||
step_pulse_duration:0.0000025
|
||||
|
||||
[stepper_z]
|
||||
step_pin: PD7
|
||||
@ -336,7 +329,7 @@ pin:L_tool:PA5
|
||||
maximum_servo_angle: 180
|
||||
minimum_pulse_width: 0.000900
|
||||
maximum_pulse_width: 0.002100
|
||||
initial_angle: 135
|
||||
initial_angle: 165
|
||||
# initial_pulse_width:
|
||||
|
||||
|
||||
@ -437,21 +430,33 @@ gcode:
|
||||
|
||||
[gcode_macro T0]
|
||||
gcode:
|
||||
{% if "x" not in printer.toolhead.homed_axes %}
|
||||
G28 X
|
||||
{% set x_home = true %}
|
||||
{% endif %}
|
||||
{% if printer.toolhead.extruder != 'extruder' or x_home %}
|
||||
SAVE_GCODE_STATE NAME=park0
|
||||
G90
|
||||
_PARK_{printer.toolhead.extruder}
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
SET_DUAL_CARRIAGE CARRIAGE=0
|
||||
SET_GCODE_OFFSET Z=0
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
G1 X0 F6000
|
||||
RESTORE_GCODE_STATE NAME=park0
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %}
|
||||
{% set printing = printer.print_stats.state == "printing" %}
|
||||
{% if filament_insert or printing == False %}
|
||||
{% if "x" not in printer.toolhead.homed_axes %}
|
||||
G28 X
|
||||
{% set x_home = true %}
|
||||
{% endif %}
|
||||
{% if printer.toolhead.extruder != 'extruder' or x_home %}
|
||||
SAVE_GCODE_STATE NAME=park0
|
||||
G90
|
||||
_PARK_{printer.toolhead.extruder}
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
SET_DUAL_CARRIAGE CARRIAGE=0
|
||||
RESTORE_GCODE_STATE NAME=park0
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z=0 MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z=0
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y=0
|
||||
SET_GCODE_OFFSET X=0
|
||||
G1 X0 F6000
|
||||
{% endif %}
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T0"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _PARK_extruder1]
|
||||
@ -467,48 +472,66 @@ gcode:
|
||||
{% set y_offset = svv.dual_y_offset|default(0)|float %}
|
||||
{% set z_offset = svv.dual_z_offset|default(0)|float %}
|
||||
|
||||
{% if "x" not in printer.toolhead.homed_axes %}
|
||||
G28 X
|
||||
{% set x_home = true %}
|
||||
{% endif %}
|
||||
{% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %}
|
||||
{% set printing = (printer.print_stats.state == "printing") %}
|
||||
{% if filament_insert or printing == False %}
|
||||
{% if "x" not in printer.toolhead.homed_axes %}
|
||||
G28 X
|
||||
{% set x_home = true %}
|
||||
{% endif %}
|
||||
|
||||
{% if printer.toolhead.extruder != 'extruder1' or x_home %}
|
||||
SAVE_GCODE_STATE NAME=park1
|
||||
G90
|
||||
_PARK_{printer.toolhead.extruder}
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
G1 X455 F6000
|
||||
RESTORE_GCODE_STATE NAME=park1
|
||||
{% if printer.toolhead.extruder != 'extruder1' or x_home %}
|
||||
SAVE_GCODE_STATE NAME=park1
|
||||
G90
|
||||
_PARK_{printer.toolhead.extruder}
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1
|
||||
RESTORE_GCODE_STATE NAME=park1
|
||||
{% if "z" in printer.toolhead.homed_axes | lower %}
|
||||
SET_GCODE_OFFSET Z={z_offset} MOVE=1
|
||||
{% else %}
|
||||
SET_GCODE_OFFSET Z={z_offset}
|
||||
{% endif %}
|
||||
SET_GCODE_OFFSET Y={y_offset}
|
||||
SET_GCODE_OFFSET X={x_offset}
|
||||
G1 X455 F6000
|
||||
{% endif %}
|
||||
{% else %}
|
||||
PAUSE
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE='"T1"'
|
||||
RESPOND TYPE=error MSG='{"Noting! extruder1 filament has been run out."}'
|
||||
{% endif %}
|
||||
|
||||
|
||||
[gcode_macro ACTIVATE_COPY_MODE]
|
||||
gcode:
|
||||
SET_DUAL_CARRIAGE CARRIAGE=0 MODE=PRIMARY
|
||||
G1 X0 F6000
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
|
||||
G1 X227.5 F6000
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=COPY
|
||||
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
|
||||
_RUNOUT_HANDLE
|
||||
SET_GCODE_VARIABLE MACRO=_SET_DUAL_MODE VARIABLE=dual_mode VALUE='"copy"'
|
||||
|
||||
[gcode_macro ACTIVATE_MIRROR_MODE]
|
||||
gcode:
|
||||
SET_GCODE_VARIABLE MACRO=_SET_DUAL_MODE VARIABLE=dual_mode VALUE='"mirror"'
|
||||
|
||||
[gcode_macro _ACTIVATE_PRIMARY_MODE]
|
||||
gcode:
|
||||
SET_GCODE_VARIABLE MACRO=_SET_DUAL_MODE VARIABLE=dual_mode VALUE='"primary"'
|
||||
|
||||
[gcode_macro _SET_DUAL_MODE]
|
||||
variable_dual_mode: "primary"
|
||||
gcode:
|
||||
G90
|
||||
SET_DUAL_CARRIAGE CARRIAGE=0 MODE=PRIMARY
|
||||
G1 X0 F6000
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
|
||||
G1 X455 F6000
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=MIRROR
|
||||
{% if dual_mode == "copy" %}
|
||||
G1 X227.5 F6000
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=COPY
|
||||
{% elif dual_mode == "mirror" %}
|
||||
G1 X455 F6000
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=MIRROR
|
||||
{% endif %}
|
||||
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
|
||||
_RUNOUT_HANDLE
|
||||
|
||||
|
||||
[gcode_macro PROBE_SERVO_OPEN]
|
||||
gcode:
|
||||
SET_SERVO SERVO=probe_servo angle=45
|
||||
@ -517,7 +540,7 @@ gcode:
|
||||
[gcode_macro PROBE_SERVO_CLOSE]
|
||||
gcode:
|
||||
G4 P500
|
||||
SET_SERVO SERVO=probe_servo angle=135
|
||||
SET_SERVO SERVO=probe_servo angle=165
|
||||
|
||||
[gcode_macro _START_PRINT_BASE]
|
||||
description: Call when starting to print
|
||||
@ -525,6 +548,11 @@ gcode:
|
||||
_CLEAR_LAST_FILE
|
||||
_RUNOUT_HANDLE
|
||||
|
||||
[gcode_macro _CANCEL_PRINT_BASE]
|
||||
description: Call when cancelled to print
|
||||
gcode:
|
||||
_ACTIVATE_PRIMARY_MODE
|
||||
|
||||
[gcode_macro START_PRINT]
|
||||
gcode:
|
||||
{% set BED_TEMP = params.BED|default(0)|float %}
|
||||
@ -570,6 +598,7 @@ gcode:
|
||||
G0 Z1.00 F6000
|
||||
_PARK_extruder
|
||||
_PARK_extruder1
|
||||
_ACTIVATE_PRIMARY_MODE
|
||||
{% else %}
|
||||
G0 Z1.00 X20.0 Y20.0 F6000
|
||||
{% endif %}
|
||||
@ -652,6 +681,7 @@ gcode:
|
||||
rename_existing: C28
|
||||
gcode:
|
||||
{% set homing_cmd = ''%}
|
||||
{% set dual_mode = printer['gcode_macro _SET_DUAL_MODE'].dual_mode|default("primary") %}
|
||||
{% set do_x = 'X' in params|string %}
|
||||
{% set do_y = 'Y' in params|string %}
|
||||
{% set do_z = 'Z' in params|string %}
|
||||
@ -678,6 +708,9 @@ gcode:
|
||||
_RESTORE_DEFAULT_EXTRUDER
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if dual_mode == "copy" or dual_mode == "mirror" %}
|
||||
_SET_DUAL_MODE
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro M109]
|
||||
rename_existing: C109
|
||||
@ -736,7 +769,7 @@ gcode:
|
||||
|
||||
[gcode_macro _CLIENT_VARIABLE]
|
||||
variable_use_custom_pos : True
|
||||
variable_custom_park_x : 200.0
|
||||
variable_custom_park_x : 180.0
|
||||
variable_custom_park_y : 250.0
|
||||
variable_custom_park_dz : 20.0
|
||||
variable_retract : 2.0
|
||||
@ -782,13 +815,17 @@ gcode:
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=resume_dual VALUE=True
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=resume_extruder VALUE="'{printer.toolhead.extruder}'"
|
||||
|
||||
[gcode_macro _USER_TEMP_RESUME]
|
||||
gcode:
|
||||
{% set extruder_info = [
|
||||
{'index': 0, 'name': 'last_extruder_temp'},
|
||||
{'index': 1, 'name': 'last_extruder1_temp'}] %}
|
||||
|
||||
{% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %}
|
||||
{% set value = printer["gcode_macro RESUME"][temperature].temp %}
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" %
|
||||
(printer.toolhead.extruder, value)}'
|
||||
{% for info in extruder_info %}
|
||||
{% set variable = printer["gcode_macro RESUME"][info.name] %}
|
||||
{% if variable.restore %}
|
||||
@ -806,6 +843,46 @@ gcode:
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
[gcode_macro _RESUME_EXTRUDER]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set autoshift_on = params.AUTOSHIFT|default(False) %}
|
||||
{% set toolchange = client.change_runout|lower|default("") %}
|
||||
{% set extruder_filament = client.filament_state.extruder %}
|
||||
{% set extruder1_filament = client.filament_state.extruder1 %}
|
||||
{% set resume_extruder = client.resume_extruder|default("extruder") %}
|
||||
|
||||
{% if autoshift_on %}
|
||||
{% if extruder_filament and extruder1_filament %}
|
||||
{% if toolchange == "t0" %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif toolchange == "t1" %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if extruder_filament %}
|
||||
{% set resume_extruder = "extruder" %}
|
||||
{% elif extruder1_filament %}
|
||||
{% set resume_extruder = "extruder1" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if printer.toolhead.extruder != resume_extruder %}
|
||||
T{0 if resume_extruder|default("extruder") == "extruder" else 1 }
|
||||
{% endif %}
|
||||
_FILAMENT_UPDATE
|
||||
|
||||
[gcode_macro _EXTRUDER_TEMPERATURE_HANDLE]
|
||||
gcode:
|
||||
{% set client = printer['gcode_macro RESUME']|default({}) %}
|
||||
{% set last_extruder_temp = client.last_extruder_temp %}
|
||||
{% set last_extruder1_temp = client.last_extruder1_temp %}
|
||||
{% set resume_extruder = client.resume_extruder|lower %}
|
||||
{% if resume_extruder != printer.toolhead.extruder %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{ last_extruder1_temp }"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder1_temp VALUE="{ last_extruder_temp }"
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_CANCEL]
|
||||
gcode:
|
||||
G91
|
||||
@ -820,33 +897,35 @@ variable_last_extruder1_temp: {'restore': False, 'temp': 0}
|
||||
variable_restore_idle_timeout: 0
|
||||
variable_idle_state: False
|
||||
variable_resume_dual: False
|
||||
variable_filament_state: False
|
||||
variable_filament_state: ""
|
||||
variable_change_runout: ""
|
||||
variable_autoshift: False
|
||||
variable_resume_extruder: ""
|
||||
gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
{% set do_resume = False %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% set runout = True %}
|
||||
##### end of definitions #####
|
||||
{% if printer["dual_carriage"] is defined %}
|
||||
{% set current_idex_mode = printer["dual_carriage"].carriage_1|lower %}
|
||||
{% if resume_dual %}
|
||||
_FILAMENT_UPDATE
|
||||
{% if resume_dual %}
|
||||
RESTORE_DUAL_CARRIAGE_STATE
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder
|
||||
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=resume_dual VALUE=False
|
||||
{% endif %}
|
||||
{% else %}
|
||||
_RESUME_EXTRUDER AUTOSHIFT={autoshift}
|
||||
{% endif %}
|
||||
_EXTRUDER_TEMPERATURE_HANDLE
|
||||
|
||||
_FILAMENT_UPDATE
|
||||
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
|
||||
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
|
||||
#### Printer comming from timeout idle state ####
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state %}
|
||||
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False
|
||||
{% if last_extruder_temp.restore or last_extruder1_temp.restore %}
|
||||
# we need to use the unicode (\u00B0) for the ¡ã as py2 env's would throw an error otherwise
|
||||
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp.temp) }'
|
||||
{client.user_temp_macro|default("")}
|
||||
{% set do_resume = True %}
|
||||
{% elif can_extrude %}
|
||||
@ -869,17 +948,20 @@ gcode:
|
||||
##### get user parameters or use default #####
|
||||
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
|
||||
{% set velocity = printer.configfile.settings.pause_resume.recover_velocity %}
|
||||
{% set auto_extruder = params.AUTO|default(False) %}
|
||||
{% set sp_move = client.speed_move|default(velocity) %}
|
||||
{% set do_resume = true if params.DO_RESUME|default(False)|lower == 'true' else false %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set restore_idle_timeout = printer['gcode_macro RESUME'].restore_idle_timeout|default(0) %}
|
||||
{% set prompt_txt = [] %}
|
||||
{% if filament_state %}
|
||||
{% if do_resume %}
|
||||
{% if do_resume or auto_extruder %}
|
||||
{% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} # restore idle_timeout time
|
||||
{client.user_resume_macro|default("")}
|
||||
_CLIENT_EXTRUDE
|
||||
RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE="None"
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE="False"
|
||||
{% else %}
|
||||
{% set _d = prompt_txt.append("\"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder) %}
|
||||
{% endif %}
|
||||
@ -921,7 +1003,7 @@ gcode:
|
||||
{% set runout = runout_resume if printer.toolhead.extruder == "extruder" else runout_resume1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE={ runout }
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=filament_state VALUE="{{'runout': runout, 'extruder': runout_resume, 'extruder1': runout_resume1}}"
|
||||
|
||||
[gcode_macro _RUNOUT_HANDLE]
|
||||
description: filament state update
|
||||
@ -933,12 +1015,29 @@ gcode:
|
||||
|
||||
[gcode_macro _RUNOUT_PAUSE]
|
||||
gcode:
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state|default(False) %}
|
||||
{% set svv = printer.save_variables.variables %}
|
||||
{% set autoshift_extruder = svv.auto_change_nozzle|default(False) %}
|
||||
{% set filament_state = printer['gcode_macro RESUME'].filament_state.runout|default(False) %}
|
||||
{% set target_extruder = "extruder1" if printer.toolhead.extruder == "extruder" else "extruder" %}
|
||||
{% set idex = False %}
|
||||
{% 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' %}
|
||||
{% set idex = True %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if not filament_state %}
|
||||
{% set runout = printer['filament_switch_sensor extruder'].filament_detected %}
|
||||
{% set msg_extruder = "extruder1" if runout else "extruder" %}
|
||||
RESPOND TYPE=echo MSG='{"Noting! \"%s\" filament has been pulled out." % msg_extruder}'
|
||||
PAUSE
|
||||
{% if autoshift_extruder and idex == False %}
|
||||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=autoshift VALUE=True
|
||||
{% if printer["gcode_macro RESUME"].filament_state[target_extruder] %}
|
||||
RESUME
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! All extruders filament has been run out."}'
|
||||
{% endif %}
|
||||
{% else %}
|
||||
RESPOND TYPE=error MSG='{"Noting! \"%s\" filament has been run out." % printer.toolhead.extruder}'
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
########################################
|
||||
@ -1157,3 +1256,28 @@ gcode:
|
||||
|
||||
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
|
||||
BED_MESH_PROFILE LOAD={default_profile}
|
||||
|
||||
########################################
|
||||
# Nozzle Calibrate
|
||||
########################################
|
||||
|
||||
[gcode_shell_command fetch_assets]
|
||||
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
|
||||
timeout: 5.
|
||||
verbose: False
|
||||
|
||||
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
G28
|
||||
G90
|
||||
_PARK_extruder
|
||||
G0 Z5
|
||||
SET_GCODE_OFFSET Z=0 MOVE=0
|
||||
ACTIVATE_EXTRUDER EXTRUDER=extruder1
|
||||
SET_DUAL_CARRIAGE CARRIAGE=1
|
||||
G1 X200 F6000
|
||||
|
||||
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
|
||||
gcode:
|
||||
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"F430NX\" \"NozzleAglin.zip\""
|
||||
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"
|
@ -81,7 +81,7 @@ class Heater:
|
||||
# self.last_temp, self.last_temp_time, self.target_temp)
|
||||
def temperature_callback(self, read_time, temp):
|
||||
with self.lock:
|
||||
time_diff = read_time - self.last_temp_time
|
||||
time_diff = max(0, read_time - self.last_temp_time)
|
||||
self.last_temp = temp
|
||||
self.last_temp_time = read_time
|
||||
self.control.temperature_update(read_time, temp, self.target_temp)
|
||||
|
63
scripts/fetch_assets.sh
Normal file
63
scripts/fetch_assets.sh
Normal file
@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get model name and type
|
||||
Type="$1"
|
||||
Model="$2"
|
||||
Filename="$3"
|
||||
|
||||
echo "Type: ${Type}"
|
||||
echo "Model: ${Model}"
|
||||
echo "Filename: ${Filename}"
|
||||
|
||||
# Check if model name is provided
|
||||
if [ -z "$Model" ]; then
|
||||
echo "Error: Model name not provided"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if the Type is Gcode
|
||||
if [ "$Type" = "Gcode" ]; then
|
||||
# Define download path and filename
|
||||
download_path="$HOME/.temp/"
|
||||
download_filename="${download_path}NozzleAglin.zip"
|
||||
download_url="https://www.creatbot.com/downloads/3dmodels/gcode/${Model}/NozzleAglin.zip"
|
||||
|
||||
# Create temporary download directory
|
||||
mkdir -p "${download_path}"
|
||||
|
||||
# Define target folder for extracted file
|
||||
target_folder="$HOME/printer_data/gcodes/.PresetModel/"
|
||||
|
||||
# Check if the target folder already contains the extracted file
|
||||
if [ -f "${target_folder}NozzleAglin.gcode" ]; then
|
||||
echo "Target file 'NozzleAglin.gcode' already exists, skipping download and extraction."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If the file does not exist, start downloading the file
|
||||
wget -q -O "${download_filename}" "${download_url}"
|
||||
|
||||
# Check if wget successfully downloaded the file
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Download failed, the URL might be invalid or there is a network issue."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create target extraction directory if it doesn't exist
|
||||
mkdir -p "$target_folder"
|
||||
|
||||
# Extract the downloaded file to the target directory, using -o to overwrite existing files
|
||||
unzip -o -q "${download_filename}" -d "$target_folder"
|
||||
|
||||
# Check if the extraction was successful
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Extraction failed, please check if the file is corrupted or the path is correct."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Remove the temporary download folder
|
||||
rm -rf "${download_path}"
|
||||
|
||||
echo "Download and extraction completed successfully."
|
||||
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user