Files
k1-klipper/gcode_macro.cfg

611 lines
20 KiB
INI

# K1
# CreateDate: 2023/03/21
[gcode_macro PRINTER_PARAM]
variable_z_safe_pause: 0.0
variable_z_safe_g28: 3.0
variable_max_x_position: 220.0
variable_max_y_position: 220.0
variable_max_z_position: 250.0
variable_fans: 3
variable_auto_g29: 0
variable_fan0_min: 25
variable_fan1_min: 50
variable_fan2_min: 180
variable_fan2_speed: 0
variable_hotend_temp: 0
variable_e_min_current: 0.27
gcode:
[gcode_macro AUTOTUNE_SHAPERS]
#variable_autotune_shapers: 'ei'
gcode:
[gcode_macro LOAD_MATERIAL_CLOSE_FAN2]
variable_fan2_value: 0
gcode:
SAVE_GCODE_STATE NAME=myMoveState
{% if printer['output_pin fan2'].value > 0.0 %}
SET_GCODE_VARIABLE MACRO=LOAD_MATERIAL_CLOSE_FAN2 VARIABLE=fan2_value VALUE={printer['output_pin fan2'].value}
M107 P2
{% endif %}
RESTORE_E_CURRENT
[gcode_macro LOAD_MATERIAL_RESTORE_FAN2]
gcode:
{% set fan2_value = printer['gcode_macro LOAD_MATERIAL_CLOSE_FAN2'].fan2_value|float %}
RESTORE_GCODE_STATE NAME=myMoveState
{% if fan2_value > 0.0 %}
{% set s_value = (fan2_value * 255 - printer["gcode_macro PRINTER_PARAM"].fan2_min) * 255 / (255 - printer["gcode_macro PRINTER_PARAM"].fan2_min) %}
M106 P2 S{s_value}
SET_GCODE_VARIABLE MACRO=LOAD_MATERIAL_CLOSE_FAN2 VARIABLE=fan2_value VALUE=0
{% endif %}
SET_E_MIN_CURRENT
[gcode_macro SET_E_MIN_CURRENT]
gcode:
{% set e_current = printer['gcode_macro PRINTER_PARAM'].e_min_current %}
M400
SET_TMC_CURRENT STEPPER=extruder CURRENT={e_current} HOLDCURRENT={e_current}
G4 P2000
[gcode_macro RESTORE_E_CURRENT]
gcode:
{% set e_current = printer.configfile.settings['tmc2209 extruder'].run_current %}
M400
SET_TMC_CURRENT STEPPER=extruder CURRENT={e_current} HOLDCURRENT={e_current}
G4 P2000
[gcode_macro LOAD_MATERIAL]
gcode:
LOAD_MATERIAL_CLOSE_FAN2
M109 S{printer.custom_macro.default_extruder_temp}
G91
G1 E80 F180
LOAD_MATERIAL_RESTORE_FAN2
[gcode_macro QUIT_MATERIAL]
gcode:
SAVE_GCODE_STATE NAME=myMoveState
M109 S{printer.custom_macro.default_extruder_temp}
G91
G1 E20 F180
G1 E-30 F180
G1 E-50 F2000
RESTORE_GCODE_STATE NAME=myMoveState
[gcode_macro Qmode]
variable_flag: 0
variable_accel: 0
variable_accel_to_decel: 0
variable_velocity: 0
variable_square_corner_velocity: 0
variable_pressure_advance:0.0
variable_fan0_value: 0.00
variable_fan1_value: 0.00
variable_fan2_value: 0.00
variable_speed_factor: 0
gcode:
{% set printer_state = printer.print_stats.state %}
{% if printer['gcode_macro Qmode'].flag|int == 0 %}
{% if printer_state == "printing" or printer_state == "paused" %}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=accel VALUE={printer.toolhead.max_accel}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=accel_to_decel VALUE={printer.toolhead.max_accel_to_decel}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=velocity VALUE={printer.toolhead.max_velocity}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=square_corner_velocity VALUE={printer.toolhead.square_corner_velocity}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=pressure_advance VALUE={printer.extruder.pressure_advance}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=speed_factor VALUE={printer.gcode_move.speed_factor}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan0_value VALUE={printer['output_pin fan0'].value}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan1_value VALUE={printer['output_pin fan1'].value}
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan2_value VALUE={printer['output_pin fan2'].value}
SET_TMC_FIELD STEPPER=stepper_x FIELD=en_spreadcycle VALUE=0
SET_TMC_FIELD STEPPER=stepper_y FIELD=en_spreadcycle VALUE=0
# Set Motion Parameters
SET_VELOCITY_LIMIT ACCEL=5000
SET_VELOCITY_LIMIT ACCEL_TO_DECEL=2500
SET_VELOCITY_LIMIT VELOCITY=200
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=5
SET_PRESSURE_ADVANCE ADVANCE=0.05
M220 S50
M106 P0 S80
M106 P1 S0
M106 P2 S0
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=flag VALUE=1
{% endif %}
{% endif %}
[gcode_macro Qmode_exit]
gcode:
{% set printer_state = printer.print_stats.state %}
{% if printer['gcode_macro Qmode'].flag|int == 1 %}
{% if printer_state == "printing" or printer_state == "paused" %}
SET_VELOCITY_LIMIT ACCEL={printer['gcode_macro Qmode'].accel}
SET_VELOCITY_LIMIT ACCEL_TO_DECEL={printer['gcode_macro Qmode'].accel_to_decel}
SET_VELOCITY_LIMIT VELOCITY={printer['gcode_macro Qmode'].velocity}
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={printer['gcode_macro Qmode'].square_corner_velocity}
SET_PRESSURE_ADVANCE ADVANCE={printer['gcode_macro Qmode'].pressure_advance}
M220 S{printer['gcode_macro Qmode'].speed_factor * 100}
M106 P0 S{(printer['gcode_macro Qmode'].fan0_value * 255 + 0.5)|int}
M106 P1 S{(printer['gcode_macro Qmode'].fan1_value * 255 + 0.5)|int}
M106 P2 S{(printer['gcode_macro Qmode'].fan2_value * 255 + 0.5)|int}
SET_TMC_FIELD STEPPER=stepper_x FIELD=en_spreadcycle VALUE=1
SET_TMC_FIELD STEPPER=stepper_y FIELD=en_spreadcycle VALUE=1
SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=flag VALUE=0
{% endif %}
{% endif %}
[gcode_macro M204]
rename_existing: M204.1
gcode:
{% if printer['gcode_macro Qmode'].flag|int == 0 %}
{% set get_params = "" %}
{% if 'S' in params|upper %}
{% set get_params = (get_params + ' ' + 'S' + params.S) %}
{% endif %}
{% if 'P' in params|upper %}
{% set get_params = (get_params + ' ' + 'P' + params.P) %}
{% endif %}
{% if 'T' in params|upper %}
{% set get_params = (get_params + ' ' + 'T' + params.T) %}
{% endif %}
M204.1 {get_params}
{% endif %}
[gcode_macro M205]
gcode:
{% if 'X' in params %}
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
{% elif 'Y' in params %}
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
{% endif %}
[gcode_macro M106]
gcode:
{% set fans = printer["gcode_macro PRINTER_PARAM"].fans|int %}
{% set fan = 0 %}
{% set value = 0 %}
{% if params.P is defined %}
{% set tmp = params.P|int %}
{% if tmp < fans %}
{% set fan = tmp %}
{% endif %}
{% endif %}
{% if params.S is defined %}
{% set tmp = params.S|float %}
{% else %}
{% set tmp = 255 %}
{% endif %}
{% if tmp > 0 %}
{% if fan == 0 %}
{% set value = printer["gcode_macro PRINTER_PARAM"].fan0_min + (255 - printer["gcode_macro PRINTER_PARAM"].fan0_min) / 255 * tmp %}
{% endif %}
{% if fan == 1 %}
{% set value = printer["gcode_macro PRINTER_PARAM"].fan1_min + (255 - printer["gcode_macro PRINTER_PARAM"].fan1_min) / 255 * tmp %}
{% endif %}
{% if fan == 2 %}
{% set value = printer["gcode_macro PRINTER_PARAM"].fan2_min + (255 - printer["gcode_macro PRINTER_PARAM"].fan2_min) / 255 * tmp %}
{% endif %}
{% endif %}
{% if value >= 255 %}
{% set value = 255 %}
{% endif %}
SET_PIN PIN=fan{fan} VALUE={value}
[gcode_macro M107]
gcode:
{% set fans = printer["gcode_macro PRINTER_PARAM"].fans|int %}
{% if params.P is defined %}
{% if params.P|int < fans %}
SET_PIN PIN=fan{params.P|int} VALUE=0
{% else %}
SET_PIN PIN=fan0 VALUE=0
{% endif %}
{% else %}
SET_PIN PIN=fan0 VALUE=0
SET_PIN PIN=fan2 VALUE=0
{% endif %}
[gcode_macro M900]
gcode:
{% if 'K' in params %}
{% if 'E' in params %}
SET_PRESSURE_ADVANCE EXTRUDER={params.E} ADVANCE={params.K}
{% else %}
SET_PRESSURE_ADVANCE ADVANCE={params.K}
{% endif %}
{% endif %}
[delayed_gcode wait_temp]
# initial_duration: 2.
gcode:
{% set cur_temp = printer.extruder.temperature %}
{% if cur_temp|int < 40 %}
{action_respond_info("end_temp!\n")}
WAIT_TEMP_END
{% else %}
{action_respond_info("cur_temp = %s \n" % (cur_temp))}
UPDATE_DELAYED_GCODE ID=wait_temp DURATION=5
{% endif %}
[gcode_macro WAIT_TEMP_START]
gcode:
UPDATE_DELAYED_GCODE ID=wait_temp DURATION=1
M106 P0 S255
# M106 P2 S255
[gcode_macro WAIT_TEMP_END]
gcode:
UPDATE_DELAYED_GCODE ID=wait_temp DURATION=0
M106 P0 S0
# M106 P2 S0
[gcode_macro PRINT_CALIBRATION]
# This part of the command is replaced by the application side without passing parameters
gcode:
CX_PRINT_LEVELING_CALIBRATION
[gcode_macro FIRST_FLOOR_PAUSE_POSITION]
gcode:
{% set extruder_temp = printer.custom_macro.g28_ext_temp %}
M104 S{extruder_temp}
{% set y_park = printer.toolhead.axis_maximum.y/2 %}
{% set x_park = printer['gcode_macro PRINTER_PARAM'].max_x_position|float + 1 %}
G90
G1 Z2 F600
G1 X{x_park} Y{y_park} F6000
G1 Z0.2 F600
[gcode_macro ACCURATE_G28]
gcode:
ACCURATE_HOME_Z
[gcode_macro START_PRINT]
variable_prepare: 0
gcode:
WAIT_TEMP_END
CLEAR_PAUSE
{% set g28_extruder_temp = printer.custom_macro.g28_ext_temp %}
{% set bed_temp = printer.custom_macro.default_bed_temp %}
{% set extruder_temp = printer.custom_macro.default_extruder_temp %}
{% if 'BED_TEMP' in params|upper and (params.BED_TEMP|float) %}
{% set bed_temp = params.BED_TEMP %}
{% endif %}
{% if 'EXTRUDER_TEMP' in params|upper and (params.EXTRUDER_TEMP|float) %}
{% set extruder_temp = params.EXTRUDER_TEMP %}
{% endif %}
{% if printer['gcode_macro START_PRINT'].prepare|int == 0 %}
{action_respond_info("not prepare.\n")}
PRINT_PREPARE_CLEAR
CX_ROUGH_G28 EXTRUDER_TEMP={extruder_temp} BED_TEMP={bed_temp}
CX_NOZZLE_CLEAR
ACCURATE_G28
CX_PRINT_LEVELING_CALIBRATION
{% else %}
PRINT_PREPARE_CLEAR
{% endif %}
CX_PRINT_DRAW_ONE_LINE
[gcode_macro PRINT_PREPARED]
gcode:
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=prepare VALUE=1
{action_respond_info("print prepared")}
[gcode_macro PRINT_PREPARE_CLEAR]
gcode:
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=prepare VALUE=0
[gcode_macro END_PRINT_POINT_WITHOUT_LIFTING]
gcode:
{% if "xyz" in printer.toolhead.homed_axes %}
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
G91
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-1.0 F180
G1 E-{E} F4000
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
G1 Z2.0 F600
G90
{% set y_park = printer.toolhead.axis_maximum.y/2 %}
{% set x_park = printer.toolhead.axis_maximum.x|float - 10.0 %}
G1 X{x_park} Y{y_park} F30000
{% else %}
{action_respond_info("end print xyz_axes is NULL\n")}
{% endif %}
[gcode_macro END_PRINT_POINT]
gcode:
{% if "xyz" in printer.toolhead.homed_axes %}
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
{% set max_z = printer["gcode_macro PRINTER_PARAM"].max_z_position|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% set z_safe = 0.0 %}
{% if act_z < (max_z / 2) %}
{% set z_safe = (max_z / 2) - act_z %}
{% elif act_z < max_z %}
{% set z_safe = 2.0 %}
{% endif %}
G91
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-1.0 F180
G1 E-{E} F4000
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
G1 Z2.0 F600
G90
{% set y_park = printer.toolhead.axis_maximum.y/2 %}
{% set x_park = printer.toolhead.axis_maximum.x|float - 10.0 %}
G1 X{x_park} Y{y_park} F30000
{% if z_safe > 2.0 %}
G91
{% set z_safe = z_safe - 2.0 %}
G1 Z{z_safe} F600
G90
{% endif %}
{% else %}
{action_respond_info("end print xyz_axes is NULL\n")}
{% endif %}
[gcode_macro END_PRINT]
gcode:
# Qmode_exit
PRINT_PREPARE_CLEAR
M220 S100
M204 S500
TURN_OFF_HEATERS
M107 P1
M107 P2
END_PRINT_POINT
#WAIT_TEMP_START
M84
[gcode_macro FIRST_FLOOR_PAUSE]
description: Pause the first floor print
# change this if you need more or less extrusion
variable_extrude: 2.0
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro FIRST_FLOOR_PAUSE"].extrude|float %}
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set y_park = printer.toolhead.axis_maximum.y/2 %}
{% set x_park = printer.toolhead.axis_maximum.x|float - 10.0 %}
##### calculate save lift position #####
{% set max_z = printer["gcode_macro PRINTER_PARAM"].max_z_position|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% set z_safe = 0.0 %}
{% if act_z < (max_z - 2.0) %}
{% set z_safe = 2.0 %}
{% elif act_z < max_z %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=z_safe_pause VALUE={z_safe|float}
PAUSE_BASE
G91
{% if "xyz" in printer.toolhead.homed_axes %}
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-1.0 F180
G1 E-{E} F4000
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
G1 Z{z_safe} F600
G90
G1 X{x_park} Y{y_park} F30000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
# save fan2 value and turn off fan2
SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=fan2_speed VALUE={printer['output_pin fan2'].value}
{% set fspeed = printer['gcode_macro PRINTER_PARAM'].fan2_speed %}
{action_respond_info("fan2_value = %s \n" % (fspeed))}
# SET_PIN PIN=fan2 VALUE=0
M106 P2 S0
SET_E_MIN_CURRENT
[gcode_macro FIRST_FLOOR_RESUME]
description: Resume the first floor print
gcode:
RESTORE_E_CURRENT
{% if printer['gcode_macro PRINTER_PARAM'].fan2_speed > 0 %}
# {% set fspeed = printer['gcode_macro PRINTER_PARAM'].fan2_speed %}
# {action_respond_info("fan2_value2 = %s \n" % (fspeed))}
# SET_PIN PIN=fan2 VALUE={(printer['gcode_macro PRINTER_PARAM'].fan2_speed * 255 + 0.5)|int}
{% set s_value = (printer['gcode_macro PRINTER_PARAM'].fan2_speed * 255 - printer['gcode_macro PRINTER_PARAM'].fan2_min) * 255 / (255 - printer['gcode_macro PRINTER_PARAM'].fan2_min)|float %}
M106 P2 S{s_value}
{% endif %}
##### read E from pause macro #####
{% set E = printer["gcode_macro FIRST_FLOOR_PAUSE"].extrude|float + 1.0 %}
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
G91
G1 E{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
M400
RESUME_BASE {get_params}
[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 2.0
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set y_park = printer.toolhead.axis_maximum.y/2 %}
{% set x_park = printer.toolhead.axis_maximum.x|float - 10.0 %}
##### calculate save lift position #####
{% set max_z = printer["gcode_macro PRINTER_PARAM"].max_z_position|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% set z_safe = 0.0 %}
{% if act_z < 48.0 %}
{% set z_safe = 50.0 - act_z %}
{% elif act_z < (max_z - 2.0) %}
{% set z_safe = 2.0 %}
{% elif act_z < max_z %}
{% set z_safe = max_z - act_z %}
{% endif %}
{action_respond_info("z_safe = %s"% (z_safe))}
##### end of definitions #####
SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=z_safe_pause VALUE={z_safe|float}
PAUSE_BASE
G91
SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=hotend_temp VALUE={printer.extruder.target}
M104 S140
{% if "xyz" in printer.toolhead.homed_axes %}
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-1.0 F180
G1 E-{E} F4000
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
G1 Z{z_safe} F600
M400
G90
G1 X{x_park} Y{y_park} F30000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
# save fan2 value and turn off fan2
SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=fan2_speed VALUE={printer['output_pin fan2'].value}
{% set fspeed = printer['gcode_macro PRINTER_PARAM'].fan2_speed %}
{action_respond_info("fan2_value = %s \n" % (fspeed))}
# SET_PIN PIN=fan2 VALUE=0
M106 P2 S0
SET_E_MIN_CURRENT
[gcode_macro INPUTSHAPER]
gcode:
G90
G28
SHAPER_CALIBRATE
CXSAVE_CONFIG
[gcode_macro BEDPID]
gcode:
PID_CALIBRATE HEATER=heater_bed TARGET=100
SAVE_CONFIG
[gcode_macro TUNOFFINPUTSHAPER]
gcode:
SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0
[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
RESTORE_E_CURRENT
{% if printer['gcode_macro PRINTER_PARAM'].hotend_temp|int != 0 %}
{% if printer['gcode_macro PRINTER_PARAM'].hotend_temp|int > printer.extruder.temperature %}
M109 S{printer['gcode_macro PRINTER_PARAM'].hotend_temp|int}
{% else %}
M104 S{printer['gcode_macro PRINTER_PARAM'].hotend_temp|int}
{% endif %}
SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=hotend_temp VALUE=0
{% endif %}
{% if printer['gcode_macro PRINTER_PARAM'].fan2_speed > 0 %}
# {% set fspeed = printer['gcode_macro PRINTER_PARAM'].fan2_speed %}
# {action_respond_info("fan2_value2 = %s \n" % (fspeed))}
# SET_PIN PIN=fan2 VALUE={(printer['gcode_macro PRINTER_PARAM'].fan2_speed * 255 + 0.5)|int}
{% set s_value = (printer['gcode_macro PRINTER_PARAM'].fan2_speed * 255 - printer['gcode_macro PRINTER_PARAM'].fan2_min) * 255 / (255 - printer['gcode_macro PRINTER_PARAM'].fan2_min)|float %}
M106 P2 S{s_value}
{% endif %}
{% set z_resume_move = printer['gcode_macro PRINTER_PARAM'].z_safe_pause|int %}
{% if z_resume_move > 2 %}
{% set z_resume_move = z_resume_move - 2 %}
G91
G1 Z-{z_resume_move} F600
M400
{% endif %}
{action_respond_info("z_resume_move = %s"% (z_resume_move))}
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float + 1.0 %}
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
G91
G1 E{E} F2100
G90
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
M400
RESUME_BASE {get_params}
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
END_PRINT
CANCEL_PRINT_BASE
[gcode_macro G29]
gcode:
{% if 'PROBE_COUNT' in params|upper %}
{% set get_count = ('PROBE_COUNT' + params.PROBE_COUNT) %}
{%else %}
{% set get_count = "" %}
{% endif %}
{% set bed_temp = printer.custom_macro.default_bed_temp %}
{% set extruder_temp = printer.custom_macro.g28_ext_temp %}
{% set nozzle_clear_temp = printer.custom_macro.default_extruder_temp %}
{% if 'BED_TEMP' in params|upper %}
{% set bed_temp = params.BED_TEMP %}
{% endif %}
{% if 'EXTRUDER_TEMP' in params|upper %}
{% set nozzle_clear_temp = params.EXTRUDER_TEMP %}
{% endif %}
SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0
SET_FILAMENT_SENSOR SENSOR=filament_sensor_2 ENABLE=0
G28
BED_MESH_CLEAR
NOZZLE_CLEAR HOT_MIN_TEMP={extruder_temp} HOT_MAX_TEMP={nozzle_clear_temp} BED_MAX_TEMP={bed_temp}
ACCURATE_G28
M204 S5000
SET_VELOCITY_LIMIT ACCEL_TO_DECEL=5000
BED_MESH_CALIBRATE {get_count}
BED_MESH_OUTPUT
{% set y_park = printer.toolhead.axis_maximum.y/2 %}
{% set x_park = printer.toolhead.axis_maximum.x|float - 10.0 %}
G1 X{x_park} Y{y_park} F2000
CXSAVE_CONFIG
TURN_OFF_HEATERS
SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=1
SET_FILAMENT_SENSOR SENSOR=filament_sensor_2 ENABLE=1
# [gcode_macro G299]
# gcode:
# BED_MESH_CLEAR
# G28
# PRTOUCH_READY
# BED_MESH_CALIBRATE
# BED_MESH_OUTPUT