Мы используем файлы cookie, чтобы обеспечить лучший сайт.
Хорошо, продолжить показ
Close
REEGIGROUP

Применение связки Autodesk Revit + Dynamo для решения нестандартных задач


Давид Мельников
Инженер РиджиГрупп
Во время работы над моей диссертацией передо мной встала задача обработки и визуализации данных, полученных в ходе эксперимента. В данном случае речь шла о построении графиков температур и влажности для 3 экспериментов, в каждом из которых было минимум 1400 замеров значений более чем 30 параметров. Если бы я решил обработать эти данные вручную, то даже по самым скромным расчетам у меня бы ушло более 2 недель непрерывной работы.

Являясь "уверенным пользователем" Autodesk Revit , и не обладая обширными навыками в программирование в своих поисках я остановился на связке Revit+Dynamo.

Dynamo. И зачем он нужен.

Как говорится на официальном сайте Autodesk:
Dynamo — платформа визуального программирования для проектировщиков с открытым исходным кодом. Она устанавливается вместе Revit.


С помощью скриптов Dynamo проектировщик может автоматизировать повторяющиеся "механические" в своей работе и постараться выйти за рамки базового функционала Revit

Программирование в Dynamo происходит с помощью так называемых библиотек NOD-ов - специальных "блоков" с заранее заложенными в них функциями.

Dynamo и принцип работы

Составляя из NOD-ов логические последовательности мы можем создавать скрипты. Помимо базовой библиотеки нодов, в программу можно добавлять пакеты созданные пользователями.

Работа над скриптом:

В основу написанного мной скрипта лег пакет пользовательских NOD-ов Dynanimator. В частности мне понадобился NOD "Dynanimate Nymetric parameter". Он позволяет создавать серию кадров выбранного в проекте Revit семейства, параллельно изменяя значение его параметров для каждого снимка. Полученные кадры в последствие можно объединять в GIF анимации или короткие видео ролики.
Однако в самом скрипте существует ряд ограничений:
1
С помощью вышеописанного нода можно управлять лишь одним параметром семейства.
2
Статичное положение камеры .
3
Нет возможности задать разрешение снимков.
4
Нод не работает с аннатационными семействами.
5
На 3D виде скрипт работает в разы быстрее.
6
При попытке создание большого количества кадров увеличивается шанс на появление ошибки.
Так как один нод может управлять лишь одним параметром семейства, то мне бы пришлось создавать 37 нодов для каждого параметра семейства отдельно, после чего для каждого из этих 37 нодов указывать имя параметра которым он должен управлять и значение которое он должен этому параметру присвоить.

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

В получившемся скрипте требуется задать только 1 раз: имя переменной (в нашем случае N), диапазон ее изменения, имя вида в Revit с которого будут делаться снимки, число кадров, и путь к папке в которой будут храниться получившиеся снимки.
В dynamo скрипт выглядит так:
Создание семейства
Получать значения из массива данных я решил с помощью таблиц поиска. Таблиц поиска. Таблицы поиска (Lookup table) представляют собой текстовый файл формата csv. , подгруженный в семейство. Принцип работы таблиц поиска основан на том, что исходя из значений одного или нескольких параметров, находится строка данных соответствующая этим значениям. Например, в нашем случае, если параметр N равен 5, то в таблице поиска найдется строка с таким же значением N, и значения остальных параметров в семействе будут взяты из этой строки.

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

Перед тем как экспортировать исходные данные из Excel в csv. файл, я прописал в заголовке каждого столбца таблицы, кроме первого я прописал имя переменной и тип данных - Длина в виде формулы: ИМЯ_ПАРАМЕТРА##ДЛИНА##МИЛИМЕТР.
Процесс доработки семейства
Для того чтобы максимально упростить процесс создания семейства я его структурировал:
1
Главное "материнское" семейство
которое и будет в итоге подгружено в проект для создания анимации. В главное семейство вложена таблица поиска со всеми исходными данными. Это сделано для того, чтобы в случае необходимости внести изменения в исходные данные, заменив всего один файл в главном семействе, не редактируя все вложенные в него семейства по отдельности. В "материнском" семействе созданы все необходимые параметры. С помощью формул формата size_lookup эти параметры связаны с таблицей поиска и номером замера/кадра N. Смоделированы все части, не изменяющиеся при работе скрипта. Так как скрипт не работает с аннатационными семействами, вся текстовая информация представлена в виде "Текста модели"
2
Вложенные семейства
Повторяющиеся части семейства, которые в ходе работы скрипта будут подвергаться изменениям. Обладают лишь необходимыми им параметрами. Так как при создании таблиц поиска всем параметрам был присвоен тип данных Длина, то я могу использовать их значения для параметризации размеров вложенных семейств. Единственное, что мне понадобится вдобавок к остальному, так это еще один параметр экземпляра, чтобы при перемножении на него исходного значения (например температуры) получать небходмую мне величину длины в нужном мне масштабе. При загрузке в главное семейство на параметры вложенных семейств накладываются зависимости от одноименных параметров в главном семействе, которые в свою очередь связаны с таблицей поиска и зависят от
Я искренне надеюсь, что в этой статье мне удалось показать вам, что при комплексном подходе связку продуктов Autodesk Revit + Dynamo можно использовать для решения самых различных задач, которые на первые взгляд даже не имеют с ними ничего общего.

С результатами работы можно, документом и скриптом можно ознакомиться перейдя по ссылке

Ваши контакты
Оставьте ваши контактные данные, чтобы мы могли связаться с вами в самое быстрое время
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности
Курсы по Revit MEP
Мы находимся
+7 (923) 170 1404
info@reegigroup.com
630090, Новосибирск,
ул. Проспект Академика Лаврентьева 6/1, офис 716