Сегодня я опишу свой первый практический опыт генерирования поддержек в Meshmixer и что из этого вышло.
"3D Печать - Генерирование поддержек в Meshmixer". Нужно было напечатать модель (на фото) с очень большим количеством нависающих поверхностей. Вначале я попытался напечатать модель со стандартными поддержками генерируемыми слайсером.
Но меня постигла деламинация, а соответственно и деформация модели, и также попробовав удалить поддержки во внутренней части модели я понял что результат поверхности и сложность удаления поддержек меня не устраивает. Причем деламинация у меня довольно интересная получается и как я с ней боролся опишу в следующей статье.
Так что я решил генерировать поддержки в Meshmixer. Вначале поддержки в Meshmixer были сгенерированы с настройками по умолчанию.
Но процесс печати вынужден был остановить? потому что отламались поддержки в центре модели, там где прямоугольный вырез (на фото они отсутствуют). Плюс в самом начале печати, цилиндрической ее части, где поддержек нет (на фото хорошо видно), а угол нависания очень большой, получилось подплавление краев, что привело к не очень хорошему внешнему виду поверхности. Причиной поломки поддержек явилось то, что диаметр столбика поддержки (Post Diameter) всего 1.6мм и они находились близко друг к другу, а как вы знаете печатать мелкие объекты очень сложно, потому что пластик не успевает застывать, происходит подплавление и соответственно поверхность деформируется. Когда сопло проезжает над такой поверхностью, оно цепляется за нее, а площадь основания поддержки маленькая, т.к. поддержка крепится к поверхности модели, что и приводит к отламыванию поддержек. Во второй раз был увеличен угол нависающих поверхностей (Angle Thresh = 45), а также вручную добавлены дополнительные поддержки для жесткости.
Стало чуть лучше но опять отламались поддержки в центре. Поэтому снова были изменены настройки генерации поддержек в Meshmixer, угол нависающих поверхностей (Angle Thresh = 45) и диаметр поддержек (Post Diameter = 2.17).
Результат тот же, поддержки в центре (и не только) отламались. И стало понятно что качество поверхности тоже очень страдает. Итак нужно было уменьшить число нависающих поверхностей, а соответственно и поддержек. В Meshmixer - Analysis - Overhangs есть замечательная кнопочка Optimize Orientation, которая и делает то что нужно, а именно выбирает такую ориентацию модели, при которой нависающие поверхности минимальны. Также подкорректированы параметры генерации поддержек, Angle Thresh = 45, Max Angle = 70, Strut Density = 80, остальные параметры по умолчанию. И наконец то получен более-менее нормальный результат печати.
Но не все хорошо как хотелось бы. В некоторых местах поддержки также отламались, хоть это и не сильно ухудшило качество печати, но все же заметно.
Так как поддержки очень высокие, то их раскачивало при печати, соответственно они печатались неравномерно, подплавлялись и цеплялись за сопло, отламывались. Вот то что получилось после удаления поддержек.
Вывод:
При генерации поддержек в Meshmixer нужно выбирать положение модели с минимальными нависающими поверхностями. Значения по умолчанию вполне адекватны и их можно использовать, но все зависит от возможностей вашего принтера. Если поддержки высокие, то нужно вручную добавлять поддержки для жесткости, примерно каждые 10мм по высоте. Надеюсь мой опыт оказался вам полезен. Удачной 3D Печати!
2013-11-19 02:00:00
... твердотельного 3D моделирования, которая очень ... твердотельного 3D моделирования как
+ развернуть текстсохранённая копия
OpenSCAD - это программа твердотельного 3D моделирования, которая очень популярна среди RepRap сообщества. Принцип ее работы основан на написании алгоритма отрисовки 3D объекта.
Для начала нужно настроить наше рабочее пространство, как это сделать и облегчить себе работу в OpenSCAD читайте здесь. Теперь удобно расположите ваши руки на клавиатуре и мы начнем. Весь код мы будем вводить в окне Sublime Text и по нажатию Ctrl+S он будет отображаться в окне OpenSCAD. Но вы также можете обойтись и одним OpenSCAD, в этом случае вводите код в окно редактора OpenSCAD.
Куб и Перемещение
Куб в OpenSCAD относится к прямоугольной призме. Чтобы создать куб введите:
cube(5);
Мы также можем отобразить куб в центре координат:
cube(5, center=true);
Куб с разными сторонами отображается следующей командой, где размер указывается в формате [x,y,z]:
cube([2,2,5], center=true);
Чтобы переместить объект используется команда translate([x,y,z]), например переместим предыдущий куб на 2 по Х, на 2 по У и на 10 по Z:
translate([2,2,10]) cube([2,2,5], center=true);
Если нужно переместить группу объектов то эта группа заключается в фигурные скобки, например так:
В OpenSCAD все что идет после символов // является комментарием и не учитывается интерпретатором OpenSCAD при генерации 3D модели, в них можно писать пометки в вашем коде чтобы потом легче было разобраться в нем, особенно когда код будет очень большим и сложным. Перемещать естественно можно и в отрицательные полуоси, например:
Каждая строка кода завершается точкой с запятой, после фигурных скобок точку с запятой ставить не обязательно.
Переменные
Вы можете использовать цифры при задании команд и создании объектов, но если вы хотите чтобы от изменения одного значения пересчитались и все остальные и когда ваша 3D модель будет очень сложной с большим числом строк кода, вам не обойтись без переменных. Переменная определяется следующим образом:
parameter = 10;
В OpenSCAD нельзя переопределять переменные, т.е. переменная должна быть задана только один раз, и она будет равна последнему присвоенному значению по всему тексту скрипта, например:
a = 10; echo(a); a = 15; echo(a);
Даст следующий результат:
ECHO: 15 ECHO: 15
А теперь давайте сделаем ту же модель буквы "П" с применением переменных:
depth = 2; //глубина модели по оси Y weight_leg = 2; //ширина ноги по оси X height_leg = 5; //высота модели по оси Z legs_space = 5; //расстояние между осями ног по X weight_bridge = legs_space + weight_leg; //ширина перекладины равна расстоянию между осями ног плюс ширина ноги height_bridge = weight_leg; //высота перекладины равна ширине ноги
translate([legs_space/2,0,height_leg/2]) //перемещаем правую ногу вправо по X cube([weight_leg,depth,height_leg], center=true); //правая нога translate([-(legs_space/2),0,height_leg/2]) //перемещаем левую ногу влево по X cube([weight_leg,depth,height_leg], center=true); //левая нога translate([0,0,height_leg + height_bridge/2]) //перемещаем перекладину вверх по Z cube([weight_bridge,depth,height_bridge], center=true); //перекладина
Попробуйте поэкспериментировать с различными значениями параметров. Как видите теперь намного проще изменять модель. Теперь давайте взглянем на другие формы которые вы можете использовать в OpenSCAD.
Сфера
Простая сфера (шар) может быть определена командой:
sphere(r=5);
Вы можете управлять разрешением сферы и других форм при помощи параметра $fn. Разрешение можно задать как для всего скрипта:
$fn = 50;
Так и для конкретной формы которая позволяет использовать этот параметр:
sphere(r=5, $fn = 50);
На время проектирования рекомендуется использовать разрешение 20-40, а при компиляции и прорисовке готовой модели 100-150, потому что чем выше разрешение тем дольше будет проходить компиляция и тем больше понадобится памяти OpenSCAD.
Цилиндр и Вращение
Для цилиндра нужно указать два параметра, радиус и высоту, а также можно указать разрешение как для сферы и положение относительно центра как для куба:
cylinder(r=5, h=5, center=true, $fn = 50);
Цилиндр создается в вертикальном положении, а если нам он нужен в горизонтальном положении то мы воспользуемся функцией вращения rotate([x,y,z]), где x,y,z - это угол на который нужно повернуть относительно соответствующей оси. Например повернем цилиндр на 90° относительно оси Y:
Все что мы рассмотрели ранее позволяет создавать объекты сложной формы посредством добавления небольших частей друг к другу. Но очень часто нам нужно вырезать какую-то часть. И рассмотрим мы это на примере создания кольца. В функции вырезания из первого объекта вырезаются все последующие:
$fn = 50;
difference() { // Из этого цилиндра мы будем вырезать cylinder(r=10, h=5, center=true);
// Все остальное следующее далее будет вырезано cylinder(r=8, h=6, center=true); }
Иногда очень удобно видеть что мы вырезаем и в этом случае можно использовать специальный знак #, который делает видимым вырезаемую часть:
$fn = 50;
difference() { // Эта часть будет создана cylinder(r=10, h=5, center=true);
// Все остальное следующее далее будет вырезано #cylinder(r=8, h=6, center=true); }
Вырезаемая часть всегда должна быть немного больше. Например в рассмотренном выше примере, если между внешним и внутренним цилиндрами не будет перекрытия мы получим "оболочку" равную нулю. Это плохой стиль 3D моделирования, и может привести к ошибкам при генерации модели (рендеринг) или отправке модели в 3D принтер.
Поэтому всегда учитывайте это и делайте вырезаемый объект немного выступающим, 0.1мм достаточно. А теперь используем объединение и вырезание в одном примере, чтобы наглядно показать как вырезать из группы объектов:
Модули являются мощным средством в OpenSCAD, они позволяют упростить и повторно использовать однажды написаный код. Сделаем ранее рассмотренную модель буквы "П" с использованием модуля:
// Инструкции как должна создаваться буква "П" module pi() { // Параметры depth = 2; //глубина модели по оси Y weight_leg = 2; //ширина ноги по оси X height_leg = 5; //высота модели по оси Z legs_space = 5; //расстояние между осями ног по X weight_bridge = legs_space + weight_leg; //ширина перекладины равна расстоянию между осями ног плюс ширина ноги height_bridge = weight_leg; //высота перекладины равна ширине ноги
translate([legs_space/2,0,height_leg/2]) //перемещаем правую ногу вправо по X cube([weight_leg,depth,height_leg], center=true); //правая нога translate([-(legs_space/2),0,height_leg/2]) //перемещаем левую ногу влево по X cube([weight_leg,depth,height_leg], center=true); //левая нога translate([0,0,height_leg + height_bridge/2]) //перемещаем перекладину вверх по Z cube([weight_bridge,depth,height_bridge], center=true); //перекладина }
// Эта строчка говорит OpenSCAD найти инструкции как создавать букву "П" и создать ее pi();
А теперь давайте улучшим модуль и будем передавать параметры в него, что позволит повторно использовать модуль с разными размерами, и создадим несколько разных букв "П":
// Инструкции как должна создаваться буква "П" module pi(depth, weight_leg, height_leg, legs_space) { // Параметры weight_bridge = legs_space + weight_leg; //ширина перекладины равна расстоянию между осями ног плюс ширина ноги height_bridge = weight_leg; //высота перекладины равна ширине ноги
translate([legs_space/2,0,height_leg/2]) //перемещаем правую ногу вправо по X cube([weight_leg,depth,height_leg], center=true); //правая нога translate([-(legs_space/2),0,height_leg/2]) //перемещаем левую ногу влево по X cube([weight_leg,depth,height_leg], center=true); //левая нога translate([0,0,height_leg + height_bridge/2]) //перемещаем перекладину вверх по Z cube([weight_bridge,depth,height_bridge], center=true); //перекладина }
// Эта строчка говорит OpenSCAD найти инструкции как создавать букву "П" и создать ее pi(2,2,5,5); translate([10,0,0]) pi(1,3,7,4); translate([-10,0,0]) pi(4,1,2,5);
Модули незаменимы когда вы работаете с функциями которые должны повторно использоваться в вашей модели. Вот мы и рассмотрели основные функции OpenSCAD, которые позволят вам создавать ваши 3D модели в такой замечательной программе твердотельного 3D моделирования как OpenSCAD. Продолжение следует...
Уважаемый Михаил (om2804) продолжает радовать интересными и полезными статьями. Собственно его статься с моими комментариями и дополнениями (коричневым цветом):
Скачал модель, распечатал, пользуйся — что может быть проще!? Но, если говорить про FDM 3D-принтеры, то не каждую модель можно распечатать, и практически каждую модель(не подготовленную для 3D-печати) приходится подготавливать, а для этого необходимо представлять как проходит эта 3D-печать.
Модель режется (слайсится) по слоям. Каждый слой состоит из периметра и/или заливки. Модель может иметь разный процент заполнения заливкой, также заливки может и не быть (пустотелая модель). На каждом слое происходят перемещения по осям XY с нанесением расплава пластика. После печати одного слоя происходит перемещение по оси Z на слой выше, печатается следующий слой и так далее.
1. Сетка("Mesh" - Модель)
Пересекающиеся грани и ребра могут привести к забавным артефактам слайсинга. Поэтому если модель состоит из нескольких объектов, то их необходимо свести в один.
Но нужно сказать, что не все слайсеры чувствительны к сетке (например, Slic3r). И даже если сетка кривая, а исправлять её руками лень, то есть прекрасный бесплатный облачный сервис сloud.nettfab.com, который поможет в большинстве случаев. Slic3r попытается исправить ошибки, но нет гарантий что он исправит их корректно, если Slic3r обнаружит ошибки с которыми он не в состоянии справится, то он сообщит об этом появившимся окошком об ошибке и рекомендацией исправить модель (подробнее в руководстве). О способах исправления моделей можно почитать в этой статье.
2. Плоское Основание
Желательное, но не обязательное правило. Плоское основание поможет модели лучше держаться на столе принтера. Если модель отклеится (этот процесс называют деламинацией), то нарушится геометрия основания модели, а это может привести к смещению координат XY, что ещё хуже.
Если модель не имеет плоского основания или площадь основания мала, то её печатают на рафте — напечатанной подложке. Рафт портит поверхность модели, с которой соприкасается. Поэтому при возможности лучше обойтись без него.
3. Толщина Стенок
Стенки должны быть равными или толще, чем диаметр сопла. Иначе принтер просто не сможет их напечатать. Толщина стенки зависит от того, сколько периметров будет печататься. Так при 3 периметрах и сопле 0,5mm толщина стенок должна быть от 0.5, 1, 1.5, 2, 2.5, 3mm, а свыше может быть любой. Т.е. толщина стенки должна быть кратна диаметру сопла, если она меньше N*d, где N — количество периметров, d — диаметр сопла. Данный пункт вызвал большой резонанс в сообществе, поэтому небольшое разъяснение: рекомендации приведенные в этом пункте даны в упрощенной форме. На самом деле все будет зависеть от многих параметров, таких как число периметров, диаметр сопла, ширина экструзии, скорость потока пластика, скорость печати, тип пластика, скорость остывания и даже от используемого слайсера.
4. Минимум Нависающих Элементов
Для каждого нависающего элемента необходима поддерживающая конструкция – поддержка. Чем меньше нависающих элементов, тем меньше поддержек нужно, тем меньше нужно тратить материала и времени печати на них и тем дешевле будет печать. Кроме того поддержка портит поверхность, соприкасающуюся с ней. Допускается печать без поддержек стенок, которые имеют угол наклона не более 70 градусов.
5. Точность
Точность по осям XY зависит от люфтов, жесткости конструкции, ремней, в общем, от механики принтера. И составляет примерно 0.3 мм для хоббийных принтеров. При доработке и хорошей отладке можно получить точность 0.1мм. Точность по оси Z определяется высотой слоя ( 0.1-0.4 мм). Отсюда и высота модели будет кратна высоте слоя. Если быть точнее то точность модели по высоте Z определяется высотой слоя. Точность по оси Z зависит от механики принтера. Также необходимо учитывать, что после остывания материал усаживается, а вместе с этим изменяется геометрия объекта. Существует еще программная сторона проблемы — не каждый слайсер корректно обрабатывает внутренние размеры, поэтому диаметр отверстий лучше увеличить на 0.1-0.2 мм. А наружный диаметр (если ваша модель или ее часть у вас цилиндрическая) нужно уменьшить на 0.2мм.
6. Мелкие Детали
Мелкие детали достаточно сложно воспроизводятся на FDM принтере. Их вообще невозможно воспроизвести, если они меньше, чем диаметр сопла. Кроме того при обработке поверхности мелкие детали станут менее заметны или исчезнут вовсе.
7. Узкие Места
Узкие места очень сложно обрабатывать. По возможности необходимо избегать таких мест, требующих обработки, к которым невозможно подобраться со шкуркой или микродрелью. Конечно, можно обрабатывать поверхность в ванне с растворителем, но тогда оплавятся мелкие элементы.
8. Большие Модели
При моделировании необходимо учитывать максимально возможные габариты печати. В случае если модель больше этих габаритов, то ее необходимо разрезать, чтобы напечатать по частям. А так как эти части будут склеиваться, то неплохо бы сразу предусмотреть соединения, например, «ласточкин хвост».
9. Расположение на Рабочем Столе
От того, как расположить модель на рабочем столе зависит её прочность. Нагрузка должна распределяться поперек слоев печати, а не вдоль. Иначе слои могут разойтись, т.к. сцепление между слоями не 100%. Чтобы было понятно, взглянем на две Г-образные модели. Линиями показаны слои печати.
От того как приложена сила относительно слоев зависит прочность напечатанной детали. В данном случае для правой «Г» достаточно будет небольшой силы, чтобы сломать ее.
10. Формат Файла
Слайсеры работают с форматом файла STL. Поэтому сохранять модель для печати нужно именно в этом формате. Практически любой 3D редактор умеет экспортировать в этот формат самостоятельно или с использованием плагинов. Некоторые слайсеры понимают большее число форматов, например OBJ и AMF (подробнее смотрите документацию на ваш слайсер). Но формат STL стал де-факто в мире 3D печати и поддерживается абсолютно всеми слайсерами.
11. Движущиеся Части
Если вы проектируете движущие детали или узлы которые должны состыковываться (соединяться), то обязательно делайте зазоры в этих местах 0.5-0.6мм, иначе вы не сможете собрать воедино всю модель без дополнительной работы напильником (надфилем, шлифовальной бумагой и т.д.) по причинам указанным выше. PS: Теперь вы знаете тонкости моделирования для FDM 3D печати и, надеюсь, они вам пригодятся. Удачного 3D-моделирования! PPS: Надеюсь своими комментариями и дополнениями я не испортил оригинальную статью, и это тоже окажется для вас полезным. Удачи! Оригинал статьи >>
OpenSCAD это бесплатное программное обеспечение (ПО) для создания твердотельных 3D CAD моделей. Это ПО доступно для разных операционных систем, таких как Linux/UNIX, Windows и Mac OS X. К сожалению большинство бесплатного ПО для 3D моделирования сфокусировано на артистических аспектах, а не на CAD моделировании. OpenSCAD применяют для разработки деталей машин, если вы планируете разрабатывать 3D анимацию, то это ПО не для вас. Поэтому его очень любят RepRap разработчики и простые инженеры. Большинство проектов RepRap сделано именно в OpenSCAD.
Sublime Text это популярный кроссплатформенный продвинутый текстовый редактор для кодирования, разметки и прозы. Он имеет понятный пользовательский интерфейс, неординарные функции и восхитительную производительность. Интерфейс Sublime Text имеет подсветку синтаксиса, полноэкранный режим, миникарту, мультипанели, подсветку парных скобок и автосохранение. Редактор содержит снипеты, автозавершение, макросы, поиск и замену, проверку орфографии, мультивыделение и закладки. Настроить в Sublime Text можно практически все, а также доступно великое множество плагинов. Sublime Text является условно-платным ПО, бесплатная оценочная версия ничем не отличается от платной (по крайней мере ограничения не были найдены), кроме надписи "UNREGISTERED" в заголовке окна и раз в пару часов выскакивает диалоговое окно с предложением редактор приобрести.
В данной статье используется последняя версия OpenSCAD 2013.02.28 и Sublime Text 3 build 3047, операционная система Linux Ubuntu 13.10.
Настройка
Процедура настройки одинакова для всех операционных систем. Итак приступим:
Скачать пакет настройки Sublime Text для OpenSCAD (OpenSCAD_Sublime.zip).
Запускаем Sublime Text и определяем каталог где находятся пакеты настроек, меню Preferences - Browse Packages... (запоминаем этот каталог).
Копируем папку OpenSCAD из архива OpenSCAD_Sublime.zip в каталог определенный в пункте 2.
Запускаем OpenSCAD включаем настройку в меню Design - Automatic Reload and Compile и прячем редактор в меню View - Hide editor так как мы будем использовать внешний редактор.
Еще один маленький твик (возможно кому-то поможет),если нет ошибок в скрипте но ваша модель не отображается, то увеличьте лимит отображаемых элементов в Edit - Preferences - Advanced - Turn off rendering at ... elements.
На этом наша настройка закончена.
Использование
Разместите окна OpenSCAD и Sublime Text удобным для вас образом. Создайте новый или откройте существующий один и тот же файл в обоих программах. И теперь пишем код в Sublime Text, а он автоматически прорисовуется в OpenSCAD.
Автозавершение кода происходит при вводе первых символов команды, а также по нажатию Tab на клавиатуре. Вот мы и получили быстрый и удобный инструмент твердотельного 3D моделирования в OpenSCAD при помощи Sublime Text с функциями подсветки синтаксиса, автозавершения и другими вкусностями. Просто и удобно, не так ли? Удачи!