From 24f53c25913b8a585b7a23fd79ca20c7ac2b518d Mon Sep 17 00:00:00 2001 From: Tom Glastonbury Date: Thu, 2 Jul 2026 17:29:40 +0100 Subject: [PATCH 1/3] feat(macros): add user hooks to _PURGE_FILAMENT - Added empty _USER_BEFORE_PURGE_FILAMENT TOOLHEAD=0|1 and _USER_AFTER_PURGE_FILAMENT TOOLHEAD=0|1 - Called around the main block in _PURGE_FILAMENT, but only if purging will actually take place. --- configuration/macros/load_filament.cfg | 2 ++ configuration/macros/user-hooks.cfg | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/configuration/macros/load_filament.cfg b/configuration/macros/load_filament.cfg index ca621f7d4..3e2fb6abd 100644 --- a/configuration/macros/load_filament.cfg +++ b/configuration/macros/load_filament.cfg @@ -332,6 +332,7 @@ gcode: # purge filament {% if e > 0 %} + _USER_BEFORE_PURGE_FILAMENT TOOLHEAD={toolhead} # purge G92 E0 # Reset extrusion distance @@ -370,6 +371,7 @@ gcode: {% endif %} {% endif %} + _USER_AFTER_PURGE_FILAMENT TOOLHEAD={toolhead} {% endif %} diff --git a/configuration/macros/user-hooks.cfg b/configuration/macros/user-hooks.cfg index 02783db04..fe4d89da3 100644 --- a/configuration/macros/user-hooks.cfg +++ b/configuration/macros/user-hooks.cfg @@ -65,4 +65,12 @@ gcode: gcode: [gcode_macro _USER_AFTER_IDLE_TIMEOUT] +gcode: + +# Filament operations hooks + +[gcode_macro _USER_BEFORE_PURGE_FILAMENT] +gcode: + +[gcode_macro _USER_AFTER_PURGE_FILAMENT] gcode: \ No newline at end of file From b9b799af759039853dc21c62ebb15196e0533abc Mon Sep 17 00:00:00 2001 From: Tom Glastonbury Date: Fri, 3 Jul 2026 15:29:32 +0100 Subject: [PATCH 2/3] chore(macros): improve debug logging --- configuration/macros/load_filament.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration/macros/load_filament.cfg b/configuration/macros/load_filament.cfg index 3e2fb6abd..6a83d0caa 100644 --- a/configuration/macros/load_filament.cfg +++ b/configuration/macros/load_filament.cfg @@ -329,6 +329,7 @@ gcode: {% set r = params.R|default(0)|int %} DEBUG_ECHO PREFIX="_PURGE_FILAMENT" MSG="TOOLHEAD: {toolhead}, E: {e}" + DEBUG_ECHO PREFIX="_PURGE_FILAMENT" MSG="TOOLHEAD: {toolhead}, E: {e}, R: {r}" # purge filament {% if e > 0 %} From 0ca64cc12b1378749205f263d9c04ec9c7d725ee Mon Sep 17 00:00:00 2001 From: Tom Glastonbury Date: Fri, 3 Jul 2026 15:33:26 +0100 Subject: [PATCH 3/3] fix(macros): parse the E and R parameters in _PURGE_FILAMENT as floats not ints - existing callers often pass floats, and it makes no sense to force these parameters to be integers --- configuration/macros/load_filament.cfg | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/configuration/macros/load_filament.cfg b/configuration/macros/load_filament.cfg index 6a83d0caa..8607f41a2 100644 --- a/configuration/macros/load_filament.cfg +++ b/configuration/macros/load_filament.cfg @@ -325,10 +325,9 @@ gcode: gcode: # parameter {% set toolhead = params.TOOLHEAD|int %} - {% set e = params.E|int %} - {% set r = params.R|default(0)|int %} + {% set e = params.E|float %} + {% set r = params.R|default(0)|float %} - DEBUG_ECHO PREFIX="_PURGE_FILAMENT" MSG="TOOLHEAD: {toolhead}, E: {e}" DEBUG_ECHO PREFIX="_PURGE_FILAMENT" MSG="TOOLHEAD: {toolhead}, E: {e}, R: {r}" # purge filament