Подробный обзор программы OpenSCAD

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

Что такое OpenSCAD

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

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

Чтобы начать создавать модели, нужно просто написать соответствующую команду в левой части окна. Так выглядит окно OpenSCAD на MacOS (на других системах заметных отличий нет).

Фото 1

Полезно также почитать: Подробный обзор программы Wings 3d

Возможности OpenSCADа

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

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

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

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

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

Преимущества и недостатки

Программа имеет целый ряд плюсов, отметим самые основные:

  • Полностью бесплатная модель распространения. Любой желающий может загрузить утилиту с официального сайта и пользоваться. Также можно по желанию поддержать производителя, заплатив ему небольшую сумму на сайте.
  • Открытый исходный код.
  • Портативность: нет необходимости устанавливать программу. Можно загрузить ее на флеш-карту и запускать на любом удобном компьютере.
  • Интуитивно понятный интерфейс, которым легко научиться пользоваться. Сам язык проектировки также прост.
  • Не занимает много памяти на накопителе (всего 14 мегабайт).
  • Доступен не только на Windows (как 64, так и 32-битной версии), но также на MacOS и Linux.
  • При необходимости можно перенести свои проекты на другие CAD (Системы автоматизированного проектирования), так как код, написанный в OpenSCAD, будет легко распознаваться большинством из них.
  • В ходе работы с программой можно усвоить азы программирования, после чего переключиться на другие CAD – более сложные, но и обладающие большим диапазоном возможностей. Некоторые из САПР также имеют поддержку параметрических систем проектирования.
  • Проект можно сохранить в различных форматах: STL, OFF, AMF, DXF, SVG, CSG.
Справка! С OpenSCAD можно работать и онлайн прямо на официальном веб-ресурсе без необходимости скачивания программы. Но нужно учитывать, что синтаксис в онлайне несколько иной. В данной статье мы не будем касаться онлайн-версии.

Модель можно создать в OpenScad, прописав несколько незамысловатых команд. К примеру, чтобы создать квадрат в середине экрана со стороной 100 мм, достаточно написать следующее: «cube (100, true)». Отдельно стоит перечислить главные преимущества кода, с которым предстоит работать в программе:

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

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

Но программа OpenSCAD не лишена и минусов. Самые значительные из них:

  • При создании моделей используются примитивы. Это значительно упрощает проектирование, но в то же время многие возможности становятся недоступны при таком способе моделирования.
  • Легко убрать фаску с грани не получится. Для обеспечения плавности фигур нужно тратить много времени. Во многих других CAD это делается одним кликом курсора.
  • Язык OpenSCAD неполноценен, также он является недостаточно низкоуровневым.
  • Плохо подходит для работы со скульптурой или анимацией. Для этих целей лучше пользоваться Blender.
  • Если вы только начинаете использовать программу и знаете мало команд, то вам будет удобнее пользоваться специальными иконками с определенными действиями в интерактивной оболочке. К сожалению, интерфейс OpenSCAD довольно беден, и функций в нем предоставлено недостаточно.
  • Программа тормозит при обработке и рендере сложных моделей. Особенно, если модель имеет большое количество граней.
  • OpenSCAD редко обновляется. Если обновление все же появилось, то оно вряд ли что-то значительно поменяет. Последнее на данный момент обновление датируется маем 2019 года.
  • Отсутствует поддержка сплайнов и NURBS.

Уроки для начинающих по OpenSCAD

Ниже мы рассмотрим, что нужно знать и уметь начинающему программисту в OpenSCAD.

Настройка программы

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

Основы

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

Сфера создается следующей командой: «sphere(r=x, $fn=y)», где r – радиус, а $fn – разрешение. Наглядно разницу в разрешении вы можете увидеть на примерах ниже.

Фото 2

У наиболее гладкой фигуры (которая больше всего похожа на шар) разрешение равно 100, время у фигуры в левом нижнем углу – 4 при радиусе 8. Также в функции sphere можно задавать и другие параметры (вместо радиуса – диаметр d, вместо разрешения – угловое разрешение $fa или размер грани в мм $fs). Центр сферы всегда по умолчанию располагается в начале координат.

Параллелепипед создается функцией «cube(size=[x,y,z], center=true )», где x, y, z – длины сторон по соответствующим осям. Значение center можно заменить на false (это его значение по умолчанию), чтобы расположить фигуру в положительных значениях осей, а не строго по центру. Так выглядит параллелепипед, вызванный командой «cube([10, 20, 30], true );» (как видите, это сокращенный вариант записи, т. е. ключевые аргументы прописывать необязательно).

Фото 3

Чтобы вызвать куб, достаточно указать только одно число, ему будут равны длины граней во всех плоскостях (например, при команде cube(5) появится куб со стороной 5 мм, левый нижний задний угол которого находится в начале координат).

Пирамиду, цилиндр, а также их усеченные варианты создаются при помощи функции cylinder. В общем виде функция выглядит следующим образом: «cylinder(h=a, r1=b, r2=c, center=true, $fn=d);», где h – высота цилиндра, r1 – радиус снизу, r2 – радиус сверху, $fn – число граней. Ключевые аргументы писать также необязательно при вызове команды, краткий вариант записи – «cylinder(a, b, c, center=true, d);».

Вместо r1 и r2 можно указывать диаметры d1 и d2. Если нужен цилиндр, достаточно указать один радиус r.

Фото 4

Многогранник задается через функцию polyhedron. Пример кода в OpenScad:

polyhedron(
points=[ [10,10,0], [10,-10,0], [-10,-10,0], [-10,10,0], [0,0,10] ],
faces=[ [0,1,4], [1,2,4], [2,3,4], [3,0,4], [1,0,3], [2,1,3] ]
);

Функция сложная в использовании, а потому применяется редко. В параметре points указываются координаты всех вершин фигуры, а в faces – грани, в которых перечислены индексы элементов в points. То есть грани создаются за счет соединения точек, чьи координаты указаны.

В данном случае мы имеем дело с пирамидой, основание которой находится в плоскости Z = 0 по центру, а вершина располагается на высоте 10 мм. Основание создается за счет двух треугольных граней, поэтому в параметре faces перечислено 6 элементов.

Фото 5

Как кодировать в OpenScad

Функционал программы позволяет совершать операции с фигурами.

Чтобы переместить объект, нужно применить функцию «translate ([x, y, z])», где x, y, z – расстояние по соответствующим осям, на которое фигуру нужно передвинуть. Сначала мы меняем первоначальное положение, а потом создаем в нем фигуру:

translate([10,10,0]) cube(10, true);

То есть центр куба со стороной 10 мм будет располагаться в координатах x = 10, y = 10, z = 0.

Фото 6

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

translate([x,y,z]) {};

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

translate([x1,y1,z1]) {
cube(10, true);
translate([x2,y2,z2]) sphere(5, $fn=50);
};

Таких вложенных переносов может быть много.

Модели можно вращать на заданное количество градусов при помощи функции rotate, указанной перед другой функцией, создающей фигуру: «rotate([x, y, z]) cube(5, true);», где x, y, z – градусы по осям. Пример кода:

Rotate([90, 0, 0]) cube(5, true);

В данном случае мы вращаем куб на 90 градусов по оси x. Как и в случае с функцией translate, можно делать операцию над группой объектов, заключенных в фигурные скобки:

Rotate([x,y,z]){};

Сочетаем обе функции:

  1. color([0,1,1]) translate([0,0,15]) rotate([75,0,0]) cube(10, true);
  2. color([1,0,1]) rotate([75,0,0]) translate([0,0,15]) cube(10, true);

Фото 7

Учитывайте, что порядок функций имеет значение. Бирюзовая фигура была сначала повернута, затем перемещена, сиреневая – наоборот. Цифры, указанные в функциях, одинаковые.

Функция, позволяющая складывать (объединять) объекты: «union(){}», в фигурных скобках указываются объекты.

Пример кода:

union(){
cylinder(30, 6, 6, true, $fn=60);
rotate([60,0,0]) cylinder(30, 6, 6, true, $fn=60);
};

Фото 8

В данном случае мы объединяем 2 цилиндра, один из которых повернут на 60 градусов. Количество объектов в фигурных скобках не ограничено.

Функция разности – difference(){} – позволяет вычитать один объект из другого. В фигурных скобках первой указывается фигура, из которой будут вычитаться последующие.

Пример кода:

difference(){
cylinder(30, 6, 6, true, $fn=60);
rotate([60,0,0]) cylinder(30, 6, 6, true, $fn=60);
};

Фото 9

Фигуры с теми же параметры, что и в примере со сложением.

Функция intersection(){} оставляет только общую область, в которой перечисленные в фигурных скобках объекты пересекаются.

Пример кода:

intersection(){
cylinder(30, 6, 6, true, $fn=60);
rotate([60,0,0]) cylinder(30, 6, 6, true, $fn=60);
};

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

Пример кода:

translate([10,0,0]) difference(){
cylinder(30, 6, 6, true, $fn=60);
rotate([60,0,0]) #cylinder(30, 6, 6, true, $fn=60);
};

или

translate([-10,0,0]) intersection(){
#cylinder(30, 6, 6, true, $fn=60);
rotate([60,0,0]) cylinder(30, 6, 6, true, $fn=60);
};

Фото 10

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

Модификатор * прописывается перед участком кода программы, который пользователь не хочет выводить в окно просмотра в данный момент. При этом не требуется удалять код. * – аналог # на некоторых языках программирования.

Модификатор ! выделяет элемент, перед которым он указывается. При этом остальной код не отображается в окне просмотра.

Модификатор % убирает элемент из кода, но модель показывается прозрачным серым цветом.

Фигуры можно сжимать посредством функции «scale([kx, ky, kz])», где kx, ky, kz – коэффициенты растяжения (или, при значении меньше 1, – сжатия) по соответствующим осям.

Пример кода:

scale([2,2,0.5]) sphere(9, $fn=25);

Фото 11

В данном случае мы растягиваем сферу в 2 раза в плоскости xy и сжимаем ее по z вдвое.

Чтобы задавать цвет модели, нужно использовать команду color(x, y), где x – цвет в виде строки («red», «green», «black», «yellow», «lime», «wheat», вплоть до составных, вроде «lightgoldenrodyellow».) или в формате [R, G, B] (R – доля красного, G – доля зеленого, B – доля синего), а y – прозрачность (0 – невидимый, 1 – совсем непрозрачный). Прозрачность в OpenSCAD иногда отображается некорректно.

Обычно доли цветов задаются от 0 до 255, но в случае с OpenSCAD нужно указывать цифру от 0 до 1. К примеру, синий цвет задается как [0, 0, 1]. Полный список цветов в текстовом формате:

Фото 12

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

Пример кода:

text(text=”\u00A9 Наш Колхоз”,
language=”ru”,
font=”Segoe Script:style=Bold”,
$fn=30);

Фото 13

В параметре language задается язык написанного (по умолчанию параметр равен «en») в параметре font указывается шрифт, после двоеточия в style можно указать курсив («Italic») или жирный («Bold»), при условии, что эти стили поддерживаются данным шрифтом.

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

Фото 14

Как экспортировать дизайн из OpenScad в STL

В интерфейсе программы нужно перейти по пути Файл – Экспорт, затем выбрать пункт «Экспорт как STL», чтобы экспортировать проект, если его нужно открыть в другом редакторе.

Важно! Учитывайте, что такой STL файл может открываться далеко не во всех 3D-редакторах, в некоторых случаях попытка открытия будет заканчиваться ошибкой.

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

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

Полезно также почитать: Подробно о программе Daz Studio

Полезное видео

В этом видео дается подробный обзор программы OpenSCAD:

Комментарии

Наша группа в ВК

О новых материалах можно узнать одним из первых, подписавшись на нашу группу в ВК

Подробнее...