Перейти к содержанию

ЧАВО по пользовательским G-кодам

Я пользуюсь и рекомендую другим пользоваться только PrusaSlicer/OrcaSlicer т.к. эти слайсеры наиболее развитые и функциональные на данный момент. Поэтому вся статья будет только о G-кодах в этих слайсерах. Для других слайсеров подобной статьи не планируется

Откуда брать стартовый и конечный G-код?

Если вы купили себе готовый принтер, то лучшим вариантом для начала будет открыть готовый профиль под этот принтер в том слайсере, в котором вы собираетесь дальше работать. При этом важно отметить, что G-коды из PrusaSlicer и OrcaSlicer совместимы, если там не используется плейсхолдеров для каких-то параметров, которых в другом слайсере нет. То есть в большинстве случаев можно скопировать начальный\конечный G-код из OrcaSlicer в PrusaSlicer и наоборот.

Если под ваш принтер нет готовых профилей в распространенных слайсерах, то, скорее всего, разработчик развивает свой форк какого-то из них. В большинстве случаев начальный\конечный G-код из этих форков PS/OS без проблем переносится в основные версии.

Профиля под мой принтер нет в слайсерах

В первую очередь, если у вас принтер на прошивке Klipper и есть доступ к конфигурации, то можно поискать в ней макросы START_PRINT и END_PRINT. Иногда они могут называться PRINT_START или PRINT_END. Обычно эти макросы выполняют все действия по подготовке принтера к печати. Это значит, что вам достаточно будет в начальном G-коде просто вызвать макрос START_PRINT с необходимыми ему аргументами, а в конечном - END_PRINT.

Если таких макросов нет, то проще всего будет найти telegram-чат владельцев такого же принтера, как у вас, и спросить там готовый профиль. Даже если сам профиль вам не подойдёт, то начальный и конечный G-коды, скорее всего, будут работать хорошо и их можно будет перенести в свой профиль.

Как пользоваться макросами START_PRINT и END_PRINT?

Необходимые аргументы для этих макросов могут очень сильно разниться в зависимости от самого макроса. На сложных принтерах, имеющих несколько экструдеров, активную термокамеру или другие особенности, без умения прочитать макрос и понять что там написано, пользоваться им не получится. Но для простых принтеров с 1 экструдером и без экзотики может быть достаточно передать аргументы BED_TEMP и EXTRUDER_TEMP. В таком случае стартовый G-код будет выглядеть так:

START_PRINT BED_TEMP={first_layer_bed_temperature[0]} EXTRUDER_TEMP={first_layer_temperature[0]}

Макрос END_PRINT, обычно, вызывается в конечном G-коде без каких-либо дополнительных аргументов.

Универсальные G-коды для принтеров на Marlin

Если ваш принтер использует прошивку Marlin и не имеет никаких специфических особенностей (многоэкструдерность, активная термокамера и т.д.), то с большой долей вероятности у вас будет хорошо работать этот стартовый G-код:

M140 S{first_layer_bed_temperature[0]} #Запустить нагрев стола до указанной в профиле филамента температуры
M104 S150 #Запустить нагрев хотэнда до 150 градусов
G28 #Припарковать все оси
M104 S{first_layer_temperature[0]} #Запустить нагрев хотэнда до указанной в профиле филамента температуры
M190 S{first_layer_bed_temperature[0]} #Ожидать нагрева стола до указанной в профиле филамента температуры
M109 S{first_layer_temperature[0]} #Ожидать нагрева хотэнда до указанной в профиле филамента температуры
G90 #Установить абсолютную систему координат для всех осей
M220 S100 #Установить поток в прошивке на 100%
M221 S100 #Установить множитель скорости в прошивке на 100%

Указанный G-код предполагает, что в слайсере будет включена абсолютная система координат на все оси, в том числе на экструдер

Если требуется снять карту высот стола перед печатью, то на следующую после команды G28 строку добавьте G29

Универсальный завершающий G-код:

M140 S0 #Выключить нагрев стола
M106 S0 #Выключить вентилятор обдува модели
G91 #Относительная система координат
G1 E-5 F1800 #Сделать откат 5мм
M104 S0 #Выключить нагрев хотэнда
G1 Z0.2 F300 #Поднять печатающую голову на 0.2 мм
G90 #Абсолютная система координат
G1 X5 Y5 F6000 #Переехать в координату 5;5
M84 #Выключить моторы

Очистка сопла

Если у вашего принтера есть инструменты для очистки сопла перед печатью, то, скорее всего, необходимый алгоритм для их использования уже включен в макросы парковки, работы датчика автоуровня или стартовый макрос (START_PRINT).

Если нет, то придётся искать готовый профиль, в котором кто-то другой уже написал алгоритм для использования инстурментов очистки сопла, или писать и отлаживать алгоритм самостоятельно.

Прочистка сопла (линия перед печатью)

Писать в стартовом G-коде команды для рисования линий или зигзагов перед печатью не имеет смысла т.к. для этого в слайсерах существует функция "юбка". Она, фактически, является такой же линией для прочистки, но печатающейся вокруг модели.

Не нашёл ответа на свой вопрос

Если вы не нашли ответа на свой вопрос, то стоит обратиться в телеграм-чат @K_3_D с тегом @dmitry_sorkin. Часто задаваемые вопросы попадут на эту страницу.