Questo articolo fa parte del Serie tecnica Prusa XL su INVESTEGATE.de
Tutte le guide presuppongono che i fondamenti di Prusa XL siano corretti.
In caso contrario, iniziate da qui:
Nozioni di base di Prusa XL - Fondamenti tecnici

ScrubbyXL è una modifica per la pulizia degli ugelli della Prusa XL che si concentra sull'affidabilità. Aggiunge una pulizia automatica prima del livellamento del letto a rete (MBL) e una pulizia opzionale dell'ugello durante la stampa (attivata tramite codice G), aiutando a prevenire l'accumulo di filamento sulla punta dell'ugello, soprattutto nelle stampe lunghe, dove piccoli residui possono trasformarsi in difetti o guasti.
Perché ScrubbyXL esiste
La contaminazione della punta dell'ugello è uno di quei problemi che spesso iniziano in piccolo e finiscono in una stampa rovinata. Una piccola chiazza, un residuo di PETG o un materiale leggermente bruciato possono attaccarsi all'ugello e successivamente essere trascinati sul primo strato, interferire con la tastatura o infine causare difetti di superficie e collisioni su lavori lunghi.
ScrubbyXL risolve questo problema con una semplice idea: non aspettare che il problema si manifesti, ma pulire in modo proattivo. La prima parte avviene prima dell'MBL: aggiungendo una piccola modifica al codice G di avvio, l'ugello viene pulito in modo da poter sondare il letto in uno stato più pulito. L'obiettivo non è “più livellamento”, ma condizioni più coerenti durante il livellamento, che aiutano a far partire bene il primo strato.
La seconda parte è per le stampe lunghe. ScrubbyXL può essere attivato durante la stampa a un intervallo definito dall'utente (ad esempio, ogni N strati) utilizzando il codice G integrato nelle impostazioni dello slicer. Ciò contribuisce a ridurre l'accumulo graduale che altrimenti si accumula per molte ore e che può causare il fallimento di una stampa a fine lavoro.
Versioni e configurazione
Per adattarsi a diverse configurazioni, ScrubbyXL è disponibile in più varianti:
- Dimensioni dei fori di montaggio: M3 / M4 / M5.
- Dimensioni delle spazzole in silicone: A1 o A1 mini.
- Opzioni di montaggio: magnetico (magneti inseriti durante la stampa o incollati successivamente) o una versione fissa, completamente avvitata, senza magneti.
La mia configurazione consigliata è la versione magnetica con magneti inseriti e la mini spazzola A1. Il montaggio magnetico è particolarmente pratico perché si potrebbe voler rimuovere rapidamente la spazzola, in particolare sul lato destro, dove l'utensile 5 carica/scarica sopra quell'area. Per ottenere i migliori risultati di pulizia, consiglio di installare i tergicristalli su entrambi i lati, ma è anche possibile far funzionare solo un lato e regolare il codice G di conseguenza.
Scarica il mod ScrubbyXL per l'Prusa XL sull'Printables
Cosa aspettarsi
- Meno residui sulla punta degli ugelli durante i lavori più lunghi, riducendo la possibilità di guasti nella fase finale della stampa.
- Condizioni di sondaggio più pulite prima della MBL, che possono tradursi in un primo strato più consistente.
Codici G
Avvio delle modifiche al codice G
- Integrata la routine di pulizia dell'ugello/spazzolino per cui l'ugello viene pulito meccanicamente durante l'avviamento.
- Regolazione della posizione di attesa dell'utensile per la tempistica verso l'anteriore per facilitare la pulizia manuale dell'ugello.
- Aggiunta di un indicatore acustico (segnali acustici prima della pulizia dell'ugello e prima della linea di spurgo) per un migliore feedback durante l'avvio.
- Commentato fuori
G29 P9, perché fa salire troppo la temperatura prima della MBL. - Spostamento della linea di spurgo per il primo e l'ultimo utensile di 3 mm. per evitare qualsiasi contatto con la spazzola mod.
- Rielaborazione del codice G delle spazzole in ottone di Surfalex2000 per migliorare il risultato della pulizia (comportamento più affidabile del panno).
Codice di avvio completo Prusa XL ottimizzato e corretto per ScrubbyXL
Codice G iniziale per il modello Prusa XL (5TH)
M17 ; abilita gli stepper
M862.3 P "XL" ; controllo del modello di stampante
M862.5 P2 ; controllo livello g-code
M862.6 P "Input shaper" ; controllo funzionalità FW
M115 U6.4.0+11974
G90 ; usa coordinate assolute
M83 ; modalità relativa all'estrusore
; imposta l'area di stampa
M555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}
; informare sul diametro dell'ugello
{if (is_extruder_used[0])}M862.1 T0 P{diametro_ugello[0]} A{(filamento_abrasivo[0] ? 1 : 0)} F{(ugello_alto_flusso[0] ? 1 : 0)}{endif}
{if (is_extruder_used[1])}M862.1 T1 P{diametro_ugello[1]} A{(filamento_abrasivo[1] ? 1 : 0)} F{(ugello_alto_flusso[1] ? 1 : 0)}{endif}
{if (is_extruder_used[2])}M862.1 T2 P{diametro_ugello[2]} A{(filamento_abrasivo[2] ? 1 : 0)} F{(ugello_alto_flusso[2] ? 1 : 0)}{endif}
{if (is_extruder_used[3])}M862.1 T3 P{diametro_ugello[3]} A{(filamento_abrasivo[3] ? 1 : 0)} F{(ugello_alto_flusso[3] ? 1 : 0)}{endif}
{if (is_extruder_used[4])}M862.1 T4 P{diametro_ugello[4]} A{(filamento_abrasivo[4] ? 1 : 0)} F{(ugello_alto_flusso[4] ? 1 : 0)}{endif}
; spegnere i riscaldatori non utilizzati
{if ! is_extruder_used[0]}M104 T0 S0{endif}
{if ! is_extruder_used[1]}M104 T1 S0{endif}
{se num_extruders > 2 e ! is_extruder_used[2]}M104 T2 S0{endif}
{se num_extruders > 3 e ! is_extruder_used[3]}M104 T3 S0{endif}
{se num_extruder > 4 e ! is_extruder_used[4]}M104 T4 S0{endif}
M217 Z{max(zhop, 2.0)} ; imposta il salto z del toolchange a 2mm, o la variabile zhop dallo slicer se superiore
; impostare la temperatura del letto e dell'estrusore per MBL
M140 S[first_layer_bed_temperature] ; impostare la temperatura del letto
M104 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" o filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; impostare la temperatura
; Casa XY
G28 XY
; prova a selezionare gli strumenti utilizzati nella stampa
G1 F{velocità_viaggio * 60}
{if (is_extruder_used[0]) e (initial_tool != 0)}T0 S1 L0 D0{endif}
{if (is_extruder_used[1]) e (initial_tool != 1)}T1 S1 L0 D0{endif}
{if (is_extruder_used[2]) e (initial_tool != 2)}T2 S1 L0 D0{endif}
{if (is_extruder_used[3]) e (initial_tool != 3)}T3 S1 L0 D0{endif}
{if (is_extruder_used[4]) e (initial_tool != 4)}T4 S1 L0 D0{endif}
; selezionare l'utensile che verrà utilizzato per l'home & MBL
T{utensile_iniziale} S1 L0 D0
; QUI L'UTENSILE DEVE ATTENDERE A CAUSA DELLA SPAZZOLA DI SILICONE
G1 Z30
G1 X145 Y-8 F{velocità_di_corsa*60}
M109 T{utensile_iniziale} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" o filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; attendere la temperatura
; home Z con l'utensile MBL
M84 E ; spegnere il motore E
G28 Z
G0 Z5 ; aggiungere il gioco Z
; QUI L'UTENSILE DEVE ATTENDERE SOLO A CAUSA DELLA SPAZZOLA DI SILICONE
G1 Z30
G1 X145 Y-8 F{velocità_di_corsa*60}
M104 T{utensile_iniziale} S{if is_nil(temperatura_inattiva[utensile_iniziale])}70{else}{temperatura_inattiva[utensile_iniziale]}{endif} ; imposta la temperatura inattiva
M190 S[temperatura_primo_strato_letto] ; attendere la temperatura del letto
G29 G ; assorbire il calore
M109 T{strumento_iniziale} S{((note_filamento[strumento_iniziale]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" o filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; attendere la temperatura
M300 S800 P200. ; indicatore PIEP
; passare all'area di pulizia dell'ugello
; pulizia dell'ugello PER LO SPRUZZATORE DI SILICONE SINISTRO E DESTRO
M302 S155 ; abbassare il limite di estrusione a freddo a 155C
G1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; rientro per la pulizia dell'ugello
M84 E ; spegnere il motore E
; --- Avviare la pulizia dell'ugello
G1 Z5 ; Spostare il piano di lavoro
{f initial_tool == 0 o initial_tool == 1 }
; --- Iniziare la pulizia degli ugelli a SINISTRA ---
G1 X-2 Y-8 F24000 ; Muoversi all'inizio dell'area di pulizia
G1 X28 Y-8 F24000 ; Strofinare la passata 1
G1 X-2 Y-7,5 F24000 ; Riposizionamento
G1 X28 Y-7,5 F24000 ; Strofinare la passata 2
G1 X-2 Y-7 F24000 ; Riposizionamento
G1 X28 Y-7 F24000 ; Passaggio di pulizia 3
G1 X-2 Y-6,5 F24000 ; Riposizionamento
G1 X28 Y-6,5 F24000 ; Pulisci passaggio 4
G1 X-2 Y-6 F24000 ; Riposizionamento
G1 X28 Y-6 F24000 ; Passaggio a vuoto 5
G1 X-2 Y-6,5 F24000 ; Riposizionamento
G1 X28 Y-6,5 F24000 ; Pulisci passaggio 6
G1 X-2 Y-7 F24000 ; Riposizionamento
G1 X28 Y-7 F24000 ; Passaggio a vuoto 7
G1 X-2 Y-7,5 F24000 ; Riposizionamento
G1 X28 Y-7,5 F24000 ; Passaggio a vuoto 8
G1 X-2 Y-8 F24000 ; Riposizionamento
G1 X28 Y-8 F24000 ; Passaggio di pulizia 9
Fine ugello: strofinare a sinistra.
{else}
--- Iniziare la pulizia dell'ugello a DESTRA ---
G1 X332 Y-8 F24000 ; Si sposta all'inizio dell'area di pulizia
G1 X361 Y-8 F24000 ; Strofinare la passata 1
G1 X332 Y-7,5 F24000 ; Riposizionamento
G1 X361 Y-7,5 F24000 ; Passaggio 2
G1 X332 Y-7 F24000 ; Riposizionamento
G1 X361 Y-7 F24000 ; Passaggio di pulizia 3
G1 X332 Y-6,5 F24000 ; Riposizionamento
G1 X361 Y-6,5 F24000 ; Passaggio a vuoto 4
G1 X332 Y-6 F24000 ; Riposizionamento
G1 X361 Y-6 F24000 ; Passaggio di pulizia 5
G1 X332 Y-6,5 F24000 ; Riposizionamento
G1 X361 Y-6,5 F24000 ; Passaggio a vuoto 6
G1 X332 Y-7 F24000 ; Riposizionamento
G1 X361 Y-7 F24000 ; Passaggio di pulizia 7
G1 X332 Y-7,5 F24000 ; Riposizionamento
G1 X361 Y-7,5 F24000 ; Passaggio a vuoto 8
G1 X332 Y-8 F24000 ; Riposizionamento
G1 X361 Y-8 F24000 ; Strofinare passaggio 9
Fine ugello: pulire a destra.
{endif}
G1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}
; pulizia dell'ugello
;Eliminato di seguito perché imposta la temperatura troppo alta davanti all'MBL.
;G29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) 0 e (is_extruder_used[0])}M104 T0 S{prima_temperatura_strato[0]}{endif}
{se first_layer_temperature[1] > 0 e (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}
{se first_layer_temperature[2] > 0 e (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}
{se first_layer_temperature[3] > 0 e (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}
{se first_layer_temperature[4] > 0 e (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}
{if (is_extruder_used[0]) e initial_tool != 0}
M591 S0 ; disabilita il rilevamento del blocco
; pronto per la stampa della melodia, prima dello spurgo
M300 S1200 P150
G4 P200
M300 S1500 P150
G4 P200
M300 S1800 P300
G4 P500
;
spurgare prima lo strumento
Modificato. Posizione X cambiata da 30 a 33 a causa della spazzola di silicone.
;
G1 F{velocità_di_spostamento * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T0 S{temperatura_primo_strato[0]}
T0 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X33 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[0])}10{else}30{endif} X40 Z0,2 F{if is_nil(filament_multitool_ramming[0])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X70 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X73 Z0,05 F8000 ; pulire, spostarsi vicino al letto
G0 X76 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[0]} F2400 ; ritrarre
{e_retratto[0] = retrarre_lunghezza_scambio_attrezzo[0]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[0]) ? (temperatura_primo_strato[0] + temperatura_di_standby_delta) : (temperatura_inattiva[0]))} T0
{endif}
{if (is_extruder_used[1]) e initial_tool != 1}
;
spurgo del secondo utensile
;
G1 F{velocità_viaggio * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T1 S{temperatura_primo_strato[1]}
T1 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X150 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[1])}10{else}30{endif} X140 Z0,2 F{if is_nil(filament_multitool_ramming[1])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X110 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X107 Z0,05 F8000 ; pulire, avvicinarsi al letto
G0 X104 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[1]} F2400 ; ritrarre
{e_ritratto[1] = ritrarre_lunghezza_scambio_attrezzo[1]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[1]) ? (temperatura_primo_strato[1] + temperatura_di_standby_delta) : (temperatura_inattiva[1]))} T1
{endif}
{if (is_extruder_used[2]) e initial_tool != 2}
;
spurgo del terzo utensile
;
G1 F{velocità_viaggio * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T2 S{temperatura_primo_strato[2]}
T2 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X210 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[2])}10{else}30{endif} X220 Z0,2 F{if is_nil(filament_multitool_ramming[2])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X250 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X253 Z0,05 F8000 ; pulire, avvicinarsi al piano di lavoro
G0 X256 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[2]} F2400 ; ritrarre
{e_retratto[2] = retratto_lunghezza_scambio_attrezzo[2]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[2]) ? (temperatura_primo_strato[2] + temperatura_di_standby_delta) : (temperatura_inattiva[2]))} T2
{endif}
{if (is_extruder_used[3]) e initial_tool != 3}
;
spurgo del quarto utensile
;
G1 F{velocità_viaggio * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T3 S{temperatura_primo_strato[3]}
T3 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X327 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[3])}10{else}30{endif} X320 Z0,2 F{if is_nil(filament_multitool_ramming[3])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X290 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X287 Z0,05 F8000 ; pulire, avvicinarsi al piano di lavoro
G0 X284 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[3]} F2400 ; ritrarre
{e_retratto[3] = retratto_lunghezza_scambio_strumenti[3]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[3]) ? (temperatura_primo_strato[3] + temperatura_di_standby_delta) : (temperatura_inattiva[3]))} T3
{endif}
{if (is_extruder_used[4]) e initial_tool != 4}
;
; spurgo del quinto utensile
Modificato. La posizione X dell'utensile 4 è passata da 330 a 327 a causa della spazzola di silicone.
;
G1 F{velocità_di_corsa*60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T4 S{temperatura_primo_strato[4]}
T4 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X327 Y-4,5 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo del foglio
G0 E{if is_nil(filament_multitool_ramming[4])}10{else}30{endif} X320 Z0,2 F{if is_nil(filament_multitool_ramming[4])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X290 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X287 Z0,05 F8000 ; pulire, spostarsi vicino al letto
G0 X284 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[4]} F2400 ; ritrarre
{e_retratto[4] = retratto_lunghezza_scambio_attrezzo[4]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[4]) ? (temperatura_primo_strato[4] + temperatura_di_standby_delta) : (temperatura_inattiva[4]))} T4
{endif}
;
; spurgo strumento iniziale
;
G1 F{velocità_di_spostamento * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T{utensile_iniziale} S{temperatura_primo_strato[utensile_iniziale]}
T{utensile_iniziale} S1 L0 D0; prelevare l'utensile
G92 E0 ; reimpostare la posizione dell'estrusore
Modificato. La posizione X dell'utensile 0 è passata da 30 a 33 a causa della spazzola di silicone.
Modificato. La posizione X dell'UTENSILE 4 è passata da 330 a 327 a causa della spazzola di silicone.
G0 X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) } Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; si avvicina al bordo del foglio
G0 E{se is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[initial_tool])}500{else}170{endif} ; spurgo mentre ci si muove verso la lamiera
G0 X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; pulire, muoversi vicino al letto
G0 X{(strumento_iniziale == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; pulire, allontanarsi rapidamente dal letto
G1 E-{Lunghezza_di_ritrazione[attrezzo_iniziale]} F2400 ; ritrarre
{e_ritratto[attrezzo_iniziale] = lunghezza_ritratto[attrezzo_iniziale]}
M591 R ; ripristinare il rilevamento del blocco
G92 E0 ; ripristinare la posizione dell'estrusore
Prima della modifica dello strato Codice G
Durante la stampa, l'ugello viene pulito automaticamente ogni X strati)
Prima della modifica dello strato Codice G
;BEFORE_LAYER_CHANGE
G92 E0.0
;[layer_z]
Durante la stampa, l'ugello viene pulito automaticamente ogni X strati. (X = 400 strati)
Ogni 400 strati: pulizia automatica ---
{if layer_num > 0 && layer_num % 400 == 0}
; Salva la posizione corrente (Buddy FW)
G1 F{travel_speed * 100}
G60 S0 ; memorizza la posizione XYZ corrente
M300 S300 P200. ; indicatore PIEP
Sollevare un po' Z per sicurezza
G1 Z{strato_z + 5} F1000
Avviare la pulizia degli ugelli.
{se initial_tool == 0 o initial_tool == 1 }
--- Avviare la pulizia degli ugelli a sinistra ---
G1 X-2 Y-8 F24000
G1 X28 Y-8 F24000
G1 X-2 Y-7,5 F24000
G1 X28 Y-7,5 F24000
G1 X-2 Y-7 F24000
G1 X28 Y-7 F24000
G1 X-2 Y-6,5 F24000
G1 X28 Y-6,5 F24000
G1 X-2 Y-6 F24000
G1 X28 Y-6 F24000
G1 X-2 Y-6,5 F24000
G1 X28 Y-6,5 F24000
G1 X-2 Y-7 F24000
G1 X28 Y-7 F24000
G1 X-2 Y-7,5 F24000
G1 X28 Y-7,5 F24000
G1 X-2 Y-8 F24000
G1 X28 Y-8 F24000
; --- Pulire l'ugello finale SINISTRO ---
{else}
--- Iniziare la pulizia dell'ugello a DESTRA ---
G1 X332 Y-8 F24000
G1 X361 Y-8 F24000
G1 X332 Y-7,5 F24000
G1 X361 Y-7,5 F24000
G1 X332 Y-7 F24000
G1 X361 Y-7 F24000
G1 X332 Y-6,5 F24000
G1 X361 Y-6,5 F24000
G1 X332 Y-6 F24000
G1 X361 Y-6 F24000
G1 X332 Y-6,5 F24000
G1 X361 Y-6,5 F24000
G1 X332 Y-7 F24000
G1 X361 Y-7 F24000
G1 X332 Y-7,5 F24000
G1 X361 Y-7,5 F24000
G1 X332 Y-8 F24000
G1 X361 Y-8 F24000
; --- Pulire l'ugello finale a DESTRA ---
{endif}
--- Fine della pulizia degli ugelli ---
Ripristino della posizione
G61 S0 ; ripristinare la posizione XYZ memorizzata
{endif}
Bonus: stampa finitura suono
Riproduce una breve melodia finale.
Fine del codice G
G4 ; attendere
{se layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+5, max_print_height)}{endif} ; Spostare il letto in basso
P0 S1 ; parcheggiare l'utensile
{se layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+97, max_print_height)} F300{endif} ; Spostare il letto più in basso
; Spegnere i riscaldatori dell'estrusore
{if is_extruder_used[0]}M104 T0 S0{endif}; Spostare il letto più in basso; spegnere i riscaldatori dell'estrusore.
{if is_extruder_used[1]}M104 T1 S0{endif}
{if is_extruder_used[2]}M104 T2 S0{endif}
{if is_extruder_used[3]}M104 T3 S0{endif}
{if is_extruder_used[4]}M104 T4 S0{endif}
M140 S0 ; spegnimento del piano di riscaldamento
M107 ; spegnimento della ventola
M221 S100 ; azzeramento della percentuale di flusso
M84 ; disabilita i motori
;melodia di finitura
M300 S1200 P150
G4 P200
M300 S1500 P150
G4 P200
M300 S1800 P300
G4 P500
M77 ; arresta il timer di stampa
; max_layer_z = [max_layer_z]
Opzionale: Spazzola MBL aggiuntiva in ottone mod. da Surfalex2000
Se si desidera utilizzare anche la mod spazzola in ottone MBL di @Surfalex2000:
Codice G iniziale per il modello Prusa XL (5TH)
M17 ; abilita gli stepper
M862.3 P "XL" ; controllo del modello di stampante
M862.5 P2 ; controllo livello g-code
M862.6 P "Input shaper" ; controllo funzionalità FW
M115 U6.4.0+11974
G90 ; usa coordinate assolute
M83 ; modalità relativa all'estrusore
; imposta l'area di stampa
M555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}
; informare sul diametro dell'ugello
{if (is_extruder_used[0])}M862.1 T0 P{diametro_ugello[0]} A{(filamento_abrasivo[0] ? 1 : 0)} F{(ugello_alto_flusso[0] ? 1 : 0)}{endif}
{if (is_extruder_used[1])}M862.1 T1 P{diametro_ugello[1]} A{(filamento_abrasivo[1] ? 1 : 0)} F{(ugello_alto_flusso[1] ? 1 : 0)}{endif}
{if (is_extruder_used[2])}M862.1 T2 P{diametro_ugello[2]} A{(filamento_abrasivo[2] ? 1 : 0)} F{(ugello_alto_flusso[2] ? 1 : 0)}{endif}
{if (is_extruder_used[3])}M862.1 T3 P{diametro_ugello[3]} A{(filamento_abrasivo[3] ? 1 : 0)} F{(ugello_alto_flusso[3] ? 1 : 0)}{endif}
{if (is_extruder_used[4])}M862.1 T4 P{diametro_ugello[4]} A{(filamento_abrasivo[4] ? 1 : 0)} F{(ugello_alto_flusso[4] ? 1 : 0)}{endif}
; spegnere i riscaldatori non utilizzati
{if ! is_extruder_used[0]}M104 T0 S0{endif}
{if ! is_extruder_used[1]}M104 T1 S0{endif}
{se num_extruders > 2 e ! is_extruder_used[2]}M104 T2 S0{endif}
{se num_extruders > 3 e ! is_extruder_used[3]}M104 T3 S0{endif}
{se num_extruder > 4 e ! is_extruder_used[4]}M104 T4 S0{endif}
M217 Z{max(zhop, 2.0)} ; imposta il salto z del toolchange a 2mm, o la variabile zhop dallo slicer se superiore
; impostare la temperatura del letto e dell'estrusore per MBL
M140 S[first_layer_bed_temperature] ; impostare la temperatura del letto
M104 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" o filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; impostare la temperatura
; Casa XY
G28 XY
; prova a selezionare gli strumenti utilizzati nella stampa
G1 F{velocità_viaggio * 60}
{if (is_extruder_used[0]) e (initial_tool != 0)}T0 S1 L0 D0{endif}
{if (is_extruder_used[1]) e (initial_tool != 1)}T1 S1 L0 D0{endif}
{if (is_extruder_used[2]) e (initial_tool != 2)}T2 S1 L0 D0{endif}
{if (is_extruder_used[3]) e (initial_tool != 3)}T3 S1 L0 D0{endif}
{if (is_extruder_used[4]) e (initial_tool != 4)}T4 S1 L0 D0{endif}
; selezionare l'utensile che verrà utilizzato per l'home & MBL
T{utensile_iniziale} S1 L0 D0
; QUI L'UTENSILE DEVE ATTENDERE SOLO A CAUSA DELLA SPAZZOLA DI SILICONE
G1 Z30
G1 X145 Y-8 F{velocità_di_corsa*60}
M109 T{utensile_iniziale} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" o filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; attendere la temperatura
; home Z con l'utensile MBL
M84 E ; spegnere il motore E
G28 Z
G0 Z5 ; aggiungere il gioco Z
; QUI L'UTENSILE DEVE ATTENDERE SOLO A CAUSA DELLA SPAZZOLA DI SILICONE
G1 Z30
G1 X145 Y-8 F{velocità_di_corsa*60}
M104 T{utensile_iniziale} S{if is_nil(temperatura_inattiva[utensile_iniziale])}70{else}{temperatura_inattiva[utensile_iniziale]}{endif} ; imposta la temperatura inattiva
M190 S[temperatura_primo_strato_letto] ; attendere la temperatura del letto
G29 G ; assorbire il calore
M109 T{strumento_iniziale} S{((note_filamento[strumento_iniziale]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" o filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; attendere la temperatura
M300 S800 P200. ; indicatore PIEP
; passare all'area di pulizia dell'ugello
Surfalex2000: montaggio della spazzola dell'ugello su Printables
https://www.printables.com/model/644817-prusa-xl-series-front-nozzle-srcubber-for-use-with
G1 E-10 F2400 ; maggiore retrazione per compensare la trasudazione prima della pulizia dell'ugello
Avvio del ciclo di spazzolatura ugelli Surfalex2000
Avviare il ciclo spazzola ugelli (rampa di velocità) ---
G1 X160 Y-5 Z5 F8000
G1 X160 Y-5 Z1 F8000
; --- Zyklus 1 (langsam) ---
G1 X200 Y-5 F8000
G1 X200 Y-4
G1 X160 Y-4
G1 X160 Y-6
G1 X200 Y-6
G1 X200 Y-5
G1 X160 Y-5
; --- Zyklus 2 (mittel) ---
G1 X200 Y-5 F14000
G1 X200 Y-4
G1 X160 Y-4
G1 X160 Y-6
G1 X200 Y-6
G1 X200 Y-5
G1 X160 Y-5
; --- Zyklus 3 (schnell) ---
G1 X200 Y-5 F16000
G1 X200 Y-4
G1 X160 Y-4
G1 X160 Y-6
G1 X200 Y-6
G1 X200 Y-5
G1 X160 Y-5
; --- Zyklus 4 (schnell) ---
G1 X200 Y-5 F20000
G1 X200 Y-4
G1 X160 Y-4
G1 X160 Y-6
G1 X200 Y-6
G1 X200 Y-5
G1 X160 Y-5
G1 X160 Y-5 Z5 F20000 ; ciclo spazzola ugelli
; Fine ciclo spazzola ugelli surfalex2000
; pulizia dell'ugello PER IL TIRANTE DI SILICONE SINISTRO E DESTRO
M302 S155 ; abbassare il limite di estrusione a freddo a 155C
G1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; ritrazione per la pulizia dell'ugello
M84 E ; spegnere il motore E
; --- Avviare la pulizia dell'ugello
G1 Z5 ; Spostare il piano di lavoro
{f initial_tool == 0 o initial_tool == 1 }
; --- Iniziare la pulizia degli ugelli a SINISTRA ---
G1 X-2 Y-8 F24000 ; Muoversi all'inizio dell'area di pulizia
G1 X28 Y-8 F24000 ; Strofinare la passata 1
G1 X-2 Y-7,5 F24000 ; Riposizionamento
G1 X28 Y-7,5 F24000 ; Strofinare la passata 2
G1 X-2 Y-7 F24000 ; Riposizionamento
G1 X28 Y-7 F24000 ; Passaggio di pulizia 3
G1 X-2 Y-6,5 F24000 ; Riposizionamento
G1 X28 Y-6,5 F24000 ; Pulisci passaggio 4
G1 X-2 Y-6 F24000 ; Riposizionamento
G1 X28 Y-6 F24000 ; Passaggio a vuoto 5
G1 X-2 Y-6,5 F24000 ; Riposizionamento
G1 X28 Y-6,5 F24000 ; Pulisci passaggio 6
G1 X-2 Y-7 F24000 ; Riposizionamento
G1 X28 Y-7 F24000 ; Passaggio a vuoto 7
G1 X-2 Y-7,5 F24000 ; Riposizionamento
G1 X28 Y-7,5 F24000 ; Passaggio a vuoto 8
G1 X-2 Y-8 F24000 ; Riposizionamento
G1 X28 Y-8 F24000 ; Passaggio di pulizia 9
Fine ugello: strofinare a sinistra.
{else}
--- Iniziare la pulizia dell'ugello a DESTRA ---
G1 X332 Y-8 F24000 ; Si sposta all'inizio dell'area di pulizia
G1 X361 Y-8 F24000 ; Strofinare la passata 1
G1 X332 Y-7,5 F24000 ; Riposizionamento
G1 X361 Y-7,5 F24000 ; Passaggio 2
G1 X332 Y-7 F24000 ; Riposizionamento
G1 X361 Y-7 F24000 ; Passaggio di pulizia 3
G1 X332 Y-6,5 F24000 ; Riposizionamento
G1 X361 Y-6,5 F24000 ; Passaggio a vuoto 4
G1 X332 Y-6 F24000 ; Riposizionamento
G1 X361 Y-6 F24000 ; Passaggio di pulizia 5
G1 X332 Y-6,5 F24000 ; Riposizionamento
G1 X361 Y-6,5 F24000 ; Passaggio a vuoto 6
G1 X332 Y-7 F24000 ; Riposizionamento
G1 X361 Y-7 F24000 ; Passaggio di pulizia 7
G1 X332 Y-7,5 F24000 ; Riposizionamento
G1 X361 Y-7,5 F24000 ; Passaggio a vuoto 8
G1 X332 Y-8 F24000 ; Riposizionamento
G1 X361 Y-8 F24000 ; Strofinare la passata 9
Fine ugello: pulire a destra.
{endif}
G1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}
; pulizia dell'ugello
;Eliminato di seguito perché imposta la temperatura troppo alta davanti all'MBL.
;G29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) 0 e (is_extruder_used[0])}M104 T0 S{prima_temperatura_strato[0]}{endif}
{se first_layer_temperature[1] > 0 e (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}
{se first_layer_temperature[2] > 0 e (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}
{se first_layer_temperature[3] > 0 e (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}
{se first_layer_temperature[4] > 0 e (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}
{if (is_extruder_used[0]) e initial_tool != 0}
M591 S0 ; disabilita il rilevamento del blocco
; pronto per la stampa della melodia, prima dello spurgo
M300 S1200 P150
G4 P200
M300 S1500 P150
G4 P200
M300 S1800 P300
G4 P500
;
spurgare prima lo strumento
Modificato. Posizione X cambiata da 30 a 33 a causa della spazzola di silicone.
;
G1 F{velocità_di_spostamento * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T0 S{temperatura_primo_strato[0]}
T0 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X33 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[0])}10{else}30{endif} X40 Z0,2 F{if is_nil(filament_multitool_ramming[0])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X70 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X73 Z0,05 F8000 ; pulire, avvicinarsi al piano di lavoro
G0 X76 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[0]} F2400 ; ritrarre
{e_ritratto[0] = ritrarre_lunghezza_scambio_attrezzo[0]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[0]) ? (temperatura_primo_strato[0] + temperatura_di_standby_delta) : (temperatura_inattiva[0]))} T0
{endif}
{if (is_extruder_used[1]) e initial_tool != 1}
;
spurgo del secondo utensile
;
G1 F{velocità_viaggio * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T1 S{temperatura_primo_strato[1]}
T1 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X150 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[1])}10{else}30{endif} X140 Z0,2 F{if is_nil(filament_multitool_ramming[1])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X110 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X107 Z0,05 F8000 ; pulire, spostarsi vicino al letto
G0 X104 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[1]} F2400 ; ritrarre
{e_ritratto[1] = ritrarre_lunghezza_scambio_attrezzo[1]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[1]) ? (temperatura_primo_strato[1] + temperatura_di_standby_delta) : (temperatura_inattiva[1]))} T1
{endif}
{if (is_extruder_used[2]) e initial_tool != 2}
;
spurgo del terzo utensile
;
G1 F{velocità_viaggio * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T2 S{temperatura_primo_strato[2]}
T2 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X210 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[2])}10{else}30{endif} X220 Z0,2 F{if is_nil(filament_multitool_ramming[2])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X250 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X253 Z0,05 F8000 ; pulire, avvicinarsi al piano di lavoro
G0 X256 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[2]} F2400 ; ritrarre
{e_retratto[2] = retratto_lunghezza_scambio_attrezzo[2]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[2]) ? (temperatura_primo_strato[2] + temperatura_di_standby_delta) : (temperatura_inattiva[2]))} T2
{endif}
{if (is_extruder_used[3]) e initial_tool != 3}
;
spurgo del quarto utensile
;
G1 F{velocità_viaggio * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T3 S{temperatura_primo_strato[3]}
T3 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X327 Y-7 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo della lastra
G0 E{if is_nil(filament_multitool_ramming[3])}10{else}30{endif} X320 Z0,2 F{if is_nil(filament_multitool_ramming[3])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X290 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X287 Z0,05 F8000 ; pulire, spostarsi vicino al letto
G0 X284 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[3]} F2400 ; ritrarre
{e_retratto[3] = retratto_lunghezza_scambio_strumenti[3]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[3]) ? (temperatura_primo_strato[3] + temperatura_di_standby_delta) : (temperatura_inattiva[3]))} T3
{endif}
{if (is_extruder_used[4]) e initial_tool != 4}
;
; spurgo del quinto utensile
Modificato. La posizione X dell'utensile 4 è passata da 330 a 327 a causa della spazzola di silicone.
;
G1 F{velocità_di_corsa*60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T4 S{temperatura_primo_strato[4]}
T4 S1 L0 D0; prelevare l'utensile
G92 E0 ; ripristinare la posizione dell'estrusore
G0 X327 Y-4,5 Z10 F{(travel_speed * 60)} ; avvicinarsi al bordo del foglio
G0 E{if is_nil(filament_multitool_ramming[4])}10{else}30{endif} X320 Z0,2 F{if is_nil(filament_multitool_ramming[4])}500{else}170{endif} ; spurgo mentre ci si muove verso il foglio
G0 X290 E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X287 Z0,05 F8000 ; pulire, avvicinarsi al piano di lavoro
G0 X284 Z0,2 F8000 ; pulire, allontanarsi rapidamente dal piano di lavoro
G1 E{-retract_length_toolchange[4]} F2400 ; ritrarre
{e_retratto[4] = retratto_lunghezza_scambio_attrezzo[4]}
G92 E0 ; ripristinare la posizione dell'estrusore
M104 S{(is_nil(idle_temperature[4]) ? (temperatura_primo_strato[4] + temperatura_di_standby_delta) : (temperatura_inattiva[4]))} T4
{endif}
;
; spurgo strumento iniziale
;
G1 F{velocità_di_spostamento * 60}
P0 S1 L2 D0; parcheggiare l'utensile
M109 T{utensile_iniziale} S{temperatura_primo_strato[utensile_iniziale]}
T{utensile_iniziale} S1 L0 D0; prelevare l'utensile
G92 E0 ; reimpostare la posizione dell'estrusore
Modificato. La posizione X dell'utensile 0 è passata da 30 a 33 a causa della spazzola di silicone.
Modificato. La posizione X dell'UTENSILE 4 è passata da 330 a 327 a causa della spazzola di silicone.
G0 X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) } Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; si avvicina al bordo del foglio
G0 E{se is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[initial_tool])}500{else}170{endif} ; spurgo mentre ci si muove verso la lamiera
G0 X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continuare lo spurgo e pulire l'ugello
G0 X{(initial_tool == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; pulire, spostarsi vicino al letto
G0 X{(strumento_iniziale == 0 ? 33 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 327)) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 o initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; pulire, allontanarsi rapidamente dal letto
G1 E-{Lunghezza_di_ritrazione[attrezzo_iniziale]} F2400 ; ritrarre
{e_ritratto[attrezzo_iniziale] = lunghezza_ritratto[attrezzo_iniziale]}
M591 R ; ripristinare il rilevamento del blocco
G92 E0 ; ripristinare la posizione dell'estrusore



