Найти тему
Попов пишет

Gcodes / Макросы / Klipper

Чтобы передать значение температуры из слайсера в макрос нужно в слайсере присвоить значение переменным. Это делается в стартовом gcode.

Мой PrusaSlicer пользовательский стартовый G-код:

M104 S[first_layer_temperature] ; установить температуру головы и не ждать пока она нагреется
M140 S[first_layer_bed_temperature] ; установить температуру стола и не ждать пока он нагреется

START_PRINT EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature] FIRST_LAYER_HEIGHT=[first_layer_height]; запускаем макрос start_print и присваеваем переменным макроса значения

Завершающий G-код

END_PRINT ; вызываем макрос

; на всякий, если макрос не сработал
M104 S0 ; turn off extruder
M140 S0 ; turn off bed
M107 ; Fan off

Для cura аналогично (добавьте недостающий параметр, если используете макрос ниже):

START_PRINT BED_TEMP={material_bed_temperature_layer_0} EXTRUDER_TEMP={material_print_temperature_layer_0}

Проверьте, что в Klipper'е в printer.cfg есть строчка для включения файла с макросами:

[include gcode.cfg]

в gcode.cfg добавляем макросы:

[gcode_macro START_PRINT]
gcode:
# устанавливаем значения переменных, которые передавали из слайсера. Если значений нет - берем значенияпо умолчанию
{% set BED_TEMP = params.BED_TEMP|default(60)|int %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(200)|int %}
{% set FIRST_LAYER_HEIGHT = params.FIRST_LAYER_HEIGHT|float %}
# установить температуру стола и не ждать пока он нагреется
M104 S{EXTRUDER_TEMP}
# установить температуру головы и не ждать пока она нагреется
M140 S{BED_TEMP}
# Использовать абсолютные координаты для экструдера (переключается в слайсере)
G90
# Отправляем домой
G28
# Загрузка карты. Обращайте внимание на имя, под которым у вас сохранена карта, поменяейте название после LOAD= если нужно
BED_MESH_PROFILE LOAD=default
# Поднимаем голову по Z на 25 со скоростью F - повыше, чтобы посмотреть еще раз на сопло пока все нагревается
G1 Z35 F3000
# Теперь устанавливаем темп стола и дожидаемся нагрева (выше не ждали)
M190 S{BED_TEMP}
# Теперь устанавливаем темп головы и дожидаемся нагрева (выше не ждали)
M109 S{EXTRUDER_TEMP}
# полоски
G92 E0 ; обнуляет кол-во выдавленного пластика
G1 Z2.0 F3000 ; Перемещаем голову на Z2 на скорости 3000
G1 X0.1 Y20 Z{FIRST_LAYER_HEIGHT} F5000.0 ; На начальную позицию
G1 X0.1 Y200.0 Z{FIRST_LAYER_HEIGHT} F1500.0 E15 ; Рисуем первую полосу
G1 X0.4 Y200.0 Z{FIRST_LAYER_HEIGHT} F5000.0 ; Смещаемся по Х
G1 X0.4 Y20 Z{FIRST_LAYER_HEIGHT} F1500.0 E30 ; Рисуем вторую полосу
G92 E0 ; обнуляет кол-во выдавленного пластика
G1 X5 Y20 Z0.3 F240 ; Вытираем сопло движением вбок
G92 E0 ; обнуляет кол-во выдавленного пластика

и завершающий макрос:

[gcode_macro END_PRINT]
gcode:
# выключаем нагрев стола, головы и выключаем вентилятор
M140 S0
M104 S0
M106 S0
M107


# относительные координаты
G91
# медленно в сторону, E это движение филамента, F скорость
G1 X-2 Y-2 E-1 F300
# чтобы не висела сопля делаем еще ретракт поднимая голову
G1 Z+0.5 E-3
# отводим голову налево
G28 X0
# обратно на абсолютные координаты
G90
# стол вперед, презентуем результат
G1 Y200 F3000

# Отключаем моторы
M84

макрос для смены филамента (в слайсере на нужном слое нужно добавить команду M600, которая будет запускать этот макрос)

######################################################################
# Filament Change
######################################################################

# M600: Filament Change. This macro will pause the printer, move the
# tool to the change position, and retract the filament 50mm. Adjust
# the retraction settings for your own extruder. After filament has
# been changed, the print can be resumed from its previous position
# with the "RESUME" gcode.

[pause_resume]

[gcode_macro M600]
gcode:
{% set X = params.X|default(50)|float %}
{% set Y = params.Y|default(10)|float %}
{% set Z = params.Z|default(10)|float %}
SAVE_GCODE_STATE NAME=M600_state
PAUSE
G91
G1 E-22 F2700
G1 Z{Z}
G90
G1 X{X} Y{Y} F3000
G91
G1 E-50 F1000
RESTORE_GCODE_STATE NAME=M600_state

Источники:

Configuration reference - Klipper documentation
Linear Move
G-Codes - Klipper documentation
kingargyle’s gists
GitHub - 1coderookie/Klipper4KobraGoNeo: Files for getting Klipper installed and running on the Anycubic Kobra Go & Neo