Dynamo: что нового в Python, 3D и нодах
![Dynamo: что нового в Python, 3D и нодах](/uploads/blogs/2020-07/article_24jul20-3_5f1ec3b52b3a1.png)
Dynamo — инструмент визуального программирования с открытым исходным кодом для архитекторов и инженеров-проектировщиков. С помощью скриптов на Dynamo удобно управлять процессом создания BIM-модели, исследуя разные варианты динамики её элементов. Таким образом, Dynamo в 3D-графике органично дополняет функции программного комплекса Autodesk Revit.
![image-0](/uploads/blogs/2020-07/1_5f1eb1f4e482c.png?size=0x-)
В результате автоматизируется проектирование и строительство зданий различного назначения, железнодорожных и автомобильных дорог, трубопроводных и электрических сетей, промышленных и горнодобывающих предприятий. И не только. Например, возможности Dynamo использовались при создании 10 моделей чиллеров Clint компанией холодоснабжения «Ингеохолод». Алгоритм скрипта учёл правила комплектации и позволил быстро специфировать более трёх десятков опций этого сложносоставного оборудования.
В начале июля текущего года сообщество разработчиков Dynamo опубликовало Дорожную карту платформы на ближайшие месяцы. В ней сообщалось о намерении модернизировать код для роста производительности, улучшения графики и удобства использования. Рассмотрим, над какими функциями идёт работа.
Ключевая модернизация — переход от Python 2 до Python 3
![image-0](/uploads/blogs/2020-07/2_5f1eb264c48ae.png?size=0x-)
Python как один из самых популярных скриптовых языков помогает решать множество задач в любом проекте. Так, Dynamo напрямую интегрирует код Python для взаимодействия с API Revit. Ранее это осуществлялось NET-совместимым интегратором IronPython, однако на сегодняшний день его версии для Python 3 отсутствует. Учитывая, что старый движок и новый CPython 3 — концептуально разные, то и портирование кода к версии Python 3 имеет свои нюансы и требует внесения большого количества изменений в код. Вот почему команда прилагает большие усилия, чтобы период замены версий прошёл незаметно для пользователей.
Помимо обновления функций и исправления ошибок в системе безопасности, новый встроенный интегратор CPython даёт доступ к популярным библиотекам NumPy, SciPy, Pandas, Keras и многим другим. Поддержка Python 3 технологий машинного обучения (ML), искусственного интеллекта (AI) и больших данных (Big Datа) создает условия для реализации более широких функциональных возможностей, которые отсутствуют в прежних пакетах Dynamo. Такова причина работы комьюнити над внедрением новой версии Python.
Доступ к Python в Dynamo легко получить как через прежний интегратор IronPython2, так и через новый — CPython3. Оба доступны на Python Scriptу. Соответственно, любой специалист, если пожелает, способен самостоятельно переписать код. В помощь — всплывающие сообщения об ошибках и документация, в которой подробно рассказано о всех изменениях.
Модернизация 3D-графики
Дорожная карта решает проблему 3D-визуализации. В недавнем релизе Dynamo 2.7 отмечено значительное обновление функций трёхмерной графики. Теперь фреймворк Helix Toolkit для фонового рендеринга предпросмотра содержит более современный и производительный 3D-интерфейс, с улучшенными характеристиками.
Наряду с улучшением действующих функций, Helix предлагает и дополнительные преимущества, в частности — лёгкую в обслуживании кодовую базу.
Среди новшеств:
- оптимизация интеграции с хостами;
- модернизация шейдеров и управления зависимостями;
- максимально приближены к реальности освещение объектов и цвета;
- масштабирование вспомогательных объектов;
- рост скорости рендеринга.
![image-0](/uploads/blogs/2020-07/3_5f1eb2ef5402a.png?size=0x-)
Кроме того, в новом улучшенном движке Helix пофикшена довольно досадная ошибка при рендеринге, когда слишком большая графика приводила к сбою Dynamo из-за нехватки памяти. Проблема была решена путём динамического отключения предпросмотра 3D-рендеринга. Однако если для работы необходимо больше рендеринга геометрии, то пользователь может в любой момент отключить предпросмотр или понизить точность рендеринга.
Разработчики Dynamo не останавливаются на достигнутом и в ближайшие месяцы обещают ещё больше новых функций для 3D-визуализации.
Ноды с автозаполнением
По давней просьбе пользователей, в Dynamo 2.7 добавлена возможность выбирать геометрию в фоновом режиме и выделять соответствующий узел при 3D-визуализации.
Ноды визуального скрипта представляют собой часть граф и являются элементами Revit, свойства которых можно редактировать. Они используются для моделирования паритетных отношений между объектами. В таком контексте график состоит из вершин, узлов, соединенных дугами, ребрами или линиями. Сложность в том, что нод много и они взаимодействуют друг с другом. Например, бесплатные расширения DynamoCivil3d, DynamoCore, DynamoRevit имеют много сотен нод. Пользователю неясно, какую из них надо использовать и когда.
Чтобы придать интерфейсу лёгкость восприятия, разработчики добавили функцию автозаполнения узлов. За счёт исключения незадействованных нод, в процессе создания 3D-графики возникает меньше ошибок. Визуализация идёт быстрее и более понятным способом, причём скрипт показывает только контекстно-релевантные параметры.
Также исправлены ошибки автозаполнения Codeblock и Node2Code, что повысило качество ElementResolver. Графика стала более плавной и последовательной.
В целом, модернизация выходит за рамки семантического управления версиями, которого обычно придерживался Dynamo. В результате на порядок выросла производительность рабочего процесса.
Дорожная карта Dynamo содержит ещё много приятных сюрпризов. Большинство устаревших компонентов разработчики исключили из новой версии. Так что, в скором времени работа с платформой станет ещё проще, согласованнее, а её функции будут полностью соответствовать современным запросам специалистов к 3D-визуализации.