Загрузить файлы в «/»
This commit is contained in:
57
fan_monitor.cfg
Normal file
57
fan_monitor.cfg
Normal file
@@ -0,0 +1,57 @@
|
||||
# Author: alch3my#9819
|
||||
# Requires a 3-wire fan with tachometer_pin defined. https://www.klipper3d.org/Config_Reference.html#heater_fan
|
||||
# The tach wire can be connected to a spare endstop pin.
|
||||
# Don't forget a pullup (^) on the tach pin (example: tachometer_pin: ^P1.29)
|
||||
|
||||
# Monitoring loop. Begins at Klipper start.
|
||||
[delayed_gcode CHECK_ALL_FANS]
|
||||
initial_duration: 1
|
||||
gcode:
|
||||
HOTEND_FAN_CHECK
|
||||
UPDATE_DELAYED_GCODE ID=CHECK_ALL_FANS DURATION=3
|
||||
|
||||
# Change min_rpm and max_consecutive_stops to your desired values.
|
||||
[gcode_macro HOTEND_FAN_CHECK]
|
||||
variable_he_stop_count: 0
|
||||
gcode:
|
||||
{% set min_rpm = 2500|float %}
|
||||
{% set max_consecutive_stops = 3 %}
|
||||
{% set rpm = printer['heater_fan toolhead_cooling_fan'].rpm|float %}
|
||||
{% set he_target = printer[printer.toolhead.extruder].target|float %}
|
||||
{% set he_temp = printer[printer.toolhead.extruder].temperature|float %}
|
||||
{% set fan_on_temp = printer.configfile.settings['heater_fan toolhead_cooling_fan'].heater_temp|float %}
|
||||
{% set he_stop_count = printer["gcode_macro HOTEND_FAN_CHECK"].he_stop_count|int %}
|
||||
|
||||
{% if (he_target >= fan_on_temp) and (rpm < min_rpm) and (he_temp >= fan_on_temp) %}
|
||||
SET_GCODE_VARIABLE MACRO=HOTEND_FAN_CHECK VARIABLE=he_stop_count VALUE={he_stop_count + 1}
|
||||
M118 WARNING: Fan stoppage detected ({he_stop_count+1}/{max_consecutive_stops}).
|
||||
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
|
||||
RESPOND PREFIX=tgnotify MSG="Чот вентилятор термобарьера медленный"
|
||||
{% endif %}
|
||||
M400
|
||||
{% if printer["gcode_macro HOTEND_FAN_CHECK"].he_stop_count|int >= max_consecutive_stops-1 %}
|
||||
FAN_STOPPAGE_ROUTINE
|
||||
{% endif %}
|
||||
{% else %}
|
||||
SET_GCODE_VARIABLE MACRO=HOTEND_FAN_CHECK VARIABLE=he_stop_count VALUE=0
|
||||
{% endif %}
|
||||
|
||||
# Insert the gcode that you want to run when a fan stoppage is detected.
|
||||
# This runs every ~3 seconds until the stop conditions are cleared.
|
||||
[gcode_macro FAN_STOPPAGE_ROUTINE]
|
||||
gcode:
|
||||
# If not already paused
|
||||
{% if printer['pause_resume'].is_paused|int == 0 %}
|
||||
M117 !!FAN STOPPAGE!!
|
||||
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
|
||||
RESPOND PREFIX=tgnotify MSG="Вентилятор термобарьера сдох. PAUSING..."
|
||||
{% endif %}
|
||||
|
||||
M118 FAN STOPPAGE DETECTED. PAUSING...
|
||||
#PAUSE
|
||||
# Turn off the hotend.
|
||||
# !! Don't forget to turn your hotend back on before resume. !!
|
||||
# -- If using this guide's pause/resume macros (in useful_macros.html), the hotend will automatically reheat on resume
|
||||
# -- (as long as the hotend is not turned off BEFORE pause is called)
|
||||
#SET_HEATER_TEMPERATURE HEATER=extruder TARGET=0
|
||||
{% endif %}
|
||||
58
idle.cfg
Normal file
58
idle.cfg
Normal file
@@ -0,0 +1,58 @@
|
||||
[idle_timeout]
|
||||
timeout: 120
|
||||
gcode:
|
||||
UPDATE_DELAYED_GCODE ID=_FIRST_STAGE_IDLE DURATION=printer["gcode_macro RatOS"].idle_delay
|
||||
|
||||
[delayed_gcode _FIRST_STAGE_IDLE]
|
||||
gcode:
|
||||
{% if printer.idle_timeout.state == "Idle" or printer.idle_timeout.state == "Ready" %}
|
||||
{% if printer.extruder.temperature < 50.0 and printer.heater_bed.temperature < 50.0 %}
|
||||
{% if printer.extruder.target == 0.0 and printer.heater_bed.target == 0.0 %}
|
||||
UPDATE_DELAYED_GCODE ID=_FIRST_STAGE_IDLE DURATION=0
|
||||
UPDATE_DELAYED_GCODE ID=_POWER_OFF_PRINTER_CHECK DURATION=printer["gcode_macro RatOS"].poweroff_delay
|
||||
|
||||
M84
|
||||
{% else %}
|
||||
UPDATE_DELAYED_GCODE ID=_FIRST_STAGE_IDLE DURATION=2
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if printer.idle_timeout.state == "Printing" %}
|
||||
UPDATE_DELAYED_GCODE ID=_FIRST_STAGE_IDLE DURATION=0
|
||||
{% else %}
|
||||
{% if printer.extruder.target == 0.0 and printer.heater_bed.target == 0.0 %}
|
||||
UPDATE_DELAYED_GCODE ID=_FIRST_STAGE_IDLE DURATION=2
|
||||
{% else %}
|
||||
UPDATE_DELAYED_GCODE ID=_FIRST_STAGE_IDLE DURATION=0
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
[delayed_gcode _POWER_OFF_PRINTER_CHECK]
|
||||
gcode:
|
||||
{% if printer.idle_timeout.state == "Idle" or printer.idle_timeout.state == "Ready" %}
|
||||
{% if printer.extruder.temperature < 50.0 and printer.heater_bed.temperature < 50.0 %}
|
||||
{% if printer.extruder.target == 0.0 and printer.heater_bed.target == 0.0 %}
|
||||
UPDATE_DELAYED_GCODE ID=_POWER_OFF_PRINTER_CHECK DURATION=0
|
||||
M84
|
||||
{% else %}
|
||||
UPDATE_DELAYED_GCODE ID=_POWER_OFF_PRINTER_CHECK DURATION=2
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if printer.idle_timeout.state == "Printing" %}
|
||||
UPDATE_DELAYED_GCODE ID=_POWER_OFF_PRINTER_CHECK DURATION=0
|
||||
{% else %}
|
||||
{% if printer.extruder.target == 0.0 and printer.heater_bed.target == 0.0 %}
|
||||
UPDATE_DELAYED_GCODE ID=_POWER_OFF_PRINTER_CHECK DURATION=2
|
||||
{% else %}
|
||||
UPDATE_DELAYED_GCODE ID=_POWER_OFF_PRINTER_CHECK DURATION=0
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _POWER_OFF_PRINTER]
|
||||
gcode:
|
||||
{action_call_remote_method("set_device_power",
|
||||
device=printer["gcode_macro RatOS"].power_device,
|
||||
state="off")}
|
||||
852
macros.cfg
Normal file
852
macros.cfg
Normal file
@@ -0,0 +1,852 @@
|
||||
|
||||
[gcode_macro PAUSE]
|
||||
description: Pauses the printer
|
||||
rename_existing: PAUSE_BASE
|
||||
variable_extrude: 1.5
|
||||
gcode:
|
||||
SAVE_GCODE_STATE NAME=PAUSE_state
|
||||
# Define park positions
|
||||
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
|
||||
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
|
||||
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
|
||||
# Calculate safe Z position
|
||||
{% set max_z = printer.toolhead.axis_maximum.z|float %}
|
||||
{% set act_z = printer.toolhead.position.z|float %}
|
||||
{% if act_z < (max_z - 20.0) %}
|
||||
{% set z_safe = 20.0 %}
|
||||
{% else %}
|
||||
{% set z_safe = max_z - act_z %}
|
||||
{% endif %}
|
||||
PAUSE_BASE
|
||||
G91
|
||||
# Retract
|
||||
{% if printer.extruder.can_extrude|lower == 'true' %}
|
||||
G1 E-{E} F2100
|
||||
{% else %}
|
||||
{action_respond_info("Extruder not hot enough")}
|
||||
{% endif %}
|
||||
# Move to park position
|
||||
{% if "xyz" in printer.toolhead.homed_axes %}
|
||||
G1 Z{z_safe} F{z_speed}
|
||||
_PARK LOCATION={printer["gcode_macro RatOS"].pause_print_park_in} X={printer["gcode_macro RatOS"].pause_print_park_x}
|
||||
{% else %}
|
||||
{action_respond_info("Printer not homed")}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
|
||||
RESPOND PREFIX=tgnotify MSG="Принтер встал на паузу"
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].beep_enabled|lower == 'true' %}
|
||||
beep
|
||||
{% endif %}
|
||||
|
||||
|
||||
[gcode_macro RESUME]
|
||||
description: Resumes the print if the printer is paused.
|
||||
rename_existing: RESUME_BASE
|
||||
gcode:
|
||||
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
|
||||
# Prime
|
||||
{% if printer.extruder.can_extrude|lower == 'true' %}
|
||||
G91
|
||||
G1 E{E} F2100
|
||||
G90
|
||||
{% else %}
|
||||
{action_respond_info("Extruder not hot enough")}
|
||||
{% endif %}
|
||||
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1 MOVE_SPEED={printer["gcode_macro RatOS"].macro_travel_speed|float}
|
||||
RESUME_BASE
|
||||
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
|
||||
RESPOND PREFIX=tgnotify MSG="Принтер продолжил после паузы"
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro CANCEL_PRINT]
|
||||
description: Cancels the printer
|
||||
rename_existing: CANCEL_PRINT_BASE
|
||||
gcode:
|
||||
END_PRINT
|
||||
TURN_OFF_HEATERS
|
||||
CLEAR_PAUSE
|
||||
#SDCARD_RESET_FILE
|
||||
CANCEL_PRINT_BASE
|
||||
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
|
||||
RESPOND PREFIX=tgnotify MSG="Отмена печати"
|
||||
{% endif %}
|
||||
|
||||
|
||||
[gcode_macro PRIME_LINE]
|
||||
description: Prints a primeline, used internally, if configured, as part of the START_PRINT macro.
|
||||
gcode:
|
||||
SAVE_GCODE_STATE NAME=prime_line_state
|
||||
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
|
||||
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_x|lower == 'min' %}
|
||||
{% set x_start = 5 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_start_x|lower == 'max' %}
|
||||
{% set x_start = printer.toolhead.axis_maximum.x - 5 %}
|
||||
{% else %}
|
||||
{% set x_start = printer["gcode_macro RatOS"].nozzle_prime_start_x|float %}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_y|lower == 'min' %}
|
||||
{% set y_start = 5 %}
|
||||
{% set y_factor = 1 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_start_y|lower == 'max' %}
|
||||
{% set y_start = printer.toolhead.axis_maximum.y - 5 %}
|
||||
{% set y_factor = -1 %}
|
||||
{% else %}
|
||||
{% set y_start = printer["gcode_macro RatOS"].nozzle_prime_start_y|float %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_y|float < printer.toolhead.axis_maximum.y / 2 %}
|
||||
{% set y_factor = 1 %}
|
||||
{% else %}
|
||||
{% set y_factor = -1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_direction|lower == 'forwards' %}
|
||||
{% set y_factor = 1 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_direction|lower == 'backwards' %}
|
||||
{% set y_factor = -1 %}
|
||||
{% endif %}
|
||||
{% set z = printer["gcode_macro RatOS"].start_print_park_z_height|float %}
|
||||
# Absolute positioning
|
||||
G90
|
||||
# Absolute extrusion
|
||||
M82
|
||||
M117 Priming nozzle with prime line..
|
||||
RESPOND MSG="Priming nozzle with prime line.."
|
||||
# Lift to start print Z height
|
||||
G0 Z{z} F{z_speed}
|
||||
# move to blob position along the edge of the bed
|
||||
G1 X{x_start} F{speed}
|
||||
G1 Y{y_start} F{speed}
|
||||
# Get ready to prime
|
||||
G1 Z0.3 F{z_speed}
|
||||
# Reset extrusion distance
|
||||
G92 E0
|
||||
# Prime nozzle
|
||||
G1 Y{y_start + (70 * y_factor)} E16 F1200
|
||||
# Wipe
|
||||
G1 Y{y_start + (90 * y_factor)} F{speed}
|
||||
RESTORE_GCODE_STATE NAME=prime_line_state
|
||||
|
||||
[gcode_macro PRIME_BLOB]
|
||||
description: Prints a primeblob, used internally, if configured, as part of the START_PRINT macro. Slower than PRIME_LINE but much more effective.
|
||||
gcode:
|
||||
SAVE_GCODE_STATE NAME=prime_blob_state
|
||||
M117 Priming nozzle with prime blob..
|
||||
RESPOND MSG="Priming nozzle with prime blob.."
|
||||
{% if printer["gcode_macro RatOS"].filament_encoder_enabled|lower == 'true' %}
|
||||
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0
|
||||
{% endif %}
|
||||
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
|
||||
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
|
||||
{% set fan_speed = printer["gcode_macro RatOS"].nozzle_prime_bridge_fan|float %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_x|lower == 'min' %}
|
||||
{% set x_start = 5 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_start_x|lower == 'max' %}
|
||||
{% set x_start = printer.toolhead.axis_maximum.x - 5 %}
|
||||
{% else %}
|
||||
{% set x_start = printer["gcode_macro RatOS"].nozzle_prime_start_x|float %}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_y|lower == 'min' %}
|
||||
{% set y_start = 5 %}
|
||||
{% set y_factor = 1 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_start_y|lower == 'max' %}
|
||||
{% set y_start = printer.toolhead.axis_maximum.y - 5 %}
|
||||
{% set y_factor = -1 %}
|
||||
{% else %}
|
||||
{% set y_start = printer["gcode_macro RatOS"].nozzle_prime_start_y|float %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_y|float < printer.toolhead.axis_maximum.y / 2 %}
|
||||
{% set y_factor = 1 %}
|
||||
{% else %}
|
||||
{% set y_factor = -1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_direction|lower == 'forwards' %}
|
||||
{% set y_factor = 1 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_direction|lower == 'backwards' %}
|
||||
{% set y_factor = -1 %}
|
||||
{% endif %}
|
||||
{% set z = printer["gcode_macro RatOS"].start_print_park_z_height|float %}
|
||||
# Absolute positioning
|
||||
G90
|
||||
# Relative extrusion
|
||||
M83
|
||||
# Lift to start print Z height
|
||||
G0 Z{z} F{z_speed}
|
||||
# move close to blob position along the edge of the bed
|
||||
G1 X{x_start} F{speed}
|
||||
G1 Y{y_start + (15 * y_factor)} F{speed}
|
||||
# Lower to blob extrusion height
|
||||
G1 Z0.5 F{z_speed}
|
||||
# Move to final position horizontally
|
||||
G1 Y{y_start} F{speed}
|
||||
# Extrude a blob
|
||||
G1 F60 E20
|
||||
# 40% fan
|
||||
M106 S{fan_speed}
|
||||
# Move the extruder up by 5mm while extruding, breaks away from blob
|
||||
G1 Z5 F100 E5
|
||||
# Move to wipe position, but keep extruding so the wipe is attached to blob
|
||||
G1 F200 Y{y_start + (25 * y_factor)} E1
|
||||
# Go down diagonally while extruding
|
||||
# Broken down in z moves under 2mm as a workaround for a tuning tower test.
|
||||
# The tuning tower command thinks a new print has been started when z moves over 2mm and aborts.
|
||||
G1 F200 Y{y_start + (30 * y_factor)} Z3.8 E0.5
|
||||
G1 F200 Y{y_start + (35 * y_factor)} Z2.6 E0.5
|
||||
G1 F200 Y{y_start + (40 * y_factor)} Z1.4 E0.5
|
||||
G1 F200 Y{y_start + (45 * y_factor)} Z0.2 E0.5
|
||||
# 0% fan
|
||||
M106 S0
|
||||
# small wipe line
|
||||
G1 F200 Y{y_start + (50 * y_factor)} Z0.2 E0.6
|
||||
# Break away wipe
|
||||
G1 F{speed} Y{y_start + (100 * y_factor)}
|
||||
{% if printer["gcode_macro RatOS"].filament_encoder_enabled|lower == 'true' %}
|
||||
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1
|
||||
{% endif %}
|
||||
RESTORE_GCODE_STATE NAME=prime_blob_state
|
||||
|
||||
|
||||
[gcode_macro _PARK]
|
||||
gcode:
|
||||
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
|
||||
# Get X position
|
||||
{% if params.X != '' %}
|
||||
{% if params.X|float >= printer.toolhead.axis_minimum.x + 5 and params.X|float <= printer.toolhead.axis_maximum.x - 5 %}
|
||||
{% set safe_x = params.X|float %}
|
||||
{% else %}
|
||||
{action_respond_info('The requested X co-ordinate is outside the defined axis bounds - using defaults')}
|
||||
{% set safe_x = printer.toolhead.axis_maximum.x / 2 %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% set safe_x = printer.toolhead.axis_maximum.x / 2 %}
|
||||
#{% set safe_x = printer.toolhead.axis_maximum.x / 2 %}
|
||||
{% endif %}
|
||||
# Get Y position
|
||||
{% if params.LOCATION|default('back')|lower == 'back' %}
|
||||
{% set y = printer.toolhead.axis_maximum.y - 5 %}
|
||||
{% elif params.LOCATION|lower == 'front' %}
|
||||
{% set y = printer.toolhead.axis_minimum.y + 5 %}
|
||||
{% elif params.LOCATION|lower == 'center' %}
|
||||
{% set y = printer.toolhead.axis_maximum.y / 2 %}
|
||||
{% endif %}
|
||||
# Absolute positioning
|
||||
G90
|
||||
# Park
|
||||
G0 X{safe_x} Y{y} F{speed}
|
||||
|
||||
#####
|
||||
# COLOR CHANGE
|
||||
#####
|
||||
[gcode_macro M600]
|
||||
description: Executes a color change by pausing the printer an unloading the filament.
|
||||
gcode:
|
||||
PAUSE
|
||||
UNLOAD_FILAMENT
|
||||
M117 Please load new filament and resume
|
||||
RESPOND MSG="Please load new filament and resume"
|
||||
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
|
||||
RESPOND PREFIX=tgnotify MSG="Требуется замена филамента"
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].beep_enabled|lower == 'true' %}
|
||||
beep
|
||||
{% endif %}
|
||||
|
||||
|
||||
#####
|
||||
# FILAMENT MANAGEMENT
|
||||
#####
|
||||
|
||||
[gcode_macro UNLOAD_FILAMENT]
|
||||
description: Unloads the filament. Note: be careful with PETG, make sure you inspect the tip of your filament before reloading to avoid jams.
|
||||
gcode:
|
||||
SAVE_GCODE_STATE NAME=unload_state
|
||||
G91
|
||||
{% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %}
|
||||
M117 Heating...
|
||||
# Heat up hotend to provided temp or 220 as default as that should work OK with most filaments.
|
||||
M104 S{params.TEMP|default(220, true)}
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)}
|
||||
{% endif %}
|
||||
{% set unload_speed = printer["gcode_macro RatOS"].filament_unload_speed|float * 60 %}
|
||||
{% set unload_length = printer["gcode_macro RatOS"].filament_unload_length|float %}
|
||||
M117 Unloading filament...
|
||||
# Extrude a bit
|
||||
G0 E10 F300
|
||||
# Extract filament to cold end area
|
||||
G0 E-5 F3600
|
||||
# Wait for three seconds
|
||||
G4 P3000
|
||||
# Push back the filament to smash any stringing
|
||||
G0 E5 F3600
|
||||
# Extract back fast in to the cold zone
|
||||
G0 E-15 F3600
|
||||
# Continue extraction slowly, allow the filament time to cool solid before it reaches the gears
|
||||
G0 E-{unload_length} F{unload_speed}
|
||||
M117 Filament unloaded!
|
||||
RESPOND MSG="Filament unloaded! Please inspect the tip of the filament before reloading."
|
||||
RESTORE_GCODE_STATE NAME=unload_state
|
||||
|
||||
[gcode_macro LOAD_FILAMENT]
|
||||
description: Loads new filament. Note: be careful with PETG, make sure you inspect the tip of your filament before loading to avoid jams.
|
||||
gcode:
|
||||
SAVE_GCODE_STATE NAME=load_state
|
||||
G91
|
||||
# Heat up hotend to provided temp or 220 as default as that should work OK with most filaments.
|
||||
{% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %}
|
||||
FORCE_MOVE STEPPER=extruder DISTANCE=15 VELOCITY=10 ACCEL=1000
|
||||
M117 Heating...
|
||||
M104 S{params.TEMP|default(230, true)}
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(230, true)}
|
||||
{% endif %}
|
||||
{% set load_speed = printer["gcode_macro RatOS"].filament_load_speed|float * 60 %}
|
||||
{% set load_length = printer["gcode_macro RatOS"].filament_load_length|float %}
|
||||
{% set load_second_speed = printer["gcode_macro RatOS"].filament_load_second_speed|float * 60 %}
|
||||
{% set load_second_length = printer["gcode_macro RatOS"].filament_load_second_length|float %}
|
||||
|
||||
M117 Loading filament...
|
||||
# Load the filament into the hotend area.
|
||||
G0 E{load_length} F{load_speed}
|
||||
# Wait a secod
|
||||
G4 P1000
|
||||
# Purge
|
||||
G0 E{load_second_length} F{load_second_speed}
|
||||
#G0 E40 F100
|
||||
# Wait for purge to complete
|
||||
M400
|
||||
M117 Filament loaded!
|
||||
RESPOND MSG="Filament loaded!"
|
||||
RESTORE_GCODE_STATE NAME=load_state
|
||||
|
||||
[gcode_macro SET_CENTER_KINEMATIC_POSITION]
|
||||
description: FOR DEBUGGING PURPOSES ONLY. Sets the internal printer kinematic state to the center of all axes regardless of actual physical position.
|
||||
gcode:
|
||||
RESPOND MSG="WARNING: ONLY USE SET_CENTER_KINEMATIC_POSITION FOR DEBUGGING PURPOSES. YOU'RE OVERRIDING THE INTERNAL POSITIONING STATE OF THE PRINTER. PROCEED WITH CAUTION AND DO A PROPER G28 WHEN DONE."
|
||||
SET_GCODE_VARIABLE MACRO=MAYBE_HOME VARIABLE=is_kinematic_position_overriden VALUE=True
|
||||
SET_KINEMATIC_POSITION X={printer.toolhead.axis_maximum.x / 2} Y={printer.toolhead.axis_maximum.y / 2} Z={printer.toolhead.axis_maximum.z / 2}
|
||||
|
||||
[gcode_macro MAYBE_HOME]
|
||||
description: Only home unhomed axis
|
||||
variable_is_kinematic_position_overriden: False
|
||||
gcode:
|
||||
{% if printer["gcode_macro MAYBE_HOME"].is_kinematic_position_overriden|lower == 'true' %}
|
||||
RESPOND MSG="SET_CENTER_KINEMATIC_POSITION has been abused. Homing all axes. Please refrain from using SET_CENTER_KINEMATIC_POSITION outside of debugging purposes."
|
||||
G28
|
||||
SET_GCODE_VARIABLE MACRO=MAYBE_HOME VARIABLE=is_kinematic_position_overriden VALUE=False
|
||||
{% else %}
|
||||
{% set axes = '' %}
|
||||
{% set isHomed = true %}
|
||||
{% set axesToHome = '' %}
|
||||
{% if params.X is defined %}
|
||||
{% set axes = axes ~ 'X ' %}
|
||||
{% if 'x' not in printer.toolhead.homed_axes %}
|
||||
{% set isHomed = false %}
|
||||
{% set axesToHome = axesToHome ~ 'X ' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if params.Y is defined %}
|
||||
{% set axes = axes ~ 'Y ' %}
|
||||
{% if 'y' not in printer.toolhead.homed_axes %}
|
||||
{% set isHomed = false %}
|
||||
{% set axesToHome = axesToHome ~ 'Y ' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if params.Z is defined %}
|
||||
{% set axes = axes ~ 'Z ' %}
|
||||
{% if 'z' not in printer.toolhead.homed_axes %}
|
||||
{% set isHomed = false %}
|
||||
{% set axesToHome = axesToHome ~ 'Z ' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if params.X is not defined and params.Y is not defined and params.Z is not defined %}
|
||||
{% set axes = '' %}
|
||||
{% if 'x' not in printer.toolhead.homed_axes %}
|
||||
{% set isHomed = false %}
|
||||
{% set axesToHome = axesToHome ~ 'X ' %}
|
||||
{% endif %}
|
||||
{% if 'y' not in printer.toolhead.homed_axes %}
|
||||
{% set isHomed = false %}
|
||||
{% set axesToHome = axesToHome ~ 'Y ' %}
|
||||
{% endif %}
|
||||
{% if 'z' not in printer.toolhead.homed_axes %}
|
||||
{% set isHomed = false %}
|
||||
{% set axesToHome = axesToHome ~ 'Z ' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if isHomed is false %}
|
||||
M117 Homing {axesToHome}
|
||||
RESPOND MSG="Homing {axesToHome}"
|
||||
G28 {axesToHome}
|
||||
{% else %}
|
||||
RESPOND MSG="All requested axes already homed, skipping.."
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
#####
|
||||
# START PRINT MACROS
|
||||
# Call this from your slicer (custom g-code).
|
||||
# Read more here: https://rat-rig.github.io/V-CoreOS/#/slicers
|
||||
#####
|
||||
|
||||
[gcode_macro START_PRINT]
|
||||
description: Start print procedure, use this in your Slicer.
|
||||
gcode:
|
||||
CLEAR_PAUSE
|
||||
{% if printer["gcode_macro RatOS"].force_absolute_position|lower == 'true' %}
|
||||
G90
|
||||
{% endif %}
|
||||
SAVE_GCODE_STATE NAME=start_print_state
|
||||
# Metric values
|
||||
G21
|
||||
# Absolute positioning
|
||||
G90
|
||||
# Set extruder to absolute mode
|
||||
M82
|
||||
_USER_START_PRINT_BEFORE_HOMING
|
||||
# Home if needed
|
||||
MAYBE_HOME
|
||||
{% if params.CHAMBER_TEMP is defined %}
|
||||
_START_PRINT_HEAT_CHAMBER CHAMBER_TEMP={params.CHAMBER_TEMP} BED_TEMP={printer["gcode_macro RatOS"].start_print_heat_chamber_bed_temp}
|
||||
_USER_START_PRINT_HEAT_CHAMBER CHAMBER_TEMP={params.CHAMBER_TEMP} BED_TEMP={printer["gcode_macro RatOS"].start_print_heat_chamber_bed_temp}
|
||||
{% endif %}
|
||||
M117 Heating bed...
|
||||
RESPOND MSG="Heating bed..."
|
||||
# Wait for bed to heat up
|
||||
M190 S{params.BED_TEMP|default(printer.heater_bed.target, true) }
|
||||
# Run the user created "AFTER_HEATING_BED" macro
|
||||
_USER_START_PRINT_AFTER_HEATING_BED
|
||||
# Run the customizable "AFTER_HEATING_BED" macro.
|
||||
_START_PRINT_AFTER_HEATING_BED
|
||||
# Run the user created "START_PRINT_BED_MESH" macro
|
||||
_USER_START_PRINT_BED_MESH
|
||||
# Run the customizable "BED_MESH" macro
|
||||
_START_PRINT_BED_MESH X0={params.X0} X1={params.X1} Y0={params.Y0} Y1={params.Y1}
|
||||
# Start heating extruder
|
||||
M104 S{params.EXTRUDER_TEMP|default(printer.extruder.target, true) }
|
||||
# Run the users "PARK" macro
|
||||
_USER_START_PRINT_PARK
|
||||
# Run the customizable "PARK" macro
|
||||
_START_PRINT_PARK
|
||||
# Wait for extruder to heat up
|
||||
M117 Heating Extruder...
|
||||
RESPOND MSG="Heating Extruder..."
|
||||
M109 S{params.EXTRUDER_TEMP|default(printer.extruder.target, true) }
|
||||
# Run the user created "AFTER_HEATING_EXTRUDER" macro.
|
||||
_USER_START_PRINT_AFTER_HEATING_EXTRUDER
|
||||
# Run the customizable "AFTER_HEATING_EXTRUDER" macro.
|
||||
_START_PRINT_AFTER_HEATING_EXTRUDER
|
||||
M117 Printing...
|
||||
RESPOND MSG="Printing..."
|
||||
RESTORE_GCODE_STATE NAME=start_print_state
|
||||
# Set extrusion mode based on user configuration
|
||||
{% if printer["gcode_macro RatOS"].relative_extrusion|lower == 'true' %}
|
||||
M83
|
||||
{% else %}
|
||||
M82
|
||||
{% endif %}
|
||||
G92 E0
|
||||
|
||||
#####
|
||||
# START PRINT MACRO HOOKS
|
||||
# You can copy these to printer.cfg and modify them to your liking, or just use them as is.
|
||||
####
|
||||
|
||||
[gcode_macro _USER_START_PRINT_BEFORE_HOMING]
|
||||
gcode:
|
||||
|
||||
[gcode_macro _START_PRINT_AFTER_HEATING_BED]
|
||||
gcode:
|
||||
{% if printer["gcode_macro RatOS"].preheat_extruder|lower == 'true' %}
|
||||
{% set min_temp = printer["gcode_macro RatOS"].preheat_extruder_temp|float %}
|
||||
{% set max_temp = printer["gcode_macro RatOS"].preheat_extruder_temp|float + 5 %}
|
||||
M117 Pre-heating extruder...
|
||||
RESPOND MSG="Pre-heating extruder..."
|
||||
# Wait for extruder to reach a predefined preheat temp so an inductive probe (if present) is at a predictable temp.
|
||||
# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle.
|
||||
M104 S{min_temp}
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={min_temp} MAXIMUM={max_temp}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].variable_z_tilt_enabled|lower == 'true' %}
|
||||
{% set TARGET_TEMP = printer.heater_bed.target %}
|
||||
{% if printer["gcode_macro RatOS"].variable_high_power_bed|lower == 'true' %}
|
||||
M140 S0
|
||||
{% endif %}
|
||||
M117 Adjusting Z tilt...
|
||||
RESPOND MSG="Adjusting Z tilt..."
|
||||
# Adjust bed tilt
|
||||
SAVE_GCODE_STATE NAME=STATE_Z_TILT
|
||||
BED_MESH_CLEAR
|
||||
{% if not printer.z_tilt.applied %}
|
||||
Z_TILT_ADJUST horizontal_move_z=10 retry_tolerance=1
|
||||
{% endif %}
|
||||
Z_TILT_ADJUST horizontal_move_z=2
|
||||
RESTORE_GCODE_STATE NAME=STATE_Z_TILT
|
||||
|
||||
M190 S{TARGET_TEMP}
|
||||
|
||||
M117 Rehoming Z after Z tilt adjustment...
|
||||
RESPOND MSG="Rehoming Z after Z tilt adjustment..."
|
||||
# Home again as Z will have changed after tilt adjustment and bed heating.
|
||||
G28 Z
|
||||
{% endif %}
|
||||
|
||||
|
||||
[gcode_macro _USER_START_PRINT_AFTER_HEATING_BED]
|
||||
gcode:
|
||||
|
||||
[gcode_macro _START_PRINT_BED_MESH]
|
||||
gcode:
|
||||
{% set default_profile = printer["gcode_macro RatOS"].bed_mesh_profile|default('ratos') %}
|
||||
{% if printer["gcode_macro RatOS"].calibrate_bed_mesh|lower == 'true' %}
|
||||
BED_MESH_CLEAR
|
||||
{% set TARGET_TEMP = printer.heater_bed.target %}
|
||||
{% if printer["gcode_macro RatOS"].variable_high_power_bed|lower == 'true' %}
|
||||
M140 S0
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].adaptive_mesh|lower == 'true' %}
|
||||
ADAPTIVE_BED_MESH FORCE_MESH=1
|
||||
{% else %}
|
||||
BED_MESH_CALIBRATE PROFILE={default_profile}
|
||||
BED_MESH_PROFILE LOAD={default_profile}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].touch_cart_enabled|lower == 'true' %}
|
||||
CARTOGRAPHER_TOUCH ; Perform touch probe
|
||||
{% endif %}
|
||||
M190 S{TARGET_TEMP}
|
||||
{% elif printer["gcode_macro RatOS"].bed_mesh_profile is defined %}
|
||||
BED_MESH_CLEAR
|
||||
BED_MESH_PROFILE LOAD={printer["gcode_macro RatOS"].bed_mesh_profile}
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_START_PRINT_BED_MESH]
|
||||
gcode:
|
||||
|
||||
[gcode_macro _START_PRINT_PARK]
|
||||
gcode:
|
||||
{% set z = printer["gcode_macro RatOS"].start_print_park_z_height|float %}
|
||||
{% set zSpeed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
|
||||
_PARK LOCATION={printer["gcode_macro RatOS"].start_print_park_in} X={printer["gcode_macro RatOS"].start_print_park_x}
|
||||
G0 Z{z} F{zSpeed}
|
||||
|
||||
[gcode_macro _USER_START_PRINT_PARK]
|
||||
gcode:
|
||||
|
||||
[gcode_macro _START_PRINT_AFTER_HEATING_EXTRUDER]
|
||||
gcode:
|
||||
{% set has_offset = printer["gcode_macro RatOS"].probe_for_priming_result|float(9999.9) != 9999.9 %}
|
||||
{% if has_offset %}
|
||||
ADD_PRIME_PROBE_TO_OFFSET
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_priming|lower == 'primeline' %}
|
||||
PRIME_LINE
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_priming|lower == 'primeblob' %}
|
||||
PRIME_BLOB
|
||||
{% endif %}
|
||||
{% if has_offset %}
|
||||
SUBTRACT_PRIME_PROBE_FROM_OFFSET
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].skew_profile is defined %}
|
||||
SKEW_PROFILE LOAD={printer["gcode_macro RatOS"].skew_profile}
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_START_PRINT_AFTER_HEATING_EXTRUDER]
|
||||
gcode:
|
||||
|
||||
[gcode_macro _START_PRINT_HEAT_CHAMBER]
|
||||
description: Uses the extruder sensor to wait for chamber temp. Override the _START_PRINT_HEAT_CHAMBER macro to implement heated chamber handling.
|
||||
gcode:
|
||||
{% if params.CHAMBER_TEMP is defined and params.BED_TEMP is defined and params.CHAMBER_TEMP|int > 0 %}
|
||||
{% set z = printer["gcode_macro RatOS"].start_print_park_z_height|float %}
|
||||
{% set zSpeed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
|
||||
G0 Z{z} F{zSpeed}
|
||||
M84
|
||||
M117 Heating chamber...
|
||||
RESPOND MSG="Heating chamber..."
|
||||
M140 S{params.BED_TEMP}
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.CHAMBER_TEMP}
|
||||
MAYBE_HOME
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _USER_START_PRINT_HEAT_CHAMBER]
|
||||
description: Uses the extruder sensor to wait for chamber temp. Override the _START_PRINT_HEAT_CHAMBER macro to implement heated chamber handling.
|
||||
gcode:
|
||||
|
||||
#####
|
||||
# END PRINT MACROS
|
||||
# Call this from your slicer (custom g-code).
|
||||
# Read more here: https://rat-rig.github.io/V-CoreOS/#/slicers
|
||||
#####
|
||||
|
||||
# The end_print macro is also called from CANCEL_PRINT.
|
||||
[gcode_macro END_PRINT]
|
||||
description: End print procedure, use this in your Slicer.
|
||||
gcode:
|
||||
SAVE_GCODE_STATE NAME=end_print_state
|
||||
_USER_END_PRINT_BEFORE_HEATERS_OFF
|
||||
_END_PRINT_BEFORE_HEATERS_OFF
|
||||
TURN_OFF_HEATERS
|
||||
_USER_END_PRINT_AFTER_HEATERS_OFF
|
||||
_END_PRINT_AFTER_HEATERS_OFF
|
||||
_USER_END_PRINT_PARK
|
||||
_END_PRINT_PARK
|
||||
# Clear skew profile if any was loaded.
|
||||
{% if printer["gcode_macro RatOS"].skew_profile is defined %}
|
||||
SET_SKEW CLEAR=1
|
||||
{% endif %}
|
||||
# Steppers off
|
||||
M84
|
||||
# Part cooling fan off
|
||||
M107
|
||||
# Clear bed mesh so that G28 doesn't fail.
|
||||
BED_MESH_CLEAR
|
||||
M117 Done :)
|
||||
RESPOND MSG="Done :)"
|
||||
RESTORE_GCODE_STATE NAME=end_print_state
|
||||
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
|
||||
RESPOND PREFIX=tgnotify MSG="Допечатато! =)"
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].beep_enabled|lower == 'true' %}
|
||||
beep
|
||||
{% endif %}
|
||||
|
||||
|
||||
#####
|
||||
# END PRINT MACRO HOOKS
|
||||
# You can copy these to printer.cfg and modify them to your liking, or just use them as is.
|
||||
####
|
||||
|
||||
[gcode_macro _END_PRINT_BEFORE_HEATERS_OFF]
|
||||
gcode:
|
||||
RESPOND MSG="Cleaning up..."
|
||||
|
||||
|
||||
[gcode_macro _USER_END_PRINT_BEFORE_HEATERS_OFF]
|
||||
gcode:
|
||||
|
||||
[gcode_macro _END_PRINT_AFTER_HEATERS_OFF]
|
||||
gcode:
|
||||
# Calculate safe Z position
|
||||
{% set max_z = printer.toolhead.axis_maximum.z|float %}
|
||||
{% set act_z = printer.toolhead.position.z|float %}
|
||||
{% set z_hop = printer["gcode_macro RatOS"].end_print_park_z_hop|float %}
|
||||
{% if act_z < (max_z - z_hop) %}
|
||||
{% set z_safe = z_hop %}
|
||||
{% else %}
|
||||
{% set z_safe = max_z - act_z %}
|
||||
{% endif %}
|
||||
# Relative positioning
|
||||
G91
|
||||
# Retract the filament a bit before lifting the nozzle.
|
||||
G1 E-2 F3600
|
||||
# Move to safe Z position
|
||||
G0 Z{z_safe} F3600
|
||||
# Retract filament even more
|
||||
G1 E-2 F3600
|
||||
# Back to absolute positioning
|
||||
G90
|
||||
|
||||
[gcode_macro _USER_END_PRINT_AFTER_HEATERS_OFF]
|
||||
gcode:
|
||||
|
||||
[gcode_macro _END_PRINT_PARK]
|
||||
gcode:
|
||||
_PARK LOCATION={printer["gcode_macro RatOS"].end_print_park_in} X={printer["gcode_macro RatOS"].end_print_park_x}
|
||||
|
||||
[gcode_macro _USER_END_PRINT_PARK]
|
||||
gcode:
|
||||
|
||||
#####
|
||||
# MESH MACROS
|
||||
####
|
||||
|
||||
[gcode_macro SAVE_PROBE_RESULT]
|
||||
gcode:
|
||||
{% set last_z = printer.probe.last_z_result %}
|
||||
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE={params.VARIABLE|default('last_z')} VALUE={last_z}
|
||||
|
||||
[gcode_macro PROBE_FOR_PRIMING]
|
||||
gcode:
|
||||
{% if printer["gcode_macro RatOS"].nozzle_priming|lower != 'false' %}
|
||||
SAVE_GCODE_STATE NAME=probe_for_priming_state
|
||||
RESPOND MSG="Probing the prime location.."
|
||||
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
|
||||
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_x|lower == 'min' %}
|
||||
{% set x_start = 5 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_start_x|lower == 'max' %}
|
||||
{% set x_start = printer.toolhead.axis_maximum.x - 5 %}
|
||||
{% else %}
|
||||
{% set x_start = printer["gcode_macro RatOS"].nozzle_prime_start_x|float %}
|
||||
{% endif %}
|
||||
{% if printer["gcode_macro RatOS"].nozzle_prime_start_y|lower == 'min' %}
|
||||
{% set y_start = 5 %}
|
||||
{% elif printer["gcode_macro RatOS"].nozzle_prime_start_y|lower == 'max' %}
|
||||
{% set y_start = printer.toolhead.axis_maximum.y - 5 %}
|
||||
{% else %}
|
||||
{% set y_start = printer["gcode_macro RatOS"].nozzle_prime_start_y|float %}
|
||||
{% endif %}
|
||||
{% set z = printer.configfile.settings.bed_mesh.horizontal_move_z|float %}
|
||||
# get bed mesh config object
|
||||
{% set mesh_config = printer.configfile.config.bed_mesh %}
|
||||
|
||||
# Get probe offsets
|
||||
{% if printer.configfile.settings.bltouch is defined %}
|
||||
{% set x_offset = printer.configfile.settings.bltouch.x_offset|float %}
|
||||
{% set y_offset = printer.configfile.settings.bltouch.y_offset|float %}
|
||||
{% elif printer.configfile.settings.probe is defined %}
|
||||
{% set x_offset = printer.configfile.settings.probe.x_offset|float %}
|
||||
{% set y_offset = printer.configfile.settings.probe.y_offset|float %}
|
||||
{% elif printer.configfile.settings.beacon is defined %}
|
||||
{% set x_offset = printer.configfile.settings.beacon.x_offset|float %}
|
||||
{% set y_offset = printer.configfile.settings.beacon.y_offset|float %}
|
||||
{% else %}
|
||||
{ action_raise_error("No probe or bltouch section found. Adaptive priming only works with [probe] or [bltouch].") }
|
||||
{% endif %}
|
||||
|
||||
# get configured bed mesh area
|
||||
{% set min_x = mesh_config.mesh_min.split(",")[0]|float - x_offset %}
|
||||
{% set min_y = mesh_config.mesh_min.split(",")[1]|float - y_offset %}
|
||||
{% set max_x = mesh_config.mesh_max.split(",")[0]|float - x_offset %}
|
||||
{% set max_y = mesh_config.mesh_max.split(",")[1]|float - y_offset %}
|
||||
|
||||
# make sure probe coordinates lie within the configured mesh area
|
||||
{% set x_start = [[x_start, max_x]|min, min_x]|max %}
|
||||
{% set y_start = [[y_start, max_y]|min, min_y]|max %}
|
||||
|
||||
RESPOND MSG="PROBE_FOR_PRIMING: Probing the prime location at X: {x_start} Y: {y_start}"
|
||||
|
||||
# Absolute positioning
|
||||
G90
|
||||
# Relative extrusion
|
||||
M83
|
||||
# Lift to horizontal_move_z
|
||||
G0 Z{z} F{z_speed}
|
||||
# move close to blob position
|
||||
G1 X{x_start} Y{y_start} F{speed}
|
||||
PROBE_CURRENT_POSITION
|
||||
SAVE_PROBE_RESULT VARIABLE=probe_for_priming_result
|
||||
|
||||
RESTORE_GCODE_STATE NAME=probe_for_priming_state
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro RESET_PRIME_PROBE_STATE]
|
||||
gcode:
|
||||
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=probe_for_priming_result VALUE=None
|
||||
|
||||
[gcode_macro PROBE_CURRENT_POSITION]
|
||||
gcode:
|
||||
SAVE_GCODE_STATE NAME=probe_current_position_state
|
||||
PROBE
|
||||
RESTORE_GCODE_STATE NAME=probe_current_position_state MOVE=1 MOVE_SPEED={printer["gcode_macro RatOS"].macro_z_speed|float}
|
||||
|
||||
[gcode_macro ADD_PRIME_PROBE_TO_OFFSET]
|
||||
gcode:
|
||||
{% set last_z = printer["gcode_macro RatOS"].probe_for_priming_result|float(9999.9) %}
|
||||
{% if printer.configfile.settings.bltouch is defined %}
|
||||
{% set z_offset = printer.configfile.settings.bltouch.z_offset|float %}
|
||||
{% elif printer.configfile.settings.probe is defined %}
|
||||
{% set z_offset = printer.configfile.settings.probe.z_offset|float %}
|
||||
{% else %}
|
||||
{ action_raise_error("No probe or bltouch section found. Adaptive priming only works with [probe] or [bltouch].") }
|
||||
{% endif %}
|
||||
{% if last_z == 9999.9 %}
|
||||
{ action_raise_error("No probe result found for prime area. This is likely a bug.") }
|
||||
{% endif %}
|
||||
{% set adjustment = last_z - z_offset %}
|
||||
{% set adjustment_threshold = printer["gcode_macro RatOS"].adaptive_prime_offset_threshold|float %}
|
||||
{% if adjustment < adjustment_threshold %}
|
||||
{ action_raise_error("Abnormal probe offset detected. Needed offset of {adjustment} is below the offset threshold of -1mm. Please verify the probe is over the bed when probing for priming. If it isn't, you should adjust you min/max bed_mesh settings so the probe is always over the print area.") }
|
||||
{% endif %}
|
||||
RESPOND MSG="ADD_PRIME_PROBE_TO_OFFSET: adjusting z offset by {adjustment}"
|
||||
SET_GCODE_OFFSET Z_ADJUST={adjustment} MOVE=1
|
||||
|
||||
[gcode_macro SUBTRACT_PRIME_PROBE_FROM_OFFSET]
|
||||
gcode:
|
||||
{% set last_z = printer["gcode_macro RatOS"].probe_for_priming_result|float(9999.9) %}
|
||||
{% if printer.configfile.settings.bltouch is defined %}
|
||||
{% set z_offset = printer.configfile.settings.bltouch.z_offset|float %}
|
||||
{% elif printer.configfile.settings.probe is defined %}
|
||||
{% set z_offset = printer.configfile.settings.probe.z_offset|float %}
|
||||
{% else %}
|
||||
{ action_raise_error("No probe or bltouch section found. Adaptive priming only works with [probe] or [bltouch].") }
|
||||
{% endif %}
|
||||
{% if last_z == 9999.9 %}
|
||||
{ action_raise_error("No probe result found for prime area. This is likely a bug.") }
|
||||
{% endif %}
|
||||
RESPOND MSG="SUBTRACT_PRIME_PROBE_FROM_OFFSET: adjusting z offset by {z_offset - last_z}"
|
||||
SET_GCODE_OFFSET Z_ADJUST={z_offset - last_z} MOVE=1
|
||||
|
||||
[gcode_macro beep]
|
||||
gcode:
|
||||
SET_PIN PIN=_Beeper VALUE=1 # в завершающем коде слайсера напиши в конце beep
|
||||
G4 P5000 # и тогда после окончания печати он тебе пикнет 4 раза. это 5 секунд работы,
|
||||
SET_PIN PIN=_Beeper VALUE=0 # если хочется побольше то вместо 5000 поставь например 10000 будет пищать 10 секунд можно также вставить на замену филамента. на начало печати.
|
||||
|
||||
[gcode_macro PID_E]
|
||||
gcode:
|
||||
{% set T = params.T|default(240) %}
|
||||
PID_CALIBRATE HEATER=extruder TARGET={T}
|
||||
|
||||
[gcode_macro PID_B]
|
||||
gcode:
|
||||
{% set T = params.T|default(80) %}
|
||||
PID_CALIBRATE HEATER=heater_bed TARGET={T}
|
||||
|
||||
[gcode_macro M106]
|
||||
rename_existing: G106
|
||||
gcode:
|
||||
{% if params.P is defined %}
|
||||
{% if params.P|int == 2 %}
|
||||
{% if params.S is defined %}
|
||||
{% if params.S|int == 255 %}
|
||||
{% set realspeed = 1 %}
|
||||
{% else %}
|
||||
{% if params.S|int == 0 %}
|
||||
{% set realspeed = 0 %}
|
||||
{% else %}
|
||||
{% set realspeed = params.S|float/255 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% set realspeed = 1 %}
|
||||
{% endif %}
|
||||
|
||||
SET_FAN_SPEED FAN=Aux_Fan SPEED={realspeed}
|
||||
{% endif %}
|
||||
{% if params.P|int == 1 %}
|
||||
{% if params.S is defined %}
|
||||
{% if params.S|int == 255 %}
|
||||
{% set realspeed = 1 %}
|
||||
{% else %}
|
||||
{% if params.S|int == 0 %}
|
||||
{% set realspeed = 0 %}
|
||||
{% else %}
|
||||
{% set realspeed = params.S|float/255 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% set realspeed = 1 %}
|
||||
{% endif %}
|
||||
|
||||
SET_FAN_SPEED FAN=Exhaust_fan SPEED={realspeed}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if params.S is defined %}
|
||||
G106 S{params.S}
|
||||
{% else %}
|
||||
G106 S255
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro M107]
|
||||
rename_existing: G107
|
||||
gcode:
|
||||
{% if params.P is defined %}
|
||||
{% if params.P|int == 2 %}
|
||||
SET_FAN_SPEED FAN=Aux_Fan SPEED=0
|
||||
{% endif %}
|
||||
{% else %}
|
||||
SET_FAN_SPEED FAN=Aux_Fan SPEED=0
|
||||
G107
|
||||
{% endif %}
|
||||
19
ratrig_z-tilt.cfg
Normal file
19
ratrig_z-tilt.cfg
Normal file
@@ -0,0 +1,19 @@
|
||||
[gcode_macro Z_TILT_ADJUST]
|
||||
rename_existing: Z_TILT_ADJUST_ORIG
|
||||
gcode:
|
||||
{% if printer["gcode_macro RatOS"].z_probe == 'stowable' %}
|
||||
DEPLOY_PROBE
|
||||
{% endif %}
|
||||
SAVE_GCODE_STATE NAME=STATE_Z_TILT
|
||||
BED_MESH_CLEAR
|
||||
{% if not printer.z_tilt.applied %}
|
||||
Z_TILT_ADJUST_ORIG horizontal_move_z=10 retry_tolerance=1
|
||||
{% endif %}
|
||||
Z_TILT_ADJUST_ORIG horizontal_move_z=2
|
||||
RESTORE_GCODE_STATE NAME=STATE_Z_TILT
|
||||
|
||||
|
||||
{% if printer["gcode_macro RatOS"].z_probe == 'stowable' %}
|
||||
STOW_PROBE
|
||||
{% endif %}
|
||||
|
||||
60
variables.cfg
Normal file
60
variables.cfg
Normal file
@@ -0,0 +1,60 @@
|
||||
[gcode_macro ECHO_RATOS_VARS]
|
||||
description: Echo RatOS variables to the console.
|
||||
gcode:
|
||||
{% for var, value in printer["gcode_macro RatOS"].items() %}
|
||||
{action_respond_info(var ~ ": " ~ value)}
|
||||
{% endfor %}
|
||||
|
||||
[gcode_macro RatOS]
|
||||
description: RatOS variable storage macro, will echo variables to the console when run.
|
||||
# Configuration Defaults
|
||||
# This is only here to make the config backwards compatible.
|
||||
# Configuration should exclusively happen in printer.cfg.
|
||||
variable_relative_extrusion: False #?
|
||||
variable_force_absolute_position: False # зачем оно ващпе
|
||||
variable_preheat_extruder: True
|
||||
variable_preheat_extruder_temp: 150
|
||||
variable_calibrate_bed_mesh: True
|
||||
variable_adaptive_mesh: True
|
||||
variable_nozzle_priming: "primeblob"
|
||||
variable_nozzle_prime_start_x: "max" # min, max or number
|
||||
variable_nozzle_prime_start_y: "min" # min, max or number
|
||||
variable_nozzle_prime_direction: "auto" # auto, forwards, backwards
|
||||
variable_nozzle_prime_bridge_fan: 102 # что это за попугаи
|
||||
variable_filament_unload_length: 130
|
||||
variable_filament_unload_speed: 5
|
||||
variable_filament_load_length: 100
|
||||
variable_filament_load_speed: 10
|
||||
variable_filament_load_second_length: 100
|
||||
variable_filament_load_second_speed: 10
|
||||
variable_start_print_park_in: "back"
|
||||
variable_start_print_park_z_height: 50
|
||||
variable_start_print_heat_chamber_bed_temp: 115 #надо бы попробовать
|
||||
variable_end_print_park_in: "back"
|
||||
variable_end_print_park_x: 380
|
||||
variable_pause_print_park_in: "front"
|
||||
variable_pause_print_park_x: 20
|
||||
variable_macro_travel_speed: 150
|
||||
variable_macro_z_speed: 15
|
||||
variable_end_print_park_z_hop: 20
|
||||
# Possible values: 'sensorless' or 'endstops'.
|
||||
variable_homing: "endstops"
|
||||
variable_sensorless_x_current: 0.6
|
||||
variable_sensorless_y_current: 0.9
|
||||
# Possible Values: 'middle' or an absolute x coordinate
|
||||
variable_safe_home_x: "middle"
|
||||
# Possible Values: 'middle' or an absolute y coordinate
|
||||
variable_safe_home_y: "middle"
|
||||
variable_stowable_probe_stop_on_error: False #?
|
||||
variable_driver_type_x: "tmc5160"
|
||||
variable_driver_type_y: "tmc5160"
|
||||
variable_high_power_bed: False
|
||||
variable_z_tilt_enabled: False
|
||||
variable_beep_enabled: False
|
||||
variable_filament_encoder_enabled: False
|
||||
variable_touch_cart_enabled: True
|
||||
variable_tgbot_enabled: True
|
||||
variable_probe_for_priming_result: None
|
||||
variable_adaptive_prime_offset_threshold: -1.0
|
||||
gcode:
|
||||
ECHO_RATOS_VARS
|
||||
Reference in New Issue
Block a user