большой рефакторинг

This commit is contained in:
2025-04-01 00:53:24 +03:00
parent 23ee12a19e
commit 228d45b7bf
13 changed files with 636 additions and 534 deletions

View File

@@ -38,6 +38,9 @@ gcode:
{% if printer["gcode_macro RatOS"].beep_enabled|lower == 'true' %}
beep
{% endif %}
{% if printer["gcode_macro RatOS"].orbiter_sensor_cheat|lower == 'true' %}
SET_FILAMENT_SENSOR SENSOR=Orbiter_Sensor ENABLE=1
{% endif %}
[gcode_macro RESUME]
@@ -53,6 +56,9 @@ gcode:
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if printer["gcode_macro RatOS"].orbiter_sensor_cheat|lower == 'true' %}
SET_FILAMENT_SENSOR SENSOR=Orbiter_Sensor ENABLE=0
{% 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' %}
@@ -63,16 +69,18 @@ gcode:
description: Cancels the printer
rename_existing: CANCEL_PRINT_BASE
gcode:
END_PRINT
END_PRINT_ROUTINE
TURN_OFF_HEATERS
CLEAR_PAUSE
#SDCARD_RESET_FILE
CANCEL_PRINT_BASE
CANCEL_PRINT_BASE
RESPOND MSG="Canceled o_O"
{% if printer["gcode_macro RatOS"].tgbot_enabled|lower == 'true' %}
RESPOND PREFIX=tgnotify MSG="Отмена печати"
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:
@@ -251,419 +259,6 @@ gcode:
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 %}
{% if printer["gcode_macro RatOS"].awd_sync_enabled|lower == 'true' %}
M117 Motor sync...
RESPOND MSG="Motor sync..."
{% if not printer.motors_sync.applied %}
SYNC_MOTORS
{% endif %}
{ 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
####
@@ -801,60 +396,16 @@ gcode:
{% set T = params.T|default(80) %}
PID_CALIBRATE HEATER=heater_bed TARGET={T}
[gcode_macro M106]
rename_existing: G106
[gcode_macro PSTATUS]
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 %}
{% if params.S3 %}
{% set info = printer[params.S1][params.S2][params.S3] %}
{% elif params.S2 %}
{% set info = printer[params.S1][params.S2] %}
{% elif params.S1 %}
{% set info = printer[params.S1] %}
{% else %}
{% if params.S is defined %}
G106 S{params.S}
{% else %}
G106 S255
{% endif %}
{% set info = printer.idle_timeout.state %}
{% 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 %}
{action_respond_info(info|string)}