Как создать собственный слайсер с нуля

Ядром 3D печати является программное обеспечение, называемое слайсером. Эта программа получает 3D модель и генерирует инструкции для принтера. Многие из существующих слайсеров (slic3r, Cura, MatterSlice и так далее) имеют открытый исходный код, хотя существует ПО и с закрытым исходным кодом (например, Simplify3D). Все эти слайсеры обладают множеством возможностей по влиянию на результат печати, но многие пользователи не понимают как работает сама программа.

enter image description here

После моего перехода из стана пользователей 3D печати в разработчики программного обеспечения для 3D печати я понял как мало информации доступно для понимания работы самих слайсеров. Мне пришлось прорываться сквозь исходный код одного из открытых слайсеров, что заняло достаточное количество времени. Это сподвигло меня написать данное руководство, чтобы даже новичок или неопытный разработчик мог понять код, являющийся основой 3D печати.

В данном руководстве мы рассмотрим как работают слайсеры, выделим наиболее важные для нас вещи, чтобы скопировать и создать слайсер, способный создавать реальные печатаемые 3D объекты.

Анатомия слайсера

3D принтер создаёт объект из наложенных друг на друга двухмерных слоёв. В общем случае, эти слои состоят из двух частей: периметра и заполнения. Периметры формируют твёрдую оболочку, а заполнение является структурой, заполненной в основном воздухом и обеспечивающей наполнение модели, экономя материал. Плоские верхние и нижние области объекта печатаются шаблонами сплошного заполнения, формируя внешнюю оболочку в местах, где периметры не могут решить эту проблему.

Для генерации этих структур слайсер следует довольно простой методике. Сначала он получает поперечные сечения модели через регулярные интервалы, выровненные по слоям. Затем он сдвигает полученные сечения для получения каждого внешнего периметра. В конце слайсер накладывает шаблон заполнения внутри каждого слоя. (Процесс заполнения может быть достаточно сложным, мы не будем его рассматривать в данном руководстве.)

После генерации каждого слоя слайсер вычисляет какой объём пластика потребуется принтеру на каждом этапе и затем генерирует инструкции в виде G-code файла (.gco или .gcode).

Настройка вашего окружения

Настройка окружения разработчика является наиболее важной частью любого программного проекта. Мы используем Autodesk Dynamo Studio 2017, который является визуальной средой разработки со встроенной библиотекой геометрии и визуализатором. Dynamo бесплатна для студентов и имеет 30 дневную триалку, которую можно скопировать здесь.

После скачивания Dynamo, создайте новый файл и перейдите в Packages > Search через Package в верхней панели. Вам потребуется загрузить пакет MeshToolkit, который представляет собой полноценную библиотеку для манипуляции объектами, написанную командой Dynamo. Вам также может потребоваться пакет DynamoClipper, который обрабатывает смещения полигонов, что является важной часть процесс слайсинга.

Если вы не смогли достать Dynamo или имеете другие причины не использовать его, вы всё равно можете следовать данному руководству. Геометрические команды в Dynamo стандартны и большинство языков программирования должны обладать соответствующей геометрической библиотекой, которая реализует аналогичные вещи. Удостоверьтесь, что вы можете выполнять манипуляции с объектами и полигонами.

Организуйте ввод данных

enter image description here

В общем, данная статья будет придерживаться способа, которым мы генерируем наш код, но мне нравится указывать мои "фишки" в левой части рисунка. Таким образом, мне проще управлять настройками моего кода, не тратя время на их поиск в файле. В простейшем случае, нам потребуется четыре параметра для планирования нашего пути:

  • Высота слоя: расстояние между нашими двухмерными слоями.
  • Количество периметров: количество твёрдых периметров с внешней стороны объекта.
  • Ширина экструзии: толщина отдельной стенки объекта.

Также нам потребуются ещё параметры для дальнейших этапов процесса:

  • Диаметр материала: диаметр пластикового прутка, что мы используем.
  • Скорость печати: как быстро выполняются движения во время печати, в мм/мин.
  • Температура печати: температура сопла, в градусах Цельсия.
  • Имя файла: имя файла, который будет содержать инструкции для принтера (G-code).

В Dynamo простым способом реализации этого будет двойной клик и создание кодового блока со всеми параметрами. Однако, это же можно сделать с помощью ползунков в меню Core > Input.

Нам также надо импортировать наш файл, который надо обработтать. Для этого мы создадим узел File Path и подключим его к узлу Mesh.ImportFile. Если вы укажете STL файл в узле File Path, то вы должны увидеть объект в окне просмотра.

Настройте вашу модель

enter image description here

Продолжение в источнике...