Подписаться ВК
 24.05.2023 в 15:20   3dmodeller

OpenSCAD уроки 3D моделирования. Скачивание, установка, интерфейс, параметры

Поделиться
с друзьями:

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

Скачивание и установка OpenSCAD

Последнюю стабильную версию OpenSCAD можно загрузить с сайта http://www.openscad.org/. Обычные загрузки в верхней части страницы предоставляют последнюю «стабильную» версию программного обеспечения, а Development Snapshots предоставляют экспериментальные версии OpenSCAD, которые имеют несколько дополнительных функций, но могут содержать больше ошибок, чем стабильные версии. Выберите версию, соответствующую вашей операционной системе, откройте файл .exe или .dmg, затем следуйте инструкциям по установке OpenSCAD.

Заставка OpenSCAD

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

В поле «Примеры» выберите «Основные» > «CSG.scad», затем нажмите «Открыть пример», чтобы открыть простой файл примера CSG.

Интерфейс OpenSCAD

Текстовый редактор

Начнем с проверки основных разделов окна OpenSCAD. Интерфейс OpenSCAD очень прост и состоит только из текстового редактора, области просмотра и консоли. Код вводится с помощью редактора и получившаяся модель отображается в области просмотра. Большинство кнопок в редакторе говорят сами за себя («Создать», «Открыть», «Сохранить» и т. д.). Наиболее интересными из них являются кнопки «Предварительный просмотр», «Визуализация» и «Экспорт в формате STL».

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

Область просмотра

В области просмотра отображается 3D-модель. Кнопки Preview и Render такие же, как в редакторе. Две средние группы кнопок управляют «камерой» в средстве просмотра: левая часть позволяет масштабировать или сбрасывать вид, а правая - позволяют переключать камеру на стандартные виды.

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

Консоль

Консоль появляется под областью просмотра и показывает техническую информацию о рассчитанных моделях. Он также показывает запись о том, когда вы сохраняете или экспортируете модель и отображает данные, полученные из операторов echo () . Тем, кого не волнуют внутренние технические расчеты, не стоит беспокоиться о консоли.

Объекты, действия, операторы и переменные

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

  • Действия  используются для создания объектов или определения переменных. Например, Куб Cube(), Цилиндр Cylinder() и Сфера Sphere() - это действия, которые создают соответствующие им примитивные объекты.
  • Операторы  изменяют объекты. Существует множество различных операторов, и они используются для изменения множества различных свойств объекта, таких как его размер или положение.
  • Переменные  содержат такие значения, как числа, строки (например, текст), векторы и списки. Информация, хранящаяся в переменных, может использоваться Действиями, Операторами или другими переменными. (Переменные будут обсуждаться немного позже в этом руководстве по OpenSCAD, в Разделе по параметрическому моделированию)
  • Комментарии  используются для предоставления дополнительной информации всем, кто читает код. Обычно они используются для предоставления общей информации о коде (например, первоначального автора и даты публикации) и объяснения логики и обоснования конкретных строк. Комментарии не влияют на объекты и фактически игнорируются, когда OpenSCAD интерпретирует и отображает код.

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

Разобравшись с этим, давайте взглянем на CSG.scad

Пример CSG.scad: объединение объектов с объединением

Операторы выделены зеленым, а действия - оранжевым. (Зеленый текст - комментарии.)

Прежде чем что-либо делать, мы должны сохранить файл под другим именем. Мы будем экспериментировать с кодом в этом руководстве, поэтому мы хотим сохранить безопасную копию исходной версии. Выберите «Файл» > «Сохранить как…» и сохраните его как «CSG_tutorial.scad». Как только это будет сделано, нажмите кнопку Render, чтобы увидеть объекты, которые создает CSG.scad. В этом примере создаются три отдельных объекта с использованием различных комбинаций операторов и действий.

Рассмотрим код подробнее. При чтении кода OpenSCAD легче думать о вещах как о «блоках» кода, чем читать его построчно. В CSG.scad есть три блока, границы которых обозначены черными линиями в левой части кода. Каждый блок содержит два Действия (Куб и Сфера) вместе с одним или двумя Операторами (Перевести, Объединение, Пересечение, Разница). 

Давайте посмотрим на первый блок кода (начиная с 3-й строки и заканчивая 8-й строкой). Этот блок определяет форму слева от области просмотра, сферу внутри куба. Этот блок кода содержит два оператора и два действия:

  • Translate  - это оператор, который перемещает объект в соответствии с заданными параметрами [X, Y, Z]. В этом случае он перемещает Объект на 24 мм вниз по оси X.
  • Union  - это оператор, который объединяет все объекты в фигурных скобках в один объект.
  • Куб  - это действие, которое создает объект куба. В этом случае сторона каждого куба установлена на 15 мм, а выражение «center = true» сообщает Action'у о необходимости рисования куба из центра.
  • Сфера  - это действие, которое создает объект сферы. Поскольку число не было определено ни как радиус, ни как диаметр, OpenSCAD предполагает, что это радиус.

Этот блок демонстрирует две важные концепции для работы в OpenSCAD. Во-первых,  Операторы применяются только к Объектам в его границах . Оператор объединения в этом первом блоке объединяет только куб и сферу, которые находятся в его границах, и ни один из других объектов в этом файле. Точно так же оператор перевода в этом первом блоке применяется только к объединенному объекту. В противном случае все объекты в этом файле были бы центрированы на -24 по оси X! (Также обратите внимание, что граница оператора определяется парой фигурных скобок, и что все внутри его границы имеет отступ на один уровень.)

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

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

Пример CSG.scad: примечание по синтаксису

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

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

  • Конец каждого оператора Action должен заканчиваться точкой с запятой. Это включает действия, которые создают объекты, а также действия, которые определяют переменные (см. Раздел 5 для получения более подробной информации об операторах переменных).
  • Как упоминалось выше, фигурные скобки (также известные как фигурные скобки) обозначают границы оператора Operator. При работе над сложным проектом OpenSCAD можно легко потерять все скобки. Однако, когда вы нажимаете скобку, OpenSCAD выделяет соответствующего партнера, что немного упрощает работу, когда все становится сложнее.

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

  • Отступ  обычно увеличивается, когда вы находитесь в новом Операторе, и уменьшается, когда Оператор завершает работу. (В этом примере, поскольку оператор Union находится внутри оператора Translate, Union имеет отступ на один уровень. Поскольку Cube и Sphere находятся внутри Union, они имеют двухуровневый отступ.) Отступы на самом деле не нужны для запуска OpenSCAD, но сохраняет код аккуратным и аккуратным.
  • Разрывы строк  (например, нажатие кнопки Enter) и пробелы не являются обязательными для запуска OpenSCAD. Теоретически вы можете записать весь первый блок в виде одной строки, и код все равно будет работать:  translate () {union () {cube (15, center = true); сфера (10);}} Однако, убрав их делает код невероятно трудным для чтения.
  • Комментарии обозначаются парой косых черт («//»).   Все, что следует за парой косых черт, OpenSCAD игнорирует до начала следующей строки.

( Боковое примечание: для тех, кто знаком с компьютерным программированием, вы, вероятно, заметите, что этот синтаксис по сути такой же, как и в C ++. OpenSCAD в основном написан на C ++ и, как следствие, наследует большую часть своего синтаксиса от своего родительского языка. Так что для всех знаком с программированием Arduino, это должно быть проще простого!)

Пример CSG.scad: оператор пересечения

Пересечения перекрытия: составные части выделены серым, конечная часть - желтым

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

После Sphere Action во втором блоке добавьте в код следующую строку, затем нажмите кнопку Render, чтобы визуализировать ваши изменения:

перевести ([7,5, 0, 0]) {куб (15, центр = истина); }

Это добавляет дополнительный куб, который смещается на половину своей длины вправо дополнительным оператором Translate. Обратите внимание, как только сегмент, принадлежащий всем трем объектам, рассматривается оператором пересечения, а части, которые не перекрываются с двумя другими объектами, не включаются в окончательный пересекаемый объект.

Также обратите внимание, что второй Translate работает только со вторым оператором Cube. Операторы работают последовательно, поэтому операция пересечения выполняется только после перемещения второго куба.

Пример CSG.scad: оператор различия

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

Одно большое изменение в том, как работает Difference (по сравнению с Union или Intersection), заключается в том, что создаваемый объект зависит от порядка,  в котором действия / объекты отображаются в Operator. Попробуйте изменить порядок Куба и Сферы в этом третьем блоке. Обратите внимание, как в исходной версии кода Сфера вычитается из Куба, но их переключение приводит к противоположному.

Параметрический OpenSCAD

Теперь, когда мы рассмотрели пример CSG.scad, давайте поговорим о параметрическом проектировании.

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

Давайте попробуем увеличить три объекта в CSG_tutorial.scad. Начните со сфер, заменив все экземпляры «sphere (10)» на «sphere (15) ». Нам также нужно сделать кубики больше, поэтому замените «cube (15, center = true)» на «cube (20, center = true)». Если вы визуализируете код с этими изменениями, вы можете увидеть несколько проблем:

  • Пропорция радиуса сферы по сравнению с размером куба была отброшена, а это означает, что конечные объекты больше не похожи на оригиналы.
  • Для нашего модифицированного среднего объекта (Пересечение) объект больше не разделяется посередине, потому что мы недостаточно сдвинули наш второй куб.
  • Объекты Intersection и Difference перекрываются друг с другом, потому что они не были сдвинуты достаточно далеко друг от друга с помощью операторов перевода.

В последнем разделе этого руководства по OpenSCAD мы превратим наш простой пример дизайна в параметрический.

Создание параметрической модели: определение переменных

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

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

Добавьте следующий оператор Action где-нибудь в верхней части файла (он может быть до или после комментария в первой строке, но не после первого блока кода):

радиус сферы sphere_radius = 10;

Это создает переменную с именем «sphere_radius» и делает ее равной 10. 

Затем просмотрите код и замените каждое число внутри каждого действия Sphere на сферический радиус (как на изображении выше). Попробуйте выполнить рендеринг файла, затем измените sphere_radius и снова выполните рендеринг файла. Вы должны увидеть, как радиус каждой сферы изменяется в ответ на значение sphere_radius.

Создание параметрической модели: определение большего количества переменных

Сделайте размер куба параметризованным так же, как радиус сферы, определив переменную cube_length  и установив ее на 15 (на данный момент). Как и выше, замените все числа внутри каждого оператора Cube на cube_length.

Теперь мы можем установить как радиус сферы, так и длину куба для всех объектов модели. Но как мы можем сохранить пропорциональность Куба и Сферы друг к другу, не вычисляя их сами? Пришло время сделать некоторые зависимые переменные!

Создание параметрической модели: зависимые переменные

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

Если у нас есть sphere_radius и cube_length, установленные независимо, мы можем потерять исходные пропорции размера куба по сравнению с размером сферы. Однако мы можем изменить cube_length на зависимую переменную, изменив определение cube_length на следующее:

cube_length = sphere_radius * 1,5;

Пока мы обсуждаем эту тему, вы также можете изменить оператор Translate, который мы добавили на шаге 4c, с твердой X-координаты на параметрическую, заменив  translate ([7.5, 0, 0])  на  translate () . Теперь средний объект будет каждый раз аккуратно вырезан посередине!

Обратите внимание, что зависимая переменная всегда должна быть определена после определения (определений) переменной, которое она использует. OpenSCAD считывает код построчно, поэтому, если вы попытаетесь определить cube_length, не определяя sphere_radius, OpenSCAD выдаст ошибку.

Создание параметрической модели: дополнительные зависимые переменные

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

object_separation = sphere_radius * 2 + 4;

Вставьте это действие после определения cube_length, затем замените  в строке 7 и  [24,0,0]  в строке 20 с  и , соответственно. Теперь попробуйте отрендерить код с разными значениямиphere_radius: даже когда объекты становятся больше, они всегда должны быть отделены друг от друга на 4 мм.

Что дальше?

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

Комментарии: