Как составить программу для 3д принтера на русском

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

Источник: greenbiz.com

Читайте нашу новую статью, чтобы узнать — как создать с нуля 3D-модель для 3D-принтера, и каких ошибок следует избегать.

Содержание

Какие файлы необходимы для 3D-принтера?

Большинство фотополимерных 3D-принтеров распознают STL-файлы. STL — это формат файла, изначально разработанный компанией 3D Systems для печати предметов методом стереолитографии. STL-файлы описывают только геометрию поверхности трехмерного объекта без какого-либо представления о цвете, текстуре или других атрибутах модели. Слайсеры различных моделей 3D-принтеров поддерживают файлы распространенных форматов OBJ, 3DS, а также проприетарные (FORM, PLG).

Создать STL-файл трехмерной модели можно в CAD-программе или при помощи 3D-сканеров RangeVision, ручных 3D-сканеров Einscan и т.д. Не следует путать файлы STL и Gcode. Файлы STL содержат 3D-объект, а Gcode-файл — это составленный слайсером код управления 3D-принтером. Многие производители 3D-принтеров предоставляют тестовый файл в формате .gcode, чтобы пользователь мог сразу испытать новое оборудование. Но как поступить, если необходимо создать проект для 3D-принтера с нуля? Рассмотрим популярные программы, которые дают возможность разработать сложные предметы для разных методов 3D-печати.

Программы для 3D-моделирования

Готовить модели для 3D-печати можно в различных программах, предназначенных для работы с трехмерными объектами. Хотя принцип моделирования объектов во всех программах схожий, существуют различия в подходе к решению задач. Можно использовать профессиональные приложения для отрисовки 3D-рендеров (The Brush, Autodesk Maya и 3ds Max и другие), приложения для инженеров (Fusion 360, Autodesk Solidworks Blender, Компас 3D), а также существуют программы, которые оптимизированы для работы с небольшими 3D-объектами (Sketchup). Выбор ПО зависит от привычек пользователя, поскольку от особенностей интерфейса зависит удобство использования программы. Рассмотрим часто встречающиеся примеры ПО для 3D-моделирования. 

Видеоуроки по Fusion 360

Fusion 360 — это профессиональная многофункциональная программа, предназначенная в том числе для создания 3D-моделей для 3D-принтера. Несмотря на обширные возможности, интерфейс программы достаточно понятный. Более того, многие функции меню имеют визуальные подсказки, по которым легко ориентироваться. Программа Fusion 360 позволяет сразу конвертировать разработанную для 3D-печати модель в формат .STL, то есть получить готовый файл для печати. Одно из достоинств этого ПО — наличие условно-бесплатной версии.

На следующем видео показано, как в программе создать модель, на примере опоры-кронштейна для лампы:

В конце следующего длинного видеоролика показано, как на основе чертежа создать 3D-модель станины:

Пример того, как составить 3D-модель рукоятки ножа, используя обычную фотографию, можно увидеть в ролике:

Достаточно сложный пример: проектирование кулона в виде Ленты Мёбиуса, процесс пошагово показан в 14-минутном видео:

Автор канала Make Anything опубликовал получасовой ролик о создании в Fusion 360 квадратной тарелки и высокой вазы. Бонусом автор прикрепил в описании к видео ссылку на готовые stl-файлы этих предметов.

В следующем видео показано, как в Fusion 360 спроектировать составную деталь с шарниром, на примере зажима:

Adafruit Industries сделали 18-минутное видео, в котором показали, как в Fusion 360 наносить объемный рисунок на боковые стенки предметов. В примерах показаны как повторяющиеся симметричные паттерны, так и сложные асимметричные узоры:

Видеоуроки по SolidWorks

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

В следующем примере показано, как спроектировать в SolidWorks переходник для колков гитары:

На видео ниже показано, как спроектировать в SolidWorks изогнутую трубу с фланцами:

Моделирование опорной детали для различных инструментов — тема следующего ролика:

Чтобы смоделировать болт с правильной аккуратной резьбой, необходимо знать несколько трюков в SolidWorks. На канале My Digi Pro объяснили, как выполнить работу быстро:

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

Создайте шестеренку сложной формы. Сделать это вам поможет короткий видеоролик:

Видеоуроки по Компас 3D

Компас 3D — это профессиональная программа для создания 3D-объектов любой сложности. Вероятно, из-за ориентации на профессиональное CAD-моделирование, интерфейс программы получился довольно сложным: с большим количеством пунктов меню и обширными возможностями для настройки.

Если вы только начинаете осваивать Компас 3D, потренируйтесь на моделировании обычного ящичка:

Модель гайки представлена на следующем видео:

Порядок моделирования зубчатого колеса с использованием чертежа:

Подгонка и сборка шарнирного соединения на 3D-модели показана в следующем видео:

Пример сравнительно сложной детали, винта кулера, показан в этом ролике: 

Видеоуроки по Blender

Blender — профессиональная программа, которая предназначена для создания сложных трехмерных объектов, в том числе анимированных. Интерфейс программы может показаться достаточно сложным для новичка, но в Интернете можно найти достаточно обучающих материалов по созданию 3D-моделей с ее помощью. Интерфейс программы русифицирован.

Начать освоение Blender можно с моделирования держателя полки (для фиксации на стене):

Поскольку Blender — это полноценный графический редактор, в программе можно создавать сложные арт-объекты. В туториале показано, как за час создать оригинальную модель, у которой будет фактурная поверхность и множество выразительных деталей:

Еще один арт-объект, но на этот раз — абстрактная модель ламы. Отрисовка такой модели занимает существенно меньше времени:

Головной убор для косплея:

Подготовка файла Blender для 3D-печати, пример — серьги-секиры:

Создание 3D-модели осевого держателя на основе чертежа:

Крючок с креплением для стенда с инструментами:

Создание модели сундучка с нуля:

Конвертация чертежей онлайн

В последние годы на рынке появляются и альтернативные методы 3D-моделирования. Например, немецкая компания CAD Schroer разработала комплекс из компьютерной программы MEDUSA4 Personal и онлайн-платформы CSG eSERVICES, которые позволяют превратить чертеж в трехмерный объект с сохранением в STL-файл. В десктопном ПО MEDUSA4 Personal пользователь открывает файл с двухмерным чертежом и запускает через пункт меню Model Reconstruct моделирование 3D-объекта. Сохраненный трехмерный объект в MOD-файле необходимо конвертировать онлайн в STL-файл. Единственным недостатком сервиса является оплата за каждую конверсию поштучно.

Ошибки, которые необходимо предотвратить при 3D-моделировании

Начинающие пользователи обычно приобретают FDM- или SLA/LCD-принтеры начального уровня. В FDM для печати используется пластиковый филамент. В SLA и LCD, фотополимерных технологиях печати — жидкая фотополимерная смола. FDM-принтеры доступнее, а фотополимерные принтеры позволяют создавать гораздо более сложные и детализированные объекты. Рассмотрим самые распространенные ошибки, совершаемые пользователями при подготовке модели к печати.

Добавление поддержки

При создании сложного объекта следует учесть, что участки модели, которые “висят в воздухе”, не могут быть напечатаны без создания поддержек. Поддержки — печатающиеся вместе с моделью опорные конструкции, которые удаляются после завершения печати. Во многих программах поддержки можно создавать автоматически и изменять вручную.

Фото: thingiverse.com

При использовании FDM-принтера с двумя экструдерами поддержки можно печатать из растворимого материала, например — поддержки из HIPS с деталью из ABS, поддержки из PVA с деталью из PLA. Такие поддержки легко удаляются с помощью растворителя, без риска повредить модель в процессе ее очистки от них.

Толщина стенок, диаметр отверстий

При создании легкого ажурного объекта пользователь может ошибиться и создать слишком маленькие отверстия, либо слишком тонкие стенки изделия, которые принтер не сможет воспроизвести корректно. Данная ошибка в большей степени характерна для FDM-моделей, однако и при работе с фотополимерными необходимо учитывать рекомендованные производителем параметры стенок и отверстий.
Мы рекомендуем моделировать стенки объектов с толщиной не менее двух диаметров сопла, для FDM-принтера, а для фотополимерных — не менее полмиллиметра.

Итоги

Как видно из приведенных примеров, процесс моделирования 3D-детали для печати на 3D-принтере легко освоить без прохождения длительных дорогостоящих курсов. В современной информационной среде достаточное количество бесплатных и, что важно — весьма содержательных и простых для понимания обучающих видео. Также в самообразовании может помочь чтение тематических форумов, участие в сообществах 3D-печатников, где принято помогать новичкам и объяснять неочевидные и сложные нюансы.

Узнайте больше о возможностях усовершенствовать ваше производство интеграцией нового оборудования:

Приручаем динозавров, или как я писал свой собственный host controller для лаборатории 3D-печати

В этой статье я хочу рассказать о своем опыте разработки свободного ПО для управления 3D принтерами на Qt5, проблемах и особенностях общения с RepRap’ами и прочим радостям.

Результатом этого опыта стал RepRaptor — минималистичный свободный host-controller для 3D принтеров.

Всех интересующихся приглашаю под кат.

Немного предыстории

За последний год я сильно заинтересовался 3D печатью, и не просто 3D печатью, а ее свободной составляющей — проектом RepRap. Руководство ВУЗа поддержало начинания, и в течении этого года моими и единомышленников усилиями в МГТУ МИРЭА открылась лаборатория 3D печати.
Очень скоро возникла проблема — существующее в экосистеме ПО имело недостатки, которые сильно мешали работе. Поэтому было решено эти проблемы ликвидировать, создав свое ПО.

  • Они все написаны на интерпретируемых языках, открытие и разбор файлов занимают на слабом железе иногда и по 10 минут;
  • Те из них, что написаны на Mono еще и периодически падают, и обрекают кучу пластика на безвременную кончину (Виновато тут, скорее всего, не само Mono, а минимальное внимание к сборкам на ней от авторов);
  • В интерфейс вынесено мало кодов, зато встречается совсем уж избыточный функционал (прошу прощение за свой минимализм);

Почему Qt?

Как это все исправить? Довольно просто — написать хост на языке, который будет работать быстрее, и сделать его максимально простым. Сказано — сделано. Для разработки был выбран Qt, и не случайно. Этот замечательный фреймворк не только распространяется свободно, но и позволяет писать кроссплатформеные приложения без сопровождающей мультиплатформу в C++ боли, а так же не так давно периодически используемый мной QSerialPort стал официальной частью фреймворка.

Кроме того, я не знаю ни одной IDE, такой же быстрой и удобной для меня, как QtCreator.

Так как все окна, да и сам Ui в целом делался с помощью .ui файлов в WSIWYG редакторе Qt — я опущу все, связанное непосредственно с интерфейсом. Смотреть будем «под капот».

С чего начать, или как разговаривают принтеры

Общаться необходимо работать с целым зоопарком разнообразных плат (Melzi, RAMPS 1.4, Teensylu, Gen7 1.5.1 и т.д.), благо сообщество проекта RepRap уже давно определилось с протоколом и списком команд. Для общения с любой платой используется серийный порт и протокол G-code.

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

Первое разочарование — протокол

Спецификация серийных портов RS-232 обширна и интересна, но, к сожалению редко где используется на полную. При эмуляции серийного порта по USB, очень часто к микроконтроллеру подключаются только линии TX и RX, отвечающие за передачу данных. Линии, такие как DTR (сброс при подключении), обычно не используются, и это печально.

  1. Принтер сообщает о простое строчкой wait;
  2. Хост отправляет команду G-Code, кончающуюся переносом строки;
  3. Принтер подтверждает прием команды строчкой Ok <номер строки>.

Выглядит это примерно так:

Где cs — вычисленная контрольная для строки.

Как правило кодогенераторы, преобразующие 3D модели в G-Code для печати контрольных сумм не генерируют, а оставляют это на усмотрение хоста.

У принтера есть буффер, размер которого в большинстве случаев составляет 16 команд.

Реализация протокола

Qt имеет отличную функцию для облегчения жизни разработчику — сигналы и слоты.
Сигнал — это новое для C++ понятие. Сигнал объявляется в классе подобно слоту:

Сигнал не может ничего вернуть, поэтому всегда имеет тип void, а вместо аргумента указывается тип передаваемой сигналом переменной. Инициализировать его не требуется.

Вызывается сигнал из любого метода родительского класса, и очень просто:

После такого вызова все слоты, присоединённые к этому сигналу будут вызваны при первой возможности в порядке присоединения, и им передастся значение 100.
Что такое слот? Коротко — это самый обычный метод, объявленный слотом

Соединяются сигнал со слотом тоже очень просто:

Есть и ограничение — у сигнала и слота обязательно должен совпадать передаваемый тип.

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

Самая простая часть — чтение.

Для реализации связи по серийному порту используется упомянутый выше QSerialPort (экземпляр которого назовем «printer»), имеющий сигнал readyRead(), вызывающийся каждый раз, когда на порт приходит информация. Все что от нас требуется — это создать в своем классе слот, который мы и будем вызывать при появлении этого сигнала, соединить их, и ждать. Что же мы будем читать? Как уже описано выше, в первую очередь нас интересуют ответы ok и wait. Так как наш код исполняется асинхронно, а у принтера есть буфер — нам надо где-то сохранить колличество строчек ок, которые мы приняли, чтобы при отправлении знать, сколько мы можем отправить. Хранить их будет в переменной «readyRecieve».

Отлично, с приемом разобрались. А что у нас с отправкой? Вот тут и видим дефект протокола. Никакой аппаратной команды для обозначения готовности к приему данных у нас нет, а значит нету и соответствующего сигнала у нашего QSerialPort. Значит отправлять будем по таймеру. Таймер в Qt работает до безобразия просто и удобно — мы создаем экземпляр класса QTimer, соединяем его сигнал timeout() с нашим слотом, который будет выполнятся по этому таймеру, а после этого запускаем его — timer.start(ms). В последствии было выяснено, что в зависимости от производительности ПК оптимальный промежуток находится от 1 до 5 мс. Кстати, если указать таймеру промежуток 0, то выполнятся он будет как только у Qt появится свободная минутка.

Еще стоит упомянуть, что отправляем мы либо команду от пользователя, либо файл. Так как разбор файла сводится к заурядной загрузки файла в массив, а так же фильтровании линий целиком из комментариев (чтобы не отправлять лишнее на принтер и не захламлять память), я решил опустить эту часть. Массив строк из файла называется gcode.

Ну вот, с серийным портом разобрались? Еще нет. Еще нам надо отловить ошибки. Для этого вновь прибегнем к сигналам и слотам, на этот раз будем слушать сигнал error(SerialPort::SerialPortError error) от нашего экземпляра QSerialPort:

Неаккуратное обращение с принтером расстраивает динозаврика, %username%.

Делаем наш хост умнее

Выносим кнопки команд

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

Иконок пока нет, но они обязательно появятся в последующих релизах. Реализация большинства этих кнопок весьма простая:

Метод injectCommand, способ работы которого мы уже узнали ранее, в реализации отправщика кода тоже весьма прост:

Получаем дополнительные данные

RepRap — это суровый DIY. Настолько суровый, что случается всякое:

Далеко не всегда во время настройки можно быть уверенным, что принтер поведет себя так, как надо. Одним из очень важных значений является температура, и следить за ней жизненно необходимо. У некоторых людей на принтере есть дисплеи, отображающие оперативную информацию, но далеко не у всех. К тому же, можно физически находится от принтера далеко, или под неверным углом, и читать дисплей уже не выйдет. Именно поэтому требуется отображать температуру, и чем оперативнее — тем лучше.


Под температуру определим отдельную группу элементов

Как же ее узнать? Во время нагрева, принтер перестает принимать команды, и вместо ok или wait начинает присылать температуру. Строка температуры выглядит так:

Читаемо для человека, но не очень удобно для разбора. В первых версиях я разбирал эту строку прямо в слоте, отвечающем за прием информации, но тесты показали, что разбор строки прямо в этом слоте слишком сильно замедляет работу программы. До последнего я пытался избежать работы с потоками, так как одна из главных причин, по которой RepRaptor был написан — быстродействие. Многопоточность отлично ускоряет работу софта на многоядерных системах, но у нас с железом было все не так радужно. Однако выбора не осталось — надо было перенести в отдельный поток либо разбор, либо само соединение. Было решено пойти на компромисс — перенести разбор в отдельный поток, и позволить пользователю отключить проверку температуры.

Как реализована многопоточность в Qt? Очень удобно. Есть несколько способов создать отдельный поток. Полноценный способ — создать поток с помощью QThread, но нам не нужен полноценный поток для простого разбора строки, так что будем использовать другой способ — передадим нашу функцию разбора вместе с аргументам объекту QFuture, и будем за ним следить. Делается это так — для начала нам необходимо создать экземпляр QFutureWatcher, класса, который следит за QFuture, и сообщает нам о его состоянии. Затем надо написать нашу функцию разбора. Так как функция может вернуть только одну переменную, я решил создать специальный тип для передачи температуры:

И функция разбора:

Теперь осталось только отдать эту функцию потоку при удобном случае (вставляем дополнительную проверку в автомат функции приема):

Осталось только создать слот, чтобы подключить к нему сигнал, передающий из QFutureWatcher результаты выполнения функции:

Вот и все, теперь каждый раз, когда принтер сообщает нам о температуре — мы разбираем эту строку и красиво отображаем ее в интерфейсе.

Проблема в том, что сам принтер ее присылает только во время нагрева, но мы можем его попросить прислать нам ее в любое другое время, отправив команду для проверки температуры M105. Отправлять ее будем по таймеру, при выполнении нескольких условий. Так же, как и ранее для функции отправки создаем новый таймер, и новый слот для подключения к его сигналу. На этот раз таймеру ставим значение побольше, например 1500мс:

Кто-то возможно скажет, что эти проверки излишние, но когда ты управляешь принтером с Asus EEEPC 900AX, и хочешь одновременно читать хабр — это необходимость.

Печать с SD карты

Очень многие типовые платы для 3D принтеров имеют встроенный слот для SD карты, или способ такой слот подключить. Такой метод печати является предпочтительным, так как в любой момент можно отключится от принтера и уйти, однако каждый раз вытаскивать SD карту зачастую лень, особенно если печатаешь много мелких деталей. Конечно, можно передать файл через серийный порт, но передача файла таким способом занимает едва ли меньше времени, чем сама печать.

  • Получать список файлов
  • Выбирать файл
  • Поставить файл на печать
  • Поставить печать на паузу
  • Сообщать о прогрессе

Каждый раз когда на хост будет приходить строка, с которой начинается список файлов на SD — будем открывать диалог со списком файлов. Для этого еще раз изменим наш приемник:

Флаг нужен, так как наш метод чтения вызывается для каждой строки.

За одно для открытия диалога будем посылать сигнал. Самому же себе. Да, соединять можно даже сигналы со слотами одного и того же объекта.

Слот, который мы подключаем к этому сигналу:

После этого надо перевести интерфейс в режим печати. Я сделал это путем введения дополнительного флага sdprinting. Статус печати с SD карты проверяется в схожей манере с температурой.

Софт — в массы

Как бы сильно я не любил GitHub — далеко не все любят собирать софт сами. Не смотря на кроссплатформенность Qt — это фреймворк, а не среда для кросс-компиляции. А это значит, помимо бинариков под платформу Linux-amd64 нужны еще бинарики под Linux-i386, Windows 32 и OSX 64. Что ж, с первыми двумя все просто — достаточно добавить нужные наборы в QtCreator. А как быть с Windows 32 и OSX 64? С последней — никак. Я пытался, но я умываю руки. Единственный способ собрать что-то под OSX — делать это на OSX. К сожалению, легально это сделать не возможно.

Debian и его пакеты

Очень хотелось собрать пакет под любимый Linux Mint, на котором и ведется разработка. По началу я хотел собрать пакеты для PPA, но в итоге пришел к тому, что собирать надо со статическими библиотеками Qt, а потому пакеты на первое время собирать пришлось руками. Почему статическая линковка? Все очень просто — даже в Ubuntu 14.04, на которой основан Mint в источниках имеется только Qt 5.2.1. В ходе тестов первых двух релизов на разных системах выявились баги QSerialPort, исправленные в новых версиях, а потому было принято решение поставлять все с последними версиями. К тому же, вики Qt говорит, что статически линкованые библиотеки несколько быстрее работают.

Руками пакет собирается весьма просто — он должен содержать дерево каталогов файловой системы Debian, в котором размещены все файлы, которые мы собираемся установить. Написав .desktop файл для того, чтобы получить пункт в меню на конечной системе, я написал небольшой bash скрипт для сборки нужной мне версии пакетов:

Все, что он делает — это создает дерево каталогов, копирует иконки и .desktop файл, а после этого генерирует описание пакета для пакетного менеджера, вставляя нужную версию.

Windows и MXE

Одно дело — собирать пакеты под свою ОС, другое дело — под чужую. Тут необходим тулчеин — набор инструментов для сборки. Благо под Windows есть отличный MinGW, а для Linux есть не менее отличный MXE — менеджер окружения для кросс-компиляции с использованием свободных библиотек.

Установка до смешного простая — клонируем MXE и говорим ему, какие нам библиотеки нужны:

После этого можно смело идти пить кофе — сборка всего этого добра занимает приличное время.

После того, как сборка окончена — можно написать скрипт сборки проекта под Windows автоматически:

Просто и сердито. Работоспособность легко проверяется в Wine:

Выводы

Когда я это начинал — я надеялся написать простую отправлялку G-code файлов, которая ничего больше бы не делала, а справится планировал за вечер. Но, как это часто бывает — проект вышел за рамки изначального плана, и теперь представляет из себя нечто большее. Впереди еще много чего предстоит сделать — хотя бы тот же графический редактор EEPROM, которого так не хватает, а так же поддержка контрольных сумм.

Однако уже сейчас RepRaptor позволяет мне спокойно использовать свой ASUS EEEPC как стабильный хост для принтера, чего не мог достичь ни один другой хост из тех, что я пробовал. Ну и знания Qt у меня определенно улучшились, и все равно еще есть место для оптимизаций.

Эта статья так же приурочена к выходу первой стабильной версии, которую я сам теперь использую каждый день — 0.2.

Программы для 3D печати и 3D принтера

Для того, чтобы получить любое изделие в 3 D нужно решить две задачи:

  • Создать математическое описание объекта – объёмную модель;
  • Объяснить устройству, как её печатать – в какой момент времени в какую точку добавить материал и как его отвердить.

Виды 3-х мерных объектов

  • Твердотельные;
  • Поверхностные – сеть.

Что такое слайсеры и зачем нужны?

Слайсеры и программы для работы с моделями для 3D принтера

Kissslicer

Одно из самых популярных средств для работы с печатью моделей. Есть платная и бесплатная версии. Платная отличается поддержкой нескольких сопел, облачным сервисом, библиотеками, большим количеством настроек, инструментов. Почти все платные опции нужны для аппаратов с несколькими соплами и построения сложных объектов. Нет больших возможностей по редактированию. Зато реализована функция непосредственного редактирования G-кода, что позволяет напрямую управлять всеми органами устройства. Бесплатная версия для любой операционной системы. На этой же странице можно перейти к платной профессиональной версии. Скачать Kissslicer (Бесплатная)

Одно из самых удобных и интуитивно понятных приложений от производителя 3D принтеров Ultimaker. Получила самое большое распространение – это самый популярный слайсер для 3D принтера. Кроме инструментов редактирования, настроек материала, опций печати, включён ряд удобных функций по расчёту количества материала и его стоимости, веса изделия. Имеет открытый код. Полностью бесплатная, обновляемая утилита. Скачать Cura (Бесплатная)

Slic3r

Один из наиболее универсальных и проработанных продуктов с точки зрения построения и редактирования G-кода для принтера. Есть настройки практически всех функций непосредственной печати, поддержку нескольких сопел и нескольких типов применяемых материалов. Реализована возможность редактирования G-кода пользователем. Скачать Slic3r (Бесплатная)

CraftWare

  • Работа с моделью;
  • Работа с поддержками и заполнением пустот;
  • Слайсер – нарезка модели для печати.

123D Catch

Это инструмент от Autodesk, который позволяет создать 3D объект из снимков камеры. Существует версия и для Android, позволяющая сделать из смартфона 3D сканер. В результате обработки снимков с различных ракурсов строится поверхностный объёмный объект в нескольких распространённых форматах 3D графики. Все операции проводятся в облачном сервисе с использованием электронной почты для получения конечного файла. Визуализация изделия происходит непосредственно в среде утилиты. Распространяется и поддерживается бесплатно. Скачать 123D Catch (Бесплатная)

3D Slash

Очень мощная облачная программа, позволяющая создавать, редактировать и печатать 3D объекты. Интуитивно понятный, интерактивный интерфейс хорошо воспринимается для использования всех функций. Кроме загрузки, создания, редактирования объектов реализованы все функции слайсера и управления печатью. Пожалуй, самая простая и универсальная программа для 3d принтера, позволяющая создавать и печатать различные предметы. Скачать 3D Slash (Бесплатная)

TinkerCAD

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

3DTin

Онлайн редактор для построения и редактирования сетевых 3D моделей. Очень простой, быстрый и интуитивно понятный. Не требует начальных навыков. Работает только в облаке. Позволяет создавать простые предметы с последующей их конвертацией в stl – файлы. Сервис представляет собой одну из свободно распространяемых CAD tools, работа с которыми возможна только после регистрации на https://www.tinkercad.com/ или сервере инструментов Autedesk http://formit360.autodesk.com/.

Blender 3D

Интересный трёхмерный редактор. Очень прост, но довольно функционален для построения различных изделий из большой библиотеки примитивов. Для редактирования есть набор удобных инструментов. Сохраняет файлы в большинстве используемых форматов, поэтому его часто используют в качестве конвертора. Изначально утилита была написана для объёмной анимации, но постоянные доработки и расширения сделали её вполне пригодной для конструирования деталей. Инструмент распространяется бесплатно, имеет открытый код. Скачать Blender 3D (Бесплатная)

Подведем итоги:

Перечень представленных инструментов совсем не полный – их уже существует намного больше. Появляются новые, а существующие очень быстро совершенствуются. Появляются интуитивно понятные возможности редактирования G -кода, простые способы редактирования поверхностных объектов, инструменты наглядного управления непосредственными функциями печати. Мы стоим на пороге технологического взлёта этой новой отрасли, внося свой посильный пользовательский вклад в её становление и совершенствование.

Топ бесплатных программ для 3D печати в 2021 году

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

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

Топ бесплатных программ для 3D печати в 2021 году

Как подготовить 3D модель к печати или научиться создавать модели с нуля? Какое программное обеспечение лучше всего подходит для новичков? На все эти вопросы можно найти ответ в нашей статье. Представленные в обзоре приложения полностью бесплатны или имеют бесплатные версии для студентов, преподавателей и проектов с открытым исходным кодом.

Рабочий процесс 3D печати

Если вы стали счастливым обладателем 3D принтера, но совершенно не представляете, что с ним делать и как начать работу, тогда эта часть статьи для вас.

Для печати 3D моделей используются разные программы:

  • ПО для трехмерного моделирования/дизайна/САПР;
  • ПО для редактирования, просмотра и восстановления файлов STL;
  • Программы-слайсеры;
  • Хост 3D принтера.

Перед тем, как приступить к работе, необходимо создать 3D модель. Для этого можно использовать разные программы для моделирования. Подробно о бесплатных версиях ПО для 3D моделирования мы писали здесь.

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

После создания 3D модели ее необходимо преобразовать в формат, подходящий для печати. Для настольных 3D принтеров это формат STL. Некоторые созданные или скачанные файлы имеют дефекты, которые ведут к сбоям во время печати. Именно для редактирования файлов STL есть специальной программное обеспечение, которое помогает подготовить модель к воспроизведению на принтере.

Программа слайсер помогает преобразовать STL файл в понятный для принтера G-код. Функционал таких программ позволяет разбить 3D модель на тысячи плоских 2D слоев, которые будут последовательно воспроизводиться на принтере.

И, наконец, хост 3D принтера обеспечивает связь между компьютером и принтером. Он позволяет получать информацию для печати, а также изменять параметры работы устройства в режиме реального времени через ПК. Часто Слайсер и хост объединены в одно ПО для 3D печати, которое поставляется производителем принтера.

Дорогие читатели портала 3DToday хотим вам сообщить, что у нас на сайте интернет-магазина LIDER-3D открылся новый раздел «База знаний». В данном разделе мы делимся совами, опытом, настройками и секретами мира аддитивных технологий, переходите в раздел по данной ссылке.

Лучшие слайсеры и хосты для 3D принтера

Топ бесплатных программ для 3D печати в 2021 годуОдна из популярных программ-слайсеров, которая поставляется вместе со всеми принтерами Ultimaker. Однако ее функционал подходит для использования совместно с другими 3D принтерами. Поскольку это ПО является одним из самых популярный среди мейкеров, можно не тратить время на настройки профиля — для большинства принтеров их можно найти в самой программе.

Софт предназначен для изменения важных настроек печати. Начните с режима “Recommended”,чтобы выбрать улучшенные параметры качества для принтера и легко адаптироваться в работе с программой.

Более точный контроль всех параметров возможен в пользовательском режиме “Custom”. Перейдя в этот режим вы сможете управлять более 400 разными настройками.

Cura — это не только простой и понятный слайсер для домашних пользователей. Софт можно использовать в качестве главного программного обеспечения для вашего принтера, а также интегрировать с САПР, например с SolidWorks или Siemens NX.

Программа постоянно обновляется и дополняется, что позволяет сделать 3D печать на вашем принтере более качественной.

PrusaSlicer

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

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

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

Отличный бонус для тех, кто до этого работал со Slic3r — PrusaSlicer поддерживает большинство исходных функций и принимает пакеты конфигурации Slic3r ри импорте профилей.

MatterControl 2.0

Топ бесплатных программ для 3D печати в 2021 годуMatterControl — это CAD программа для моделирования,слайсер и одновременной хост для 3D принтера. Благодаря функциям хоста вы можете напрямую контролировать печать при подключении принтера через USB. Также программа позволяет нарезать файлы формата STL для экспорта на SD-карту для автономной печати и конечно же, создавать проекты в отдельном разделе программного обеспечения САПР.

Структурированный интерфейс позволяет легко создавать модели и подготавливать их к печати. Файловый браузер и библиотека геометрических примитивов помогают легко импортировать данные в печать. Геометрические фигуры можно использовать в качестве поддержек, что помогает добиться высокого качества печати сложных деталей.

Расширенные настройки печати и удобная программа для просмотра делают это ПО одним из лучших для комплексного контроля процесса 3D печати. Кроме функций хоста и слайсера, MatterControl имеет инструменты для дизайна,которые позволяют проектировать детали. Полученные 3D модели легко экспортировать в слайсер и распечатать. Таким образом, программа позволяет контролировать весь процесс — от создания модели, до ее нарезки и отправки в печать.

3DPinterOS

Топ бесплатных программ для 3D печати в 2021 году3DPrinterOS — облачная программа для управления 3D принтером. Она сочетает в себе функции слайсера, хоста и редактора файлов STL. В программе можно создавать очередь на печать, управлять принтером и системой подключаемых модулей на основе приложений для анализа и восстановления данных STL, а также выполнять облачную нарезку.

Бесплатный пакет Starter позволяет пользователям загружать G-коды и отправлять их в печать, удаленно контролировать процесс печати и получать поддержку на форуме единомышленников. За умеренную плату можно получить доступ к дополнительным функциям, включая возможность совместной работы над проектом.

По сути эта программа является универсальным средством конвертации файлов для печати в формат STL. Именно поэтому 3DPrinterOS подходит для небольшого бизнеса, обучения, производства и дизайна.

KISSlicer

Топ бесплатных программ для 3D печати в 2021 годуАббревиатура этого приложения “Keep It Simple Slicer” может смутить неопытных пользователей. На самом деле это довольно сложный инструмент для 3D печати. Противоречивые отзывы пользователей тем не менее позволяют сделать вывод о том, что программа популярна и имеет достаточный функционал для работы с 3D принтерами.

Бесплатная версия программы подходит для большинства пользователей, которые работают на принтерах с одним экструдером. KISSlicer помогает упростить некоторые аспекты нарезки с помощью Profile Wizards для настроек конкретного принтера и Tuning Wizards для оптимизации материалов. Платная версия программы позволяет работать с принтерами с 2 экструдерами.

Хотя настройки приложения довольно сложны, но усилия того стоят — слайсер позволяет обеспечить полный контроль над всем процессом печати.

Slic3r

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

Несмотря на то, что Slic3r почти не выпускает обновлений для своей программы, она является базовой для многих других ПО с открытым исходным кодом. Например, во многих программах используется трехмерное сотовое заполнение полостей, что является особой заслугой разработчиков Slic3r.

В 2018 году вышла новая версия софта с новыми интегрированными функциями. Так, в этой версии есть новые шаблоны заполнения, экспериментальная поддержка принтеров SLA и DLP, формат 3MF, а также печать через USB.

На сайте ПО можно найти подробное руководство, которое дает представление обо всех функциях Slic3r. Отличным бонусом программы является прямая интеграция с OctoPrint для печати одним нажатием кнопки.

SliceCrafter

Топ бесплатных программ для 3D печати в 2021 годуБраузерный слайсер от разработчиков IceSL.С помощью программы можно быстро загрузить STL файлы, нарезать их, а затем подготовить G-код к печати. В браузерной программе можно воспользоваться практически всеми опциями, которые предлагает IceSL.

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

IceSL

Топ бесплатных программ для 3D печати в 2021 годуПрограмма IceSL — отличный инструмент для 3D моделирования и печати. Несколько рабочих окон позволяют редактировать модель напрямую через скрипт на языке Lua, выбирать разные настройки для нарезки модели, а также просматривать полученный результат в режиме реального времени. Несмотря на кажущуюся сложность работы с ПО, IceSL дает возможность изящного параметрического моделирования.

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

OctoPrint

Топ бесплатных программ для 3D печати в 2021 годуЭта программа является хостом для 3D принтеров, который позволяет контролировать печать и менять настройки. ПО также дает возможность дистанционного управления принтером с помощью Wi-Fi модуля, подключенного к устройству.

OctoPrint принимает G-код практически от любого слайсера, при этом хост позволяет визуализировать полученные файлы до и во время печати. Кроме того, нарезку файлов можно осуществлять непосредственно в программе, используя ее в качестве слайсера.

OctoPrint предлагает не только широкий выбор инструментов для удаленного управления печатью, но и несколько способов отслеживания выполняемых задач. Вы можете настроить push-уведомления или отправку предупреждений через разные мессенджеры.

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

Repetier-Host

Топ бесплатных программ для 3D печати в 2021 годуЛюбимый хост разработчиков Rep-Rap — Repetier является высокопроизводительным программным обеспечением для управления печатью и подготовки файлов.

Repetier-Host позиционируется как универсальное ПО, которое помогает управлять принтерами с большим количеством экструдеров (до 16 экструдеров), а также поддерживает практически любой 3D принтер, представленный на рынке.

Программа имеет функции удаленного доступа через Repetier Server, что позволяет управлять своим принтером через браузер на ПК, планшете или смартфоне.

AstroPrint

Топ бесплатных программ для 3D печати в 2021 годуКак и 3DPrinterOS эта программа является облачным решением для контроля и управления вашими 3D принтерами. Также, с помощью AstroPrint можно менять настройки слайсера, управлять профилями принтера и материала. Бесплатная учетная запись позволяет сохранять информацию для печати, а также иметь доступ ко всем настройкам через браузер или мобильное приложение AstroPrint.

Это ПО уникально тем, что оно совместимо с Thingiverse и MyMiniFactory, а также с бесплатными версиями CAD программ, например с 3D Slash и Leopoly. Также у приложения есть инструменты для нарезки 3D моделей с возможностью отправлять файлы в печать со смартфона.

Софт будет полезен тем, кто работает в крупномасштабных сетях, таких как 3D фермы, предприятия и университеты.

Лучшее программное обеспечение для редактирования и восстановления файлов STL

3D-Tool Free Viewer

Топ бесплатных программ для 3D печати в 2021 году3D-Tool Free Viewer предназначена для поверки структурной целостности файлов STL и возможности печати документа на вашем принтере. Дополнительные функции, например “Поперечное сечение”позволяют также заглянуть внутрь 3D модели и оценить некоторые параметры.

Эта программа может быть полезна, если вы хотите проверить свой STL файл на наличие ошибок. Удобный интерфейс программного обеспечения позволяет измерить размер, площадь поверхности и объем всех частей фигуры, а также изменить расстояние, углы и радиус одним нажатием кнопки.

Для тех, кто не обладает достаточными познаниями и опытом в САПР, программа предлагает быстрый способ проверки STL файла и подготовки его к 3D печати.

MakePrintable

Топ бесплатных программ для 3D печати в 2021 годуЭтот полезный веб-сервис позволяет проверить файлы STL а наличие ошибок и исправить критические значения,которые могут повлиять на печать. В отличие от других бесплатных программ, MakePrintable дает возможность полного контроля процесса. Вы можете выбрать уровень качества печати, сделать сетку пустотелой, исправить количество полигонов и даже объединить несколько мишеней в одну.

Хотя программа больше не предлагает бесплатную версию с ограниченным функционалом, пользователи могут найти несколько вариантов использования программы. Программа имеет разные возможности оплаты — за единичную загрузку файла (около 2 долларов за файл) или пакет “Maker” с возможностью загружать до 30 файлов в месяц (ежемесячная цена около 15 долларов).

Преимуществом программы является совместимость плагинов с Blender и SketchUp.

Meshmixer

Топ бесплатных программ для 3D печати в 2021 годуПрограмма Meshmixer — это супер современное и бесплатное программное обеспечение из семейства Autodesk для 3D печати для просмотра, проверки, редактирования и восстановления STL файлов. Эта программа помогает выявить потенциальные проблемы и автоматически устранить их. Например, программа идентифицирует недостаточную толщину стенок.

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

Пытаетесь ли вы исправить STL файл,подготовить модель к печати или сконструировать несколько объектов — Meshmixer идеально подходит для всех этих целей.

MeshLab

Топ бесплатных программ для 3D печати в 2021 годуMeshLab — это приложение с открытым исходным кодом, которое позволяет редактировать файлы формата STL, а также имеет инструменты для работы с трехмерными треугольными сетками. Возможности софта помогают проверять, визуализировать, восстанавливать и преобразовывать сетки, и даже объединять модели в твердые тела и заделывать дыры.

Приложение отлично подходит для редактирования 3D моделей, созданных в САПР. Несмотря на то, что последняя версия была выпущена в 2016 году, программа по-прежнему пользуется популярностью у мейкеров.

NetFabb

Топ бесплатных программ для 3D печати в 2021 годуNetFabb — это программное обеспечение для нарезки, которое включает в себя дополнительные возможности анализа и восстановления файлов STL. Один из самых мощных инструментов NetFabb направлен на оптимизацию процесса для пользователей, предлагая возможность создания поддержек, восстановление сетки и широкий выбор инструментов генеративного дизайна.

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

  • NetFabb Standard позволяет быстро подготовить модель к печати;
  • NetFabb Premium с расширенными возможностями для создания решеток, поддержек и автоматической упаковки деталей;
  • NetFabb Ultimate позволяет вычислить сбои в сборке, предоставляет инструменты для моделирования, настраиваемые стратегии траектории инструмента, а также помогает автоматизировать процесс подготовки модели к 3D печати;
  • NetFabb Simulation помогает моделировать определенные технологии печати металлом до начала производства.

Лучшее бесплатное программное обеспечение для 3D моделирования и 3D печати

О программах для 3D моделирования, в которых разберется даже новичок, мы писали в этой статье. Здесь представлены не менее полезные, простые в использовании, а главное, бесплатные программы для трехмерного моделирования и 3D печати.

3D Builder

Топ бесплатных программ для 3D печати в 2021 годуПриложение 3D Builder предлагает своим пользователям быстро визуализировать и редактировать 3D модели. Софт помогает создавать и импортировать файлы в форматах для трехмерной печати. Используя простые инструменты для редактирования, можно создавать трехмерные изображения даже пользователям начального уровня.

Приложение располагает собственной обширной библиотекой 3D моделей. Также можно загрузить внешний файл или использовать датчик Kinect V2 для сканирования и импорта нового 3D изображения. Присоединившись к сообществу 3D Builder и скачав SDK 3D Printing можно расширить возможности этой бесплатной программы.

Figuro

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

Создание объектов в Figuro построено по принципу полигонального моделирования — вы генерируете многоугольники, изменяя их и объединяя друг с другом. Если вы пользуетесь программой впервые, рекомендуем использовать дополнительные инструменты проверки и восстановления файлов STL.

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

Fusion 360

Топ бесплатных программ для 3D печати в 2021 годуFusion 360 — это профессиональная CAD программа для 3D моделирования. В отличие от других ПО, софт позволяет охватить весь процесс планирования, тестирования и трехмерного дизайна.

Программа имеет мощные инструменты для решения задач промышленного дизайна. Fusion 360 позволяет моделировать конструкцию проектируемых объектов а также нагрузки, с которыми они столкнутся после введения в эксплуатацию.

Возможность совместной работы над проектом, облачный обмен файлами и импорт/экспорт разных типов файлов САПР делает использование приложения комфортным.

Fusion 360 бесплатен для студентов, стартапов и любителей. При этом любительские проекты не должны быть коммерческими, доход стартапа не должен превышать 100000 долларов в год, а студенческая лицензия программы ограничена тремя годами.

FreeCAD

Топ бесплатных программ для 3D печати в 2021 годуМногофункциональное программное обеспечение САПР позволяет отлично развить дизайнерские навыки. ПО для параметрического моделирования создает модели в соответствии с заданными параметрами. Большим преимуществом является возможность перетаскивания и управления объектами непосредственно с помощью мыши.

Особенность данной программы — возможность возвращаться в историю создания объекта и редактировать ее параметры. Несмотря на то, что софт бесплатен, он имеет все необходимые инструменты для полноценной работы.

FreeCAD позволяет пользователям рисовать 2D формы в качестве основы для создания дополнительных объектов. Программа подойдет для дизайна изделий, машиностроения, архитектуры и других областей.

OpenSCAD

Топ бесплатных программ для 3D печати в 2021 годуВ отличие от других представленных программ, OpenSCAD больше фокусируется на CAD аспекте 3D моделирования. Софт работает как 3D-камиллятор, который считывает файл сценария, описывающий 3D модель, а затем преобразует объект в 3D модель.

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

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

Blender

Топ бесплатных программ для 3D печати в 2021 году

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

Последняя версия программы является более доступной. Так пользовательский интерфейс стал более удобным, а также появилось трехмерное окно просмотра. Расширенные дополнения Eevee, средство визуализации в реальном времени и Grease Pencil для 2D рисования и анимации значительно расширяют возможности программы.

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

OnShape

Топ бесплатных программ для 3D печати в 2021 годуOnShape — мощная браузерная программа для САПР, которая предназначена для профессиональных пользователей. Софт позволяет организовать совместную работу над проектом и хранить данные в облаке.

Программа предоставляет всем членам команды мгновенный доступ к одной и той же рабочей области САПР и одним и тем же данным в облаке. Дополнительная возможность управления основным дизайном без необходимости сохранять копии и отслеживать разные версии файлов делает работу по-настоящему удобной.

Программа имеет бесплатную версию для студентов и преподавателей, а также пользователям, которые занимаются некоммерческими проектами.

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

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

Время на прочтение
15 мин

Количество просмотров 19K

В этой статье я хочу рассказать о своем опыте разработки свободного ПО для управления 3D принтерами на Qt5, проблемах и особенностях общения с RepRap’ами и прочим радостям.

Результатом этого опыта стал RepRaptor — минималистичный свободный host-controller для 3D принтеров.

Всех интересующихся приглашаю под кат.

Немного предыстории

За последний год я сильно заинтересовался 3D печатью, и не просто 3D печатью, а ее свободной составляющей — проектом RepRap. Руководство ВУЗа поддержало начинания, и в течении этого года моими и единомышленников усилиями в МГТУ МИРЭА открылась лаборатория 3D печати.
Очень скоро возникла проблема — существующее в экосистеме ПО имело недостатки, которые сильно мешали работе. Поэтому было решено эти проблемы ликвидировать, создав свое ПО.

Чтобы не обидеть ненароком авторов имеющегося ПО, не буду тыкать пальцем, тем более проблемы у целого ряда свободного ПО для 3D печати общие:

  • Они все написаны на интерпретируемых языках, открытие и разбор файлов занимают на слабом железе иногда и по 10 минут;
  • Те из них, что написаны на Mono еще и периодически падают, и обрекают кучу пластика на безвременную кончину (Виновато тут, скорее всего, не само Mono, а минимальное внимание к сборкам на ней от авторов);
  • В интерфейс вынесено мало кодов, зато встречается совсем уж избыточный функционал (прошу прощение за свой минимализм);

Почему Qt?

Как это все исправить? Довольно просто — написать хост на языке, который будет работать быстрее, и сделать его максимально простым. Сказано — сделано. Для разработки был выбран Qt, и не случайно. Этот замечательный фреймворк не только распространяется свободно, но и позволяет писать кроссплатформеные приложения без сопровождающей мультиплатформу в C++ боли, а так же не так давно периодически используемый мной QSerialPort стал официальной частью фреймворка.

Кроме того, я не знаю ни одной IDE, такой же быстрой и удобной для меня, как QtCreator.

Так как все окна, да и сам Ui в целом делался с помощью .ui файлов в WSIWYG редакторе Qt — я опущу все, связанное непосредственно с интерфейсом. Смотреть будем «под капот».

С чего начать, или как разговаривают принтеры

Общаться необходимо работать с целым зоопарком разнообразных плат (Melzi, RAMPS 1.4, Teensylu, Gen7 1.5.1 и т.д.), благо сообщество проекта RepRap уже давно определилось с протоколом и списком команд. Для общения с любой платой используется серийный порт и протокол G-code.

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

Первое разочарование — протокол

Спецификация серийных портов RS-232 обширна и интересна, но, к сожалению редко где используется на полную. При эмуляции серийного порта по USB, очень часто к микроконтроллеру подключаются только линии TX и RX, отвечающие за передачу данных. Линии, такие как DTR (сброс при подключении), обычно не используются, и это печально.

Вместо аппаратного контроля за передачей данных RepRap-совместимые принтеры используют очень простой протокол, организованный по принципу PingPong:

  1. Принтер сообщает о простое строчкой wait;
  2. Хост отправляет команду G-Code, кончающуюся переносом строки;
  3. Принтер подтверждает прием команды строчкой Ok <номер строки>.

Выглядит это примерно так:

wait
G1 X10 Y10 Z10
ok 0
G1 X20 Y5 Z3
ok 0

Обратили внимание на 0 после «ok»? Это — номер строчки. При желании можно использовать контрольную сумму и номер строки при
отправке команд на принтер:

N1 G1 X10 Y10 Z10 *cs
ok 1
N2 G1 X20 Y5 Z3 *cs
ok 2

Где cs — вычисленная контрольная для строки.

Как правило кодогенераторы, преобразующие 3D модели в G-Code для печати контрольных сумм не генерируют, а оставляют это на усмотрение хоста.

У принтера есть буффер, размер которого в большинстве случаев составляет 16 команд.

Реализация протокола

Qt имеет отличную функцию для облегчения жизни разработчику — сигналы и слоты.
Сигнал — это новое для C++ понятие. Сигнал объявляется в классе подобно слоту:

class Example : public QObject
{
    Q_OBJECT
    public:
        Example();

    signals:
         void exampleSignal(int);
} 

Сигнал не может ничего вернуть, поэтому всегда имеет тип void, а вместо аргумента указывается тип передаваемой сигналом переменной. Инициализировать его не требуется.

Вызывается сигнал из любого метода родительского класса, и очень просто:

emit exampleSignal(100);

После такого вызова все слоты, присоединённые к этому сигналу будут вызваны при первой возможности в порядке присоединения, и им передастся значение 100.
Что такое слот? Коротко — это самый обычный метод, объявленный слотом

class Example2 : public QObject
{
    Q_OBJECT
    public:
        Example();

    public slots:
         void exampleSlot(int);
} 

Соединяются сигнал со слотом тоже очень просто:

Example e1;
Example2 e2;
connect(&e1, SIGNAL(exampleSignal(int)), &e2, SLOT(exampleSlot(int)));

Есть и ограничение — у сигнала и слота обязательно должен совпадать передаваемый тип.

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

Самая простая часть — чтение.

Для реализации связи по серийному порту используется упомянутый выше QSerialPort (экземпляр которого назовем «printer»), имеющий сигнал readyRead(), вызывающийся каждый раз, когда на порт приходит информация. Все что от нас требуется — это создать в своем классе слот, который мы и будем вызывать при появлении этого сигнала, соединить их, и ждать. Что же мы будем читать? Как уже описано выше, в первую очередь нас интересуют ответы ok и wait. Так как наш код исполняется асинхронно, а у принтера есть буфер — нам надо где-то сохранить колличество строчек ок, которые мы приняли, чтобы при отправлении знать, сколько мы можем отправить. Хранить их будет в переменной «readyRecieve».

Слот:

void MainWindow::readSerial() 
{
    if(printer.canReadLine()) //На всякий случай проверяем, есть ли линия в буффере
    {
        QByteArray data = printer.readLine(); //Читаем пришедшую строку

        if(data.startsWith("ok")) readyRecieve++;  //Можно отправить еще одну строчку
        else if(data.startsWith("wait")) readyRecieve = 1; //А вот это значит, что принтер в простое - отправляем только 1 команду

        printMsg(QString(data)); //Покажем пользователю, что мы получили от принтера
    }
}

Отлично, с приемом разобрались. А что у нас с отправкой? Вот тут и видим дефект протокола. Никакой аппаратной команды для обозначения готовности к приему данных у нас нет, а значит нету и соответствующего сигнала у нашего QSerialPort. Значит отправлять будем по таймеру. Таймер в Qt работает до безобразия просто и удобно — мы создаем экземпляр класса QTimer, соединяем его сигнал timeout() с нашим слотом, который будет выполнятся по этому таймеру, а после этого запускаем его — timer.start(ms). В последствии было выяснено, что в зависимости от производительности ПК оптимальный промежуток находится от 1 до 5 мс. Кстати, если указать таймеру промежуток 0, то выполнятся он будет как только у Qt появится свободная минутка.

Еще стоит упомянуть, что отправляем мы либо команду от пользователя, либо файл. Так как разбор файла сводится к заурядной загрузки файла в массив, а так же фильтровании линий целиком из комментариев (чтобы не отправлять лишнее на принтер и не захламлять память), я решил опустить эту часть. Массив строк из файла называется gcode.

Реализация отправки:

void MainWindow::sendNext()
{
    if(injectingCommand && printer.isWritable() && readyRecieve > 0) //Пытаемся вклинить команду от пользователя
    {
        sendLine(userCommand); //отправляем в порт (userCommand и флаг injectingCommand служат для вставки команды от пользователя)
        readyRecieve--; //уменьшаем колличество строчек, которые принтер готов принять
        injectingCommand=false; //уже вклинили команду, так что флаг стоит опустить
        return; //обрываем наш отправщик
    }
    else if(sending && !paused && readyRecieve > 0 && !sdprinting && printer.isWritable()) //Проверяем, отправляем ли мы сейчас файл
    {
        if(currentLine >= gcode.size()) //Не кончился ли файл
        {
            sending = false; //Ну рас уж кончился - то мы его уже не отправляем
            currentLine = 0; //Обнуляем счетчик отправленых из файла линий
            ui->sendBtn->setText("Send"); //обновляем интерфейс
            ui->pauseBtn->setDisabled("true"); //обновляем интерфейс
            ui->filelines->setText(QString::number(gcode.size()) //обновляем интерфейс
                                   + QString("/")
                                   + QString::number(currentLine)
                                   + QString(" Lines"));
            return; //обрываем функцию отправки
        }
        sendLine(gcode.at(currentLine)); //если файл не кончился - отправляем следующую линию
        currentLine++; //Увеличиваем счетчик отправленых из файла линий
        readyRecieve--; //Уменьшаем счетчик команд

        ui->filelines->setText(QString::number(gcode.size()) //Обновляем счетчик линий в интерфейсе
                               + QString("/")
                               + QString::number(currentLine)
                               + QString(" Lines"));
        ui->progressBar->setValue(((float)currentLine/gcode.size()) * 100); //обновляем полоску 
    }
}

Ну вот, с серийным портом разобрались? Еще нет. Еще нам надо отловить ошибки. Для этого вновь прибегнем к сигналам и слотам, на этот раз будем слушать сигнал error(SerialPort::SerialPortError error) от нашего экземпляра QSerialPort:

void MainWindow::serialError(QSerialPort::SerialPortError error)
{
    if(error == QSerialPort::NoError) return; //Нет ошибки - нет проблем

    if(printer.isOpen()) printer.close(); //Ну а если сюда дело дошло - не плохо бы закрыть порт, если он еще открыт

    if(sending) paused = true; //Если что-то отправляем на принтер - поставим на паузу отправку

    ui->connectBtn->setText("Connect"); //Обновим интерфейс
    ui->sendBtn->setDisabled(true); //Обновим интерфейс
    ui->pauseBtn->setDisabled(true); //Обновим интерфейс
    ui->controlBox->setDisabled(true); //Обновим интерфейс
    ui->consoleGroup->setDisabled(true); //Обновим интерфейс

    qDebug() << error; //На всякий случай отправим ошибку в консоль

    QString errorMsg; //Переведем нашу ошибку на понятный язык
    switch(error)
    {
    case QSerialPort::DeviceNotFoundError:
        errorMsg = "Device not found";
        break;

    case QSerialPort::PermissionError:
        errorMsg = "Insufficient permissionsnAlready opened?";
        break;

    case QSerialPort::OpenError:
        errorMsg = "Cant open portnAlready opened?";
        break;

    case QSerialPort::TimeoutError:
        errorMsg = "Serial connection timed out";
        break;

    case QSerialPort::WriteError:
    case QSerialPort::ReadError:
        errorMsg = "I/O Error";
        break;

    case QSerialPort::ResourceError:
        errorMsg = "Disconnected";
        break;

    default:
        errorMsg = "Unknown errornSomething went wrong";
        break;
    }

    ErrorWindow errorwindow(this, errorMsg); //И покажем окошко с ошибкой
    errorwindow.exec();
}

Неаккуратное обращение с принтером расстраивает динозаврика, %username%.

Делаем наш хост умнее

Выносим кнопки команд

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

Иконок пока нет, но они обязательно появятся в последующих релизах. Реализация большинства этих кнопок весьма простая:

void MainWindow::homeall()
{
    injectCommand("G28");
}

Метод injectCommand, способ работы которого мы уже узнали ранее, в реализации отправщика кода тоже весьма прост:

void MainWindow::injectCommand(QString command)
{
    injectingCommand = true; //Поставим флаг вставки команды 
    userCommand = command; //Запомним команду
}

Получаем дополнительные данные

RepRap — это суровый DIY. Настолько суровый, что случается всякое:

Далеко не всегда во время настройки можно быть уверенным, что принтер поведет себя так, как надо. Одним из очень важных значений является температура, и следить за ней жизненно необходимо. У некоторых людей на принтере есть дисплеи, отображающие оперативную информацию, но далеко не у всех. К тому же, можно физически находится от принтера далеко, или под неверным углом, и читать дисплей уже не выйдет. Именно поэтому требуется отображать температуру, и чем оперативнее — тем лучше.


Под температуру определим отдельную группу элементов

Как же ее узнать? Во время нагрева, принтер перестает принимать команды, и вместо ok или wait начинает присылать температуру. Строка температуры выглядит так:

T:196.94 /210 B:23.19 /0 B@:0 @:4

Читаемо для человека, но не очень удобно для разбора. В первых версиях я разбирал эту строку прямо в слоте, отвечающем за прием информации, но тесты показали, что разбор строки прямо в этом слоте слишком сильно замедляет работу программы. До последнего я пытался избежать работы с потоками, так как одна из главных причин, по которой RepRaptor был написан — быстродействие. Многопоточность отлично ускоряет работу софта на многоядерных системах, но у нас с железом было все не так радужно. Однако выбора не осталось — надо было перенести в отдельный поток либо разбор, либо само соединение. Было решено пойти на компромисс — перенести разбор в отдельный поток, и позволить пользователю отключить проверку температуры.

Как реализована многопоточность в Qt? Очень удобно. Есть несколько способов создать отдельный поток. Полноценный способ — создать поток с помощью QThread, но нам не нужен полноценный поток для простого разбора строки, так что будем использовать другой способ — передадим нашу функцию разбора вместе с аргументам объекту QFuture, и будем за ним следить. Делается это так — для начала нам необходимо создать экземпляр QFutureWatcher, класса, который следит за QFuture, и сообщает нам о его состоянии. Затем надо написать нашу функцию разбора. Так как функция может вернуть только одну переменную, я решил создать специальный тип для передачи температуры:

typedef struct
{
    double e, b;
} TemperatureReadings;

И функция разбора:

TemperatureReadings MainWindow::parseStatus(QByteArray data)
{
    QString extmp = ""; // Подготовим строку для температуры экструдера
    QString btmp = ""; // Подготовим строку для температуры кровати

    for(int i = 2; data.at(i) != '/'; i++) //Считываем температуру экструдера
    {
        extmp+=data.at(i);
    }
    for(int i = data.indexOf("B:")+2; data.at(i) != '/'; i++) //Считываем температуру кровати
    {
        btmp+=data.at(i);
    }

    TemperatureReadings t;
    t.e = extmp.toDouble(); //Переводим строки в числа
    t.b = btmp.toDouble(); 

    return t; //Возвращаем температуру
}

Теперь осталось только отдать эту функцию потоку при удобном случае (вставляем дополнительную проверку в автомат функции приема):

//....
else if(checkingTemperature && data.startsWith("T:")) // Определяем, температура ли это
        {
            QFuture<TemperatureReadings> parseThread = QtConcurrent::run(this, &MainWindow::parseStatus, data); //Создаем объект QFuture (QtConcurrent::run создает экземпляр QFuture из метода parseStatus)
            statusWatcher.setFuture(parseThread); //Передаем наш объект QFuture наблюдателю
            ui->tempLine->setText(data); //Продублируем строку в интерфейсе
        }
//...

Осталось только создать слот, чтобы подключить к нему сигнал, передающий из QFutureWatcher результаты выполнения функции:

void MainWindow::updateStatus()
{
    TemperatureReadings r = statusWatcher.future().result(); //Получаем результат из потока
    ui->extruderlcd->display(r.e); //Обновляем интерфейс
    ui->bedlcd->display(r.b); 

    sinceLastTemp.restart(); //Перезапускам таймер последнего снятия температуры
}

Вот и все, теперь каждый раз, когда принтер сообщает нам о температуре — мы разбираем эту строку и красиво отображаем ее в интерфейсе.

Проблема в том, что сам принтер ее присылает только во время нагрева, но мы можем его попросить прислать нам ее в любое другое время, отправив команду для проверки температуры M105. Отправлять ее будем по таймеру, при выполнении нескольких условий. Так же, как и ранее для функции отправки создаем новый таймер, и новый слот для подключения к его сигналу. На этот раз таймеру ставим значение побольше, например 1500мс:

void MainWindow::checkStatus()
{
    if(checkingTemperature && //Если проверяем температуру....
            (sinceLastTemp.elapsed() > statusTimer.interval()) //И последний раз ее получили не раньше, чем задано
            && statusWatcher.isFinished()) injectCommand("M105"); //И если наш поток уже закончил, тогда отправляем команду M105
}

Кто-то возможно скажет, что эти проверки излишние, но когда ты управляешь принтером с Asus EEEPC 900AX, и хочешь одновременно читать хабр — это необходимость.

Печать с SD карты

Очень многие типовые платы для 3D принтеров имеют встроенный слот для SD карты, или способ такой слот подключить. Такой метод печати является предпочтительным, так как в любой момент можно отключится от принтера и уйти, однако каждый раз вытаскивать SD карту зачастую лень, особенно если печатаешь много мелких деталей. Конечно, можно передать файл через серийный порт, но передача файла таким способом занимает едва ли меньше времени, чем сама печать.

В любом случае, хост должен уметь работать с SD картой, а это значит:

  • Получать список файлов
  • Выбирать файл
  • Поставить файл на печать
  • Поставить печать на паузу
  • Сообщать о прогрессе

А это значит — больше парсинга! Но на этот раз, опрашивая список файлов мы можем не волноваться о производительности — в этот момент она не важна. Для отображения списка файлов нам понадобится диалог. В диалог мы будем передавать массив строк с файлами, а он нам вернет один файл, а заодно скажет нашей программе, что она в режиме печати с SD.

Каждый раз когда на хост будет приходить строка, с которой начинается список файлов на SD — будем открывать диалог со списком файлов. Для этого еще раз изменим наш приемник:

//...	
	if(readingFiles) //Если читаем файлы
        {
            if(!data.contains("End file list")) sdFiles.append(data); //Если список не кончился - добавляем строчку в список файлов
            else
            {
                readingFiles = false; //Если кончился список 
                emit sdReady(); //Отправим сигнал о готовности списка файлов
            }
        }
//...
	else if(data.startsWith("Done")) sdprinting = false; //Если получили Done - печать с SD окончена
	else if(data.startsWith("SD printing byte") && sdWatcher.isFinished()) //Разберем статус SD печати
	{
    	QFuture<double> parseSDThread = QtConcurrent::run(this, &MainWindow::parseSDStatus, data); //Скормим строку потоку с парсером
        sdWatcher.setFuture(parseSDThread); //Следим за потоком
    }
    else if(data.contains("Begin file list")) //Список файлов с SD карты
    {
         sdFiles.clear(); Очистим массив файлов
         readingFiles = true; //Поставим флаг, идет получение файлов
    }
//...

Флаг нужен, так как наш метод чтения вызывается для каждой строки.

За одно для открытия диалога будем посылать сигнал. Самому же себе. Да, соединять можно даже сигналы со слотами одного и того же объекта.

Слот, который мы подключаем к этому сигналу:

void MainWindow::initSDprinting()
{
    SDWindow sdwindow(sdFiles, this); 

    connect(&sdwindow, SIGNAL(fileSelected(QString)), this, SLOT(selectSDfile(QString)));

    sdwindow.exec();
}

После этого надо перевести интерфейс в режим печати. Я сделал это путем введения дополнительного флага sdprinting. Статус печати с SD карты проверяется в схожей манере с температурой.

Софт — в массы

Как бы сильно я не любил GitHub — далеко не все любят собирать софт сами. Не смотря на кроссплатформенность Qt — это фреймворк, а не среда для кросс-компиляции. А это значит, помимо бинариков под платформу Linux-amd64 нужны еще бинарики под Linux-i386, Windows 32 и OSX 64. Что ж, с первыми двумя все просто — достаточно добавить нужные наборы в QtCreator. А как быть с Windows 32 и OSX 64? С последней — никак. Я пытался, но я умываю руки. Единственный способ собрать что-то под OSX — делать это на OSX. К сожалению, легально это сделать не возможно.

Debian и его пакеты

Очень хотелось собрать пакет под любимый Linux Mint, на котором и ведется разработка. По началу я хотел собрать пакеты для PPA, но в итоге пришел к тому, что собирать надо со статическими библиотеками Qt, а потому пакеты на первое время собирать пришлось руками. Почему статическая линковка? Все очень просто — даже в Ubuntu 14.04, на которой основан Mint в источниках имеется только Qt 5.2.1. В ходе тестов первых двух релизов на разных системах выявились баги QSerialPort, исправленные в новых версиях, а потому было принято решение поставлять все с последними версиями. К тому же, вики Qt говорит, что статически линкованые библиотеки несколько быстрее работают.

Руками пакет собирается весьма просто — он должен содержать дерево каталогов файловой системы Debian, в котором размещены все файлы, которые мы собираемся установить. Написав .desktop файл для того, чтобы получить пункт в меню на конечной системе, я написал небольшой bash скрипт для сборки нужной мне версии пакетов:

#!/bin/bashcd 

# $1 - первый аргумент командной строки после скрипта

mkdir repraptor-$1-1-i386 
mkdir repraptor-$1-1-amd64

mkdir repraptor-$1-1-i386/DEBIAN/
mkdir repraptor-$1-1-i386/usr/
mkdir repraptor-$1-1-i386/usr/local/
mkdir repraptor-$1-1-i386/usr/local/bin
mkdir repraptor-$1-1-i386/usr/local/share

mkdir repraptor-$1-1-amd64/DEBIAN/
mkdir repraptor-$1-1-amd64/usr/
mkdir repraptor-$1-1-amd64/usr/local/
mkdir repraptor-$1-1-amd64/usr/local/bin

cp ../RepRaptor-linux32/RepRaptor repraptor-$1-1-i386/usr/local/bin/repraptor
cp ../RepRaptor-linux64/RepRaptor repraptor-$1-1-amd64/usr/local/bin/repraptor

cp share repraptor-$1-1-i386/usr/local/ -r
cp share repraptor-$1-1-amd64/usr/local/ -r

echo "Package: repraptor
Version: $1-1
Section: base
Priority: optional
Architecture: i386
Maintainer: [Hello Habr!]
Description: RepRaptor
 A Qt RepRap gcode sender/host controller" > repraptor-$1-1-i386/DEBIAN/control
echo "Package: repraptor
Version: $1-1
Section: base
Priority: optional
Architecture: amd64
Maintainer: [Hello Habr!]
Description: RepRaptor
 A Qt RepRap gcode sender/host controller" > repraptor-$1-1-amd64/DEBIAN/control

dpkg-deb --build repraptor-$1-1-i386
dpkg-deb --build repraptor-$1-1-amd64

Все, что он делает — это создает дерево каталогов, копирует иконки и .desktop файл, а после этого генерирует описание пакета для пакетного менеджера, вставляя нужную версию.

Windows и MXE

Одно дело — собирать пакеты под свою ОС, другое дело — под чужую. Тут необходим тулчеин — набор инструментов для сборки. Благо под Windows есть отличный MinGW, а для Linux есть не менее отличный MXE — менеджер окружения для кросс-компиляции с использованием свободных библиотек.

Установка до смешного простая — клонируем MXE и говорим ему, какие нам библиотеки нужны:

git clone https://github.com/mxe/mxe.git

cd mxe

make qtbase qtserialport

После этого можно смело идти пить кофе — сборка всего этого добра занимает приличное время.

После того, как сборка окончена — можно написать скрипт сборки проекта под Windows автоматически:

#!/bin/bash

#Добавим исполняемые файлы MXE в PATH
export PATH=/home/neothefox/src/mxe/usr/bin:$PATH 

#Удаляем старый каталог
rm -rf RepRaptor-win32

#Клонируем свежую версию и переходим в ее папку
git clone https://github.com/NeoTheFox/RepRaptor RepRaptor-win32
cd RepRaptor-win32

#Генерируем Makefile из проекта QtCreator и собираем проект
/home/neothefox/src/mxe/usr/bin/i686-w64-mingw32.static-qmake-qt5 RepRaptor.pro
make

#Собираем ZIP архив с лицензией и исполняемым файлом
cp LICENCE release/
cd release
zip RepRaptor-$1-win32.zip RepRaptor.exe LICENCE

#Переносим его в каталог с остальными сборками
mv RepRaptor-$1-win32.zip ../../RepRaptor-$1-win32.zip

Просто и сердито. Работоспособность легко проверяется в Wine:

Выводы

Когда я это начинал — я надеялся написать простую отправлялку G-code файлов, которая ничего больше бы не делала, а справится планировал за вечер. Но, как это часто бывает — проект вышел за рамки изначального плана, и теперь представляет из себя нечто большее. Впереди еще много чего предстоит сделать — хотя бы тот же графический редактор EEPROM, которого так не хватает, а так же поддержка контрольных сумм.

Однако уже сейчас RepRaptor позволяет мне спокойно использовать свой ASUS EEEPC как стабильный хост для принтера, чего не мог достичь ни один другой хост из тех, что я пробовал. Ну и знания Qt у меня определенно улучшились, и все равно еще есть место для оптимизаций.

Эта статья так же приурочена к выходу первой стабильной версии, которую я сам теперь использую каждый день — 0.2.

Всем спасибо за внимание! Надеюсь мой опыт был вам полезен.

Напоследок — вот армия объектов, напечатанных во время тестов:

Ссылки

Первая стабильная версия
RepRap wiki
GitHub

Содержание

    • Программы для 3D-моделирования
    • Виды файлов для 3D-печати
      • Бесплатные программы
      • Платные программы для 3D-моделирования
    • Программы для нарезки 3D-моделей (слайсеры)
      • Бесплатные слайсеры
      • Платные слайсеры
    • Подведем итоги

Весь цикл создания детали на 3D-принтере можно уместить в три этапа: Создание/нахождение модели, нарезка модели в слайсере, печать на 3D-принтере. Каждый этап завязан на своей программе. Модели создаются в специальных программах, затем в слайсере модель “нарезается” на шаги, которые принтер будет последовательно исполнять. Полученный список шагов (команд) либо помещается на карту памяти и запускаются с самого принтера, либо через проводное/беспроводное соединение отправляются на принтер. В итоге всех этих действий мы получаем изделие. Поэтому искать “программу для 3D-принтера” неправильно: необходимо искать программу для моделирования и слайсер.

Программы для 3D-моделирования

Программы для 3D-моделирования делятся на две большие группы:

  • Программы для художественного моделирования

  • Программы для создания инженерных изделий (зачастую САП или САПР — Система Автоматического Проектирования)

Очевидно, что инженеру, при создании чертежа нужны точные инструменты: линейка, карандаш, циркуль и т.д. Но художнику же необходимы более свободные инструменты: кисти, пастель, палитра и другие. По этому же принципу делятся программы: в инженерных программах есть все инструменты, позволяющие точно задать характеристики каждого элемента детали, а в художественных программах инструменты созданы для придания более гладких форм, чтобы модель выглядела как можно более естественно. Кончено и в художественных программах можно моделировать технические изделия, но это сравнимо с рисованием чертежа пастелью: неудобно, сложно и неточно. Поэтому очень важно определить зачем вам нужна программа для моделирования.

Совет: лучше всего изучить одну-две программы на профессиональном уровне, так как это позволит создавать сложные модели. Но также следует знать основы в других программах, так как большой круг знаний позволяет более гибко выбирать подход к созданию моделей.

Виды файлов для 3D-печати

Для начала стоит разобраться, какие виды файлов участвуют в процессе изготовления детали. Первым шагом идёт создание модели. Она может быть сохранена в формате самой программы (например, у КОМПАС-3D файлы имеют расширение .m3d, а у 3ds Max расширение файла будет .MAX). Такие файлы могут быть открыты только в программах, в которых создавались. Но нам нужен универсальный формат — STL. Все программы умеют сохранять модели в этом формате. В нём хранятся полигоны, создающие модель.

Все файлы делятся на 3 категории:

  • Файлы, хранящие полигональную информацию (STL, OBJ  и др.). Являются аналогами растрового изображения. Увеличить качество 3D-моделей в этом формате можно только сглаживанием, но при этом будут теряться мелкие детали, а вес файла сильно увеличиваться.

  • Файлы, хранящие шаги по созданию детали (STEP, STP и др.). Здесь можно провести аналогию с векторными изображениями. Каждый элемент задается либо с помощью простых соединений точками (например, как в кубе или пирамиде), либо с помощью формул (любые кривые, округлые объекты). Модели в таком формате можно масштабировать без потери качества, при этом сохраняя относительно малый объем файла.

  • Утилитарные файлы, в которых хранятся шаги для 3D-принтера (GCODE, GCOD). В этих файлах хранятся команды, которые исполняет принтер и, в некоторых случаях, комментарии (например, с какими настройками была нарезана модель). Некоторые слайсеры могут симулировать движения принтера, тем самым визуализируя модель, но перевести файл из этого формата в полноценную модель невозможно.

Будьте осторожны! Если вы не уверены, что GCODE файл предназначен для вашего принтера, то не стоит его запускать в печать, ведь область печати у каждого принтера разная. На сторонних прошивках нет ограничения на максимальное расстояние перемещения, некоторые команды стороннего ПО могут приводить к некорректной работе платы управления. Если принтер будет множество раз пытаться вывести печатающую головку за границы области печати, то он может навредить сам себе!

Если файлы находятся в одной категории, то их можно легко переводить из одного формата в другой почти без потери данных. Форматы, указанные в скобках являются своеобразными “транзитами”. Например, у программы Inventor существует свой формат файлов — itp, а у Fusion 360 свой — f3d. Но если сохранить файл в Inventor в общем формате STEP, то его можно будет открыть в любой инженерной программе, а затем сохранить в формате этой программы.

Бесплатные программы

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

Tinkercad

По сути своей это даже не программа, а сайт, то есть её не надо устанавливать на компьютер и она открывается с любого устройства, у которого есть доступ в интернет. Но в этом и заключается ее главный минус — без доступа в интернет вы не сможете скачать себе какую либо модель, ведь каждый проект изначально сохраняется в облаке. Также для работы на этом сайте необходима регистрация. Изначально сайт создавался для детей, поэтому каждый инструмент интуитивно понятен. Программа подойдёт для моделирования простых изделий: прокладки, втулки, переходника, чехлы, коробки и т.д.

Плюсы:

  • Простота в освоении

  • Не нужно устанавливать на ПК

  • Доступ к моделям с любого устройства

Минусы:

  • Невозможность работать без интернета

  • Каждый отдельный проект нужно скачивать

  • Ограниченное число инструментов

FreeCAD

Эта программа предназначена для создания технических изделий: креплений, втулок, шарниров и прочего. Так как это проект с открытым исходным кодом, он распространяется на бесплатной основе. При этом она имеет весь необходимый функционал для открытия и редактирования файлов с расширением .step — универсальный формат для всех инженерных программ. Также стоит отметить возможность добавлять аддоны — специальные подпрограммы, позволяющие в полностью автоматическом режиме выполнять какие-либо действия. Например, есть аддон, облегчающий создание различных шестерней. В этой программе можно создавать более сложные изделия: механизмы, редукторы, шарниры и т.д.

Плюсы:

  • Относительно проста в освоении

  • Активное сообщество

  • Наличие аддонов

  • Поддержка русского языка

Минусы:

  • Наличие багов

  • Устаревший интерфейс

  • Наличие аддона для работы с .STL файлами

OpenSCAD

Данный САПР ближе к языкам программирования, чем к моделированию: каждый объект или какое либо действие задается в виде кода. Это позволяет создавать универсальные модели. Например, сортировщик монет: один раз написав “код модели”, можно создавать огромное количество вариантов этой модели для различных стран, изменяя всего несколько параметров. Эта программа, как и предыдущая, является проектом с открытым исходным кодом, вследствии этого регулярно обновляется.

Плюсы:

  • Работает на слабых ПК

  • Удобство создания универсальных моделей

  • Легко освоить, если есть опыт в программировании

Минусы:

  • Нет русского интерфейса

  • Является языком программирования

  • Сложно создать криволинейную геометрию

Meshmixer

Художественная программа для 3D-моделирования начального уровня. Есть простейшие инструменты обработки STL файлов и функции по восстановлению “поломанных” файлов. С помощью Meshmixer можно удобно разрезать модель на несколько частей, так как есть возможность установить размеры области печати своего принтера. А одним из самых полезных инструментов является установка древовидных поддержек. Во многих слайсерах уже появилась данная функция, но именно в meshmixer их можно гибко настроить и установить вручную. Несмотря на множество инструментов, эта программа скорее вспомогательная, так как есть более подходящие программы для создания модели “с нуля”.

Плюсы:

  • Большое количество инструментов для подготовки 3D модели к печати

  • Полная автономность

  • Поддержка многих форматов файлов

Минусы:

  • Ограниченный функционал для создания 3D-моделей

  • Отсутствие русского интерфейса

  • Для некоторых операций необходим мощный ПК

Blender

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

Платные программы для 3D-моделирования

В этой категории находятся как программы для профессионалов и предприятий, так и их упрощенные версии для домашнего использования. Многие компании начали выпускать продукт по низкой цене для домашнего использования, хотя изначально проекты предназначались только для предприятий и имели соответствующую цену. Общим плюсом этих программ является большой функционал и постоянная поддержка. Например, Autodesk Inventor был впервые выпущен ещё в 1999 году и при этом ежегодно обновляется. Далее мы рассмотрим самые популярные из них.

Fusion 360

Новый продукт от компании Autodesk попытался объединить в себе сразу несколько задач: моделирование, симуляцию и рендер. Во многом перенял в себя функционал ранее упомянутого Inventor, но дополнил его простым интерфейсом: многие инструменты похожи на те, что можно использовать в ранее упомянутом Tinkercad. Также в нём можно редактировать STL файлы, хоть и с ограниченным набором инструментов.

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

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

Плюсы:

  • Огромный функционал

  • Работает на слабых ПК

  • Существует студенческая версия

Минусы:

  • Часть функционала ограничена необходимостью интернета

  • Большая цена

  • Отсутствие русского интерфейса

Цена: от 7 123₽ до 25 721₽ за 1 год

Netfabb

Программа предназначена для подготовки модели до слайсинга. Во многом она похожа на meshmixer, но в ней нет инструментов создания модели с нуля. Отличительной функцией можно назвать объединение нескольких моделей в формате STL, но самым важным инструментом является “ремонт” моделей. Именно поэтому данную программу следует поставить всем, даже если у вас есть другой редактор моделей или встроенный в слайсер ремонт моделей. Также в Netfabb очень удобно разрезать модель на несколько частей для печати по отдельности. В данный момент функционал Netfabb встроен в Fusion 360 и официально не поставляется отдельно, но на сторонних ресурсах можно найти в виде отдельной программы.

Плюсы:

  • Большой функционал ремонта модели

  • Удобная нарезка на части

  • Легко изучить все необходимые инструменты

Минусы:

  • Более не обновляется

  • Нет русского интерфейса

Цена: от 18 024₽ за 1 месяц

КОМПАС-3D

Профессиональная программа, созданная российскими разработчиками для российских предприятий. Имеет огромный функционал, но вместе с этим каждая функция имеет описание, а основные инструменты имеют поясняющие анимации, встроена огромная база стандартов и ГОСТов. Программа является бесплатной для всех студентов и не требует подтверждения документов. Есть и платная версия КОМПАС-3D HOME, которая хоть и предназначена только для домашнего использования, но при этом сохраняет весь функционал “профессиональной” версии. Из-за этого, а также из-за низкой цены, данный САПР является лучшим выбором как первая профессиональная программа для создания сложных 3D моделей.

Плюсы:

  • Полностью русский интерфейс

  • Большое количество инструментов

  • Наличие бесплатной студенческой версии

  • Очень низкая цена

Минусы:

  • Нужен относительно мощный ПК

  • Сложна в освоении на профессиональном уровне

Цена: от 1 490₽ за 1 год

SolidWorks

Одна из старейших программ на рынке, ставшая стандартом. Если вы научитесь работать в SolidWorks, то вы сможете работать в любой САПР. Имеет относительно простой интерфейс, среднее количество инструментов, которых хватит даже профессионалам, но так как программа предназначена для производств, то многие функции будут лишь мешать работать. Стоит отметить, что данная программа доступна на русском языке, и это является одной из причин распространенности данной программы в России.

Плюсы:

  • Простота в освоении

  • Наличие русского интерфейса

  • Большое сообщество людей, использующих SolidWorks

  • Широко распространена в России

Минусы:

  • Отсутствие версии для частного использования

  • Загроможденный интерфейс

Цена: от 8 431₽ до 292 560₽ за 1 год

Inventor

Основная программа на многих предприятиях, но благодаря простоте интерфейса и наличию русского языка легка в освоении. Во многом похожа на SolidWorks, как по функционалу, так и по назначению. Главным отличительным свойством данной программы можно назвать большое количество качественных видеоуроков и текстовых курсов. Изучается во многих университетах как во всём мире, так и в России.

Плюсы:

  • Распространенность среди российского сообщества

  • Большое количество обучающих материалов

  • Интуитивно понятный интерфейс

  • Наличие студенческой версии

Минусы:

  • Отсутствие домашней версии

  • Требует мощного ПК

Цена: от 106 860₽ за 1 год

SelfCAD

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

 

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

Плюсы:

  • Простота в изучении

  • Понятный интерфейс

  • Наличие официальных обучающих видео и статей

Минусы:

  • Малый функционал

  • Большая стоимость

Цена: от 1160₽ (14,99$) за 1 месяц

3ds Max

Программа разработана для создания 3D-моделей и рендера изображений. Имеет большой функционал, но крайне сложна в освоении из-за отсутствия русского языка и сложного интерфейса. Связано это с тем, что изначально 3ds Max разрабатывался для студий 3D-анимаций и видеоигр. Именно для создания простого и бесплатного аналога и был создан ранее упомянутый Blender. Из-за вышеуказанных причин эта программа не подходит для создания 3D-моделей для последующей печати на 3D-принтере, но ничто не мешает вам делать это.

Плюсы:

  • Огромный функционал

  • Возможность создания рендеров

Минусы:

  • Необходим мощный ПК (особенно важно большое количество ОЗУ)

  • Большая цена

  • Сложна в освоении

Цена: от 9 791₽ за 1 месяц

Программы для нарезки 3D-моделей (слайсеры)

Имея какую-либо модель в формате STL нельзя сразу помещать ее в принтер и начать печатать, ведь принтер лишь исполняет команды, а эти команды формирует слайсер. По этимологии слова можно понять, что программа нарезает модель на слои, а если точнее на отдельные команды. Но количество вариантов нарезки одной модели почти бесконечно. В связи с этим появилось большое количество программ, позволяющих полностью настроить работу слайсера, а точнее, как именно он будет разбивать модель на отдельные команды. Сам слайсер состоит из двух частей: ядро и оболочка. Ядро слайсера производит нарезку исходя из заданных параметров, а оболочка позволяет задавать эти параметры и визуально оценивать результат нарезки до отправки модели на печать. Кроме того во многих слайсерах встроен функционал прямого обращения к принтеру, позволяющий вручную управлять принтером и проводить его настройки и диагностику. Далее будут рассмотрены самые популярные слайсеры, имеющие свои положительные и отрицательные стороны.

Бесплатные слайсеры

Наличие бесплатных слайсеров обусловлено тем, что без них принтер становится бесполезной машиной, которая сможет разве что нагреть кофе, да сыграть мелодию с помощью моторов. Поэтому многие компании, создающие 3D-принтеры, вместе с ними поставляют слайсеры, при этом выкладывая их в открытый доступ. Зачастую это крупные компании, такие как Ultimaker, CraftUnique, Prusa и др.

Ultimaker Cura

Изначально создавался только для 3D-принтеров Ultimaker, но вскоре стал open-source проектом. Сейчас в его библиотеке профилей можно найти огромное количество принтеров различных производителей. Использует собственное ядро Cura, имеющее множество настроек и функций: древовидные поддержки, печать каркаса, цветная печать и др. 

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

Также есть возможность управления принтера при помощи отправки команд напрямую с компьютера. А вот обратная связь с принтером отсутствует, не считая получения информации о температуре сопла и стола.

Плюсы:

  • Простота настроек

  • Регулярные обновления

  • Продвинутый режим предпросмотра

Минусы:

  • Долгий запуск на любом компьютере

  • Малоинформативная консоль управления принтером.

Prusa Slic3r

Иногда можно встретить другие названия: Slic3r Prusa Edition или  Slic3r PE. Компания Prusa решила не изобретать велосипед, и взяла open-source проект Slic3r, частично переработала и начала активно развивать его. Также как и в Cura, в Prusa Slic3r есть множество профилей принтеров, но наиболее оптимизированными являются профили для принтеров производства Prusa. Ядро слайсера собственной разработки, при этом количество настроек меньше, чем у той же Cura.

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

Плюсы:

  • Продвинутая система профилей

  • Сверхбыстрый запуск

  • Удобная работа с двухэкструдерными принтерами

Минусы:

  • Относительно малое количество настроек

  • Отсутствие управления принтером через провод

Repetier

Данный слайсер создан скорее для удалённого управления принтером, но и нарезать модели он также может. Одна из немногих программ, в которых можно выбрать ядро слайсинга: Cura, Sic3r, Prusa Slic3r. Количество настроек самого слайсинга крайне мало, но для нарезки тестового кубика их хватит.

 

Самый главный плюс данного слайсера — огромнейший функционал по управлению и настройке принтера. Стоит отметить удобный интерфейс отправки команд, а также настраиваемые графики температур. Это крайне полезно, например при настройке PID или проверки передвижений по осям. Даже если вы выберите другой слайсер, эту программу будет удобно иметь, чтобы печатать на 3D-принтере, используя GCODE из другого слайсера.

Плюсы:

  • Большой функционал управления принтера через провод

Минусы:

  • Ограниченные настройки слайсинга

MatterControl 2.0

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

Плюсы:

  • Встроенный редактор моделей

  • Понятный интерфейс

  • Есть библиотека профилей для популярных принтеров

Минусы:

  • Мало настроек слайсинга

  • Отсутствие поддержки русского языка

3DprinterOS

Данное ПО предназначено для удалённого управления принтерами из любой точки мира. Всё что необходимо — подключить принтер к компьютеру и установить на него эту программу. С этого момента всё управление принтера происходит через веб-интерфейс. В нём можно удаленно изменить модель, нарезать её и поставить на печать. Также есть возможность подключить камеру и наблюдать за процессом печати. Настроек слайсинга крайне мало, некоторым не хватит даже для калибровки принтера, не говоря уж о серьезной печати. 

Осторожно! Не рекомендуется оставлять принтер без присмотра, особенно если он уже не новый: в любой момент может возникнуть опасность возгорания из-за неполадок в проводке или проблем с механикой.

Плюсы:

  • Простой интерфейс

  • Запуск печати из любой точки мира

  • Возможность наблюдать за печатью

  • Наличие инструментов для редактирования модели

Минусы:

  • Малое количество настроек слайсинга

IceSL

Является сочетанием OpenSCAD с его “языком моделирования” и слайсером. Кроме того модели можно редактировать с помощью “кисти”, наподобие той, что есть в Meshmixer. Имеет множество маленьких плюсов, которых нет в других слайсерах, но для повседневного использования он не пригоден из-за неудобного интерфейса и малого количества функций слайсера. Описать данную программу можно в одной фразе: интересно, но использовать не рекомендуется.

Плюсы:

  • Встроенный редактор моделей

Минусы:

  • Неудобный интерфейс

  • Мало настроек слайсинга

Octoprint

Во многом похож на 3DprinterOS, но является opensource проектом, вследствие чего имеет множество дополнений. Предназначен для домашнего использования. Является самым популярным способом удаленного управления принтером, а сообщество пользователей постоянно растёт. Поэтому будет очень легко перевести свой принтер на удалённое управление за счёт большого количества уроков и статей. В самой программе нет слайсера, но поддерживается прямой экспорт файлов из Slic3r, что само по себе уже хорошо. Также как и Repetier имеет отличную консоль управления и наблюдения за принтером. Но, в отличии от вышеупомянутого аналога, большую часть функций придётся настраивать вручную.

Плюсы:

  • Большая база пользователей

  • Множество статей с инструкциями

  • Возможность создании видеотрансляции процесса печати

Минусы:

  • Сложно изучать

  • Необходима полностью самостоятельная настройка

Платные слайсеры

В данный момент множество платных слайсеров уже не используются, так как бесплатные уже либо догнали, либо перегнали их. Но некоторые из них до сих пор являются уникальными.

Simplify3D

Один из первых прогремевших платных слайсеров. В момент своего появления он был самым продвинутым за счет возможности изменения параметров печати у одной модели на разных высотах слоя и функционалу печати более чем одним экструдером. Но в данный момент его заместили Cura и Prusa Slic3r. Тем не менее, удобство настройки параметров печати и их количество до сих пор остаются главным преимуществом данного слайсера. Также стоит отметить великолепный интерфейс управления принтером, уступающий лишь Repetier host.

Еще одним отличием можно назвать возможность ручной установки поддержек и большое количество паттернов заполнения. Просмотр моделей тоже имеет несколько фишек: изменение способа отображения моделей, просмотр в разрезе, отображение нормалей к плоскостям.

Плюсы:

  • Большое количество настроек печати

  • Удобный интерфейс управления принтером

  • Ручная установка поддержек

  • Изменение параметров печати на разной высоте

  • Лёгкая настройка печати с применением двух экструдеров

Минусы:

  • Большая цена

  • Редкие обновления, в основном лишь исправляющие баги

Цена: от 11499₽ (149$)

Читайте также: Подробный обзор слайсеров для 3D печати: Ultimaker Cura, Simplify3D, IdeaMaker, UP Studio, FlashPrint

Astroprint

Многие считают, что именно это ПО является прямым конкурентом 3DPrinterOS. Самым главным отличием является дружелюбность к пользователю, достигаемую за счет удобного интерфейса и легкой установки. Программа основана на Octoprint, по сути предоставляя только сервера, измененный интерфейс и несколько дополнений, позволяющих полностью управлять процессом печати находясь вдали от принтера — от нахождения модели, до нарезки и установки на печать. При этом программа позиционирует себя как серьезное бизнес решение, поэтому компания также предоставляет специальные ПК и консоли управления, облегчающие подключение принтера к системе. Доступен пробный план, в котором можно подключить всего 2 принтера, но все основные функции будут доступны.

Плюсы:

  • Простота подключения и настройки

  • Наличие пробной версии

  • Специально разработанный под мобильные устройства интерфейс

Минусы:

  • Ежемесячная оплата

  • Отсутствие русского интерфейса

Цена: от 765₽ (9,90$) за 1 месяц

KISSlicer

Данный слайсер является ещё одним представителем программ, не сумевших идти в ногу со временем. Раньше его функционал был на голову выше остальных, но теперь та же Cura имеет все те же настройки, что и KISSlicer, так ещё и добавляет своих. Из полезного в данной программе можно отметить функцию совместного просмотра GCODE и модели.

Существовало две версии: бесплатная и PRO. Единственное значительное отличие между ними — в платной версии есть поддержка печати несколькими цветами. В данный момент проект мёртв, даже главный сайт не работает, но программу всё ещё можно найти на сторонних источниках.

Плюсы:

  • Удобная работа с профилями

  • Легко изучить

Минусы:

  • Сложный интерфейс

  • Отсутствие обновлений

Цена: от 3240₽ (42$)

Подведем итоги

После рассмотрения всех популярных программ можно выделить явных фаворитов:

Для новичков 3D-печати лучшей программой для 3D-моделирования можно смело назвать Tinkercad, так как она сочетает простоту и необходимый функционал. Лучшими программами для 3D-моделирования профессионального уровня являются КОМПАС-3D, Fusion 360 и Blender, за счет огромного количества инструментов и большого сообщества, позволяющего легко найти уроки и гайды. Среди слайсеров лучшим выбором будут Ultimaker Cura и Prusa Slic3r, которые обеспечат удобство использования и гибкость при нарезке моделей. Но не стоит забывать и о таких вспомогательных программах как Meshmixer и Netfabb, позволяющих быстро отредактировать или починить модель. Более подробно о некоторых программах из этого списка вы можете узнать на нашем сайте.

Полученная программа выглядит вот так (это не вся программа, а только начальная часть, для примера, программа синем шрифтом, мои комментарии — черным):

Обычный заголовок:

(<alteration>)

(**** beginning of start.gcode ****)

(This file is for a MakerBot Thing-O-Matic)

(**** begin initialization commands ****)

G21 (set units to mm)

устанавливаем мм

G90 (set positioning to absolute)

Дальше идут команды которых нет в обычном MACH3, которые не входят в стандартный набор G-кодов.

Эти дополнительные коды описаны тут, на сайте программы ReplicatorG.

M108 R1.98 (set extruder speed)

M103 (Make sure extruder is off)

M104 S225 T0 (set extruder temperature)

M109 S125 T0 (set heated-build-platform temperature)

Установка скорости экструдера, включение-выключение подачи лески, установка температуры экструдера и платформы.

(**** end initialization commands ****)

Дальше идут команды поиска HOME станка:

(**** begin homing ****)

G162 Z F500 (home Z axis maximum)

G92 Z10 (set Z to 10)

G1 Z0.0 (move Z down 0)

G162 Z F100 (home Z axis maximum)

G161 X Y F2500 (home XY axes minimum)

M132 X Y Z A B (Recall stored home offsets for XYZAB axis)

(**** end homing ****)

Дальше — включение прогрева экструдера и выдавливание начальной нити:

(**** begin pre-wipe commands ****)

G1 X52.0 Y-57.0 Z10.0 F3300.0 (move to waiting position)

M6 T0 (wait for toolhead parts, nozzle, HBP, etc., to reach temperature)

M101 (Extruder on, forward)

G04 P5000 (Wait t/1000 seconds)

M103 (Extruder off)

(**** end pre-wipe commands ****)

(**** end of start.gcode ****)

Дальше идут не очень мне понятно зачем они нужны — комментарии (с параметрами станка):

(</alteration>)

(<creation> skeinforge </creation>)

(<version> 10.11.05 </version>)

(<extruderInitialization>)

(<craftTypeName> extrusion </craftTypeName>)

M105

(<bridgeWidthMultiplier> 1.0 </bridgeWidthMultiplier>)

(<decimalPlacesCarried> 3 </decimalPlacesCarried>)

(<layerThickness> 0.3 </layerThickness>)

(<threadSequenceString> loops perimeter infill </threadSequenceString>)

(<operatingFeedRatePerSecond> 30.0 </operatingFeedRatePerSecond>)

(<operatingFlowRate> 1.17935176361 </operatingFlowRate>)

(<orbitalFeedRatePerSecond> 15.0 </orbitalFeedRatePerSecond>)

(<travelFeedRatePerSecond> 40.0 </travelFeedRatePerSecond>)

(<perimeterWidth> 0.419 </perimeterWidth>)

(<profileName> ABS </profileName>)

(<procedureDone> carve,bottom </procedureDone>)

(<procedureDone> preface </procedureDone>)

(<procedureDone> inset </procedureDone>)

(<procedureDone> fill </procedureDone>)

(<procedureDone> speed </procedureDone>)

(<procedureDone> raft </procedureDone>)

(<procedureDone> comb </procedureDone>)

(<procedureDone> cool </procedureDone>)

(<procedureDone> outline </procedureDone>)

(<procedureDone> reversal </procedureDone>)

(<procedureDone> export </procedureDone>)

(</extruderInitialization>)

И вот начало работы:

(<extrusion>)

Что такое М113 не понятно. Но он закоментиован

;M113 S1.0

Включаем пскорость подачи 1,179 оборота в минуту:

M108 R1.179

Опять комментарии, видимо что собираемся делать:

(<layer> 0.45 )

(<surroundingLoop>)

(<boundaryPerimeter>)

(<boundaryPoint> X0.0 Y-2.5 Z0.45 </boundaryPoint>)

(<boundaryPoint> X10.0 Y-2.5 Z0.45 </boundaryPoint>)

(<boundaryPoint> X10.0 Y7.5 Z0.45 </boundaryPoint>)

(<boundaryPoint> X0.0 Y7.5 Z0.45 </boundaryPoint>)

(<loop> outer )

Так ничего еще и не сделав утанавливаем скорость поменьше:

M108 R0.8598

Идем в начальную точку

G1 X12.79 Y-5.29 Z0.45 F787.605

Включаем экструдер

M101

Рисуем прямоугольник ВОКРУГ предполагаемой детали (не понял зачем?):

G1 X-2.79 Y-5.29 Z0.45 F787.605

G1 X-2.79 Y10.29 Z0.45 F787.605

G1 X12.79 Y10.29 Z0.45 F787.605

G1 X12.79 Y-4.31 Z0.45 F787.605

Делаем скорость большую:

M108 R35.0

И всасываем леску немного назад, что бы прервать «соплю»:

M102

Это я вообще не понял зачем? пустой ход? засечка времени пока сопля убирается?

G1 X12.79 Y-5.29 Z0.45 F787.605

Устанавливаем маленькую скорость:

M108 R0.8598

Выключаем экструдер:

M103

И т.д.:

G1 X2.19 Y-0.68 Z0.45 F1312.674

M108 R35.0

M101

G1 X0.63 Y0.0 Z0.45 F1312.674

M108 R0.8598

Рисуем внутреннюю линию контура первого слоя детали:

G1 X0.63 Y-1.87 Z0.45 F984.506

G1 X9.37 Y-1.87 Z0.45 F984.506

G1 X9.37 Y6.87 Z0.45 F984.506

G1 X0.63 Y6.87 Z0.45 F984.506

G1 X0.63 Y0.0 Z0.45 F984.506

M103

(</loop>)

Рисуем наружную линию контура первого слоя детали:

(<perimeter> outer )

G1 X0.21 Y0.0 Z0.45 F1050.139

M101

G1 X0.21 Y-2.29 Z0.45 F787.605

G1 X9.79 Y-2.29 Z0.45 F787.605

G1 X9.79 Y7.29 Z0.45 F787.605

G1 X0.21 Y7.29 Z0.45 F787.605

G1 X0.21 Y0.98 Z0.45 F787.605

M108 R35.0

M102

G1 X0.21 Y0.0 Z0.45 F787.605

M108 R0.8598

M103

(</perimeter>)

(</boundaryPerimeter>)

Заполняем первый слой параллельным линиями.

G1 X0.32 Y-0.17 Z0.45 F1312.674

M108 R35.0

M101

G1 X1.26 Y-1.6 Z0.45 F1312.674

M108 R0.8598

G1 X1.26 Y6.6 Z0.45 F984.506

M103

G1 X1.68 Y6.6 Z0.45 F1312.674

M101

G1 X1.68 Y-1.6 Z0.45 F984.506

M103

G1 X2.09 Y-1.6 Z0.45 F1312.674

M101

————————- пропускаем кусок ——

Следующий уровень начинается опять с обильных комментариев:

(</layer>)

(<layer> 0.75 )

(<surroundingLoop>)

(<boundaryPerimeter>)

(<boundaryPoint> X0.0 Y-2.5 Z0.75 </boundaryPoint>)

(<boundaryPoint> X10.0 Y-2.5 Z0.75 </boundaryPoint>)

(<boundaryPoint> X10.0 Y7.5 Z0.75 </boundaryPoint>)

(<boundaryPoint> X0.0 Y7.5 Z0.75 </boundaryPoint>)

(<loop> outer )

M108 R0.6211

G1 X8.8 Y6.87 Z0.75 F1264.364

M101

G1 X0.63 Y6.87 Z0.75 F948.273

G1 X0.63 Y-1.87 Z0.75 F948.273

G1 X9.37 Y-1.87 Z0.75 F948.273

G1 X9.37 Y6.87 Z0.75 F948.273

G1 X8.8 Y6.87 Z0.75 F948.273

M103

(</loop>)

И так далее….

Понравилась статья? Поделить с друзьями:
  • Как найти отношение двух сторон листа
  • Как составить продающий оффер для рекламы
  • Dark souls 3 как найти куклу
  • Как исправить проблему с драйверами в майнкрафт
  • Как найти ватсап веб на телефоне андроид