Files
2024-07-06 12:55:41 +02:00

388 lines
15 KiB
INI

###################################################
#######>>>>>>>>>> 3DPrintDemon <<<<<<<<<<<#######
####### https://github.com/3DPrintDemon #######
# The idea for this macro is inspired by the contribution of Karl L, his original macro is at the end of this file
[gcode_macro AUTO_BED_MESH_BUILDER]
gcode:
{% set start_vars = printer["gcode_macro _START_VARIABLES"] %}
{% set mesh_vars = printer["gcode_macro _MESH_BUILDER_VARIABLES"] %}
{% set x_park = printer.toolhead.axis_maximum.x|float / 2 %}
{% set y_park = printer.toolhead.axis_maximum.y|float / 2 %}
#############################################################################################################
{% if start_vars.printer_lights == True %}
{% if printer["Printer_Lights"] != start_vars.printer_lights_print %}
SET_PIN PIN=Printer_Lights VALUE={start_vars.printer_lights_print}
{% endif %}
{% endif %}
SET_DISPLAY_TEXT MSG="Building Bed Meshes PLEASE WAIT...."
RESPOND TYPE=echo MSG="NOTE: THIS IS A LONG MACRO! IT BUILDS 5 FULL MESHES! DO NOT PRESS SAVE CONFIG! THIS MACRO AUTO SAVES WHEN COMPLETE!! BUILDING WILL START SOON PLEASE WAIT..."
G4 P20000
G90 ; Use absoulte coordinates
M83 ; Extruder relative mode
SET_GCODE_OFFSET Z=0.0 # Reset the G-Code Z offset
BED_MESH_CLEAR # Clears currently loaded mesh
{% if start_vars.neopixel_led == True %}
STATUS_HEATING
{% endif %}
{% if printer.configfile.settings.stepper_z.endstop_pin != 'probe:z_virtual_endstop' %}
SET_HEATER_TEMPERATURE HEATER=extruder TARGET={start_vars.pla_noz_pre}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={start_vars.pla_noz_pre|float -5} MAXIMUM={start_vars.pla_noz_pre|float + 5}
{% else %}
SET_HEATER_TEMPERATURE HEATER=extruder TARGET=90
{% endif %}
_CONDITIONAL_HOME
#############################################################################################################
_Z_PARK
# G1 X{x_park} Y{y_park} Z{mesh_vars.z_park} F9000
{% if start_vars.neopixel_led == True %}
STATUS_HEATING
{% endif %}
SET_DISPLAY_TEXT MSG="Waiting For TPU Mesh Bed Temp: {mesh_vars.mesh_tpu_bed_temp}c"
RESPOND TYPE=echo MSG="Waiting For TPU Mesh Bed Temp: {mesh_vars.mesh_tpu_bed_temp}c"
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={mesh_vars.mesh_tpu_bed_temp}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={mesh_vars.mesh_tpu_bed_temp|float -2} MAXIMUM={mesh_vars.mesh_tpu_bed_temp|float + 5}
{% if start_vars.chamber_sensor == True %}
_WAIT_HANDLING_LOW_TEMP
{% else %}
_HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
{% endif %}
_PRE_MESH_LEVEL
{% if start_vars.neopixel_led == True %}
STATUS_MESHING
{% endif %}
SET_DISPLAY_TEXT MSG="TPU MESH BUILDING PLEASE WAIT"
RESPOND TYPE=echo MSG="TPU MESH BUILDING PLEASE WAIT"
G4 P5000
BED_MESH_CALIBRATE PROFILE=TPU
SET_DISPLAY_TEXT MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
RESPOND TYPE=echo MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
G4 P10000
#############################################################################################################
_Z_PARK
# G1 X{x_park} Y{y_park} Z{mesh_vars.z_park} F9000
{% if start_vars.neopixel_led == True %}
STATUS_HEATING
{% endif %}
SET_DISPLAY_TEXT MSG="Waiting For PLA Mesh Bed Temp: {mesh_vars.mesh_pla_bed_temp}c"
RESPOND TYPE=echo MSG="Waiting For PLA Mesh Bed Temp: {mesh_vars.mesh_pla_bed_temp}c"
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={mesh_vars.mesh_pla_bed_temp}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={mesh_vars.mesh_pla_bed_temp|float -2} MAXIMUM={mesh_vars.mesh_pla_bed_temp|float + 5}
{% if start_vars.chamber_sensor == True %}
_WAIT_HANDLING_LOW_TEMP
{% else %}
_HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
{% endif %}
_PRE_MESH_LEVEL
{% if start_vars.neopixel_led == True %}
STATUS_MESHING
{% endif %}
SET_DISPLAY_TEXT MSG="PLA MESH BUILDING PLEASE WAIT"
RESPOND TYPE=echo MSG="PLA MESH BUILDING PLEASE WAIT"
G4 P5000
BED_MESH_CALIBRATE PROFILE=default
SET_DISPLAY_TEXT MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
RESPOND TYPE=echo MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
G4 P10000
#############################################################################################################
_Z_PARK
# G1 X{x_park} Y{y_park} Z{mesh_vars.z_park} F9000
{% if start_vars.neopixel_led == True %}
STATUS_HEATING
{% endif %}
SET_DISPLAY_TEXT MSG="Waiting For PETG Mesh Bed Temp: {mesh_vars.mesh_petg_bed_temp}c"
RESPOND TYPE=echo MSG="Waiting For PETG Mesh Bed Temp: {mesh_vars.mesh_petg_bed_temp}c"
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={mesh_vars.mesh_petg_bed_temp}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={mesh_vars.mesh_petg_bed_temp|float -2} MAXIMUM={mesh_vars.mesh_petg_bed_temp|float + 5}
{% if start_vars.chamber_sensor == True %}
_WAIT_HANDLING_LOW_TEMP
{% else %}
_HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
{% endif %}
_PRE_MESH_LEVEL
{% if start_vars.neopixel_led == True %}
STATUS_MESHING
{% endif %}
SET_DISPLAY_TEXT MSG="PETG MESH BUILDING PLEASE WAIT"
RESPOND TYPE=echo MSG="PETG MESH BUILDING PLEASE WAIT"
G4 P5000
BED_MESH_CALIBRATE PROFILE=PETG
SET_DISPLAY_TEXT MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
RESPOND TYPE=echo MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
G4 P10000
#############################################################################################################
_Z_PARK
# G1 X{x_park} Y{y_park} Z{mesh_vars.z_park} F9000
{% if start_vars.neopixel_led == True %}
STATUS_HEATING
{% endif %}
SET_DISPLAY_TEXT MSG="Waiting For ASA Mesh Bed Temp: {mesh_vars.mesh_asa_bed_temp}c"
RESPOND TYPE=echo MSG="Waiting For ASA Mesh Bed Temp: {mesh_vars.mesh_asa_bed_temp}c"
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={mesh_vars.mesh_asa_bed_temp}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={mesh_vars.mesh_asa_bed_temp|float -2} MAXIMUM={mesh_vars.mesh_asa_bed_temp|float + 5}
{% if start_vars.chamber_sensor == True %}
_WAIT_HANDLING_HIGH_TEMP
{% else %}
_HEAT_WAIT MINUTES={start_vars.hi_temp_timer}
{% endif %}
_PRE_MESH_LEVEL
{% if start_vars.neopixel_led == True %}
STATUS_MESHING
{% endif %}
SET_DISPLAY_TEXT MSG="ASA MESH BUILDING PLEASE WAIT"
RESPOND TYPE=echo MSG="ASA MESH BUILDING PLEASE WAIT"
G4 P5000
BED_MESH_CALIBRATE PROFILE=ASA
SET_DISPLAY_TEXT MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
RESPOND TYPE=echo MSG="DO NOT SAVE CONFIG - MACRO IS STILL RUNNING!"
G4 P10000
#############################################################################################################
_Z_PARK
# G1 X{x_park} Y{y_park} Z{mesh_vars.z_park} F9000
{% if start_vars.neopixel_led == True %}
STATUS_HEATING
{% endif %}
SET_DISPLAY_TEXT MSG="Waiting For ABS Mesh Bed Temp: {mesh_vars.mesh_abs_bed_temp}c"
RESPOND TYPE=echo MSG="Waiting For ABS Mesh Bed Temp: {mesh_vars.mesh_abs_bed_temp}c"
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={mesh_vars.mesh_abs_bed_temp}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={mesh_vars.mesh_abs_bed_temp|float -2} MAXIMUM={mesh_vars.mesh_abs_bed_temp|float + 5}
{% if start_vars.chamber_sensor == True %}
_WAIT_HANDLING_HIGH_TEMP
{% else %}
_HEAT_WAIT MINUTES={start_vars.hi_temp_timer}
{% endif %}
_PRE_MESH_LEVEL
{% if start_vars.neopixel_led == True %}
STATUS_MESHING
{% endif %}
SET_DISPLAY_TEXT MSG="ABS MESH BUILDING PLEASE WAIT"
RESPOND TYPE=echo MSG="ABS MESH BUILDING PLEASE WAIT"
G4 P5000
BED_MESH_CALIBRATE PROFILE=ABS
#############################################################################################################
SET_DISPLAY_TEXT MSG="PARKING TOOLHEAD PLEASE WAIT..."
RESPOND TYPE=echo MSG="PARKING TOOLHEAD PLEASE WAIT..."
G4 P10000
_TOOLHEAD_PARK_PAUSE_CANCEL
M104 S0 # kill extruder temperature
M140 S0 # kill bed temperature
M84 X Y E # DISABLE ALL STEPPERS BUT Z
M400
SET_DISPLAY_TEXT MSG="ALL BED MESHES BUILT. MACRO COMPLETE!"
RESPOND TYPE=echo MSG="ALL BED MESHES BUILT. MACRO COMPLETE!"
# {% if start_vars.chamber_fan == True %}
# SET_TEMPERATURE_FAN_TARGET temperature_fan="chamber" target={start_vars.post_print_cool}
# {% endif %}
{% if start_vars.printer_lights == True %}
{% if printer["Printer_Lights"] != start_vars.printer_lights_finish %}
SET_PIN PIN=Printer_Lights VALUE={start_vars.printer_lights_finish}
{% if start_vars.neopixel_led == True and start_vars.neopixel_off == True %}
STATUS_OFF
{% endif %}
{% endif %}
{% endif %}
M400
G4 P5000
SET_DISPLAY_TEXT MSG="SAVING CONFIG PLEASE WAIT..."
RESPOND TYPE=echo MSG="SAVING CONFIG PLEASE WAIT..."
G4 P5000
SAVE_CONFIG
[gcode_macro _WAIT_HANDLING_LOW_TEMP]
gcode:
{% set start_vars = printer["gcode_macro _START_VARIABLES"] %}
{% set mesh_vars = printer["gcode_macro _MESH_BUILDER_VARIABLES"] %}
{% if start_vars.chamber_fan == True %}
{% if printer["temperature_fan chamber"].temperature <mesh_vars.lo_heat_soak_threshold %}
{% if start_vars.chamber_temp_wait == True %}
SET_DISPLAY_TEXT MSG="Waiting For Chamber Temp: {mesh_vars.lo_heat_soak_threshold}c"
RESPOND TYPE=echo MSG="Waiting For Chamber Temp: {mesh_vars.lo_heat_soak_threshold}c"
TEMPERATURE_WAIT SENSOR="temperature_fan chamber" MINIMUM={mesh_vars.lo_heat_soak_threshold|float}
{% else %}
_HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
{% endif %}
{% else %}
M117 Already up to temp, heat soak skipped
G4 P5000
{% endif %}
{% elif start_vars.chamber_sensor == True %}
{% if printer["temperature_sensor Chamber_Temp"].temperature <mesh_vars.lo_heat_soak_threshold %}
{% if start_vars.chamber_temp_wait == True %}
SET_DISPLAY_TEXT MSG="Waiting For Chamber Temp: {mesh_vars.lo_heat_soak_threshold}c"
RESPOND TYPE=echo MSG="Waiting For Chamber Temp: {mesh_vars.lo_heat_soak_threshold}c"
TEMPERATURE_WAIT SENSOR="temperature_sensor Chamber_Temp" MINIMUM={mesh_vars.lo_heat_soak_threshold|float}
{% else %}
_HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
{% endif %}
{% else %}
M117 Already up to temp, heat soak skipped
G4 P5000
{% endif %}
{% endif %}
[gcode_macro _WAIT_HANDLING_HIGH_TEMP]
gcode:
{% set start_vars = printer["gcode_macro _START_VARIABLES"] %}
{% set mesh_vars = printer["gcode_macro _MESH_BUILDER_VARIABLES"] %}
{% if start_vars.chamber_fan == True %}
{% if printer["temperature_fan chamber"].temperature <mesh_vars.hi_heat_soak_threshold %}
{% if start_vars.chamber_temp_wait == True %}
SET_DISPLAY_TEXT MSG="Waiting For Chamber Temp: {mesh_vars.hi_heat_soak_threshold}c"
RESPOND TYPE=echo MSG="Waiting For Chamber Temp: {mesh_vars.hi_heat_soak_threshold}c"
TEMPERATURE_WAIT SENSOR="temperature_fan chamber" MINIMUM={mesh_vars.hi_heat_soak_threshold|float}
{% else %}
_HEAT_WAIT MINUTES={start_vars.hi_temp_timer}
{% endif %}
{% else %}
M117 Already up to temp, heat soak skipped
G4 P5000
{% endif %}
{% elif start_vars.chamber_sensor == True %}
{% if printer["temperature_sensor Chamber_Temp"].temperature <mesh_vars.hi_heat_soak_threshold %}
{% if start_vars.chamber_temp_wait == True %}
SET_DISPLAY_TEXT MSG="Waiting For Chamber Temp: {mesh_vars.hi_heat_soak_threshold}c"
RESPOND TYPE=echo MSG="Waiting For Chamber Temp: {mesh_vars.hi_heat_soak_threshold}c"
TEMPERATURE_WAIT SENSOR="temperature_sensor Chamber_Temp" MINIMUM={mesh_vars.hi_heat_soak_threshold|float}
{% else %}
_HEAT_WAIT MINUTES={start_vars.hi_temp_timer}
{% endif %}
{% else %}
M117 Already up to temp, heat soak skipped
G4 P5000
{% endif %}
{% endif %}
[gcode_macro _PRE_MESH_LEVEL]
gcode:
{% set start_vars = printer["gcode_macro _START_VARIABLES"] %}
_CONDITIONAL_CLEAN
{% if start_vars.neopixel_led == True %}
STATUS_LEVELING
{% endif %}
G28 Z
_ADAPTIVE_LEVELLING
_CONDITIONAL_CLEAN
G28 Z
[gcode_macro _MESH_BUILDER_VERSION]
variable_demon_mesh_builder: 1.2
gcode:
# Original contribution by Karl L, his macro he kindly shared follows
# [gcode_macro CREATE_BED_MESHES]
# description: Create bed meshes for DEMON Essentials with different temperatures for PLA, ASA, ABS, PETG, TPU
# gcode:
# {% set start_vars = printer["gcode_macro _START_VARIABLES"] %}
# M117 Calibrate Bed Meshes for DEMON Essentials
# M104 S180 # set extruder temp tp 180
# G28 # Auto home
# BED_MESH_CLEAR
# M109 S180 # set extruder temp to 180 and wait for it
# # Following sections should be sorted according temperature
# # Material: TPU mesh profile: "TPU"
# M117 Creating Bed Mesh for "TPU"
# M190 S40 # set bed temp and wait for it
# _HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
# BED_MESH_CALIBRATE PROFILE=TPU
# M117 Do NOT save the config yet!
# # Material: PLA mesh profile: "default"
# M117 Creating Bed Mesh for "PLA"
# M190 S60 # set bed temp and wait for it
# _HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
# BED_MESH_CALIBRATE PROFILE=default
# M117 Do NOT save the config yet!
# # Material: PETG mesh profile: "PETG"
# M117 Creating Bed Mesh for "PETG"
# M190 S75 # set bed temp and wait for it
# _HEAT_WAIT MINUTES={start_vars.lo_temp_timer}
# BED_MESH_CALIBRATE PROFILE=PETG
# M117 Do NOT save the config yet!
# # Material: ASA mesh profile: "ASA"
# M117 Creating Bed Mesh for "ASA"
# M190 S85 # set bed temp and wait for it
# _HEAT_WAIT MINUTES={start_vars.hi_temp_timer}
# BED_MESH_CALIBRATE PROFILE=ASA
# M117 Do NOT save the config yet!
# # Material: ABS mesh profile: "ABS"
# M117 Creating Bed Mesh for "ABS"
# M190 S95 # set bed temp and wait for it
# _HEAT_WAIT MINUTES={start_vars.hi_temp_timer}
# BED_MESH_CALIBRATE PROFILE=ABS
# # Finish and clean up
# M117 Bed Meshes created
# _TOOLHEAD_PARK_PAUSE_CANCEL
# M104 S0 # kill extruder temp
# M140 S0 # kill bed temp
# M84 X Y E # disable all steppers but Z
# BED_MESH_CLEAR
# M117 Now do SAVE_CONFIG!