Скрипт Dynamo для IFC арматуры в проекте Revit



В прошлой статье я описала какие параметры нужно заполнить у IFC арматуры в проекте Revit на шаблонах ADSK, чтобы получить верные значения в спецификациях. В этой статье покажу как можно автоматизировать эту задачу и расскажу как написать скрипт Dynamo для решения этой задачи.

Подготовка


Перед началом работы проверяем, чтобы был заполнен параметр марки у основы. Для примера я создала несколько плит с маркой П-1 и П-2

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

Открываем динамо и создаем скрипт.

Получаем IFC арматуру


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

  • Получаем все экземпляры в категории Несущая арматура с помощью нодов Categories и All Elements of Category
  • Переводим их в типоразмеры с помощью нода Element.ElementType
  • Берем у типоразмеров значения параметра ADSK_Арматура семейством нодом Element.GetParameterValueByName
  • В код-блоке сравниваем равно ли это значение единице
  • Полученный список значений true/false передаем в маску для нода List.FilterByBoolMask.

Присваиваем значение параметру ADSK_Метка основы


Дальше нам нужно для полученных элементов получить список элементов-основы. Для этого используем нод из пакета GeniusLoci ElementHost.

  • Получаем список элементов-основы (ElementHost.)
  • Берем у них значение параметра Марка с помощью нода Element.GetParameterValueByName
  • Записываем это значение в параметр ADSK_Метка основы экземплярам арматуры IFC нодом Element.SetParameterByName

Присваиваем значение параметру ADSK_Колчиество основы


Перед тем как присвоить количество основы, его нужно посчитать.

У нас есть конструкция, которая состоит из нескольких элементов (часть главная и часть составная) каждая из которых является элементом-основой. Если мы будем просто считать количество всех основ, то получим не верное значение (для плиты П-2 их будет в два раза больше, так как она состоит из двух элементов). Отличительной особенностью и параметром, на который ориентируется спецификация при подсчете количества основы является параметр ADSK_Масса элемента. Для монолитных конструкций он равен 0. Для главных частей этот параметр равен -1, а для составных -2. Учтем это при составлении скрипта и отфильтруем элементы-основы, у которых ADSK_Масса элемента равна -2(минус двум).

  • Получаем уникальные элементы-основы с помощью нода List.UniqueItems
  • Переводим их в типоразмеры с помощью нода Element.ElementType
  • Берем значение параметра ADSK_Масса элемента нодом Element.GetParameterValueByName
  • В код блоке сравниваем полученные значения со значением -2.
  • Полученный список значений true/false передаем в маску для нода List.FilterByBoolMask и получаем на выходе OUT элементы-основы у которых значение параметра ADSK_Масса элемента равно нулю или единице.
  • У всех элементов на выходе OUT берем у них значение параметра Марка с помощью нода Element.GetParameterValueByName
  • Группируем элементы с помощью нода List.GroupByKey по полученным ключам (значение параметра марка)
  • Нодом List.Count подсчитываем количество элементов в каждой группе, используя уровни списка

Теперь значения количества основы для плиты П-1 и П-2 получены (3 и 4) и можно приступать к присвоению этих значений параметру ADSK_Количество основы IFC арматуры.

  • Элементы, полученные в блоке присвоения параметра ADSK_Метка основы, группируем по ключам (ключами будут марки из того же блока)
  • С помощью нода Element.SetParameterByName присваиваем значение параметру ADSK_Количество основы IFC арматуры
  • В слот Element подаем сгруппированные экземпляры IFC арматуры
  • В слот value подаем значения из нода List.Count

Сохраняем скрипт и используем в проекте.

Видео


Для тех, кто не очень любит читать можно посмотреть

Итоги


В этой статье пошагово рассмотрели как получить с помощью Dynamo значения параметров ADSK_Метка основы и ADSK_Количество основы

При составлении кода использовали нод из пакета GeniusLoci . Если интересно как обойти использование пользовательских пакетов или хотите получить готовый скрипт, пишите в комментарии или в группе канала в телеграмме.

Всем успехов в работе!

Связаться со мной можно на странице контактов

Поддержать

Хотите поддержать автора? Это можно сделать по qr коду ниже


Больше на BIMASKREVIT

Подпишитесь, чтобы получать последние записи по электронной почте.

Добавить комментарий