Dynamo autodesk что это
Dynamo — платформа визуального программирования для проектировщиков с открытым исходным кодом.
Представляем Dynamo Primer — исчерпывающее руководство по визуальному программированию в Autodesk Dynamo. Это активный проект, целью которого является распространение сведений по основам программирования. Здесь содержатся практические советы по проектированию на основе правил, рассматриваются такие темы, как работа с вычислительной геометрией, применение программирования в различных направлениях деятельности, а также многие другие возможности платформы Dynamo.
Преимущество Dynamo заключается в широком спектре поддерживаемых операций, связанных с проектированием. Dynamo предлагает широкий спектр возможностей по началу работы.
- Познакомьтесь с понятием визуального программирования.
- Объедините рабочие процессы из разных программ.
- Участвуйте в жизни активного сообщества пользователей, приглашенных участников и разработчиков.
- Разрабатывайте проект на платформе с открытым исходным кодом, чтобы способствовать его развитию.
Нам нужно руководство по работе с Dynamo, отвечающее потребностям пользователей на всех перечисленных уровнях, от новичков до опытных. Это и есть Dynamo Primer.
Данное руководство включает главы, составленные Mode Lab. В этих главах основное внимание уделяется принципам, которые позволят вам приступить к разработке собственных визуальных программ в Dynamo, а также полезным советам по повышению эффективности использования Dynamo. Из этого руководства вы сможете получить следующие сведения.
- Контекст: что подразумевается под визуальным программированием и какие принципы необходимо изучить для начала работы в Dynamo
- Начало работы: как получить Dynamo и создать первую программу
- Что входит в программу: каковы функциональные компоненты Dynamo и как их использовать
- Компоновочные блоки: что такое данные и каковы основные типы данных, которые можно использовать в программе
- Геометрия для проектирования: как работать с геометрическими элементами в Dynamo
- Списки, списки, списки: как упорядочивать и координировать структуры хранения данных
- Код в узлах: как расширить возможности Dynamo путем добавления собственного кода
- Вычислительные операции BIM: как использовать Dynamo с моделью Revit
- Пользовательские узлы: как создать собственные узлы
- Пакеты: как предоставить доступ к инструментам другим участникам сообщества
Это самое интересное время для изучения и развития приложения Dynamo, а также для работы с ним. Начнем!
Открытый исходный код
Как запускать скрипты
Есть два способа: из самого Динамо и из Проигрывателя Динамо. Для новичка проще пользоваться Проигрывателем. Запускаете его, указываете папку, где лежат скрипты, а потом нажимаете на Play у нужного скрипта. Также в Проигрывателе можно указывать некоторые входные данные нажатием на кнопку «калькулятор». Я её так называю, я хз, что там изобразили авторы на самом деле.
Во входных данных можно изменить, например имя параметры, в которые будут записываться конечные данные или указать путь к файлу Эксель в который будет выгружаться информация.
Второй способ — запустить полноценный Динамо, открыть в нём скрипт и нажать внизу слева кнопку «Запустить».
Плюсы Проигрывателя — всё разом под рукой, можно удобно вводить данные. Минус — скрипты в нём обрабатываются дольше, а если выдаётся ошибка, не сразу можно понять, это что-то критичное или нормальное. Об этом следующий пункт.
Что это такое
Dynamo — это среда для визуального программирования. «Визуальное» означает, что вам не нужно писать программный код. По крайней мере большую часть времени. Скрипты в Динамо создаются с помощью нодов — узлы, или блоки, которые вы соединяете между собой, чтобы получился алгоритм. То, чем соединяются ноды, обычно называют по-простому лапшой.
Вот пример элементарного алгоритма: суммирование двух чисел. Я взял два нода для ввода числе, нод, который суммирует, и нод, который показывает результат. Соединил всё и получил сумму. Алгоритм наглядный и понятный.
А вот алгоритм чуточку сложнее.
На картинке выше произошло следующее: в ноде «Categories» из выпадающего списка я выбрал категорию «Трубы». Дальше из выхода этого нода вытянул лапшу и подключил её ко входу нода «All Elements of Category». Этот нод получает список всех элементов указанной категории. То есть я получил список всех труб, которые есть в файле Ревита.
Далее воспользовался нодом Element.GetParameterValueByName — Элемент.ПолучитьЗначениеПараметраПоИмени. У этого нода два входа и один выход. На верхний вход подаю элементы — список труб, на нижний вход — имя параметра, данные которого хочу получить. На выходе получаю значения параметр «Имя системы». Каждая позиция в списке соответствует трубе в проекте.
Стиль написания без пробелов и с каждым словом с большой буквы — ВотТакойСтильНаписания — называется Camel Case, то есть верблюжий регистр. Строки получаются типа горбатые.
Нод «Code Block» — это нод, в который можно вписывать числа, текст и программный код на языке Design Script. В данном случае в кавычках вписал текст с названием параметра.
Вот это и есть визуальное программирование. Вы соединяете лапшой ноды, в итоге получается определённый алгоритм.
Приложение
Приложение Dynamo — это программное обеспечение, которое можно скачать и использовать в однопользовательском режиме песочницы либо в качестве подключаемого модуля для других программ, таких как Revit или Maya. Ему можно дать следующее определение.
Это средство визуального программирования, в равной степени доступное как для программистов, так и для специалистов, не связанных с программированием. С помощью Dynamo можно создавать визуальные сценарии для определенных режимов работы, образовывать пользовательские элементы логики и писать сценарии с использованием различных текстовых языков программирования.
- Ознакомьтесь с примерами использования Dynamo в Revit.
- Скачайте установщик.
Процесс
Установив приложение Dynamo, вы получаете доступ к процессу визуального программирования, который позволяет создавать пользовательские алгоритмы путем определения связей между элементами, образующими последовательность действий. Эти алгоритмы можно применять для широкого спектра задач — от обработки данных до создания геометрии, — и все это в реальном времени без написания единой строчки code .
Чтобы создавать визуальные программы, просто добавляйте элементы и соединяйте их друг с другом.
Проект Dynamo Primer
Dynamo Primer — проект с открытым исходным кодом, который был инициирован Мэттом Ензыком (Matt Jezyk) и рабочей группой по разработке Dynamo в компании Autodesk.
Первая версия этого руководства была составлена специалистами Mode Lab. Мы выражаем им благодарность за то, что положили начало этому ресурсу.
Обновление этого руководства в соответствии с изменениями, внесенными в Dynamo 2.0, было выполнено Джоном Пирсоном (John Pierson), Parallax Team.
2. Настройка проекта библиотеки классов
Сложным является вопрос хранения внешних зависимостей. В процессе программирования под Renga используется по-существу, единственная "COM-библиотека" RengaCOMAPI.tlb. В свойствах проекта в VS её нельзя настроить на копирование локально, а проект Dynamo будучи установленным не будет знать где она лежит.
Здесь я вынужденно ввожу первое условие: по абсолютному файловому пути C:\Work\RengaCOMAPI.tlb . должна лежать эта библиотека. К слову, распространять её в составе пакета (онлайн-публикация) я также не имею формального права от Разработчиков программы .
Безусловно, можно распространять пакет нодов под Renga не как стандартный пакет, а как полноценный установщик, который найдет директорию с установленной Renga и положит туда нужные файл, но я так делать во первых не умею, во вторых не буду. Пока что.
Где взять скрипты
Платформа
Приложение Dynamo задумывалось как средство визуального программирования для проектировщиков, в котором можно создавать инструменты для работы с внешними библиотеками или любой программой Autodesk с API. Dynamo Sandbox позволяет создавать программы в среде песочницы, но экосистема, в которой существует Dynamo, постоянно пополняется и расширяется.
Исходный код проекта является открытым, благодаря чему расширять функциональность приложения можно настолько, насколько хватит фантазии. Посетите страницу проекта Dynamo на сайте GitHub и просмотрите текущие проекты пользователей, занимающихся адаптацией Dynamo.
Просматривайте интересные проекты, создавайте Fork-копии и адаптируйте Dynamo под свои потребности.
Лицензия
Copyright 2019 Autodesk
Лицензировано Apache License, Version 2.0 ("Лицензия"); использовать только в совокупности с Лицензией. Копию Лицензии можно получить по следующему адресу:
За исключением случаев, предусматриваемых соответствующим законом или заключенным в письменном виде соглашением, программное обеспечение, распространяемое на условиях Лицензии, распространяется "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО УСЛОВИЙ И ГАРАНТИЙ, выраженных в явной форме или подразумеваемых. Текст Лицензии содержит точные разъяснения разрешенного и запрещенного использования программных продуктов на условиях Лицензии.
Короткая обзорная статья для тех, кто только-только постигает мир других м. методик работы в Ревите, в частности — осваивает скрипты Динамо.
Благодарности
Выражаем особую благодарность Иэну Кио (Ian Keough) за то, что положил начало проекту Dynamo.
Мы благодарим Мэтта Ензыка, Иэна Кио, Зака Крона (Zach Kron), Рэйсел Уильямс (Racel Williams) и Колина МакКрона (Colin McCrone) за активную совместную работу и возможность принять участие в широком спектре проектов Dynamo.
Открытый исходный код
3. Подключение к проекту Renga
Верхний уровень любого API в отношении десктопной программы занимает инициация документа/модели. Поэтому с него мы и начнем, а именно, с инициации Application.
Может быть по крайней мере 3 ситуации:
- Программа не запущена вообще
- Программа запущена, но не на том проекте/на стартовом виде
- Проект уже запущен в одном из процессов программы
Для случая 1 есть пример в справке здесь . Сложней с 2 и 3 - когда надо перехватить запущенный процесс Renga и открыть/перейти к нужному проекту. Процесс обращения к активному процессу Renga описан здесь .
Окей, с API понятно, а как это воплотить в Dynamo? Хах, а вот тут начинается уже интересное. В явном виде передавать интерфейсы (а объекты класса Application, Project, Model и пр. являются именно интерфейсами) в нодах Dynamo не получится. Следовательно, необходимо инициализировать во внутренних методах объекты проекта/модели и обращаться к ним при выполнении соответствующих методов позже.
Я реализовал это в виде класса DynDocument, где расположил объекты интерфейса - приложение и проект.
Примечание : конструкция private DynDocument() только лишь для того, чтобы в Dynamo оно не светилось как нод*
Dynamo — это инструмент, который может стать в ваших руках буквально чем угодно. Вы можете использовать приложение Dynamo как самостоятельное решение либо в связке с программным обеспечением Autodesk, заниматься с его помощью визуальным программированием, а также принимать участие в жизни обширного сообщества пользователей и профессиональных разработчиков.
Что может Динамо
Примеры задач, которые можно решить в Динамо (взял в методичке Александра Попова):
- Импорт/Экспорт Excel, txt, csv, jpeg
- Создание криволинейной геометрии
- Копирование и перемещение элементов в Revit
- Создание элементов в Revit (Стены, Перекрытия, Колонны, Балки, Размещаемые элементы по точке/по нескольким точкам, Текст, Элементы 2D-узла)
- Создание видов, листов, добавление видов на листы
- Добавление общих параметров в проект, создание общих параметров
- Создание и редактирование cпецификаций
- Заполнение/Редактирование/Удаление параметров
- Открытие окон запроса для заполнения полей/внесения информации
- Создание папок на компьютере
- Копирование/удаление файлов на компьютере
- Связь с базой данных SQL
- Открытие файла Revit
- Пакетная печать листов
- Армирование элементов в Revit
- Преобразование элементов DWG в элементы Revit
- Редактирование файла журнала Revit
- Управление рабочими наборами
- Создание статических спецификаций и схем из 2D-линий, 2D-элементов и текста
Большинство сложных задач решается не одними нодами, а ещё и использованием программного кода в Python, для него есть свой отдельный нод. Но для новичков, которые только приступили к изучению, надо сначала разобраться с нодовыми алгоритмами, а уже потом браться за программирование.
Программное обеспечение и ресурсы
Dynamo: текущая стабильная* версия Dynamo — 2.1.0.
- Примечание. Начиная с версии Revit 2020, Dynamo включается в комплект установки Revit, поэтому устанавливать Dynamo вручную не требуется. Подробные сведения см. в этом блоге.
DynamoBIM: веб-сайт DynamoBIM — это лучшее место для получения дополнительной информации, поиска обучающих материалов и общения на форумах.
Контакты: если вы обнаружите какую-либо проблему в этом документе, сообщите нам об этом.
1. Загрузка и установка Dynamo Core
Здесь всё просто до безобразия -- качаем скомпилированную Core-версию с данного раздела , распаковываем и по сути сборка Core у нас готова.
Стоит упомянуть разве что про зависимость конкретной версии Dynamo-Core от версии .NET Framework. Так как Renga (к которой я и собираюсь "прикручивать" сборку имеет примеры API на .NET Framework 4.8, то я и качаю Core 2.12 (текущая предпоследняя стабильная). Вообще говоря, 4.8 начался вроде с Core 2.8 . но тут я следовал принципу "последняя актуальная стабильная",
Где взять Динамо
Если вы работаете в Ревите 2020, то Динамо уже включена в программу. Идите на вкладку «Управление» → справа на ленте будут две кнопки в блоке «Визуальное программирование»:
Если вы работаете в версиях младше 2020, то Динамо нужно скачать. Сделать это можно со специального сайта со сборками всех версий Динамо — Динамобилдс . Там будут две таблицы: Most stable и Daily. Вам нужны Most Stable — наиболее рабочие.
А теперь немного танцев с бубном. Если у вас установлена версия Ревит 2016, вы в ней работаете + собираетесь пользоваться Динамо, и к тому же установлен Ревит 2019, где вам тоже нужно Динамо, то надо устанавливать версии Динамо в определённом порядке:
- Сначала установить Динамо 1.3.2 — это последняя версия, которую поддерживает Ревит 2016
- Далее установить Динамо 2.0.0+ — это будет версия для Ревит 2019
В 2017 и 2018 версии при запуске программы будет выбор, какую версию Динамо использовать, 1.3.2 или 2.0.0+
Откуда такие сложности и чем отличаются версии 2.0 и 1.3? Всё просто, с 2019 Ревита Динамо 1.3.2 не поддерживается и если установить 1.3.3, то она удаляет предыдущие версии, в итоге 2016 Ревит остаётся без Динамо. Вот и приходится идти на такие ухищрения.
Если вы только начинаете работу в Динамо, то ставьте версию 2.0.0+. Всё равно это наиболее актуальная сборка да и вряд ли вы пользуетесь 2016 версией Ревита. В то же время некоторые скрипты версий до 2.0 не будут нормально работать в свежем Динамо, поэтому какую-нибудь версию 1.3 поставить тоже стоит.
В Ревите 2015 Динамо находится на вкладке Надстройки.
Что может пойти не так
До хрена всего. Но пугаться не надо, всё решаемо. Или нет. Всегда можно нажать Ctrl+Z и вернуть, как было. Несмотря на длинный список того, что может пойти не так, не бойтесь, просто продолжайте ковыряться, потом будет легче. Проверено на себе. Поехали по возможным ошибкам:
1. Вы укажете путь Проигрывателю Динамо к папке со скриптами, а он покажет, что в папке ничего нет. Проверьте расширение файла скрипта. Для Ревита 2017 оно должно быть .DYN, а с 2018 версии — .dyn. В 2015 версии вроде бы с .dyn работает.
2. Скрипт может выдать ошибку. Такое бывает, но это не всегда означает, что скрипт выполнился неверно. Иногда это нормально, потому что где-то оказался пустой список, какой-нибудь оператор умножения из-за этого офигел, но раз список был пустой, то не было объектов для обработки. А значит, что либо объектов вообще не было и скрипт сработал вхолостую, либо объекты, которые подходили под условия обработались, и всё норм.
Новичку придётся проверять это в Ревите: всё ли заполнилось и посчиталось или нет. Более опытный динамщик уже полезет в сам скрипт и будет смотреть ошибки там.
Иногда Скрипт нужно запустить 2-3 раза, чтобы он сработал нормально и заполнил все параметры. Попробуйте несколько раз запустить, если ошибка не уходит, то всё, косяки в скрипте точно есть.
3. Вы скачали скрипт, а в нём были пакеты, которые у вас не установлены. Это прям самый большой косяк Динамо. С одной стороны, в Динамо можно подгружать сторонние пакеты от других разработчиков, и это неслабо расширяет функции, но в то же время, если у вас не просто нет этого пакета, а даже просто версия не та, то всё может пойти по гениталиям. По-хорошему, эти пакеты должны интегрироваться в ваш скрипт и не зависеть от того, что у вас там установлено дополнительно. Но вот как сделали, так и сделали. Более того, некоторые скрипты из версий 1.3 не работает нормально в 2.0+
Если зайти в скрипт, который не нашёл какой-то пакет, то этот блок скрипта будет помечен красным цветом (а иногда и надписью ошибки с восклицательным знаком). Проблема в том, что не всегда можно легко понять, из какого пакета этот узел. Поэтому если можно сделать без чужого блока, лучше делать без него стандартными методами. Либо всегда подписывать, что за нод, из какого пакета и его версию.
Вот такой узел-стопочка — это узел из стороннего пакета. Если он не загружен, то Динамо пометит его ошибкой
Вот такой узел-стопочка — это узел из стороннего пакета. Если он не загружен, то Динамо пометит его ошибкой
Пакеты загружаются из меню наверху. Откроется окно, надо подождать, пока подгрузиться сервер, а потом вводить название пакета. Самые популярные: Clockwork, Bakery, Archi-lab, Rhythm, Ampersand. Советую их скачать сразу, как только начнёте писать что-то своё, хотя всегда помните об их двуличности.
Пользователи Autodesk Revit давно оценили насколько использование Dynamo позволяет оптимизировать работу и значительно расширить функционал Revit. Dynamo – это среда визуального программирования которая дает возможность обращаться к объектам чертежа, к их свойствам и на основе полученных данных генерировать отчеты, создавать новые объекты и т.д.
Фактически, если раньше для автоматизации такого рода задач требовалось привлечение высококвалифицированного программиста и разработка технического задания с формулировками ожидаемых результатов, то теперь пользователь, освоивший логику работы модуля, способен самостоятельно за короткое время получить результат, который ему необходим. При этом, без знания каких-либо языков программирования.
Конечно необходимо понять логику Dynamo: как происходит обращение к объектам чертежа, зачем формируются списки, зачем производить преобразование списков и какие есть инструменты работы с ними, как подготовить результаты и вывести их в отчётную таблицу Excel или отобразить вновь созданные объекты на чертеже.
В апреле 2019 года возможность использования инструментов Dynamo появилась и в новой версии Autodesk Civil 3D 2020.
Autodesk Dynamo: начало работы
Начнем с того, как начать работу. Модуль Dynamo для Civil 3D не устанавливается вместе с дистрибутивом, он доступен для скачивания в личном кабинете в разделе «Обновления продукта».
После установки на закладке «Управление» появляется кнопка обращения к модулю.
Autodesk Dynamo: основные функции
Какие функции реализованы на сегодняшний день: функции выбора объектов – трасс, коридоров, получение пикетажа трассы, перестроение коридора, получение базовых линий коридора, получение характерных линий коридора, координат, отметок, конструкций, получение областей коридора.
Это далеко не весь перечень команд, но в текущей версии модуля в основном реализованы функции чтения информации об объектах Civil 3D, их создание программным способом пока не предусмотрено. Но вместе с Dynamo для Civil 3D Вы фактически получаете еще и Dynamo для AutoCAD.
В результате, у Вас есть возможность создавать блоки, текст, полилинии, солиды и другие объекты AutoCAD, которые могут решить многие вопросы с оформлением чертежей и созданием новых объектов, на основе данных проекта Civil 3D, например, для передачи их в среду Autodesk Navisworks с целью координации работ по проекту.
Возможности Dynamo
Несколько примеров, что можно реализовать с помощью Dynamo для Civil 3D.
1. Разрезать солиды, полученные из коридора по пикетам. Обычно при получении тел из коридора мы получаем один солид на одну сторону на всю протяженность коридора. Такой солид имеет информацию о объеме. Информация полезная, но часто пользователи хотят видеть объемы от пикета до пикета. Конечно это можно реализовать если настроить коридор, настроить извлечение из него тел и т.д., но можно просто написать скрипт в Dynamo, и он будет делать нарезку с той частотой которую вы ему зададите. В итоге, например, в Navisworks можно будет спокойно выбрать нужный участок трассы и получить по нему информацию о объемах.
2. Получение списка отметок по пикетам коридора. Можно вывести в файл Excel пикетаж и отметки по оси трассы, то же самое можно сделать, например, для отметок по характерным линиям коридора.
3. Другой пример это расстановка опор вдоль трассы. Достаточно получить данные из проекта по трассе. В файле Excel заполнить столбцы с пикетажом размещения опор, расстояние отступа от оси, наименование блока, и мы имеем готовый результат на чертеже.
Это лишь несколько возможных применений модуля Dymano для Civil 3D. По мере его освоения пользователями в сети будут появляться готовые ноды (программы для Dynamo) с различным функционалом, как уже произошло в среде Revit. Если Вы не готовы ждать, то приходите на курсы в НТЦ Конструктор и мы поделимся с Вами своим опытом и научим использовать Dymano для Civil 3D.
Autodesk Dynamo в общем случае является OpenSource решением со своим Community, разработанный (?) под эгидой Autodesk. Dynamo поставляется как так называемая Core версия (open-source часть) и Core+"Internal" версия (под ряд продуктов Autodesk).
Сообщество
То, чем Dynamo является сегодня, — во многом заслуга постоянного круга активных пользователей и профессиональных программистов, помогающих приложению развиваться. Станьте участником нашего сообщества: читайте блог, публикуйте результаты своей работы в галерее и обсуждайте Dynamo с другими пользователями на форуме.
Здесь же ссылки на последующие части
Примечание : "Internal" - это сугубо моё название, в реальности оно называется как-то по другому.
К чему я веду? К возможности подключения Core-версий к иным САПР, не на платформе Autodesk. Собственно говоря, Core-версия ни к какой САПР не привязана, это самостоятельное приложение.
Всё, что нам нужно - это подключить к Dynamo библиотеку, которая будет инициализировать API конкретной САПР. При этом реализация процесса будет состоять из двух важных частей:
- инициация подключения к САПР из-под Dynamo, в основном, как к COM-объекту (выстраивание логики процесса САПР, пространств модели и пр.);
- написание отдельных методов, позволяющих получать свойства/создавать что либо в пространстве модели данной САПР.
Читайте также: