Antimony — САПР из параллельного мира

в 12:29, , рубрики: antimony, c++, cad, CAD/CAM, python, stl, графы, моделирование, сапр, Софт

Среди трёхмерных САПР наиболее известны программы, реализующие два основных подхода к проектированию: прямое моделирование и параметрическое.
Кроме того, существуют процедурные САПР, которые позволяют моделировать посредством программирования. Такой подход снискал себе признание среди любителей программирования и проектирования устройств с открытыми кодом и конструкцией. Например, хорошо известен OpenSCAD, который здесь не раз упоминался.
Предлагаю посмотреть на еще одну необычную САПР под названием Antimony.

image
Рис. 1. Antimony — САПР из параллельного мира

Antimony — САПР с открытым исходным кодом, который предоставляет подход к твердотельному моделированию при помощи направленных ациклических графов.
Такой подход используется в различных пакетах для 3D визуализации, текстурирования и создания игровой графики, а для твердотельного моделирования такой подход применяется, наверное, впервые.

Сам автор Мэтт Китер описывает свое детище как «CAD из параллельной вселенной».
Antimony построен из трёх основных компонентов:

  • Фреймворк для движения данных по направленному ациклическому графу.
  • Геометрическое ядро для CSG (Constructive Solid Geometry) операций, использующее функциональное представление (F-Rep) твёрдых тел.
  • Библиотека примитивов и трансформаций «fab». Библиотека содержит как привычные операции вроде перемещения, масштабирования, поворота, булевы операции, так и более необычные для твердотельных САПР, такие как деформация притяжения, отталкивания, изгиба.

image
Рис. 2. Деформация отталкивания

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

image
Рис. 3. Передача значений посредством связи и через имя узла и параметра

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

image
Рис. 4. Скрипт узла «круг»

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

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

image
Рис. 5. Минимализм во всём

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

Так как автор программы работает в Formlabs, то он позаботился о возможности материализации полученных моделей. Поэтому Antimony поддерживает экспорт моделей в виде 2.5D растра (карты высот в формате PNG) и в виде моделей в формате STL для 3D-печати. Команда для экспорта — тоже узел графа.

image
Рис. 6. Результат экспорта в STL

И немного о недостатках:

  • Импорт моделей из других САПР отсутствует.
  • Невозможность задавать произвольный плоский контур в качестве эскиза для трёхмерного тела существенно ограничивает возможности моделирования.
  • Вопрос, как рационально делать фаски и скругления остается открытым.
  • Уровень стабильности проекта оценивается как бета-версия, что-то серьезное пытаться делать в Antimony пожалуй не стоит, но поиграть будет интересно.

Ожидая негодование инженеров-конструкторов, должен заметить, что такая САПР создана в первую очередь не в практических целях, а из личного спортивного или научного интереса автора. Понятно, что ни о каких чертежах здесь речь не идёт, так как Antimony разработан исключительно для моделирования трёхмерных тел.

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

Название для своей необычный САПР автор выбрал не случайно. Antimony переводится как сурьма — вещество, сочетающее в себе свойства металлов и неметаллов, и расширяющееся при застывании расплава.

Интересно посмотреть программу в работе на скринкасте Мэтта Китера:

GitHub: github.com/mkeeter/antimony
Antimony написан на C++ и Python. В репозитории присутствуют инструкции по сборке из исходников для Linux и macOS, и готовые DMG образы.

Автор: Marsikus

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js