Skip to content

Latest commit

 

History

History
84 lines (58 loc) · 10.7 KB

custom_macro.md

File metadata and controls

84 lines (58 loc) · 10.7 KB
поставьте "звездочку" проекту. так другим пользователям легче его найти.

Про файлик /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 за предоставленный материал