Допечатываем кусок модели после остановки печати

VoJak
Идет загрузка
Загрузка
09.01.2022
3911
16
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

13
Статья относится к принтерам:
Prusa Mendel

        Доброго дня.

        Столкнулся с такой проблемой, после долгой печати модели около 8 часов, случайно зацепил вилку питания самодельной "Прюши" и печать прервалась. Я отлепил модель и задумался, что с ней делать дальше.

        Бегло погуглив, как продолжить печать, как отредактировать модель, я ничего толком не нашел и решил эту задачу по-своему.

        Поскольку обрезать *.stl модель в нужно месте - задача довольно сложная (ИМХО), я решил в слайсере найти на каком слое остановилась печать и отредактировать g-code файл.

        Меня устроило бы доклеить недопечатанную часть, чем с нуля опять печатать всю модель.

Также это один из вариантов разделить модель по высоте при печати.

        Внешний вид модели:

Допечатываем кусок модели после остановки печати

Загрузил файл *.gcode в Cura.

Допечатываем кусок модели после остановки печати

Я решил искать совпадения по заполнению модели. За основу взял одну линию решетки, которая выходила из угла модели и линию, которая подходит к краю печати отверстия. На рисунке - черные линии.

Допечатываем кусок модели после остановки печати

        Посчитал на оригинальной модели количество линий (7 шт) и двигая ползунок слоев справа, нашел совпадение на 177 слое.

        Я уж начал думать, как посчитать высоту оси Z, чтоб отыскать ее в коде, но открыв листинг файла, был приятно удивлен. Начало каждого слоя было закомметировано - ;LAYER:0 и т.д.

        В общих чертах, что нужно сделать.

        Нужно найти начало кода 177 слоя и впихнуть его в начало кода, после подготовки принтера к печати (прогрев стола и сопла). Предварительно скинув текущие координаты высоты и экструдера (приняв их за начальные).

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

        В начале файла у меня следующий текст:

;Generated with Cura_SteamEngine 4.3.0

M140 S60

M105

M190 S60

M104 S220

M105

M109 S220

M82 ;absolute extrusion mode

G21 ;metric values

G90 ;absolute positioning

M82 ;set extruder to absolute mode

M107 ;start with the fan off

G28 X0 Y0 ;move X/Y to min endstops

G28 Z0 ;move Z to min endstops

G1 Z15.0 F9000 ;move the platform down 15mm

G92 E0 ;zero the extruded length

G1 F200 E3 ;extrude 3mm of feed stock

G92 E0 ;zero the extruded length again

G1 F9000

;Put printing message on LCD screen

M117 Printing...

G92 E0

G92 E0

G1 F1500 E-6.5

;LAYER_COUNT:239

;LAYER:0

M107

G1 F600 Z1.3

G0 F3000 X17.774 Y86.724 Z1.3

;TYPE:SKIRT

G1 F600 Z0.3

G1 F1500 E0

До метки ;LAYER:0 - это подготовка принтера к печати. После, непосредственно печать первого слоя, каймы или юбки.

        Поиском нахожу нужную строку ;LAYER:177, меня интересует значение экструдера и значение высоты модели Z.

;LAYER:177

G0 X18.669 Y107.843 Z36.7

;TYPE:SUPPORT

G1 F600 Z35.7

G1 F1500 E3794.29982

G1 F3000 X21.336 Y107.778 E3794.38855

Стоит учесть еще один нюанс - обдув. После прогрева стола лично у меня обдув отключен. Включается обдув командой M106. Ищем строчки M106:

;LAYER:1

M140 S60

M106 S153

Значит при печати следующего слоя - 178 нужно включить обдув. Я просто скопировал две строки, которые создала Cura.

Далее по тексту обдув меняется аж в слое 237 (поэтому мне в коде больше ничего менять и добавлять не нужно)

;LAYER:237

M106 S192

Удалив все лишнее, получаю такой код:

...

M117 Printing...

G92 E0

G92 E0

G1 F1500 E-6.5

;LAYER_COUNT:239

;LAYER:0

M107 ;

G1 F600 Z0.3

G92 Z35.7 E3794.29982 ;Устанавливаем текущие координаты высоты и экструдера как начальные

;LAYER:177

G0 F3000 X18.669 Y107.843 Z36.7

;TYPE:SUPPORT

G1 F600 Z35.7

...

;LAYER:178

M140 S60

M106 S153

В итоге получаем высоту сопла над столом 0,3мм с которой начинается печать слоя.

ВНИМАНИЕ!! Если не добавить строку G92 Z35.7 E3794.29982 , то при работе с абсолютной системой координат каретка уедет в нужную координату по высоте и экструдер будет выдавливать филамент до значения которое он уже выдавил до этого в оригинальной модели.

Допечатываем кусок модели после остановки печати

Допечатываем кусок модели после остановки печати

        После редактирования следовало бы прогнать файл в симуляторе G- кода. Можно также открыть файл в самой Cura  и посмотреть, как выглядит модель.

        В итоге, весь алгоритм сводится к таким действиям:

  1. Визуальное определение, на каком слое произошла остановка печати.
  2. Создаем копию файла и находим в нем строку с нужным номером слоя ;LAYER:177
  3. Находим начальные настройки принтера до печати нулевого слоя ;LAYER:0 и удаляем все до строк нужного слоя. Некоторые строки можно закомментировать знаком ;
  4. Устанавливаем текущие координаты высоты и экструдера как начальные (для слоя 177) командой G92 Z35.7 E3794.29982В
  5. В исходном файле ищем команды включения обдува M106 и вставляем их в соответствующие слои при печати.
  6. Сохраняем и открываем файл в симуляторе G-кода.

Пользуемся)))

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

Делитесь своими методами решения таких проблем в комментариях.

Всем добра!    

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

13
Комментарии к статье