Ознакомьтесь с OpenSCAD и узнайте, как использовать этот мощный инструмент 3D CAD-моделирования за 10 простых шагов!
OpenSCAD (произносится как «опен-с-кад») — это популярная программа с открытым исходным кодом для моделирования 3D-объектов. В отличие от большинства других инструментов САПР, оно использует скрипты — немного похоже на использование компьютерной программы — для определения форм, а не манипулирует объектами непосредственно на экране с помощью мыши и команд клавиатуры.
Приложение описывается как «программируемый твердотельный 3D CAD-конструктор», но никакого опыта программирования не требуется. Немного попрактиковавшись, даже новички смогут создавать сложные фигуры и анимировать движущиеся части.
OpenSCAD позволяет задавать очень точные формы и структуры. Их можно настраивать с помощью «параметрических» моделей, позволяющих быстро изменять размеры и другие характеристики, как это делается в инструменте настройки Thingiverse и других сервисах настройки моделей, таких как Make with Tech’s.
С другой стороны, если вы не можете дать математическое определение, OpenSCAD может не подойти для создания органических форм, таких как миниатюры для настольных игр. В таких случаях инструменты свободного моделирования, такие как Blender, имеют явное преимущество.
Использование языка сценариев OpenSCAD продолжает расти и расширяться, ведется работа над несколькими браузерными реализациями, а также над новыми инструментами рендеринга и визуализации. Так что изучать его стоит. Учитывая это, давайте начнем!
- Установка и запуск
- Скачать OpenSCAD
- Заставка
- Пользовательский интерфейс
- Окна и меню
- Текстовый редактор
- Область просмотра
- Консоль
- Руководство по написанию скриптов
- Объекты, действия и операторы
- Шаг 1: Основной код OpenSCAD
- Шаг 2: Union
- Шаг 3: Translate
- Шаг 4: Intersection
- Шаг 5: Difference
- Основные правила
- Синтаксис
- Другие операторы и функции
- Шаг 6: Задание фигур
- Шаг 7: Изменение разрешения
- Шаг 8: Добавление цвета
- Параметрическое проектирование
- Шаг 9: Переменные
- Шаг 10: Переменные для параметрического проектирования
- Вывод
Установка и запуск
Давайте рассмотрим первые шаги по использованию этого гибкого и мощного инструмента. Мы загрузим и установим программное обеспечение и потратим некоторое время на то, чтобы разобраться с пользовательским интерфейсом (UI) OpenSCAD, а также с основами его работы.
Скачать OpenSCAD

Последняя стабильная версия OpenSCAD доступна на странице скачивания. Доступны сборки для MacOS (включая MacPorts и Home-brew), Windows (как 32-, так и 64-битные версии) и нескольких вариантов Linux. Некоторые вычисления в OpenSCAD очень интенсивны, поэтому для работы с большими моделями стоит использовать более быстрый компьютер. Тем не менее, он будет достаточно хорошо работать на любом Mac под управлением macOS 10.9 и выше или на ПК с Windows 7 и выше. Версии, оптимизированной для Apple Silicon, пока нет, но она находится в разработке.
В рамках инициативы Google Summer of Code была проведена значительная работа по улучшению просмотра и рендеринга моделей. Последняя версия разработки, включающая все последние улучшения, доступна ниже на этой же странице. Системные требования для них могут быть выше, поэтому проверяйте надписи рядом со ссылками на скачивание.
Установка проста:
- Выберите и нажмите на версию, соответствующую вашей операционной системе. В результате загрузится файл .exe или .dmg, который запустит процесс установки.
- Откройте загруженный файл и следуйте инструкциям по установке OpenSCAD. Пользователям Mac, возможно, придется подтвердить в настройках безопасности, что это приложение от непризнанного разработчика.
Заставка

Когда вы впервые запустите программу, перед вами появится заставка «Welcome to OpenSCAD». На этом экране вы можете создать новый файл, открыть существующий (последние файлы также будут отображаться здесь при каждом запуске программы) или открыть пример проекта. Все прилагаемые файлы примеров хорошо написаны и демонстрируют основные концепции использования OpenSCAD.
Позже в этом учебнике мы будем использовать пример под названием «CSG.scad». CSG означает «Constructive Solid Geometry», что является техническим названием работы OpenSCAD. Давайте откроем этот файл, чтобы сначала изучить пользовательский интерфейс программы.
- Перейдите в раздел «Examples» и выберите «Basics > CSG.scad».
- Затем нажмите «Open Example».
Пользовательский интерфейс
После этого перед вами откроется стандартный пользовательский интерфейс OpenSCAD. Если вы новичок в кодировании, не волнуйтесь, если этот экран покажется вам сложным. Просто посмотрите, что здесь отображается. Позже в учебнике по созданию сценариев мы разложим все по полочкам и сделаем это простым и понятным.
Окна и меню

Интерфейс состоит из области просмотра, в которой отображается проект, над которым вы работаете и других окон, которые вы можете отображать, скрывать или перемещать по своему усмотрению. Можно закрыть отдельные окна, нажав либо на «X» в верхних левых углах, либо на «Hide…» в выпадающем меню.
На скриншоте выше показаны окна «Текстовый редактор», «Область просмотра» и «Консоль». При первом запуске OpenSCAD обычно также отображается окно ошибки, но давайте пока закроем или скроем это окно.
Ознакомьтесь с основными опциями:
- Закройте или скройте окна текстового редактора и консоли с помощью «X» или опции скрыть в раскрывающемся меню.
- Откройте их снова с помощью выпадающего меню.
- Поэкспериментируйте с изменением их размеров и пропорций, перетаскивая край каждого окна и перемещая его по своему усмотрению.
Текстовый редактор

Код или скрипты OpenSCAD вводятся с помощью текстового редактора, а полученная модель отображается в области просмотра. Большинство кнопок редактора не требуют пояснений (например, New, Open, Save и другие). Интересными являются кнопки Preview, Render, Export as STL и 3D Print.
- Preview генерирует быструю модель из примера сценария в области просмотра. Эта быстрая модель показывает общее представление о том, как она будет выглядеть, но это не окончательная рассчитанная (или отрендеренная) 3D-модель. Как правило, вы используете Preview после внесения изменений в сценарий OpenSCAD, чтобы проверить, работает ли он так, как вы ожидали.
- Render указывает OpenSCAD рассчитать окончательную 3D-модель, которая покажет вам точное представление, но займет гораздо больше времени, чем предварительный просмотр. В очень сложных случаях рендеринг моделей может занять несколько часов, но вы не заметите особой разницы с фигурами, которые мы создаем в учебном пособии по сценариям ниже.
- Export as STL — это ярлык на окно, позволяющее экспортировать модель в STL-файл для 3D-печати. Обратите внимание, что перед этим модели должны быть отрендерены. В выпадающем меню «Файл» вы также найдете опции для экспорта модели в другие форматы (например, 3MF).
- 3D Print — это ярлык для отправки отрендеренной 3D-модели в онлайн-сервис печати или OctoPrint. По умолчанию в качестве сервиса печати используется Print A Thing, но в главном меню в разделе «Параметры» можно добавить другие.
Текстовый редактор умён тем, что может предугадать, какие ключевые слова сценария вводятся, а также помогает отформатировать введённое, чтобы сделать его более понятным. На этом этапе не так много возможностей для экспериментов и игр, и мы увидим это в действии в учебном пособии по скриптингу ниже.
Область просмотра

Вы можете перемещаться по области просмотра, используя комбинацию движений мыши с щелчками левой и правой кнопками и клавишей Shift. Это зависит от конкретной настройки мыши и клавиатуры, но в целом можно поступить следующим образом:
- Поворачивать, перетаскивая мышь при нажатой левой кнопке мыши (LMB).
- Перемещать, перетаскивая мышь при нажатой правой кнопке мыши (RMB).
- Масштабирование с помощью колеса прокрутки или перетаскивания мыши при нажатой клавише «Shift + RMB».
Область просмотра также имеет несколько навигационных ярлыков и других опций, реализованных в виде кнопок в нижней части окна. Во-первых, вы найдете кнопки Preview, Render и STL, которые дублируют кнопки, расположенные в текстовом редакторе.
Слева от них находятся элементы управления быстрым масштабированием, включая — слева направо — View All, Zoom In, Zoom Out и Reset View, что очень полезно, если вы заблудились при навигации по большим моделям.
За ними следуют стандартные виды, которые изменяют угол наклона камеры, чтобы смотреть прямо по осям X, Y и Z.
Остальные кнопки меню позволяют изменять другие характеристики отображаемого изображения и могут быть полезны в определенных ситуациях. Например, ортогональный вид обычно лучше подходит для создания механических моделей, а перспективный — для декоративных. В конечном счете, это вопрос личного выбора. Наконец, у вас есть возможность включать и выключать аннотацию по оси, а также выделять края модели.
Консоль

Консоль обычно отображается под областью просмотра и показывает техническую информацию, касающуюся всех операций программы.
Для новичков она может показаться пугающей, но поначалу большую ее часть можно игнорировать. В основном она становится полезной для более опытных пользователей. Тем не менее, с ее помощью можно определить, когда возникают определенные ошибки, и убедиться, что экспортированные модели были сохранены правильно. Также здесь отображается содержимое операторов Echo (см. шаг 10 ниже), которые можно вручную добавлять в скрипты, чтобы отслеживать их выполнение.
Тем не менее, взгляните на то, что отображается. Это даст вам представление о том, чего следует ожидать, когда вы станете более продвинутыми.
Руководство по написанию скриптов
Пришло время разобраться с тем, как на самом деле писать скрипты OpenSCAD.
Скрипты OpenSCAD следуют соглашениям, или синтаксису, языка программирования C. Те, кто знаком с этим языком, быстро поймут структуру.
Для тех, кто хочет разобраться в деталях, существует множество отличных онлайн-справочников, включая руководство пользователя OpenSCAD и очень полезную, краткую «шпаргалку» для быстрого ознакомления. Однако для новичков на данном этапе необходимо точное понимание терминологии.
Итак, давайте приступим!
Объекты, действия и операторы

Прежде чем приступить к практической работе, давайте разберемся в базовой терминологии OpenSCAD. Проще говоря, OpenSCAD работает, определяя «Objects» — обычно в виде 3D-примитивов, таких как сферы, цилиндры и кубы. Объекты создаются с помощью «Actions», которые затем манипулируются и преобразуются с помощью различных «Operators».
Например, действие sphere(10); создает сферический объект с радиусом 10 единиц. Все просто! Обратите внимание, что OpenSCAD не имеет единиц измерения, поэтому 10 может быть 10 дюймов, миллиметров, миль или парсеков. Однако для большинства приложений 3D-печати используются миллиметры.
Ряд операторов OpenSCAD применяет различные преобразования к объектам для перемещения, поворота, изменения цвета или комбинирования нескольких преобразований для изменения результирующих форм различными способами. Скрипты OpenSCAD также включают в себя другие возможности, характерные для языков программирования, такие как определение переменных, используемых для определения размеров объектов и выполнения расчетов, а также возможность добавления комментариев, чтобы помочь другим понять, что именно делает скрипт.
Шаг 1: Основной код OpenSCAD

Теперь давайте посмотрим на пример, который мы открыли изначально. В этом уроке мы будем играть и изменять код, поэтому лучше сохранить свою копию, а оригинал оставить нетронутым.
- В главном меню выберите «File > Save As…», затем сохраните файл под именем «CSG_tutorial.scad» в соответствующем месте на вашем компьютере.
- Если на данный момент в области просмотра ничего не отображается, нажмите кнопку Render, которая отобразит объекты, заданные скриптом CSG_tutorial.scad.
Скрипт примера генерирует три фигуры, каждая из которых по-разному сочетает в себе объект-куб и объект-сферу. Код для каждой из них находится в трех соответствующих блоках, начинающихся на строках 3, 10 и 15 соответственно. Ниже мы пройдемся по каждому из этих блоков, чтобы объяснить, как они работают.
Также обратите внимание на то, как текстовый редактор помогает сделать скрипт более читаемым, используя различные цвета, и как в нем есть маленькие вертикальные черные полоски рядом с номерами строк, которые позволяют сворачивать и разворачивать различные части или блоки скрипта. Это не особенно полезно при работе с небольшими сценариями, как в данном примере, но может стать спасением для очень длинных сценариев.
Строки с 3 по 8
Давайте посмотрим на первый блок кода (со строк 3 по 8). В центре вы увидите следующее:
cube(15, center=true);
sphere(10); Первая строка — это действие, задающий куб с длиной стороны 15 единиц, центрированный на началах осей X, Y и Z. Второе действие задает сферу с радиусом 10 единиц. По умолчанию сферы центрируются.
Точка с запятой после каждой строки очень важно. Они указывают OpenSCAD, что конец определенного действия уже достигнут.
Давайте поиграем с кодом, чтобы получить некоторую уверенность в использовании редактора.
- Измените размер сферы в строке 6 на ‘9’, затем нажмите «Preview», чтобы посмотреть, что произойдет.
- Перед тем как продолжить, измените его обратно на ’10’.
- Измените код на sphere(r=10); затем sphere(d=20);
Вы заметите, что эти коды определяют сферу так же, как и sphere(10);. Все они являются одинаково правильными способами определения сферы.
Шаг 2: Union

Два объекта в первом блоке кода занимают одно и то же фактическое пространство, поэтому OpenSCAD по умолчанию будет рассматривать их как один. Тем не менее, нелишним будет сказать об этом прямо, иначе могут возникнуть непредвиденные ситуации.
Чтобы указать OpenSCAD распознать их как один новый объект, используется оператор Union:
union() {
cube(15, center=true);
sphere(10);
} Union сделает именно то, что следует из его названия: Он создаст объединение всех объектов в пределах «границы», определенной как все, что находится внутри фигурных скобок.
Шаг 3: Translate

Следующим шагом будет смещение нового объединенного объекта влево по оси X. Для этого используется оператор Translate, который перемещает все дочерние объекты в пределах своей границы на заданное количество единиц по осям X, Y и Z:
translate([-24,0,0]) {
union() {
cube(10, center=true);
sphere(15);
}
} В данном случае «[-24,0,0]» означает перемещение на минус 24 единицы только вдоль оси X. «[12,12,12]» означает перемещение на 12 единиц вдоль каждой оси — другими словами, по диагонали вверх.
Шаг 4: Intersection

Для средней фигуры (заданной вторым блоком кода со строк 10 по 13) куб и сфера объединяются с помощью оператора Intersection. В результате образуется новый объект, состоящий только из тех частей всех дочерних объектов, которые пересекаются в его границах.
Другими словами, если часть одного объекта не пересекается с частью всех других объектов, она удаляется из конечной пересекающейся фигуры. По сути, этот оператор удаляет все части, которые не являются общими для всех объектов.
Попробуйте изменить размеры куба (строка 11) или сферы (строка 12), чтобы увидеть, какой эффект это дает. Прежде чем двигаться дальше, не забудьте вернуть их к исходным значениям. Если вы заблудились, зайдите в меню «File» и выберите «Reload» и вы вернетесь к последней сохраненной версии примера).
Добавление объектов
Также интересно добавить еще один объект. Давайте добавим куб чуть меньшего размера, смещенный на половину ширины существующего куба (с помощью оператора Translate), и посмотрим, что получится.
В текстовом редакторе установите курсор после действия со сферой, нажмите return и добавьте в строку после действия со сферой следующее: translate([7.5,0,0]) { cube(15, center=true); }
Полный блок должен выглядеть следующим образом:
intersection() {
cube(15, center=true);
sphere(10);
translate([7.5,0,0]) { cube(12.5, center=true); }
} При нажатии кнопки Preview вы увидите, что левая сторона исходного пересечения удалена, поскольку это пространство больше не делится с новым кубом (см. изображение выше).
Шаг 5: Difference

Последний из наших трех примеров выполнен с помощью оператора Difference, который вычитает объект из другого объекта. Он полезен для создания отверстий и других пространств. В отличие от Union или Intersection, Difference ведет себя по-разному в зависимости от порядка следования действий или объектов в операторе.
Посмотрите на строки с 16 по 20, а затем поменяйте местами порядок появления куба (строка 17) и сферы (строка 18) в операторе Difference. Обратите внимание, что в исходной версии кода сфера вычитается из куба, но переключение между ними приводит к обратному результату, как показано на рисунке выше.
Основные правила

Несмотря на простоту, эти примеры подчеркивают два очень важных аспекта скрипта OpenSCAD. Первый заключается в том, что операторы применяются только к объектам, находящимся в его границах — другими словами, только к тем, которые находятся между следующими фигурными скобками.
Второй — последовательность выполнения действий и операторов в OpenSCAD такова: начиная с оператора, который находится ближе всего к объекту, и далее по порядку. Так, в первом блоке кода со строк 3 по 8 сначала выполняется операция объединения куба и сферы, а затем новый объект перемещается с помощью Translate.
Даже при работе с большими и сложными комбинациями Операторов и Действий начинайте с самого внутреннего Объекта или Действия, а затем работайте в обратном направлении, пока не доберетесь до самого верхнего Оператора. Как отмечалось выше, текстовый редактор может помочь определить объекты, которые наиболее глубоко вложены. Смотрите вертикальные полосы рядом с номерами строк.
Синтаксис

Когда вы набирали новую строку Translate в шаге 4, вы могли заметить, что она автоматически сделала отступ. Это не обязательно для выполнения сценария OpenSCAD, но так его гораздо легче читать. Итак, на этом этапе стоит сказать кое-что о синтаксисе — правилах ввода сценария, который может быть понят OpenSCAD.
Обязательный (или критический) синтаксис абсолютно необходим для выполнения кода. Если он отсутствует или написан неправильно, OpenSCAD выдаст сообщение об ошибке при попытке предварительного просмотра или рендеринга модели. Мы уже рассмотрели два ключевых примера обязательного синтаксиса:
- Каждый оператор действий должен заканчиваться точкой с запятой. Это относится как к действиям, создающим объекты, так и к действиям, определяющим переменные (см. шаг 9 ниже).
- Фигурные скобки (они же фигурные скобки или фигурные скобки) обозначают границы оператора. При работе над сложным проектом OpenSCAD их легко потерять из виду. Однако при щелчке на скобке в текстовом редакторе выделяется ее партнер, что немного облегчает работу, когда все становится сложным.
Необязательный (или некритичный) синтаксис значительно облегчает чтение и редактирование кода. В качестве примера можно привести следующее:
- Отступы обычно увеличиваются, когда вы находитесь внутри нового оператора, и уменьшаются, когда оператор завершается. Как уже отмечалось ранее, отступы на самом деле не нужны для работы OpenSCAD, но они помогают коду выглядеть аккуратно и опрятно. Нажмите «Shift + Tab», чтобы сделать отступ или вычесть отступ соответственно. Также можно использовать кнопки «Indent» и «Outdent» в верхней части текстового редактора.
- Разрывы строк и пробелы также не являются обязательными для работы OpenSCAD. Теоретически, вы можете ввести любой блок в этом примере в одну строку, и код все равно будет работать. Однако, если убрать разрывы строк и пробелы, код будет очень трудно читать.
- Комментарии обозначаются парой косых черт («//»). Все, что следует за ними, игнорируется OpenSCAD до начала следующей строки. Например, самая первая строка этого примера является комментарием.
Другие операторы и функции
Сейчас самое время изучить еще несколько возможностей OpenSCAD. Мы внесем несколько простых изменений в код примера и рассмотрим три случая.
Шаг 6: Задание фигур

Сначала давайте поэкспериментируем с действиями, задающими формы. Мы рассмотрели простые версии сферы и куба, но действие cube может задавать любую прямоугольную форму.
- Замените действие cube на cube([15,10,25], center=true);
- Нажмите кнопку Preview. В результате должен появиться кубоид с размерами 15, 10 и 25 по осям X, Y и Z соответственно.
- Если вы чувствуете себя достаточно уверенно, замените куб на цилиндр, а затем поэкспериментируйте с параметрами, которые его задают (в том числе превратите его в конус). Соответствующие скрипты см. в шпаргалке.
- Перед тем как продолжить работу, верните скрипт к исходным размерам.
Шаг 7: Изменение разрешения

Вы могли заметить, что отрисованная сфера не очень гладкая. Это связано с тем, что OpenSCAD по умолчанию устанавливает низкое разрешение, чтобы свести время обработки к минимуму. Однако при желании вы можете выбрать более высокое разрешение как для отдельных объектов, так и для всей модели.
Для этого используется значение «$fn». По умолчанию оно равно примерно 30 и определяет, сколько фрагментов используется для создания фигуры. Значения более 128 не приветствуются, а значение более 50 может значительно увеличить время рендеринга.
- В первом блоке кода измените sphere(10); на sphere(10, $fn=50);
- Нажмите кнопку Preview. Вы должны увидеть, что разрешение сферы значительно улучшилось.
- Чтобы улучшить разрешение еще больше, измените его снова на sphere(10, $fn=100);
Обратите внимание, что вы можете сделать то же самое для каждой сферы и даже использовать разные значения $fn. Существует также способ определения $fn для всего скрипта, который мы рассмотрим ниже, в шаге 9.
Шаг 8: Добавление цвета

Добавление цвета может быть полезно для придания модели большей реалистичности или выделения определенных элементов в области просмотра. Цвета в OpenSCAD можно задавать по-разному: в виде значений RBG, шестнадцатеричных значений или из заранее определенного набора.
Оператор цвета добавляется перед действиями сценария. Хотя сам он не является действием, он изменяет действие. Поэтому точка с запятой после него не нужна.
Чтобы продемонстрировать, как это делается, давайте изменим наш пример так, чтобы куб окрасился в голубой цвет, а сфера — в коралловый. Добавьте оператор Color перед действиями, используемыми для определения кубов и сфер, как показано ниже:
translate([-24,0,0]) {
union() {
color("cyan") cube(15, center=true);
color ("coral") sphere(10);
}
}
intersection() {
color("cyan") cube(15, center=true);
color ("coral") sphere(10, $fn=100);
}
translate([24,0,0]) {
difference() {
color("cyan") cube(15, center=true);
color ("coral") sphere(10, $fn=100);
}
} Обратите внимание, что цвета отображаются только в режиме предварительного просмотра. При рендеринге изображений цвета в области просмотра игнорируются, но эта информация все равно экспортируется, если формат экспорта поддерживает это.
Параметрическое проектирование
Теперь, когда мы рассмотрели пример CSG.scad и познакомились с пользовательским интерфейсом и базовым вводом скриптов, давайте поговорим о параметрическом проектировании.
При параметрическом проектировании пользователь может изменять определенные элементы модели, а остальная часть конструкции подстраивается под эти изменения. Например, если в модели имеется несколько винтовых соединений определенного размера, их можно изменить на другой размер, не перебирая и не изменяя каждый отдельный элемент. Кроме того, параметрическое проектирование можно использовать для быстрого изменения количества повторяющихся элементов в модели.
Основой параметрического проектирования является использование переменных вместо статических или жестко закодированных значений, распределенных по всему коду.
Как это работает? Давайте посмотрим!
Шаг 9: Переменные

До сих пор размеры (и цвета) кубов и сфер определялись в каждом отдельном блоке нашего примера. Если мы хотим изменить радиус всех сфер, нам нужно сделать это три раза. Это не может показаться проблемой, но представьте, если бы в примере были ссылки на 10 или более сфер! Пришлось бы искать и вручную изменять каждую из них, что отнимает много времени и чревато ошибками.
Гораздо более аккуратный и профессиональный способ сделать это — определить радиус только один раз как переменную. Переменная создается с помощью типа оператора Action, и после ее определения мы можем использовать переменную во всем сценарии вместо числа. Переменные можно определять либо в верхней части сценария, либо в любом месте над первым оператором или действием, которое их использует.
- В коде нашего примера добавьте следующую строку сверху, которая в нашем примере начинается со строки 3:
sphere_radius = 10;. Это создаст переменную с именем «sphere_radius» и сделает ее равной 10. - Затем замените все экземпляры
sphere(10);наsphere(sphere_radius); - Нажмите кнопку «Предварительный просмотр». Изображение в области просмотра не должно измениться, но если теперь изменить значение sphere_radius на другое (скажем, 11 или 9), а затем снова нажать Preview, вы увидите немедленное изменение всех трех фигур.
Множество переменных

Теперь вы можете расширить эту идею и создать переменные для замены всех остальных значений, включая длину куба и цвета, которые мы добавили выше. Вы также можете указать разрешение, которое будет использоваться при предварительном просмотре и рендеринге всех фигур.
- Измените код так, чтобы он выглядел следующим образом:
cube_length = 15;
sphere_radius = 10;
separation = 24;
cube_color = "cyan";
sphere_color= "coral";
$fn = 100;
translate([-separation,0,0]) {
union() {
color(cube_color) cube(cube_length, center=true);
color(sphere_color) sphere(sphere_radius);
}
}
intersection() {
color(cube_color) cube(cube_length, center=true);
color(sphere_color) sphere(sphere_radius);
}
translate([separation,0,0]) {
difference() {
color(cube_color) cube(cube_length, center=true);
color(sphere_color) sphere(sphere_radius);
}
} - Нажмите кнопку Preview. Опять же, изображение в области просмотра не должно измениться, но теперь вы можете изменить большинство параметров, определяющих дизайн.
- Измените значения, связанные с размерами куба и сферы, чтобы увидеть, как изменяются относительные пропорции каждой из трех фигур (как показано выше). Например, попробуйте следующие значения:
cube_length = 13; sphere_radius = 10; - Затем измените их следующим образом, чтобы сохранить исходные пропорции фигур, но удвоить их размер:
cube_length = 30; sphere_radius = 20;
При последнем изменении новые фигуры накладываются друг на друга (см. рисунок). Это можно исправить, увеличив размер переменной разделения, но мы можем добиться большего. Мы покажем вам, как это сделать в следующем разделе.
Шаг 10: Переменные для параметрического проектирования

В предыдущем примере мы видели, что попытка увеличить масштаб всей модели, удвоив длину куба и радиус сферы, привела к тому, что три фигуры наложились друг на друга. Простым исправлением было бы удвоение размера переменной разделения (например, separation = 28;). Однако хороший параметрический дизайн минимизирует количество изменяемых переменных.
В данном случае есть способ связать все ключевые параметры с одной переменной. Как и во всех параметрических конструкциях, для этого необходимо произвести простой расчет. В нашем примере мы видим, что радиус сферы составляет две трети длины куба, а разделение, в свою очередь, в 2,4 раза больше радиуса сферы.
Мы можем рассчитать их в OpenSCAD. Профессиональные инженеры, возможно, возмутятся этим примером, но это лишь для того, чтобы проиллюстрировать суть!
- В текстовом редакторе удалите следующие строки:
sphere_radius = 10;
separation = 24; - Замените их следующими, которые содержат примеры комментариев, чтобы напомнить будущим читателям, что происходит:
// The model is kept in proportion based on cube_length = 15;
// Sphere radius and share separation are now calculated, defined variables
sphere_radius = cube_length * (2/3);
separation = sphere_radius * 2.4;
// The following lines echo the defined variables on the Console
echo("Sphere radius = ", sphere_radius);
echo("separation = ",separation); - Нажмите кнопку Preview. Вы должны обнаружить, что модель не претерпевает видимых изменений.
- Измените длину куба на любое другое значение (попробуйте ’30’), затем снова нажмите Preview. Вы должны обнаружить, что вся модель увеличивается или уменьшается в той же пропорции.
Те из вас, кто читал дальше, могут понять, что в OpenSCAD есть оператор масштабирования, который мы также могли бы использовать, но на данном этапе это был бы бесполезный пример!
Вот вам задача: На рисунке выше показаны исходные размеры нашей модели, а также модель в два раза больше в том же ракурсе. Сможете ли вы придумать, как изменить код, чтобы добиться этого?
Вывод

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







