Skip to content

Instantly share code, notes, and snippets.

@alienboyxp
Last active November 29, 2024 22:46
Show Gist options
  • Save alienboyxp/2f9b36e9628b67ca8b527c39b8ad1992 to your computer and use it in GitHub Desktop.
Save alienboyxp/2f9b36e9628b67ca8b527c39b8ad1992 to your computer and use it in GitHub Desktop.
3Dwork.io - Klipper - Macro change_filament
# Current Version v_202306142036
# Mas info - https://3dwork.gitbook.io/3dwork.io/klipper/mejoras/macros-mejoras/cambio-filamentos-m600
######################################################################
# CAMBIO DE FILAMENTO
######################################################################
# M600
# M601
# CHANGE_FILAMENT
# LOAD_FILAMENT
# UNLOAD_FILAMENT
# NOTIFY
# BEEP
######################################################################
[gcode_macro M600]
description: Codigo gcode para el cambio de filamento
gcode:
CHANGE_FILAMENT
[gcode_macro M601]
description: Codigo gcode que pausa la impresion
gcode:
PAUSE
[gcode_macro CHANGE_FILAMENT]
description: Cambio de filamento
gcode:
PAUSE
UNLOAD_FILAMENT
BEEP R=3
[gcode_macro LOAD_FILAMENT]
description: Realiza la carga de filamento calentando el hotend si es necesario
gcode:
{% if printer.extruder.can_extrude %} ; se comprueba que se pueda extruir para cargar el filamento
_LOAD_FILAMENT
{% else %}
_TEMP_EXTRUDER
_LOAD_FILAMENT
{% endif %}
[gcode_macro UNLOAD_FILAMENT]
description: Realiza la descarga de filameno calentando el hotend si es necesario
gcode:
{% if printer.extruder.can_extrude %} ; se comprueba que se pueda extruir para descargar el filamento
_UNLOAD_FILAMENT
{% else %}
_TEMP_EXTRUDER
_UNLOAD_FILAMENT
{% endif %}
[gcode_macro NOTIFY]
description: Envia un texto al LCD y Consola\n Uso: NOTIFY TEXT="TEXTO" CLEAR=[0|1] limpia pantalla en 10 segundos.
gcode:
{% set TEXT = params.TEXT|default("")|string %}
{% set CLEAR = params.CLEAR|default(0)|int %}
{% if TEXT != "" %}
M117 {TEXT}
{action_respond_info("%s" % (TEXT))}
{% if CLEAR|int == 1 %}
UPDATE_DELAYED_GCODE ID=_CLEAR_DISPLAY DURATION=10
{% endif %}
{% endif %}
[gcode_macro BEEP]
description: Emite un pitido.\n Uso BEEP [R=NUMERO DE PITIDOS]
gcode:
{% if 'output_pin beeper' in printer.configfile.settings and printer["gcode_macro M300"] is defined %}
{% set R = params.R|default(0)|int %}
{% for i in range(R) %}
M300 P200
{% endfor %}
{% endif %}
[gcode_macro _LOAD_FILAMENT]
gcode: |
{% if printer.extruder.can_extrude %} ; se comprueba que se pueda extruir para cargar el filamento
{% set vg = printer["gcode_macro _VAR_GLOBALS"] %}
SAVE_GCODE_STATE NAME=LOAD_state
NOTIFY TEXT="Cargando filamento..."
M83 ; activar extrusion relativa
{% for r in range(vg.fil_num_repeats) %} ; repite la carga de filamento x veces
G1 E{vg.fil_length} F{vg.fil_speed} ; se carga filamento x veces para evitar el limite de longitud
{% endfor %}
G1 E-{vg.retract_length} F{vg.retract_speed} ; retrae el fimalento (indicado o configurado por firmware)
NOTIFY TEXT="Filamento cargado." CLEAR=1
RESTORE_GCODE_STATE NAME=LOAD_state
BEEP
{% else %}
NOTIFY TEXT="Temperatura baja, imposible cargar el filamento."
{% endif %}
[gcode_macro _UNLOAD_FILAMENT]
gcode:
{% if printer.extruder.can_extrude %} ; se comprueba que se pueda extruir para descargar el filamento
{% set vg = printer["gcode_macro _VAR_GLOBALS"] %}
SAVE_GCODE_STATE NAME=UNLOAD_state
NOTIFY TEXT="Descargando filamento..."
M83 ; activar extrusion relativa
G1 E{vg.fil_length_purge} F{vg.fil_purge_speed} ; purga rapida
G1 E-{vg.retract_length} F{vg.retract_speed} ; retrae el fimalento (indicado o configurado por firmware)
G4 P1000 ; esperamos a que enfrie un poco el filamento
G1 E-{vg.fil_length/5} F{vg.fil_speed} ; se descarga el filamento lentamente para evitar atascos
{% for r in range(vg.fil_num_repeats) %} ; repite la descarga de filamento x veces
G1 E-{vg.fil_length} F{vg.fil_fast_speed} ; se descarga filamento x veces para evitar el limite de longitud
{% endfor %}
NOTIFY TEXT="Filamento descargado." CLEAR=1
RESTORE_GCODE_STATE NAME=UNLOAD_state
BEEP
{% else %}
NOTIFY TEXT="Temperatura baja, imposible descargar el filamento."
{% endif %}
[gcode_macro _TEMP_EXTRUDER]
gcode:
{% if not printer.extruder.can_extrude %} ; se comprueba que NO se pueda extruir
{% set vg = printer["gcode_macro _VAR_GLOBALS"] %}
{% set min_temp = printer.extruder.min_extrude_temp|default(170) %}
{% set printing_temp = vg.temp_extruder_pause if printer.pause_resume.is_paused else vg.temp_extruder %}
BEEP
NOTIFY TEXT="Temperatura baja, calentando y esperando temperatura optima."
M104 S{min_temp}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={min_temp} MAXIMUM={printing_temp}; espera hasta alcanzar la temperatura de extrusion
{% endif %}
[delayed_gcode _CLEAR_DISPLAY]
gcode:
M117
@Fecamental
Copy link

I got this error:
Error evaluating 'gcode_macro _UNLOAD_FILAMENT:gcode': jinja2.exceptions.UndefinedError: 'extras.gcode_macro.GetStatusWrapper object' has no attribute 'gcode_macro _VAR_GLOBALS'

what _VAR_GLOBALS are,
I'd really appreciate any information !

@Fecamental
Copy link

Fecamental commented Jul 7, 2024

Hola, lo más probable es que hables español jajajaj,
Intenté imprimir pero me salió este error:
Error evaluating 'gcode_macro _UNLOAD_FILAMENT:gcode': jinja2.exceptions.UndefinedError: 'extras.gcode_macro.GetStatusWrapper object' has no attribute 'gcode_macro _VAR_GLOBALS'

what _VAR_GLOBALS are,
I'd really appreciate any information !

donde puedo encontrar información sobre la sintaxis y qué significa cada cosa ?
agradecería enormemente cualquier tipo de información!!

@cepdicom
Copy link

Donde hay que poner este script? en el laminador en la parte del gcode donde esta el cambio de filamento? solamente con eso funciona?
gracias

@alienboyxp
Copy link
Author

Donde hay que poner este script? en el laminador en la parte del gcode donde esta el cambio de filamento? solamente con eso funciona? gracias

Es una macro de Klipper, en tu printer.cfg o include de este.
https://klipper.3dwork.io/klipper/mejoras/macros-mejoras/cambio-filamentos-m600
Quizás pueda servirte de orientación para entender como funciona.

@cepdicom
Copy link

Donde hay que poner este script? en el laminador en la parte del gcode donde esta el cambio de filamento? solamente con eso funciona? gracias

Es una macro de Klipper, en tu printer.cfg o include de este. https://klipper.3dwork.io/klipper/mejoras/macros-mejoras/cambio-filamentos-m600 Quizás pueda servirte de orientación para entender como funciona.

Excelente; muchas gracias

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment