Este artículo forma parte del Serie técnica Prusa XL en INVESTEGATE.de
Todas las guías asumen que los Fundamentos de Prusa XL son correctos.
Si no, empiece por aquí:
Prusa XL Basics - Fundamentos técnicos

ScrubbyXL es un mod de limpieza de boquillas enfocado a la fiabilidad para la Prusa XL. Añade una limpieza automática antes del Mesh Bed Leveling (MBL) y limpiezas de boquillas opcionales durante la impresión (activadas mediante código G), ayudando a prevenir la acumulación de filamento en la punta de la boquilla, especialmente en impresiones largas donde los pequeños residuos pueden convertirse en defectos o fallos.
Por qué existe ScrubbyXL
La contaminación de la punta de la boquilla es uno de esos problemas que suelen empezar por algo pequeño y acaban en una impresión arruinada. Una pequeña mancha, algún residuo de PETG o material ligeramente quemado puede adherirse a la boquilla y arrastrarse después por la primera capa, interferir con el palpado o, finalmente, provocar defectos superficiales y colisiones en trabajos largos.
ScrubbyXL aborda esto con una idea simple: no esperar a que el problema aparezca - limpiar de forma proactiva. La primera parte ocurre antes de MBL: añadiendo un pequeño ajuste a su Start G-code, la boquilla se limpia para que pueda sondear la cama en un estado más limpio. El objetivo no es “más nivelación”, sino condiciones más consistentes mientras se nivela, lo que ayuda a que la primera capa empiece bien.
La segunda parte es para impresiones largas. ScrubbyXL puede activarse durante la impresión en un intervalo definido por el usuario (por ejemplo, cada N capas) utilizando el código G integrado en la configuración de la cortadora. Esto ayuda a reducir la acumulación gradual que de otro modo se acumula durante muchas horas y, finalmente, puede hacer que una impresión falle al final del trabajo.
Versiones y configuración
Para adaptarse a diferentes configuraciones, ScrubbyXL está disponible en múltiples variantes:
- Tamaños de los orificios de montaje: M3 / M4 / M5.
- Tamaños de cepillo de silicona: A1 o A1 mini.
- Opciones de montaje: magnético (imanes insertados durante la impresión o pegados posteriormente) o una versión fija totalmente atornillada sin imanes.
Mi montaje recomendado es la versión magnética con imanes insertados y el mini cepillo A1. El montaje magnético es especialmente práctico porque es posible que desee retirar el cepillo rápidamente, sobre todo en el lado derecho, donde la herramienta 5 carga/descarga por encima de esa zona. Para obtener el mejor resultado de limpieza, recomiendo instalar escobillas en ambos lados, pero también puede ejecutar sólo un lado y ajustar el código G en consecuencia.
Descarga el ScrubbyXL Mod para el Prusa XL en Printables
Qué esperar
- Menos residuos en las puntas de los inyectores durante trabajos largos, lo que reduce la posibilidad de fallos de impresión en las últimas fases.
- Condiciones de sondeo más limpias antes de la MBL, lo que puede traducirse en una primera capa más consistente.
Códigos G
Iniciar cambios en el código G
- Rutina integrada de limpieza/limpieza de la boquilla por lo que la boquilla se limpia mecánicamente como parte de la puesta en marcha.
- Ajustada la espera de la herramienta para la posición temporal al frente para facilitar la limpieza manual de la boquilla.
- Se ha añadido un indicador sonoro (pitidos antes de la limpieza de la boquilla y antes de la línea de purga) para una mejor retroalimentación durante el arranque.
- Comentarios
G29 P9, porque eleva demasiado la temperatura justo antes de MBL. - Desplazamiento de 3 mm del conducto de purga de la primera y la última herramienta. para evitar cualquier contacto con el cepillo mod.
- Modificación del código G del cepillo de latón de Surfalex2000 para mejorar el resultado de la limpieza (comportamiento más fiable del paño):
Optimizado y fijo Prusa XL arranque completo gcode para el ScrubbyXL
Código G de inicio para el Prusa XL (5TH)
M17 ; habilitar steppers
M862.3 P "XL" ; comprobación del modelo de impresora
M862.5 P2 ; comprobación nivel g-code
M862.6 P "Input shaper" ; comprobación característica FW
M115 U6.4.0+11974
G90 ; usar coordenadas absolutas
M83 ; modo relativo del extrusor
; establecer área de impresión
M555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(primera_capa_impresión_max[0]) - (primera_capa_impresión_min[0])} H{(primera_capa_impresión_max[1]) - (primera_capa_impresión_min[1])}
; informar sobre el diámetro de la boquilla
{if (is_extruder_used[0])}M862.1 T0 P{diámetro_boquilla[0]} A{(filament_abrasive[0] ? 1 : 0)} F{(nozzle_high_flow[0] ? 1 : 0)}{endif}
{if (is_extruder_used[1])}M862.1 T1 P{diámetro_boquilla[1]} A{(filament_abrasive[1] ? 1 : 0)} F{(nozzle_high_flow[1] ? 1 : 0)}{endif}
{if (is_extruder_used[2])}M862.1 T2 P{diámetro_boquilla[2]} A{(filament_abrasive[2] ? 1 : 0)} F{(nozzle_high_flow[2] ? 1 : 0)}{endif}
{if (is_extruder_used[3])}M862.1 T3 P{diámetro_boquilla[3]} A{(filament_abrasive[3] ? 1 : 0)} F{(nozzle_high_flow[3] ? 1 : 0)}{endif}
{if (is_extruder_used[4])}M862.1 T4 P{diámetro_boquilla[4]} A{(filament_abrasive[4] ? 1 : 0)} F{(nozzle_high_flow[4] ? 1 : 0)}{endif}
; apagar calentadores no utilizados
{if ! is_extruder_used[0]}M104 T0 S0{endif}
{if ! is_extruder_used[1]}M104 T1 S0{endif}
{if num_extruders > 2 and ! is_extruder_used[2]}M104 T2 S0{endif}
{if num_extruders > 3 and ! is_extruder_used[3]}M104 T3 S0{endif}
{if num_extruders > 4 and ! is_extruder_used[4]}M104 T4 S0{endif}
M217 Z{max(zhop, 2.0)} ; fijar cambio herramienta z hop a 2mm, o variable zhop de slicer si es mayor
M140 S[first_l] ; ajustar temp cama y extrusor para MBL
M140 S[first_layer_bed_temperature] ; fijar temp cama
M104 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (temperatura_primera_capa[herramienta_inicial] - 10) : (tipo_filamento[herramienta_inicial] == "PC" o tipo_filamento[herramienta_inicial] == "PA") ? (temperatura_primera_capa[herramienta_inicial] - 25) : (tipo_filamento[herramienta_inicial] == "FLEX") ? 210 : (tipo_filamento[herramienta_inicial]=~/.*PET.*/) ? 175 : 170)} ; set temp
Inicio XY
G28 XY
; try picking tools used in print
G1 F{velocidad_viaje * 60}
{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}
{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}
{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}
{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}
{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}
; seleccionar herramienta que se usará para home & MBL
T{herramienta_inicial} S1 L0 D0
; AQUÍ LA HERRAMIENTA TIENE QUE ESPERAR PURAMENTE POR EL CEPILLO DE SILICONA
G1 Z30
G1 X145 Y-8 F{velocidad_desplazamiento * 60}
M109 T{herramienta_inicial} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (notas_filamento[herramienta_inicial]=~/.*HT_MBL10.*/) ? (temperatura_primera_capa[herramienta_inicial] - 10) : (tipo_filamento[herramienta_inicial] == "PC" o tipo_filamento[herramienta_inicial] == "PA") ? (temperatura_primera_capa[herramienta_inicial] - 25) : (tipo_filamento[herramienta_inicial] == "FLEX") ? 210 : (tipo_filamento[herramienta_inicial]=~/.*PET.*/) ? 175 : 170)} ; esperar temp
; inicio Z con herramienta MBL
M84 E ; apagar motor E
G28 Z
G0 Z5 ; añadir holgura Z
; AQUÍ LA HERRAMIENTA TIENE QUE ESPERAR PURAMENTE POR EL CEPILLO DE SILICONA
G1 Z30
G1 X145 Y-8 F{velocidad_desplazamiento * 60}
M104 T{herramienta_inicial} S{if is_nil(temperatura_de_reposo[herramienta_inicial])}70{else}{temperatura_de_reposo[herramienta_inicial]}{endif} ; fijar temperatura de reposo
M190 S[temperatura_cama_primera_capa] ; espera temperatura cama
G29 G ; absorber calor
M109 T{herramienta_inicial} S{((notas_filamento[herramienta_inicial]=~/.*MBL160.*/) ? 160 : (notas_filamento[herramienta_inicial]=~/.*HT_MBL10.*/) ? (temperatura_primera_capa[herramienta_inicial] - 10) : (tipo_filamento[herramienta_inicial] == "PC" o tipo_filamento[herramienta_inicial] == "PA") ? (temperatura_primera_capa[herramienta_inicial] - 25) : (tipo_filamento[herramienta_inicial] == "FLEX") ? 210 : (tipo_filamento[herramienta_inicial]=~/.*PET.*/) ? 175 : 170)} ; esperar temp
M300 S800 P200. ; indicador PIEP
; pasar a la zona de limpieza de boquillas
; limpieza de boquillas PARA LIMPIADOR DE SILICONA IZQUIERDO Y DERECHO
M302 S155 ; bajar limite de extrusion en frio a 155C
G1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retracción para limpieza de boquilla
M84 E ; apagar motor E
; --- Iniciar limpieza de boquilla
G1 Z5 ; Mover cama fuera del camino
{if herramienta_inicial == 0 or herramienta_inicial == 1 }
Iniciar barrido de boquilla IZQUIERDA ---
G1 X-2 Y-8 F24000 ; Mover al inicio del área de barrido
G1 X28 Y-8 F24000 ; Pase de barrido 1
G1 X-2 Y-7.5 F24000 ; Reposicionar
G1 X28 Y-7.5 F24000 ; Pase 2
G1 X-2 Y-7 F24000 ; Reposición
G1 X28 Y-7 F24000 ; Pase de limpieza 3
G1 X-2 Y-6.5 F24000 ; Reposición
G1 X28 Y-6.5 F24000 ; Paso de limpieza 4
G1 X-2 Y-6 F24000 ; Reposición
G1 X28 Y-6 F24000 ; Pase de limpieza 5
G1 X-2 Y-6.5 F24000 ; Reposición
G1 X28 Y-6.5 F24000 ; Paso de limpieza 6
G1 X-2 Y-7 F24000 ; Reposición
G1 X28 Y-7 F24000 ; Pase de limpieza 7
G1 X-2 Y-7.5 F24000 ; Reposición
G1 X28 Y-7.5 F24000 ; Paso de limpieza 8
G1 X-2 Y-8 F24000 ; Reposición
G1 X28 Y-8 F24000 ; Pasada 9
; --- Fin Tobera Limpiar IZQUIERDA ---
{else}
--- Empezar boquilla de barrido DERECHA ---
G1 X332 Y-8 F24000 ; Desplazarse al inicio del área de barrido
G1 X361 Y-8 F24000 ; Pase de barrido 1
G1 X332 Y-7.5 F24000 ; Reposicionar
G1 X361 Y-7.5 F24000 ; Pase 2
G1 X332 Y-7 F24000 ; Reposición
G1 X361 Y-7 F24000 ; Pase de limpieza 3
G1 X332 Y-6.5 F24000 ; Reposición
G1 X361 Y-6.5 F24000 ; Pase 4
G1 X332 Y-6 F24000 ; Reposición
G1 X361 Y-6 F24000 ; Pase de limpieza 5
G1 X332 Y-6.5 F24000 ; Reposición
G1 X361 Y-6.5 F24000 ; Pase de limpieza 6
G1 X332 Y-7 F24000 ; Reposición
G1 X361 Y-7 F24000 ; Pase de limpieza 7
G1 X332 Y-7.5 F24000 ; Reposición
G1 X361 Y-7.5 F24000 ; Pase de limpieza 8
G1 X332 Y-8 F24000 ; Reposición
G1 X361 Y-8 F24000 ; Pasada 9
; --- Fin Tobera Limpiar DERECHA ---
{endif}
G1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((primera_capa_imprimir_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((primera_capa_imprimir_min[1] - 7), primera_capa_imprimir_min[1]))} Z{5} F{(velocidad_viaje * 60)}
; limpieza de boquilla
;Comentado abajo porque pone la temperatura demasiado alta delante del MBL.
;G29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((primera_capa_imprimir_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}
{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}
{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}
{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}
{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}
{if (is_extruder_used[0]) and initial_tool != 0}
M591 S0 ; desactivar detección de atasco
; listo para imprimir melodía, antes de purgar
M300 S1200 P150
G4 P200
M300 S1500 P150
G4 P200
M300 S1800 P300
G4 P500
;
; purgar primera herramienta
; Editado. Posición X cambiada de 30 a 33 debido al cepillo de silicona.
;
G1 F{velocidad_desplazamiento * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T0 S{temperatura_primera_capa[0]}
T0 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X33 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X70 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X73 Z0.05 F8000 ; limpiar, moverse cerca de la cama
G0 X76 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[0]} F2400 ; retraer
{e_retracted[0] = retract_length_toolchange[0]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[0]) ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0
{endif}
{if (is_extruder_used[1]) and initial_tool != 1}
;
; purgar segunda herramienta
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T1 S{temperatura_primera_capa[1]}
T1 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X150 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X110 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X107 Z0.05 F8000 ; limpiar, moverse cerca de la cama
G0 X104 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[1]} F2400 ; retraer
{e_retracted[1] = retract_length_toolchange[1]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[1]) ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1
{endif}
{if (is_extruder_used[2]) and initial_tool != 2}
;
; purgar tercera herramienta
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T2 S{temperatura_primera_capa[2]}
T2 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X210 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X250 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X253 Z0.05 F8000 ; limpie, muévase cerca de la cama
G0 X256 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[2]} F2400 ; retraer
{e_retracted[2] = retract_length_toolchange[2]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[2]) ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2
{endif}
{if (is_extruder_used[3]) and initial_tool != 3}
;
; purgar cuarta herramienta
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T3 S{temperatura_primera_capa[3]}
T3 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X327 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X290 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X287 Z0.05 F8000 ; limpie, muévase cerca de la cama
G0 X284 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[3]} F2400 ; retraer
{e_retracted[3] = retract_length_toolchange[3]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[3]) ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3
{endif}
{if (is_extruder_used[4]) and initial_tool != 4}
;
; purgar quinta herramienta
; Editado. Posición X para HERRAMIENTA 4 cambiada de 330 a 327 debido a cepillo de silicona.
;
G1 F{velocidad_desplazamiento * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T4 S{temperatura_primera_capa[4]}
T4 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X327 Y-4.5 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X290 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X287 Z0.05 F8000 ; limpie, muévase cerca de la cama
G0 X284 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[4]} F2400 ; retraer
{e_retracted[4] = retract_length_toolchange[4]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[4]) ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4
{endif}
;
; purga herramienta inicial
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T{herramienta_inicial} S{temperatura_primera_capa[herramienta_inicial]}
T{herramienta_inicial} S1 L0 D0; recoger la herramienta
G92 E0 ; restablecer la posición del extrusor
; Editado. Posición X para HERRAMIENTA 0 cambiada de 30 a 33 debido al cepillo de silicona.
Editado. Posición X para TOOL 4 cambiada de 330 a 327 debido al cepillo de silicona.
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327)))} Y{(herramienta_inicial < 4 ? -7 : -4.5)} Z10 F{(velocidad_viaje * 60)} ; acercarse al borde de la hoja
G0 E{if is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[herramienta_inicial])}500{else}170{endif} ; purga mientras se mueve hacia la hoja
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 40)} E9 F800 ; continuar purgando y limpiar la boquilla
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 40) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; limpiar, acercar a la cama
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 40) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; limpiar, alejarse rápidamente de la cama
G1 E-{longitud_retráctil[herramienta_inicial]} F2400 ; retraer
{e_replegado[herramienta_inicial] = longitud_replegado[herramienta_inicial]}
M591 R ; restablecer detección de atasco
G92 E0 ; restablecer posición extrusor
Antes del cambio de capa Código G
Durante la impresión, la boquilla se limpia automáticamente cada X capas)
Antes del cambio de capa Código G
;BEFORE_LAYER_CHANGE
G92 E0.0
;[capa_z]
; Durante la impresión, la boquilla se limpia automáticamente cada X capas. (X = 400 capas)
; --- Cada 400 capas: limpieza automática ---
{if layer_num > 0 && layer_num % 400 == 0}
; Guardar posición actual (Buddy FW)
G1 F{velocidad_viaje * 100}
G60 S0 ; guardar posición XYZ actual
M300 S300 P200. ; indicador PIEP
; Elevar Z un poco por seguridad
G1 Z{layer_z + 5} F1000
; --- Start Nozzle Wipe ---
{if herramienta_inicial == 0 or herramienta_inicial == 1 }
; --- Iniciar barrido de boquilla IZQUIERDA ---
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
--- Tobera final Limpiar IZQUIERDA ---
{else}
; --- Iniciar Tobera Limpiar DERECHA ---
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
; --- Tobera final Limpiar DERECHA ---
{endif}
; --- End Nozzle Wipe ---
; Restaurar posición
G61 S0 ; Restaurar posición XYZ almacenada
{endif}
Bonificación: Impresión Acabado Sonido
Toca una breve melodía final.
Fin del código G
G4 ; espera
{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+5, max_print_height)}{endif} ; Mover cama abajo
P0 S1 ; aparcar herramienta
{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+97, max_print_height)} F300{endif} ; Mover cama más abajo
; apagar calentadores extrusores
{if is_extruder_used[0]}M104 T0 S0{endif}
{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 ; apaga el lecho térmico
M107 ; apagar ventilador
M221 S100 ; restablecer porcentaje de flujo
M84 ; desactivar motores
;Melodía de acabado
M300 S1200 P150
G4 P200
M300 S1500 P150
G4 P200
M300 S1800 P300
G4 P500
M77 ; detener temporizador de impresión
; max_layer_z = [max_layer_z]
Opcional: Cepillo de latón MBL adicional mod de Surfalex2000
Si también desea utilizar el cepillo de latón MBL mod de @Surfalex2000:
Código G de inicio para el Prusa XL (5TH)
M17 ; habilitar steppers
M862.3 P "XL" ; comprobación del modelo de impresora
M862.5 P2 ; comprobación nivel g-code
M862.6 P "Input shaper" ; comprobación característica FW
M115 U6.4.0+11974
G90 ; usar coordenadas absolutas
M83 ; modo relativo del extrusor
; establecer área de impresión
M555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(primera_capa_impresión_max[0]) - (primera_capa_impresión_min[0])} H{(primera_capa_impresión_max[1]) - (primera_capa_impresión_min[1])}
; informar sobre el diámetro de la boquilla
{if (is_extruder_used[0])}M862.1 T0 P{diámetro_boquilla[0]} A{(filament_abrasive[0] ? 1 : 0)} F{(nozzle_high_flow[0] ? 1 : 0)}{endif}
{if (is_extruder_used[1])}M862.1 T1 P{diámetro_boquilla[1]} A{(filament_abrasive[1] ? 1 : 0)} F{(nozzle_high_flow[1] ? 1 : 0)}{endif}
{if (is_extruder_used[2])}M862.1 T2 P{diámetro_boquilla[2]} A{(filament_abrasive[2] ? 1 : 0)} F{(nozzle_high_flow[2] ? 1 : 0)}{endif}
{if (is_extruder_used[3])}M862.1 T3 P{diámetro_boquilla[3]} A{(filament_abrasive[3] ? 1 : 0)} F{(nozzle_high_flow[3] ? 1 : 0)}{endif}
{if (is_extruder_used[4])}M862.1 T4 P{diámetro_boquilla[4]} A{(filament_abrasive[4] ? 1 : 0)} F{(nozzle_high_flow[4] ? 1 : 0)}{endif}
; apagar calentadores no utilizados
{if ! is_extruder_used[0]}M104 T0 S0{endif}
{if ! is_extruder_used[1]}M104 T1 S0{endif}
{if num_extruders > 2 and ! is_extruder_used[2]}M104 T2 S0{endif}
{if num_extruders > 3 and ! is_extruder_used[3]}M104 T3 S0{endif}
{if num_extruders > 4 and ! is_extruder_used[4]}M104 T4 S0{endif}
M217 Z{max(zhop, 2.0)} ; fijar cambio herramienta z hop a 2mm, o variable zhop de slicer si es mayor
M140 S[first_l] ; ajustar temp cama y extrusor para MBL
M140 S[first_layer_bed_temperature] ; fijar temp cama
M104 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (temperatura_primera_capa[herramienta_inicial] - 10) : (tipo_filamento[herramienta_inicial] == "PC" o tipo_filamento[herramienta_inicial] == "PA") ? (temperatura_primera_capa[herramienta_inicial] - 25) : (tipo_filamento[herramienta_inicial] == "FLEX") ? 210 : (tipo_filamento[herramienta_inicial]=~/.*PET.*/) ? 175 : 170)} ; set temp
Inicio XY
G28 XY
; try picking tools used in print
G1 F{velocidad_viaje * 60}
{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}
{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}
{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}
{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}
{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}
; seleccionar herramienta que se usará para home & MBL
T{herramienta_inicial} S1 L0 D0
; AQUÍ LA HERRAMIENTA TIENE QUE ESPERAR PURAMENTE POR EL CEPILLO DE SILICONA
G1 Z30
G1 X145 Y-8 F{velocidad_desplazamiento * 60}
M109 T{herramienta_inicial} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (notas_filamento[herramienta_inicial]=~/.*HT_MBL10.*/) ? (temperatura_primera_capa[herramienta_inicial] - 10) : (tipo_filamento[herramienta_inicial] == "PC" o tipo_filamento[herramienta_inicial] == "PA") ? (temperatura_primera_capa[herramienta_inicial] - 25) : (tipo_filamento[herramienta_inicial] == "FLEX") ? 210 : (tipo_filamento[herramienta_inicial]=~/.*PET.*/) ? 175 : 170)} ; esperar temp
; inicio Z con herramienta MBL
M84 E ; apagar motor E
G28 Z
G0 Z5 ; añadir holgura Z
; AQUÍ LA HERRAMIENTA TIENE QUE ESPERAR PURAMENTE POR EL CEPILLO DE SILICONA
G1 Z30
G1 X145 Y-8 F{velocidad_desplazamiento * 60}
M104 T{herramienta_inicial} S{if is_nil(temperatura_de_reposo[herramienta_inicial])}70{else}{temperatura_de_reposo[herramienta_inicial]}{endif} ; fijar temperatura de reposo
M190 S[temperatura_cama_primera_capa] ; espera temperatura cama
G29 G ; absorber calor
M109 T{herramienta_inicial} S{((notas_filamento[herramienta_inicial]=~/.*MBL160.*/) ? 160 : (notas_filamento[herramienta_inicial]=~/.*HT_MBL10.*/) ? (temperatura_primera_capa[herramienta_inicial] - 10) : (tipo_filamento[herramienta_inicial] == "PC" o tipo_filamento[herramienta_inicial] == "PA") ? (temperatura_primera_capa[herramienta_inicial] - 25) : (tipo_filamento[herramienta_inicial] == "FLEX") ? 210 : (tipo_filamento[herramienta_inicial]=~/.*PET.*/) ? 175 : 170)} ; esperar temp
M300 S800 P200. ; indicador PIEP
; pasar a la zona de limpieza de boquillas
; Montaje del cepillo de boquillas Surfalex2000 en Printables
; https://www.printables.com/model/644817-prusa-xl-series-front-nozzle-srcubber-for-use-with
G1 E-10 F2400 ; más retracción para compensar el rezume antes de la limpieza de la boquilla
; Iniciar el ciclo del cepillo de boquilla Surfalex2000
; --- Iniciar ciclo de cepillo de boquilla (rampa de velocidad) ---
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 cepillo tobera
; Fin surfalex2000 ciclo cepillo boquilla
; limpieza de boquillas PARA LIMPIADOR DE SILICONA IZQUIERDO Y DERECHO
M302 S155 ; bajar límite de extrusión en frío a 155C
G1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retracción para limpieza de boquilla
M84 E ; apagar motor E
; --- Iniciar limpieza de boquilla
G1 Z5 ; Mover cama fuera del camino
{if herramienta_inicial == 0 or herramienta_inicial == 1 }
Iniciar barrido de boquilla IZQUIERDA ---
G1 X-2 Y-8 F24000 ; Mover al inicio del área de barrido
G1 X28 Y-8 F24000 ; Pase de barrido 1
G1 X-2 Y-7.5 F24000 ; Reposicionar
G1 X28 Y-7.5 F24000 ; Pase 2
G1 X-2 Y-7 F24000 ; Reposición
G1 X28 Y-7 F24000 ; Pase de limpieza 3
G1 X-2 Y-6.5 F24000 ; Reposición
G1 X28 Y-6.5 F24000 ; Paso de limpieza 4
G1 X-2 Y-6 F24000 ; Reposición
G1 X28 Y-6 F24000 ; Pase de limpieza 5
G1 X-2 Y-6.5 F24000 ; Reposición
G1 X28 Y-6.5 F24000 ; Paso de limpieza 6
G1 X-2 Y-7 F24000 ; Reposición
G1 X28 Y-7 F24000 ; Pase de limpieza 7
G1 X-2 Y-7.5 F24000 ; Reposición
G1 X28 Y-7.5 F24000 ; Paso de limpieza 8
G1 X-2 Y-8 F24000 ; Reposición
G1 X28 Y-8 F24000 ; Pasada 9
; --- Fin Tobera Limpiar IZQUIERDA ---
{else}
--- Empezar boquilla de barrido DERECHA ---
G1 X332 Y-8 F24000 ; Desplazarse al inicio del área de barrido
G1 X361 Y-8 F24000 ; Pase de barrido 1
G1 X332 Y-7.5 F24000 ; Reposicionar
G1 X361 Y-7.5 F24000 ; Pase 2
G1 X332 Y-7 F24000 ; Reposición
G1 X361 Y-7 F24000 ; Pase de limpieza 3
G1 X332 Y-6.5 F24000 ; Reposición
G1 X361 Y-6.5 F24000 ; Pase 4
G1 X332 Y-6 F24000 ; Reposición
G1 X361 Y-6 F24000 ; Pase de limpieza 5
G1 X332 Y-6.5 F24000 ; Reposición
G1 X361 Y-6.5 F24000 ; Pase de limpieza 6
G1 X332 Y-7 F24000 ; Reposición
G1 X361 Y-7 F24000 ; Pase de limpieza 7
G1 X332 Y-7.5 F24000 ; Reposición
G1 X361 Y-7.5 F24000 ; Pase de limpieza 8
G1 X332 Y-8 F24000 ; Reposición
G1 X361 Y-8 F24000 ; Pasada 9
; --- Fin Tobera Limpiar DERECHA ---
{endif}
G1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((primera_capa_imprimir_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((primera_capa_imprimir_min[1] - 7), primera_capa_imprimir_min[1]))} Z{5} F{(velocidad_viaje * 60)}
; limpieza de boquilla
;Comentado abajo porque pone la temperatura demasiado alta delante del MBL.
;G29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((primera_capa_imprimir_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}
{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}
{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}
{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}
{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}
{if (is_extruder_used[0]) and initial_tool != 0}
M591 S0 ; desactivar detección de atasco
; listo para imprimir melodía, antes de purgar
M300 S1200 P150
G4 P200
M300 S1500 P150
G4 P200
M300 S1800 P300
G4 P500
;
; purgar primera herramienta
; Editado. Posición X cambiada de 30 a 33 debido al cepillo de silicona.
;
G1 F{velocidad_desplazamiento * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T0 S{temperatura_primera_capa[0]}
T0 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X33 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X70 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X73 Z0.05 F8000 ; limpiar, moverse cerca de la cama
G0 X76 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[0]} F2400 ; retraer
{e_retracted[0] = retract_length_toolchange[0]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[0]) ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0
{endif}
{if (is_extruder_used[1]) and initial_tool != 1}
;
; purgar segunda herramienta
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T1 S{temperatura_primera_capa[1]}
T1 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X150 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X110 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X107 Z0.05 F8000 ; limpiar, moverse cerca de la cama
G0 X104 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[1]} F2400 ; retraer
{e_retracted[1] = retract_length_toolchange[1]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[1]) ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1
{endif}
{if (is_extruder_used[2]) and initial_tool != 2}
;
; purgar tercera herramienta
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T2 S{temperatura_primera_capa[2]}
T2 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X210 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X250 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X253 Z0.05 F8000 ; limpie, muévase cerca de la cama
G0 X256 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[2]} F2400 ; retraer
{e_retracted[2] = retract_length_toolchange[2]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[2]) ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2
{endif}
{if (is_extruder_used[3]) and initial_tool != 3}
;
; purgar cuarta herramienta
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T3 S{temperatura_primera_capa[3]}
T3 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X327 Y-7 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X290 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X287 Z0.05 F8000 ; limpie, muévase cerca de la cama
G0 X284 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[3]} F2400 ; retraer
{e_retracted[3] = retract_length_toolchange[3]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[3]) ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3
{endif}
{if (is_extruder_used[4]) and initial_tool != 4}
;
; purgar quinta herramienta
; Editado. Posición X para HERRAMIENTA 4 cambiada de 330 a 327 debido a cepillo de silicona.
;
G1 F{velocidad_desplazamiento * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T4 S{temperatura_primera_capa[4]}
T4 S1 L0 D0; recoger la herramienta
G92 E0 ; reajustar la posición del extrusor
G0 X327 Y-4.5 Z10 F{(travel_speed * 60)} ; acercarse al borde de la hoja
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} ; purgar mientras se mueve hacia la hoja
G0 X290 E9 F800 ; continuar purgando y limpiar la boquilla
G0 X287 Z0.05 F8000 ; limpie, muévase cerca de la cama
G0 X284 Z0.2 F8000 ; limpiar, alejarse rápidamente del lecho
G1 E{-retract_length_toolchange[4]} F2400 ; retraer
{e_retracted[4] = retract_length_toolchange[4]}
G92 E0 ; reset posición extrusor
M104 S{(is_nil(idle_temperature[4]) ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4
{endif}
;
; purga herramienta inicial
;
G1 F{velocidad_recorrido * 60}
P0 S1 L2 D0; aparcar la herramienta
M109 T{herramienta_inicial} S{temperatura_primera_capa[herramienta_inicial]}
T{herramienta_inicial} S1 L0 D0; recoger la herramienta
G92 E0 ; restablecer la posición del extrusor
; Editado. Posición X para HERRAMIENTA 0 cambiada de 30 a 33 debido al cepillo de silicona.
Editado. Posición X para TOOL 4 cambiada de 330 a 327 debido al cepillo de silicona.
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327)))} Y{(herramienta_inicial < 4 ? -7 : -4.5)} Z10 F{(velocidad_viaje * 60)} ; acercarse al borde de la hoja
G0 E{if is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[herramienta_inicial])}500{else}170{endif} ; purga mientras se mueve hacia la hoja
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 40)} E9 F800 ; continuar purgando y limpiar la boquilla
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 40) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; limpiar, acercar a la cama
G0 X{(herramienta_inicial == 0 ? 33 : (herramienta_inicial == 1 ? 150 : (herramienta_inicial == 2 ? 210 : 327))) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 40) + ((herramienta_inicial == 0 o herramienta_inicial == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; limpiar, alejarse rápidamente de la cama
G1 E-{longitud_retráctil[herramienta_inicial]} F2400 ; retraer
{e_replegado[herramienta_inicial] = longitud_replegado[herramienta_inicial]}
M591 R ; restablecer detección de atasco
G92 E0 ; restablecer posición extrusor



