Про файлик /usr/share/klipper/klippy/extras/custom_macro.py
в этом файле собрана почти вся дичь которую внесли китайские разработчики. Для тех кто пользовался клиппером до этого, будет легче понять отличия от стандартного клиппера.
Этот макрос является классом с именем "CUSTOM_MACRO". Внутри него есть различные функции и переменные для управления печатью и калибровкой.
В функции init
происходит инициализация объектов и переменных макроса. Внутри данной функции мы можем видеть следующие строки кода:
self.printer = config.get_printer()
: Получение объекта printer.self.gcode = self.printer.lookup_object('gcode')
: Получение объекта gcode.self.pheaters = None
: Инициализация переменной pheaters как None.self.heater_hot = None
: Инициализация переменной heater_hot как None.self.extruder_temp=None
: Инициализация переменной extruder_temp как None.self.bed_temp=None
: Инициализация переменной bed_temp как None.self.prtouch = None
: Инициализация переменной prtouch как None.
Далее в макросе происходит регистрация различных команд для G-кода, таких как:
CX_PRINT_LEVELING_CALIBRATION
: Команда для запуска процесса калибровки.CX_CLEAN_CALIBRATION_FLAGS
: Команда для очистки флагов калибровки.CX_PRINT_DRAW_ONE_LINE
: Команда для рисования одной линии печати.CX_ROUGH_G28
: Команда для выполнения шага G28 (возврат осей в исходное положение).CX_NOZZLE_CLEAR
: Команда для очистки сопла.
Затем в макросе есть несколько переменных, таких как:
self.default_extruder_temp
: Значение температуры экструдера по умолчанию.self.default_bed_temp
: Значение температуры стола по умолчанию.self.g28_ext_temp
: Температура экструдера для выполнения шага G28.self.nozzle_clear
: Флаг для указания, нужно ли выполнять очистку сопла.self.calibration
: Значение параметра calibration.
Далее следуют функции для команд, такие как cmd_CX_PRINT_LEVELING_CALIBRATION
, cmd_CX_CLEAN_CALIBRATION_FLAGS
и другие. В каждой функции происходит выполнение определенной операции по заданной команде.
Например, в функции cmd_CX_PRINT_LEVELING_CALIBRATION
выполняется скрипт 'CHECK_BED_MESH AUTO_G29=1'
, который запускает процесс проверки сетки стола и автоматической калибровки.
В функции cmd_CX_CLEAN_CALIBRATION_FLAGS
происходит просто установка переменной self.leveling_calibration
в значение 0.
макрос представляет класс "CUSTOMMACRO", который содержит несколько методов и переменных для управления печатью.
В методе "init" инициализируются различные переменные, такие как "printer" (доступ к объекту принтера), "gcode" (доступ к объекту G-кода), "pheaters" (нагреватели), "heaterhot" (нагреватель для экструдера), "extrudertemp" (температура экструдера), "bedtemp" (температура стола), "prtouch" (объект PRTouch для автоматической калибровки), а также регистрируются различные команды G-кода.
Метод "getstatus" возвращает текущий статус некоторых переменных.
Метод "cmdCXPRINTLEVELINGCALIBRATION" выполняет команду G-кода "CHECKBEDMESH AUTOG29=1" для автоматической калибровки стола.
Метод "cmdCXCLEANCALIBRATIONFLAGS" устанавливает переменную "levelingcalibration" в 0 для очистки флагов калибровки.
Метод "cmdCXROUGHG28" выполняет грубую калибровку путем установки температур экструдера и стола, запуска G-кода G28 для перемещения осей в начальное положение и выполняет другие команды G-кода, такие как изменение минимальной температуры для PRTouch и запуск M104 и M140 для установки заданных температур экструдера и стола.
Метод "cmdCXNOZZLECLEAR" запускает команду G-кода "NOZZLECLEAR" с заданными пределами температур для очистки сопла.
Функция "loadconfig" загружает и возвращает объект класса "CUSTOMMACRO" с конфигурацией.
Метод cmd_CX_PRINT_LEVELING_CALIBRATION запускает функцию печати и принимает три параметра: EXTRUDER_TEMP (от 180 до 300), BED_TEMP (от 0 до 100) и CALIBRATION (0 или 1). Этот метод выполняет скрипт 'CHECKBEDMESH AUTOG29 = 1' для калибровки стола.
Метод cmdCXCLEANCALIBRATIONFLAGS
очищает флаги калибровки, устанавливая `levelingcalibration в 0.
Метод cmdCXROUGHG28` выполняет "грубую" калибровку стола и работает следующим образом:
- Устанавливает температуру экструдера (
extrudertemp) в значение параметра EXTRUDERTEMP
. Если параметр не указан, используется значение по умолчанию, заданное в конфигурации (defaultextrudertemp
). Значение должно быть в диапазоне от 180.0 до 320.0. - Вычисляет температуру экструдера для команды G28 (
g28exttemp
) путем вычитания 70 из значения `extrudertemp. Если результат превышает 180.0, g28exttemp устанавливается равным 180.0. - Ищет объект prtouchv2
или
prtouchи присваивает его переменной
prtouch. Если объект не найден, выводится информация, что
prtouch = prtouch`. - Устанавливает температуру стола (
bedtemp) в значение параметра BEDTEMP
. Если параметр не указан, используется значение по умолчанию, заданное в конфигурации (defaultbedtemp
). Значение должно быть в диапазоне от 0.0 до 130.0. - Устанавливает значение
levelingcalibration в значение параметра LEVELINGCALIBRATION
. Если параметр не указан, используется значение по умолчанию, которое равно 1. - Запускает скрипты G-кода для установки температуры экструдера и стола: 'M104 S%d' и 'M140 S%d', соответственно.
- Вызывает скрипт G28 для грубой калибровки стола.
- (Закомментированная строка `NOZZLECLEAR предположительно используется для очистки сопла, но в данном случае не выполняется.)
Метод cmdCXNOZZLECLEAR` выполняет очистку сопла с заданными температурами, используя команду G-кода 'NOZZLECLEAR HOTMINTEMP = %d HOTMAXTEMP = %d BEDMAXTEMP = %d'. Значения температур берутся из g28_ext_temp, extruder_temp и bed_temp, соответственно.
Метод cmd_CX_PRINT_DRAW_ONE_LINE выполняет рисование одной линии перед печатью и работает следующим образом:
- Запускает скрипты G-кода для установки относительных координат ('M83') и перемещает печатающую головку в начальную точку ('G1 X10 Y10 Z2 F6000').
- Запускает скрипты G-кода для опускания печатающей головки ('G1 Z0.1 F600').
- Ищет объекты pheaters, heater_hot и extruder и сохраняет соответствующие ссылки.
- Выводит информацию о флаге can_break_flag через gcode.respond_info.
- Устанавливает температуру экструдера (extruder_temp) через M104 и температуру стола (bed_temp) через M140.
- Устанавливает температуру экструдера через pheaters.set_temperature и ожидает, пока флаг can_break_flag не станет равным 1. Флаг can_break_flag определяется вызовом pheaters.can_break_flag.
- Если can_break_flag равен 3, меняет флаг на 0 и выполняет ряд команд G-кода, включая установку ограничений скорости, температур и перемещения печатающей головки.
спасибо пользователю https://t.me/Ale_xe_y_0 за предоставленный материал