KREMEN Реклама
KREMEN Реклама

Как я сделал свой слайсер для Binder Jetting – «BVSlicer»

ivancheg8
Идет загрузка
Загрузка
26.09.2026
122
1
Личные дневники

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

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

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

0

Здравствуйте. Хочу рассказать о том, как я долго хотел, а потом сделал слайсер для работы с принтером Binder Jetting.

Последние пять лет я работал в цехе аддитивных технологий и занимался всем, что связано с принтерами Binder Jetting, не каким-то конкретным, это были собственные разработки. Т.е. изготовление, проектирование, сборка, тесты, запуск, вообще всё с нуля и не только.

Одной из проблем было ПО. Изначально это был Netfabb, но т.к. это позиционировалось как российская разработка, то и ПО должно быть соответствующим. Такое ПО было на рынке, но с ним у меня были проблемы (конкретики не будет), поэтому в ноябре прошлого года я начал разработку своего слайсера.

Иллюзий у меня не было, я рассматривал эту работу в первую очередь как хобби по программированию. К тому же проект должен был получится большим и не факт, что я бы его закончил. Вариант взять опен сорс и доработать под себя я не рассматривал, делал всё с нуля, но приходилось «подсматривать», когда не мог придумать свою реализацию. Проект не бросил, на данный момент потрачено более 700 часов и это далеко не конец.

Что под капотом?

Изначально я даже близко не имел представления как делать такую программу, Чёткое понимание было только в одном – должна быть кроссплатформенной, в будущем. Посидев пару недель для сбора информации что как должно работать и выглядеть, я собрал основу:

C++ - Язык программирования

Vulkan - Графический API

GLFW - Управление окном

Assimp - Загрузка 3D моделей

Clipper2 - Библиотека для 2D операций

Manifold - Библиотека для 3D операций

Anti-Grain Geometry - 2D-растеризация

Dear ImGui - Графический интерфейс пользователя

ImGuizmo - 3D-гизмо для манипуляций

Здесь должен предупредить: это бета, а не релиз, есть ошибки и проблемы, но программа полностью работает.

Главное окно программы: 

Как я сделал свой слайсер для Binder Jetting – «BVSlicer»

В окне две панели: левая 3D сцена и правая со списком загруженных моделей и базовыми трансформациями через ввод чисел. Собирал интерфейс исключительно по опыту и для удобства работы, но понял, что получился какой-то PrusaSlicer, вариант не итоговый, всё же хотелось сделать что-то самобытное.

Правая панель хранит в себе список загруженных файлов, их можно собирать в группы. Ниже расположены поля ввода для трансформаций модели – размер, позиция, масштаб, поворот.

Подробнее об инструментах в 3D сцене:

Сверху три кнопки переключения между содержимым 3D окна – сцена, настройки принтера, настройки нарезки. В виде такой же вкладки открываются настройки программы. 

Как я сделал свой слайсер для Binder Jetting – «BVSlicer»

Из интересного в настройках:

«Нулевая точка координат модели» - выбор из 27 точек bounding box'а модели, от которой будут рассчитываться её координаты (точка, из которой отрисовывается гизмо).

«Обнаружение пересечений контуров» моделей при нарезке в рамках каждого слоя в отдельности, т.е. проверяет контуры в 2D – если две модели будут пересекать друг друга, покажет диапазон высоты, на которой есть пересечение.

Все настройки сохраняются в отдельные файлы для создания профилей.

Справа вверху кнопки видов, сброса камеры и переключения камеры перспективная/ортографическая.

Слева вертикальный ряд кнопок: позиция, масштаб, поворот, зеркало – трансформации с помощью гизмо.

Инструмент «Массив»: размножить модель по любым осям с заданным расстоянием и количеством.

Инструмент «Выровнять и распределить»: если работали в кореле, то поймёте о чём речь. Кнопки работают только при направлении камеры перпендикулярно плоскостям XY, XZ, YZ, т.е. работает как в 2D. Например при виде сверху (на плоскость XY) модели будут двигаться по осям X и Y, а Z игнорируется. Удобно расставлять большое количество моделей.

Инструмент «Сечение». Можно двигать за гизмо, либо вводить значения. 

Как я сделал свой слайсер для Binder Jetting – «BVSlicer»

Что умеет слайсер:

Т.к. был заточен под Binder Jetting, то умеет он фактически только выдавать картинки в tiff, в нём нет генерации поддержек, т.к. d песке их не используют. Нет генерации G-кода.

Ещё особенность: при генерации внутреннего заполнения (решётки), относительно внешней поверхности модели внутрь генерируется модель с офсетом, заданным настройкой «толщина стенки», так достигается равномерная толщина стенки к нормали поверхности. Механизм такой же, как для фотополимерного принтера при создании внутренней полости. Этот метод единственный на данный момент для создания внутренностей, имеет проблемы на сложных моделях. В планах добавить классический 2D метод, как в любом другом слайсере при генерации G-кода.

Какие дальнейшие планы:

Добавить лечение моделей. Упрощение сетки модели. Инструменты для простого редактирования (разрезать...). Добавление примитивов на сцену. Прикрутить поддержки, чтобы можно было использовать для фотополимерных принтеров. Добавить импорт STEP. Сделать версию для linux.

Дальнейшая судьба программы под вопросом, поэтому исходный код не публикую.

Ссылку на демо версию для windows оставлю в комментариях.

Было бы интересно услышать мнение об удобстве интерфейса, кнопок. Какие инструменты нужно добавить, что нужно изменить.

Благодарю за внимание, всем удачной печати!

(написано руками)

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

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

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

0
Комментарии к статье
Lider 3D Реклама
Lider 3D Реклама