Блог
Dynamo for Revit: пакетная маркировка стеновых панелей
- 30.06.2018
- Опубликовано: BIMON
- Категория: Полезные советы

В данной статье рассматривается создание простого алгоритма маркировки множества однотипных элементов на примере стеновых сэндвич-панелей. Полученный алгоритм может быть усложнен в соответствии с поставленными в проекте задачами.
Выполнить пакетную маркировку сэндвич-панелей по тому или иному параметру можно с помощью несложного алгоритма Dynamo, описанного в данной статье. Алгоритм позволяет маркировать панели поэтапно, в зависимости от заполнения, что дает возможность контролировать процесс назначения параметра «Марка».
Чаще всего навесные стены из сэндвича моделируют системным семейством «Витраж», выбирая соответствующее заполнение и разрезку стены. Алгоритм применим именно для такого случая.
Итак, в некотором проекте имеем наружные стены и сэндвича толщиной 125 мм:
Заодно посмотрим, какими параметрами обладают эти элементы (это необходимо для следующего шага). Каждая панель имеет 2 пары, казалось бы, идентичных параметров: «Длина» и «Ширина», «Высота» и «Неприсоединенная высота». Причем в некоторых случаях параметры «Ширина» и «Высота» оказываются нулевыми. Почему?
Составив спецификацию панелей, также наблюдаем отсутствие значений этих параметров у некоторых экземпляров. Это панели с вырезами под проем.
Поэтому работу продолжим с параметрами «Длина» и «Неприсоединенная высота» — в зависимости от того, какие панели нужно замаркировать на данном этапе: вертикально или горизонтально смонтированные.
Округлим полученные значения до целых (или до нужного количества знаков после запятой, если, например, необходимо отсортировать и замаркировать панели в зависимости от значения параметра «площадь» — задачи бывают разные).
Далее выделим уникальные типоразмеры панелей и подсчитаем их количество, заодно определив эти элементы (понадобится в дальнейшем) с помощью нода List.AllIndicesOf:
Таким образом, пяти панелям длиной 3250 мм нужно назначить марку, например, «П1». Для начала по числу совпадений длины панелей определим, что уникальных марок будет 54. Составим список этих марок, применив операцию List.LaceLongest. Зная, сколько экземпляров той или иной марки необходимо получить, применяем операцию List.Cycle/