From 1088b65ab23f4c4caf6171932ab747ac5b6885a2 Mon Sep 17 00:00:00 2001 From: tehniemer Date: Mon, 26 Aug 2024 18:31:40 -0500 Subject: [PATCH 1/6] Make filament retract user configurable in base macros Add user configurable variable for filament retract in end and cancel print macros. --- macros/base/cancel_print.cfg | 5 +++-- macros/base/end_print.cfg | 3 ++- user_templates/variables.cfg | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/macros/base/cancel_print.cfg b/macros/base/cancel_print.cfg index 82c3a8ade..9159f704f 100644 --- a/macros/base/cancel_print.cfg +++ b/macros/base/cancel_print.cfg @@ -14,7 +14,8 @@ gcode: {% set filament_sensor_enabled = printer["gcode_macro _USER_VARIABLES"].filament_sensor_enabled %} {% set filter_default_time = printer["gcode_macro _USER_VARIABLES"].filter_default_time_on_end_print|default(600)|int %} {% set hotend_fan_tach_enabled = printer["gcode_macro _USER_VARIABLES"].hotend_fan_tach_enabled %} - + {% set retract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(10)|float %} + PARK {% if klippain_mmu_enabled and mmu_unload_on_cancel_print %} @@ -25,7 +26,7 @@ gcode: {% elif printer.extruder.can_extrude %} # Pull back the filament a little bit G92 E0 - G1 E-10 F2100 + G1 E-{retract_length} F2100 {% endif %} {% if turn_off_heaters_in_end_print %} diff --git a/macros/base/end_print.cfg b/macros/base/end_print.cfg index 5228ba43a..58dcddaaa 100644 --- a/macros/base/end_print.cfg +++ b/macros/base/end_print.cfg @@ -14,6 +14,7 @@ gcode: {% set filter_default_time = printer["gcode_macro _USER_VARIABLES"].filter_default_time_on_end_print|default(600)|int %} {% set filament_sensor_enabled = printer["gcode_macro _USER_VARIABLES"].filament_sensor_enabled %} {% set hotend_fan_tach_enabled = printer["gcode_macro _USER_VARIABLES"].hotend_fan_tach_enabled %} + {% set retract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(10)|float %} PARK @@ -25,7 +26,7 @@ gcode: {% elif printer.extruder.can_extrude %} # pull back the filament a little bit G92 E0 - G1 E-10 F2100 + G1 E-{retract_length} F2100 {% endif %} {% if turn_off_heaters_in_end_print %} diff --git a/user_templates/variables.cfg b/user_templates/variables.cfg index 8abb6d79a..2dae80623 100644 --- a/user_templates/variables.cfg +++ b/user_templates/variables.cfg @@ -60,6 +60,9 @@ variable_prime_line_flowrate: 10 # mm3/s used for the prime line variable_prime_line_height: 0.6 # mm, used for actual cross section computation variable_prime_line_margin: 5 # distance of purge line from fl_size rectangle +## Length of filament to retract to reduce oozing after end of print (in mm) +variable_retract_length: 10 + ## Park position used when pause, end_print, etc... variable_park_position_xy: -1, -1 variable_park_lift_z: 50 From 6d2cdc11429fd8d594635f1b7a6870832a94d80a Mon Sep 17 00:00:00 2001 From: tehniemer Date: Mon, 6 Jan 2025 09:00:27 -0600 Subject: [PATCH 2/6] Update prime_line.cfg Added unretract to prime line --- macros/helpers/prime_line.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/macros/helpers/prime_line.cfg b/macros/helpers/prime_line.cfg index 549a56914..71f4db0f8 100644 --- a/macros/helpers/prime_line.cfg +++ b/macros/helpers/prime_line.cfg @@ -7,6 +7,7 @@ gcode: {% set prime_line_height = params.LINE_HEIGHT|default(printer["gcode_macro _USER_VARIABLES"].prime_line_height)|default(0.6)|float %} {% set prime_line_adaptive = params.ADAPTIVE_MODE|default(1)|int %} {% set prime_line_margin = params.LINE_MARGIN|default(printer["gcode_macro _USER_VARIABLES"].prime_line_margin)|default(5.0)|float %} # Used only in adaptive mode + {% set prime_line_unretract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(10)|float %} # If the SIZE parameter is defined and not a dummy placeholder, we use it to do the adaptive bed mesh logic {% set coordinatesFound = false %} @@ -110,7 +111,7 @@ gcode: # Add pressure in the nozzle G92 E0 - G1 E18 F300 + G1 E{prime_line_unretract_length} F300 # Prime line G92 E0 From be1ae5b8674343b44a7b227c1a3d2a3374714277 Mon Sep 17 00:00:00 2001 From: tehniemer Date: Mon, 6 Jan 2025 19:00:15 -0600 Subject: [PATCH 3/6] Include parameters in nozzle clean and primeline Added the same retract variable to the purge sequence and a separate unretract to the prime line sequence --- macros/base/cancel_print.cfg | 2 +- macros/base/end_print.cfg | 2 +- macros/helpers/nozzle_cleaning.cfg | 3 ++- macros/helpers/prime_line.cfg | 2 +- user_templates/variables.cfg | 7 +++++-- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/macros/base/cancel_print.cfg b/macros/base/cancel_print.cfg index 9159f704f..0c6951bf4 100644 --- a/macros/base/cancel_print.cfg +++ b/macros/base/cancel_print.cfg @@ -14,7 +14,7 @@ gcode: {% set filament_sensor_enabled = printer["gcode_macro _USER_VARIABLES"].filament_sensor_enabled %} {% set filter_default_time = printer["gcode_macro _USER_VARIABLES"].filter_default_time_on_end_print|default(600)|int %} {% set hotend_fan_tach_enabled = printer["gcode_macro _USER_VARIABLES"].hotend_fan_tach_enabled %} - {% set retract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(10)|float %} + {% set retract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(20)|float %} PARK diff --git a/macros/base/end_print.cfg b/macros/base/end_print.cfg index 58dcddaaa..6a8de3707 100644 --- a/macros/base/end_print.cfg +++ b/macros/base/end_print.cfg @@ -14,7 +14,7 @@ gcode: {% set filter_default_time = printer["gcode_macro _USER_VARIABLES"].filter_default_time_on_end_print|default(600)|int %} {% set filament_sensor_enabled = printer["gcode_macro _USER_VARIABLES"].filament_sensor_enabled %} {% set hotend_fan_tach_enabled = printer["gcode_macro _USER_VARIABLES"].hotend_fan_tach_enabled %} - {% set retract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(10)|float %} + {% set retract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(20)|float %} PARK diff --git a/macros/helpers/nozzle_cleaning.cfg b/macros/helpers/nozzle_cleaning.cfg index 118dab703..e767d88c1 100644 --- a/macros/helpers/nozzle_cleaning.cfg +++ b/macros/helpers/nozzle_cleaning.cfg @@ -81,6 +81,7 @@ gcode: {% set OOZE_TIME = params.OOZE_TIME|default(printer["gcode_macro _USER_VARIABLES"].purge_ooze_time)|int %} {% set TEMP = params.TEMP|default(printer["gcode_macro _USER_VARIABLES"].print_default_extruder_temp)|float %} {% set Z_DROP = params.Z_DROP|default(1)|int %} + {% set RETRACT = params.RETRACT|default(printer["gcode_macro _USER_VARIABLES"].retract_length)|default(20)|float %} {% set purge_and_brush_enabled = printer["gcode_macro _USER_VARIABLES"].purge_and_brush_enabled %} {% set purgeclean_servo_enabled = printer["gcode_macro _USER_VARIABLES"].purgeclean_servo_enabled %} @@ -120,7 +121,7 @@ gcode: # Retract G92 E0 G1 E-1.7 F2100 - G1 E-18.3 F150 + G1 E-({RETRACT}-1.7) F150 G92 E0 # Wait some time to let the nozzle ooze before cleaning diff --git a/macros/helpers/prime_line.cfg b/macros/helpers/prime_line.cfg index 71f4db0f8..634fa9656 100644 --- a/macros/helpers/prime_line.cfg +++ b/macros/helpers/prime_line.cfg @@ -7,7 +7,7 @@ gcode: {% set prime_line_height = params.LINE_HEIGHT|default(printer["gcode_macro _USER_VARIABLES"].prime_line_height)|default(0.6)|float %} {% set prime_line_adaptive = params.ADAPTIVE_MODE|default(1)|int %} {% set prime_line_margin = params.LINE_MARGIN|default(printer["gcode_macro _USER_VARIABLES"].prime_line_margin)|default(5.0)|float %} # Used only in adaptive mode - {% set prime_line_unretract_length = printer["gcode_macro _USER_VARIABLES"].retract_length|default(10)|float %} + {% set prime_line_unretract_length = printer["gcode_macro _USER_VARIABLES"].unretract_length|default(23)|float %} # If the SIZE parameter is defined and not a dummy placeholder, we use it to do the adaptive bed mesh logic {% set coordinatesFound = false %} diff --git a/user_templates/variables.cfg b/user_templates/variables.cfg index 2dae80623..7e77f8537 100644 --- a/user_templates/variables.cfg +++ b/user_templates/variables.cfg @@ -60,8 +60,11 @@ variable_prime_line_flowrate: 10 # mm3/s used for the prime line variable_prime_line_height: 0.6 # mm, used for actual cross section computation variable_prime_line_margin: 5 # distance of purge line from fl_size rectangle -## Length of filament to retract to reduce oozing after end of print (in mm) -variable_retract_length: 10 +## Length of filament to retract to reduce oozing at end of print and during purge sequence, if enabled (in mm) +variable_retract_length: 20 + +## Length of filament to pre-prime the nozzle before start print (in mm) +variable_unretract_length: 23 ## Park position used when pause, end_print, etc... variable_park_position_xy: -1, -1 From a8ab04c2a9abe36636d587ca99c81ba41ebe2abe Mon Sep 17 00:00:00 2001 From: tehniemer Date: Tue, 7 Jan 2025 12:36:22 -0600 Subject: [PATCH 4/6] Update macros/helpers/nozzle_cleaning.cfg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Félix Boisselier --- macros/helpers/nozzle_cleaning.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/helpers/nozzle_cleaning.cfg b/macros/helpers/nozzle_cleaning.cfg index e767d88c1..fb79c44a5 100644 --- a/macros/helpers/nozzle_cleaning.cfg +++ b/macros/helpers/nozzle_cleaning.cfg @@ -121,7 +121,7 @@ gcode: # Retract G92 E0 G1 E-1.7 F2100 - G1 E-({RETRACT}-1.7) F150 + G1 E-({RETRACT}-{RETRACT*0.1}) F150 G92 E0 # Wait some time to let the nozzle ooze before cleaning From f9edb6bb325c3fc74ec6990a0db3908aa7c1c0b0 Mon Sep 17 00:00:00 2001 From: tehniemer Date: Tue, 7 Jan 2025 12:39:28 -0600 Subject: [PATCH 5/6] Update user_templates/variables.cfg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Félix Boisselier --- user_templates/variables.cfg | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/user_templates/variables.cfg b/user_templates/variables.cfg index ac2e94f80..c8ca1e6f4 100644 --- a/user_templates/variables.cfg +++ b/user_templates/variables.cfg @@ -61,10 +61,9 @@ variable_prime_line_height: 0.6 # mm, used for actual cross section computation variable_prime_line_margin: 5 # distance of purge line from fl_size rectangle variable_prime_line_wipe: False # enable a wipe of the nozzle after completing the prime line -## Length of filament to retract to reduce oozing at end of print and during purge sequence, if enabled (in mm) +## Length of filament to retract/retract to disengage it from the heatbreak. +## This is to reduce final print oozing, but also to prevent heatcreep, clogging, and allow cold filament change between prints. variable_retract_length: 20 - -## Length of filament to pre-prime the nozzle before start print (in mm) variable_unretract_length: 23 ## Park position used when pause, end_print, etc... From 44f1a4f133c785daa638690237c3aef62b03d0b9 Mon Sep 17 00:00:00 2001 From: tehniemer Date: Tue, 7 Jan 2025 19:14:00 -0600 Subject: [PATCH 6/6] Cleaned up logic and added additional information --- macros/helpers/nozzle_cleaning.cfg | 2 +- user_templates/variables.cfg | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/macros/helpers/nozzle_cleaning.cfg b/macros/helpers/nozzle_cleaning.cfg index fb79c44a5..d81e6eef3 100644 --- a/macros/helpers/nozzle_cleaning.cfg +++ b/macros/helpers/nozzle_cleaning.cfg @@ -120,7 +120,7 @@ gcode: # Retract G92 E0 - G1 E-1.7 F2100 + G1 E-{RETRACT*0.1} F2100 G1 E-({RETRACT}-{RETRACT*0.1}) F150 G92 E0 diff --git a/user_templates/variables.cfg b/user_templates/variables.cfg index c8ca1e6f4..3ca268f8d 100644 --- a/user_templates/variables.cfg +++ b/user_templates/variables.cfg @@ -61,8 +61,10 @@ variable_prime_line_height: 0.6 # mm, used for actual cross section computation variable_prime_line_margin: 5 # distance of purge line from fl_size rectangle variable_prime_line_wipe: False # enable a wipe of the nozzle after completing the prime line -## Length of filament to retract/retract to disengage it from the heatbreak. +## Length of filament to retract to disengage it from the heatbreak. ## This is to reduce final print oozing, but also to prevent heatcreep, clogging, and allow cold filament change between prints. +## Unretract is the length of filament to prime and pressurize the nozzle prior to printing. +## This is recommended to be 10-20% more than the retract value. variable_retract_length: 20 variable_unretract_length: 23