Files
QIDI_PLUS4/config/gcode_macro.cfg

1198 lines
31 KiB
INI
Raw Normal View History

2025-07-29 18:39:58 +08:00
# QIDI Plus4 V1.0.0
2024-09-02 15:08:35 +08:00
[gcode_macro _CG28]
gcode:
{% if "xyz" not in printer.toolhead.homed_axes %}
G28
{% endif %}
[gcode_macro zoffset]
gcode:
SET_GCODE_OFFSET Z={printer.probe.last_z_result} MOVE=1
# Development test
[gcode_macro test_zoffset]
gcode:
G28
get_zoffset
G1 X{150 - printer.probe["x_offset"]} Y{150 - printer.probe["y_offset"]} F9000
G1 Z10 F600
probe
M400
G4 P5000
G1 Z10 F600
[gcode_macro move_subzoffset]
gcode:
G1 Z{printer.probe.last_z_result} F600
[gcode_macro get_zoffset]
gcode:
TOGGLE_CHAMBER_FAN
G1 Z10 F600
Z_VIBRATE
QIDI_PROBE_PIN_1
m204 S50
G4 P500
probe probe_speed=5 lift_speed=5 samples=5 sample_retract_dist=5
move_subzoffset
M114
{% set p=(-0.11 + printer.gcode_move.homing_origin.z)|float %}
SET_KINEMATIC_POSITION Z={p}
G1 Z30 F600
QIDI_PROBE_PIN_2
m204 S10000
TOGGLE_CHAMBER_FAN
[gcode_macro save_zoffset]
gcode:
{% if printer.gcode_move.homing_origin.z < 0.5 %}
SAVE_VARIABLE VARIABLE=z_offset VALUE={printer.gcode_move.homing_origin.z}
{% endif %}
[gcode_macro set_zoffset]
gcode:
{% set z = printer.save_variables.variables.z_offset %}
SET_GCODE_OFFSET Z={z} MOVE=0
# Specialized for power lose recovery
[gcode_macro CLEAR_NOZZLE_PLR]
gcode:
{% set hotendtemp = params.HOTEND|default(250)|int %}
{% if (printer.gcode_move.position.z ) < 35 %}
G1 Z35 F900
{% else %}
G91
G1 Z{5} F900
G90
{% endif %}
G1 X56 F12000
G1 Y310 F12000
G1 Y324 F600
G1 X95 F600
M400
M106 S0
M109 S{hotendtemp}
G92 E0
G1 E5 F50
G92 E0
G1 E80 F200
G92 E0
G1 E-2 F200
G4 P300
M106 S255
G1 Y316 F30000
G1 Y320 F3000
G1 Y316 F30000
G1 Y320 F3000
G1 Y316 F30000
G1 Y320 F3000
G1 Y316 F12000
G1 Y312 F600
[gcode_macro CLEAR_NOZZLE]
gcode:
{% set hotendtemp = params.HOTEND|default(250)|int %}
{% if (printer.gcode_move.position.z ) < 35 %}
G1 Z35 F900
{% else %}
G91
G1 Z{5} F900
G90
{% endif %}
G1 X56 F12000
G1 Y310 F12000
G1 Y324 F600
G1 X95 F600
M400
M109 S{hotendtemp}
G92 E0
G1 E5 F50
G92 E0
G1 E80 F200
G92 E0
G1 E-2 F200
M106 S255
G4 P5000
M104 S140
G1 Y318 F9000
G1 Y322 F600
G1 Y318 F9000
G1 Y322 F600
G1 Y308 F30000
G1 Y324 F600
G1 X124 E-1 F1000
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={170}
G1 X133 F200
G1 Y321 F200
G2 I0.5 J0.5 F600
G2 I0.5 J0.5 F600
G2 I0.5 J0.5 F600
G1 Y319 F150
G1 X132
G1 Y324
G1 X131
G1 Y319
G1 X130
G1 Y324
G1 X129
G1 Y319
G1 X113 F200
G1 Y320
G1 X125
G1 X113
G1 X125
G2 I0.5 J0.5 F200
G2 I0.5 J0.5 F200
G2 I0.5 J0.5 F200
G1 Y300 F600
G1 X95 F12000
G1 Y314 F9000
G1 Y324 F600
G1 X58 F12000
G1 X78 F12000
G1 Y324
G1 X58 F12000
G1 X78 F12000
G1 Y323.5
G1 X58 F12000
G1 X78 F12000
G1 Y323
G1 X58 F12000
G1 X78 F12000
G1 Y322.5
G1 X58 F12000
G1 X78 F12000
G1 Y322
G1 X58 F12000
G1 X75 F12000
G1 Y321.5
G2 I0.8 J0.8 F600
G2 I0.8 J0.8 F600
G2 I0.8 J0.8 F600
G1 Y324 F600
M106 S0
G1 X95 F12000
G1 Y316 F9000
G1 Y312 F600
M400
M118 Nozzle cleared
G1 Y10 F12000
G1 X10 F12000
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={150}
M107
M106 P2 S0
M400
M118 Nozzle cooled
2025-07-29 18:39:58 +08:00
[gcode_macro MOVE_TO_TRASH]
gcode:
_CG28
M204 S10000
{% if (printer.gcode_move.position.y) > 305 %}
G1 X82 Y324 F6000
G1 X95
{% else %}
G1 X82 F12000
G1 Y310 F12000
G1 Y324 F600
G1 X95 F6000
{% endif %}
2024-09-02 15:08:35 +08:00
# Excute when start printing, prior to gcode file
[gcode_macro PRINT_START]
gcode:
AUTOTUNE_SHAPERS
2025-07-29 18:39:58 +08:00
TOOL_CHANGE_END
DISABLE_ALL_SENSOR
CLEAR_PAUSE
2024-09-02 15:08:35 +08:00
{% set bedtemp = params.BED|int %}
{% set hotendtemp = params.HOTEND|int %}
{% set chambertemp = params.CHAMBER|default(0)|int %}
2025-07-29 18:39:58 +08:00
{% set extruder = params.EXTRUDER|default(0)|int %}
2024-09-02 15:08:35 +08:00
set_zoffset
M104 S0
2024-10-23 20:11:58 +08:00
2024-09-02 15:08:35 +08:00
M106 P2 S0
M106 P3 S0
M106 S255
2025-07-29 18:39:58 +08:00
{% if "xyz" in printer.toolhead.homed_axes %}
G0 X50 Y50 F6000
{% endif %}
2024-10-23 20:11:58 +08:00
G28
2024-11-16 16:43:17 +08:00
M141 S0
2024-09-02 15:08:35 +08:00
M140 S{bedtemp}
M106 S0
2025-07-29 18:39:58 +08:00
{% if printer.save_variables.variables.box_count >= 1 %}
SAVE_VARIABLE VARIABLE=load_retry_num VALUE=0
SAVE_VARIABLE VARIABLE=retry_step VALUE=None
SAVE_VARIABLE VARIABLE=is_tool_change VALUE=0
{% for i in range(16) %}
SAVE_VARIABLE VARIABLE=runout_{i} VALUE=0
G4 P100
{% endfor %}
{% if printer.save_variables.variables.enable_box == 1 %}
{% set last_load_slot = printer.save_variables.variables.last_load_slot|default("slot-1") %}
{% set value_t = printer.save_variables.variables["value_t" ~ extruder]|default("slot" ~ extruder) %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
{% if last_load_slot != value_t and last_load_slot != "slot-1" %}
CUT_FILAMENT
MOVE_TO_TRASH
M109 S{hotendtemp}
EXTRUDER_UNLOAD SLOT={last_load_slot}
M83
G1 E18 F300
T{extruder}
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% elif last_load_slot == value_t and printer.save_variables.variables.slot_sync == "slot-1" %}
MOVE_TO_TRASH
M109 S{hotendtemp}
T{extruder}
M83
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% endif %}
{% else %}
{% if last_load_slot != "slot-1" %}
MOVE_TO_TRASH
M109 S{hotendtemp}
M400
EXTRUDER_UNLOAD SLOT={last_load_slot}
T{extruder}
M83
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% else %}
MOVE_TO_TRASH
M109 S{hotendtemp}
T{extruder}
M83
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}
M106 S0
2024-09-02 15:08:35 +08:00
CLEAR_NOZZLE HOTEND={hotendtemp}
2024-11-16 16:43:17 +08:00
M190 S{bedtemp}
# M141 S{chambertemp}
2024-09-02 15:08:35 +08:00
M104 S140
2025-07-29 18:39:58 +08:00
Z_TILT_ADJUST
2024-09-02 15:08:35 +08:00
G29
G0 Z50 F600
G0 X5 Y5 F6000
{% if chambertemp == 0 %}
M106 P3 S255
{% endif %}
M109 S{hotendtemp}
M141 S{chambertemp}
M204 S10000
SET_PRINT_STATS_INFO CURRENT_LAYER=1
ENABLE_ALL_SENSOR
save_last_file
[gcode_macro ENABLE_ALL_SENSOR]
gcode:
ENABLE_FILAMENT_WIDTH_SENSOR
RESET_FILAMENT_WIDTH_SENSOR
query_filament_width
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1
2025-07-29 18:39:58 +08:00
{% if printer["filament_motion_sensor box_motion_sensor"] and printer.save_variables.variables.enable_box == 1 %}
CLEAR_MOTION_DATA
SET_FILAMENT_SENSOR SENSOR=box_motion_sensor ENABLE=1
{% endif %}
2024-09-02 15:08:35 +08:00
[gcode_macro DISABLE_ALL_SENSOR]
gcode:
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0
2025-07-29 18:39:58 +08:00
{% if printer["filament_motion_sensor box_motion_sensor"] %}
SET_FILAMENT_SENSOR SENSOR=box_motion_sensor ENABLE=0
{% endif %}
2024-09-02 15:08:35 +08:00
DISABLE_FILAMENT_WIDTH_SENSOR
[gcode_macro AUTOTUNE_SHAPERS]
variable_autotune_shapers: 'ei'
gcode:
[gcode_macro M84]
rename_existing:M84.1
gcode:
M84.1
SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0
# Used for power lose recovery detection
[gcode_macro DETECT_INTERRUPTION]
gcode:
{% set was_interrupted = printer.save_variables.variables.was_interrupted %}
{% if was_interrupted %}
M118 Detected unexpected interruption during the last print. Do you want to resume printing? (Do not move the extruder before resuming.)
M118 Yes: RESUME_INTERRUPTED
M118 No: CLEAR_LAST_FILE
{% endif %}
# Excute when klipper init
[delayed_gcode PRINTER_INIT]
initial_duration:0.2
gcode:
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
BED_MESH_CLEAR
2025-07-29 18:39:58 +08:00
DISABLE_ALL_SENSOR
2024-09-02 15:08:35 +08:00
[homing_override]
axes:xyz
gcode:
{% set HOME_CUR = 1 %}
{% set driver_config = printer.configfile.settings['tmc2240 stepper_x'] %}
{% set RUN_CUR = driver_config.run_current %}
{% set HOLD_CUR = driver_config.hold_current %}
m204 S10000
M220 S100
{% if params.X is defined %}
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.7}
G28 X
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 X10 F1200
{% endif %}
{% if params.Y is defined %}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9}
G28 Y
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 Y10 F1200
{% endif %}
{% if params.Z is defined %}
G28 x
G28 Y
G28 X
G1 X150 Y150 F7800
2024-10-23 20:11:58 +08:00
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-30}
2024-09-02 15:08:35 +08:00
QIDI_PROBE_PIN_2
probe samples=2
SET_KINEMATIC_POSITION Z=1.9
G1 Z10 F600
Z_VIBRATE
QIDI_PROBE_PIN_1
probe probe_speed=10
SET_KINEMATIC_POSITION Z=-0.1
G1 Z30 F480
{% endif %}
{% if params.X is undefined %}
{% if params.Y is undefined %}
{% if params.Z is undefined %}
SET_KINEMATIC_POSITION X=0
SET_KINEMATIC_POSITION Y=0
2024-10-23 20:11:58 +08:00
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-30}
2024-09-02 15:08:35 +08:00
G91
G1 Z7 F600
G1 X5 F2400
G1 Y5 F2400
G4 P2000
2025-07-29 18:39:58 +08:00
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8}
2024-09-02 15:08:35 +08:00
G28 X
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 X45 F1200
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9}
G28 Y
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 Y10 F1200
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8}
G28 X
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 X10 F1200
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-10}
G90
G1 X150 Y150 F7800
G91
QIDI_PROBE_PIN_2
G28 Z
G1 Z30 F600
{% endif %}
{% endif %}
{% endif %}
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CUR}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CUR}
M204 S10000
G90
QIDI_PROBE_PIN_2
[gcode_macro SHAPER_CALIBRATE]
rename_existing: RESHAPER_CALIBRATE
gcode:
RESHAPER_CALIBRATE FREQ_START=20 FREQ_END=150
# Excute when print end, after gcode file
[gcode_macro PRINT_END]
gcode:
{% if printer.gcode_move.homing_origin.z < 0.5 %}
SAVE_VARIABLE VARIABLE=z_offset VALUE={printer.gcode_move.homing_origin.z}
{% endif %}
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}
CLEAR_PAUSE
M400
G4 P5000
M106 P2 S0
M106 P0 S0
M106 P3 S0
2025-07-29 18:39:58 +08:00
DISABLE_BOX_HEATER
2024-09-02 15:08:35 +08:00
M104 S0
M140 S0
M141 S0
M220 S100
M221 S100
SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0
DISABLE_ALL_SENSOR
BED_MESH_CLEAR
G31
CLEAR_LAST_FILE
M84
BEEP I=2 DUR=500
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
2025-07-29 18:39:58 +08:00
TOOL_CHANGE_END
2024-09-02 15:08:35 +08:00
{% if (printer.gcode_move.position.z) < 200 %}
G1 Z200 F600
{% endif %}
2024-11-16 16:43:17 +08:00
{% if (printer.gcode_move.position.y) > 300 %}
G1 Y250 F6000
{% endif %}
2024-09-02 15:08:35 +08:00
G1 X0 Y0 F7800
save_zoffset
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}
CLEAR_PAUSE
M106 P2 S0
M106 P0 S0
M106 P3 S0
M104 S0
M140 S0
M141 S0
2025-07-29 18:39:58 +08:00
DISABLE_BOX_HEATER
2024-09-02 15:08:35 +08:00
M220 S100
M221 S100
SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0
DISABLE_ALL_SENSOR
BED_MESH_CLEAR
G31
BEEP I=2 DUR=500
M84
SDCARD_RESET_FILE
BASE_CANCEL_PRINT
CLEAR_LAST_FILE
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
{% set z = params.Z|default(35)|int %}
{% if printer['pause_resume'].is_paused|int == 0 %}
2025-07-29 18:39:58 +08:00
SET_GCODE_VARIABLE MACRO=RESUME_PRINT VARIABLE=zhop VALUE={z}
SET_GCODE_VARIABLE MACRO=RESUME_PRINT VARIABLE=etemp VALUE={printer['extruder'].target}
SET_GCODE_VARIABLE MACRO=RESUME_PRINT VARIABLE=efan VALUE={printer["fan_generic cooling_fan"].speed *255}
2024-09-02 15:08:35 +08:00
2025-07-29 18:39:58 +08:00
DISABLE_ALL_SENSOR
2024-09-02 15:08:35 +08:00
SAVE_GCODE_STATE NAME=PAUSE
BASE_PAUSE
G92 E0
G1 E-5 F1800
{% if (printer.gcode_move.position.z ) < z %}
G91
G1 Z{z} F900
{% else %}
G91
G1 Z{5} F900
2025-07-29 18:39:58 +08:00
SET_GCODE_VARIABLE MACRO=RESUME_PRINT VARIABLE=zhop VALUE=0
2024-09-02 15:08:35 +08:00
{% endif %}
SAVE_GCODE_STATE NAME=PAUSEPARK2
G90
G1 X95 F12000
G1 Y312 F12000
G1 Y316 F600
G1 Y320 F9000
G1 Y324 F600
SAVE_GCODE_STATE NAME=PAUSEPARK
M104 S0
SET_IDLE_TIMEOUT TIMEOUT=86400
SET_STEPPER_ENABLE STEPPER=extruder enable=0
2025-07-29 18:39:58 +08:00
{% set slot_sync = printer.save_variables.variables.slot_sync|default("slot-1") %}
{% if printer['box_stepper ' ~ slot_sync] %}
SET_STEPPER_ENABLE STEPPER='box_stepper '{slot_sync} enable=0
{% endif %}
2024-09-02 15:08:35 +08:00
{% endif %}
2025-07-29 18:39:58 +08:00
[gcode_macro RESUME_PRINT]
2024-09-02 15:08:35 +08:00
variable_zhop: 0
variable_etemp: 0
variable_efan: 0
gcode:
{% set e = params.E|default(5)|int %}
2025-07-29 18:39:58 +08:00
{% set tool_change = params.TOOL_CHANGE|default(0)|int %}
2024-09-02 15:08:35 +08:00
{% if printer['pause_resume'].is_paused|int == 1 %}
2025-07-29 18:39:58 +08:00
{% if printer.save_variables.variables.box_count >= 1 and printer.save_variables.variables.enable_box == 1 and printer.save_variables.variables.is_tool_change == 1%}
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}
MOVE_TO_TRASH
{% if etemp > 0 %}
M109 S{etemp|int}
{% endif %}
M83
RESTORE_GCODE_STATE NAME=PAUSEPARK2 MOVE=1 MOVE_SPEED=200
RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=15
BASE_RESUME
{% else %}
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}
{% if etemp > 0 %}
M109 S{etemp|int}
{% endif %}
{% if printer.save_variables.variables.box_count >= 1 %}
SAVE_VARIABLE VARIABLE=retry_step VALUE=None
{% endif %}
M83
M106 S0
G1 X95 F12000
G1 Y324 F12000
G92 E0
G1 E5 F50
G92 E0
G1 E50 F200
G92 E0
G1 E-0.8 F200
G4 P300
M106 S{efan}
G1 Y318 F30000
G1 Y322 F3000
G1 Y318 F30000
G1 Y322 F3000
G1 Y318 F30000
G1 Y322 F3000
G1 Y324 F600
G1 X58 F12000
G1 X78 F12000
G1 X58 F12000
G1 X78 F12000
G1 X58 F12000
G1 X78 F12000
G1 X58 F12000
G1 X78 F12000
G1 X58 F12000
G1 X78 F12000
G1 X58 F12000
G1 X78 F12000
G1 X95 F12000
G1 Y316 F9000
G1 Y312 F600
G1 Y260 F12000
RESTORE_GCODE_STATE NAME=PAUSEPARK2 MOVE=1 MOVE_SPEED=200
RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=15
BASE_RESUME
{% if tool_change == 0 %}
ENABLE_ALL_SENSOR
{% endif %}
2024-09-02 15:08:35 +08:00
{% endif %}
2025-07-29 18:39:58 +08:00
{% endif %}
2024-09-02 15:08:35 +08:00
2025-07-29 18:39:58 +08:00
[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
{% if printer['pause_resume'].is_paused|int == 1 %}
{% if printer.save_variables.variables.box_count >= 1 %}
{% if printer.save_variables.variables.enable_box == 1 %}
{% set retry_val = printer.save_variables.variables.retry_step %}
{% if retry_val == None %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
{% else %}
{% if printer.save_variables.variables.is_tool_change == 1 %}
RESUME_PRINT
{% endif %}
{% endif %}
{% else %}
{% if (retry_val.startswith('QDE_004_002')
or retry_val.startswith('QDE_004_003')
or retry_val.startswith('QDE_004_004')
or retry_val.startswith('QDE_004_005')
or retry_val.startswith('QDE_004_006')
or retry_val.startswith('QDE_004_009')) %}
TRY_MOVE_AGAIN
{% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
{% else %}
{% if printer.save_variables.variables.is_tool_change == 1 %}
RESUME_PRINT
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
{% endif %}
{% endif %}
{% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
{% endif %}
{% endif %}
2024-09-02 15:08:35 +08:00
{% endif %}
[gcode_macro BEEP]
gcode:
{% set i = params.I|default(1)|int %}
{% set dur = params.DUR|default(100)|int %}
{% if printer["output_pin sound"].value|int == 1 %}
{% for iteration in range(i|int) %}
SET_PIN PIN=beeper VALUE=1
G4 P{dur}
SET_PIN PIN=beeper VALUE=0
G4 P{dur}
{% endfor %}
{% endif %}
2024-11-16 16:43:17 +08:00
2024-09-02 15:08:35 +08:00
[gcode_macro M141]
gcode:
{% if printer["heater_generic chamber"] is defined %}
{% set s = params.S|float %}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={([s, 65]|min)}
2024-11-16 16:43:17 +08:00
# {% if printer['heater_bed'].target < s+25 and s!=0 %}
# M140 S{s+25}
# M118 If the heatbed is below {s+25} degrees, the heatbed temperature will be automatically set to {s+25}.
# {% endif %}
2024-09-02 15:08:35 +08:00
{% endif %}
2024-11-16 16:43:17 +08:00
2024-09-02 15:08:35 +08:00
[gcode_macro M191]
gcode:
{% if printer["heater_generic chamber"] is defined %}
{% set s = params.S|float %}
M141 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR="heater_generic chamber" MINIMUM={([s, 65]|min)-2}
{% endif %}
{% endif %}
2024-11-16 16:43:17 +08:00
2024-09-02 15:08:35 +08:00
[gcode_macro M106]
gcode:
{% set p = params.P|default(0)|int %}
{% if p == 2 %}
{% if params.S is defined %}
SET_FAN_SPEED FAN=auxiliary_cooling_fan SPEED={(params.S|float / 255.0)}
{% else %}
SET_FAN_SPEED FAN=auxiliary_cooling_fan SPEED=1
{% endif %}
{% endif %}
{% if p == 0 %}
{% if params.S is defined %}
SET_FAN_SPEED FAN=cooling_fan SPEED={(params.S|float / 255.0)}
{% else %}
SET_FAN_SPEED FAN=cooling_fan SPEED=1
{% endif %}
{% endif %}
{% if p == 3 %}
{% if params.S is defined %}
SET_FAN_SPEED FAN=chamber_circulation_fan SPEED={(params.S|float / 255.0)}
{% else %}
SET_FAN_SPEED FAN=chamber_circulation_fan SPEED=1
{% endif %}
{% endif %}
[gcode_macro M107]
gcode:
SET_FAN_SPEED FAN=cooling_fan SPEED=0
[gcode_macro M303]
gcode:
{% if params.E is defined %}
{% if params.S is defined %}
{% if (params.E|int)==-1 %}
PID_CALIBRATE HEATER=heater_bed TARGET={params.S|int}
{% endif %}
{% if (params.E|int)==0 %}
PID_CALIBRATE HEATER=extruder TARGET={params.S|int}
{% endif %}
{% endif %}
{% endif %}
[gcode_macro M8029]
gcode:
{% if params.D is defined %}
{% if (params.D|int)==1 %}
ENABLE_FILAMENT_WIDTH_SENSOR
{% endif %}
{% if (params.D|int)==0 %}
DISABLE_FILAMENT_WIDTH_SENSOR
{% endif %}
{% endif %}
[gcode_macro M900]
gcode:
{% if params.K is defined %}
SET_PRESSURE_ADVANCE ADVANCE={params.K}
{% endif %}
{% if params.T is defined %}
SET_PRESSURE_ADVANCE SMOOTH_TIME={params.T}
{% endif %}
[gcode_macro M290]
gcode:
SET_GCODE_OFFSET Z_ADJUST={params.Z}
[gcode_macro M901]
gcode:
G28
SHAPER_CALIBRATE
M118 Input shaping complete
SAVE_CONFIG
[gcode_macro M0]
gcode:
PAUSE
[gcode_macro M25]
rename_existing: M9925
gcode:
PAUSE
[gcode_macro RESPOND_INFO]
variable_S:0
gcode:
{% if params.S is defined %}
{% set s = params.S|int %}
{% if s == 0 %}
{ action_respond_info("Nozzle cooled") }
{% endif %}
{% endif %}
[gcode_macro M4027]
gcode:
G1 X{150 - printer.probe["x_offset"]} Y{150 - printer.probe["y_offset"]} F9000
probe
SAVE_Z_OFFSET_TO_BED_MESH
G1 z10 F600
SET_GCODE_OFFSET Z=0 MOVE=1
BED_MESH_CALIBRATE
G0 Z50 F600
G0 X0 Y0 F9000
M400
M118 Bed mesh calibrate complete
SAVE_CONFIG
[gcode_macro M4028]
gcode:
G28
get_zoffset
M400
M118 Position init complete
[gcode_macro M4029]
gcode:
M104 S140
2024-10-23 20:11:58 +08:00
M141 S0
2024-09-02 15:08:35 +08:00
SAVE_VARIABLE VARIABLE=z_offset VALUE=0
G28
M400
M118 Position init complete
2024-10-23 20:11:58 +08:00
2024-09-02 15:08:35 +08:00
CLEAR_NOZZLE HOTEND=280
G28
get_zoffset
[gcode_macro M4030]
gcode:
BED_MESH_CLEAR
SET_GCODE_OFFSET Z=0 MOVE=0
G28
get_zoffset
G1 X150 Y150 F9000
G1 Z0 F600
[gcode_macro M4031]
gcode:
SET_KINEMATIC_POSITION Z=20
G1 Z30 F300
SET_TMC_CURRENT STEPPER=stepper_z CURRENT={printer.configfile.settings['tmc2209 stepper_z'].run_current * 0.7 }
SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={printer.configfile.settings['tmc2209 stepper_z1'].run_current * 0.7 }
REVERSE_HOMING
SET_TMC_CURRENT STEPPER=stepper_z CURRENT={printer.configfile.settings['tmc2209 stepper_z'].run_current}
SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={printer.configfile.settings['tmc2209 stepper_z1'].run_current}
G91
G1 Z-30 F600
G90
SET_TMC_CURRENT STEPPER=stepper_z CURRENT={printer.configfile.settings['tmc2209 stepper_z'].run_current * 0.7 }
SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={printer.configfile.settings['tmc2209 stepper_z1'].run_current * 0.7 }
REVERSE_HOMING
SET_TMC_CURRENT STEPPER=stepper_z CURRENT={printer.configfile.settings['tmc2209 stepper_z'].run_current}
SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={printer.configfile.settings['tmc2209 stepper_z1'].run_current}
G91
G1 Z-30 F600
G90
[gcode_macro M603]
description: Unload filament
gcode:
{% set hotendtemp = params.S|default(250)|int %}
{% set accel = printer.toolhead.max_accel|int %}
_CG28
M204 S10000
G1 Y150 F9000
G1 X305 F9000
G1 Y20 F9000
G1 Y5 F3000
G4 P500
G1 Y20 F9000
G1 Y5 F3000
G4 P500
G1 Y20 F9000
G1 X56 F12000
G1 Y310 F12000
G1 Y324 F600
G1 X95 F600
M106 S0
M109 S{hotendtemp}
M118 Heat up complete
G92 E0
G1 E5 F50
G1 E50 F200
G92 E0
G1 E-0.8 F200
G4 P300
M106 S255
M104 S{hotendtemp-100}
G4 P5000
G1 Y318 F9000
G1 Y322 F600
G1 Y318 F9000
G1 Y322 F600
G1 Y308 F30000
G1 Y324 F600
M106 S0
M400
M204 S{accel}
M118 Unload finish
[gcode_macro M604]
description: Load filament
gcode:
{% set hotendtemp = params.S|default(250)|int %}
{% set current_state = params.F|default(1)|int %}
{% set accel = printer.toolhead.max_accel|int %}
M204 S10000
M104 S{hotendtemp}
_CG28
{% if current_state == 1 %}
{% if (printer.gcode_move.position.y) > 300 %}
G91
G1 Y-20 F9000
G90
{% endif %}
G1 X95 F12000
G1 Y312 F12000
G1 Y316 F600
G1 Y320 F9000
G1 Y324 F600
{% endif %}
M109 S{hotendtemp}
M118 Heat up complete
G1 X95 F600
G1 Y324 F600
G92 E0
G1 E5 F50
G92 E0
G1 E120 F300
G92 E0
G1 E-0.8 F200
G4 P300
M106 S255
M104 S{hotendtemp-100}
G4 P5000
G1 Y318 F9000
G1 Y322 F600
G1 Y318 F9000
G1 Y322 F600
G1 Y308 F30000
G1 Y324 F600
M106 S0
M400
M204 S{accel}
M118 Load finish
[output_pin sound]
pin:PA1
value:0
[gcode_macro beep_on]
gcode:
SET_PIN PIN=sound VALUE=1
[gcode_macro beep_off]
gcode:
SET_PIN PIN=sound VALUE=0
[gcode_arcs]
2024-09-21 08:50:04 +08:00
resolution: 0.5
2024-09-02 15:08:35 +08:00
[gcode_macro M109]
rename_existing: M99109
gcode:
{% set s = params.S|float %}
M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
{% endif %}
[exclude_object]
[gcode_macro G31]
gcode:
SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=1
[gcode_macro G32]
gcode:
SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=0
[gcode_macro G29]
variable_k:1
gcode:
{% set temp = printer["heater_generic chamber"].target %}
M141 S0
2024-11-16 16:43:17 +08:00
{% if temp > 0 %}
G4 P15000
{% endif %}
2024-09-02 15:08:35 +08:00
BED_MESH_CLEAR
{% if k|int==1 %}
G28
get_zoffset
M141 S{temp}
G1 X{150 - printer.probe["x_offset"]} Y{150 - printer.probe["y_offset"]} F9000
G1 Z10 F600
probe
SAVE_Z_OFFSET_TO_BED_MESH
G1 z10 F600
BED_MESH_CALIBRATE PROFILE=kamp
SAVE_VARIABLE VARIABLE=profile_name VALUE='"kamp"'
G4 P5000
SAVE_CONFIG_QD
{% else %}
g28
get_zoffset
2024-11-16 16:43:17 +08:00
{% if printer["bed_mesh"].profiles.default %}
BED_MESH_PROFILE LOAD=default
SAVE_VARIABLE VARIABLE=profile_name VALUE='"default"'
{% else %}
G1 X{150 - printer.probe["x_offset"]} Y{150 - printer.probe["y_offset"]} F9000
G1 Z10 F600
probe
SAVE_Z_OFFSET_TO_BED_MESH
G1 z10 F600
_BED_MESH_CALIBRATE PROFILE=default
G4 P5000
SAVE_CONFIG_QD
{% endif %}
2024-09-02 15:08:35 +08:00
{% endif %}
[gcode_macro M204]
rename_existing: M99204
gcode:
{% if params.S is defined %}
{% set s = params.S|float %}
{% endif %}
{% if params.P is defined %}
{% if params.T is defined %}
{% set s = [params.P|float ,params.T|float] | min %}
{% endif %}
{% endif %}
SET_VELOCITY_LIMIT ACCEL={s}
SET_VELOCITY_LIMIT ACCEL_TO_DECEL={s/2}
[gcode_macro Z_VIBRATE]
gcode:
m204 S400
G90
G0 Z4
G91
#G4 P3000
SET_PIN PIN=ctlyd VALUE=1
{% for z in range(1,50) %}
G1 Z1 F1200
# G4 P50
G1 Z-1 F1200
# G4 P50
{% endfor %}
M204 S100
SET_PIN PIN=ctlyd VALUE=0
G4 P1000
G1 Z4
G90