DiyПрограммирование

Руководство для начинающих по OpenSCAD: программирование 3D-печатных моделей

Руководство для начинающих по OpenSCAD: программирование 3D-печатных моделей

Вы всегда хотели создать свои собственные 3D-модели? Как насчет 3D-печати детали, которую вы разработали? Вокруг есть много программ 3D-моделирования, но их может быть сложно использовать, если вы не артистичны (как я). OpenSCAD предоставляет вам возможность разрабатывать модели специально для 3D-печати, используя только код . Не беспокойтесь, если вы не знаете, как писать код, сегодня я проведу вас через основы.

Что такое OpenSCAD?

OpenSCAD — бесплатный разработчик Solid Computer Aided Design . Он доступен для Windows, Mac и Linux. Отличительной особенностью многих других программ является то, что вы проектируете детали, используя код вместо мыши. Это позволяет очень легко выполнять математические вычисления, сохранять размеры в переменных, изменять размеры деталей и многое другое.

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

Начало настройки

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

После установки, откройте его. Вам будет представлено это меню запуска:

OpenSCAD Стартовое Меню

Это показывает файлы, которые вы открыли последними, и дает вам возможность загрузить несколько примеров. Не стесняйтесь осматривать некоторые примеры, однако я обнаружил, что при первом запуске они усложняли ситуацию. Для этого урока создайте новый файл, нажав кнопку «Создать».

После открытия вам будет представлен следующий интерфейс:

Интерфейс OpenSCAD

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

OpenSCAD Editor

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

Консоль OpenSCAD

Последний раздел — это основной интерфейс в правом верхнем углу. Здесь вы можете взаимодействовать со своей моделью, но вы не сможете редактировать ее здесь (вы будете писать код для этого).

Интерфейс OpenSCAD

Есть несколько кнопок внизу этого основного интерфейса. Это в первую очередь позволяет вам просматривать ваш дизайн по-разному.

Чтобы сохранить новый файл, нажмите кнопку « Сохранить» в меню редактора или выберите « Файл» > « Сохранить» .

Основы

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

Вот первая фигура, простая коробка:

OpenSCAD Simple Box

И вот код, чтобы произвести это:

cube(); // create a cube 

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

Теперь получается хороший куб, но он не очень полезен без каких-либо размеров. OpenSCAD не работает ни в какой конкретной измерительной системе, вместо этого все единицы относятся друг к другу. Вы можете создать коробку 20 х 10, и любая другая программа (например, ваш 3D-принтер) может ее интерпретировать, будь то метрическая или имперская. Это на самом деле обеспечивает большую гибкость.

Давайте добавим некоторые измерения в ваш куб. Вы делаете это, передавая параметры методу куба :

 cube(size = [10, 20, 30]); // rectangle 

Значения 10 , 20 и 30 представляют размер куба по осям X , Y и Z. Обратите внимание, как это привело к появлению гораздо большего прямоугольника:

OpenSCAD Rectangle

По умолчанию OpenSCAD рисует компоненты слева внизу. Вы можете настроить это, установив для центрального параметра значение true . Вот код, чтобы сделать это с прямоугольником:

 cube(size = [10, 20, 30], center = true); // rectangle centered 

И вот как это выглядит:

OpenSCAD прямоугольник по центру

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

Переходя к более сложной форме, вот цилиндр :

OpenSCAD Cylinder

Вот код для его создания:

 cylinder(d = 10, h = 10, center = true); // cylinder 

В отличие от кубов , цилиндры автоматически рисуются в центре осей X и Y. Параметр d обозначает диаметр (вместо него вы можете указать радиус). Параметр h — это высота. Здесь что-то не так. Этот цилиндр выглядит довольно «блочным». Вам нужно увеличить количество граней, нарисованных по окружности. Это легко сделать — добавьте следующий параметр в код вашего цилиндра.

 $fn = 100 

Таким образом, определение цилиндра становится:

 cylinder(d = 10, h = 10, center = true, $fn = 100); 

Вот как это выглядит:
Цилиндр высокого разрешения OpenSCAD

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

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

 rotate(a = [0, 90, 0]) cylinder(d = 10, h = 10, center = true); // rotated cylinder 

Значения, передаваемые параметру a, представляют угол поворота осей X, Y и Z. Вот результат:

OpenSCAD Rotation

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

OpenSCAD Перевести

Вот код:

 translate(v = [0, 25, 0]) cylinder(d = 10, h = 10, center = true); // translated cylinder 

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

Наконец, еще одна полезная форма — это сфера :

OpenSCAD Sphere

Вот код:

 sphere(d = 100); 

Точно так же, как цилиндр, вы можете сгладить это, используя код $ fn выше.

Расширенное кодирование

Теперь, когда вы знаете основы, давайте рассмотрим некоторые более продвинутые навыки. При проектировании детали полезно подумать о том, как она может быть составлена ​​из более мелких форм и объектов. Вам не нужно этого делать, и вы можете «придумывать вещи» по ходу дела, но это помогает составить приблизительный план — даже если он только в вашей голове.

Давайте создадим продвинутую форму: куб с полой сферой внутри. Создайте куб и сферу с центром, установленным в true. Вычтите одно из другого, используя разностный метод:

 difference() { // subtraction cube(size = [50, 50, 50], center = true); // outer cube sphere(d = 65, center = true); // inner sphere } 

Вот результат:

OpenSCAD Advanced Cube

Поэкспериментируйте с диаметром (параметром d ) сферы и посмотрите, что произойдет.

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

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

 difference() { // subtraction cube(size = [50, 150, 50]); // outer cube translate(v = [25, 150, 50]) rotate(a = [90, 0, 0]) cylinder(d = 40, h = 150); // cylinder channel } 

Вот как это выглядит:

OpenSCAD Channel Cube

Вы можете быть удивлены, что это за зелень. Это здесь, потому что 3D-модель просто предварительный просмотр прямо сейчас. Чтобы это исправить, нажмите F6, чтобы полностью отобразить модель. Это может занять некоторое время, в зависимости от сложности. Предварительный просмотр ( F5 ) обычно достаточно хорош во время работы. Вот как выглядит окончательный рендер (с $ fn, установленным в 100):

Канал высокого разрешения OpenSCAD

Вот еще один сложный пример. Скажем, вы хотели установить что-то с помощью болта. С помощью цилиндра создать отверстие достаточно просто, но что, если вы хотите, чтобы головка болта была установлена ​​заподлицо с потайными болтами? Вы могли бы просто создать большой цилиндр для головки болта, но это выглядело бы не очень хорошо. Решением является фаска, которую вы можете создать с помощью цилиндрического метода. Хитрость здесь в том, чтобы указать два диаметра — d1 и d2 . Сделайте эти разные размеры, а OpenSCAD сделает все остальное.

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

 $fn = 100; // bolt settings m5_clearance_diameter = 5.5; m5_head_clearance_diameter = 11; m5_head_depth = 5; difference() { // subtract cube(20, 20, 20); bolt_hole(10, 10, 20); bolt_bevel(10, 10, 15); } module bolt_hole(x, y, height) { /* M5 hole at 90 deg. */ translate(v = [x, y, 0]) cylinder(d = m5_clearance_diameter, h = height); } module bolt_bevel(x, y, z) { // M5 bevel translate(v = [x, y, z]) cylinder(d2 = m5_head_clearance_diameter, d1 = m5_clearance_diameter, h = m5_head_depth); } 

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

OpenSCAD Chamfer

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

OpenSCAD Circle Distribution

Вот код:

 $fn = 100; number_of_holes = 10; for(i = [1 : 360 / number_of_holes : 360]) { // number_of_holes defines number of times this code runs make_cylinder(i); } module make_cylinder(i) { // make cylinder and even distribute rotate([0, 0, i]) translate([10, 0, 0]) cylinder(h = 2, r = 2); } 

Этот код проще, чем вы ожидаете. Цикл for используется для вызова модуля make_cylinder десять раз. Поскольку в круге 360 градусов, а 360/10 = 36, каждый цилиндр необходимо поворачивать с шагом 36 градусов. Каждая итерация этого цикла будет увеличивать переменную i на 36. Этот цикл вызывает модуль make_cylinder , который просто рисует цилиндр и позиционирует его в соответствии с градусами, переданными ему циклом. Вы можете нарисовать больше или меньше цилиндров, изменив переменную number_of_holes — хотя вы можете изменить интервал, если вы это сделаете. Вот как выглядят 100 цилиндров, они слегка перекрываются:

OpenSCAD 100 Circle Distribution

Экспорт

Теперь, когда вы знаете, как кодировать в OpenScad, требуется еще один последний шаг, прежде чем вы сможете 3D-печать своих моделей. Вам необходимо экспортировать свой дизайн из OpenSCAD в стандартный формат STL , используемый большинством 3D-принтеров. к счастью, есть кнопка экспорта в STL: Меню редактора > Вверху справа :

OpenSCAD Export STL

Вот и все на сегодня. Теперь у вас должно быть отличное знание OpenSCAD — все эти сложные элементы строятся на этих основах, а многие сложные фигуры — это действительно множество простых фигур в сочетании.

Для решения проблемы, почему бы не взглянуть на некоторые из наших проектов 3D-печати и попытаться воссоздать детали в OpenSCAD:

Вы узнали какие-нибудь новые трюки сегодня? Какая ваша любимая функция OpenSCAD? Будете ли вы переходить с другого инструмента САПР в ближайшее время? Дайте нам знать в комментариях ниже!

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика