Вкладка List

Ноды по работе со списками. Списки - это коллекции объектов (чисел, строк, элементов Revit, других списков), имеющие простую или сложную структуру.

Вкладка Generate

circle-info

Вкладка Generate предназначена для генерации новых списков. Здесь можно создать новый пустой список, объединить существующие списки в один новый, а также сгенерировать числовую последовательность.

List.Combinations

Описание

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

circle-info

Разный порядок элементов в одной комбинации не делает ее уникальной. Если брать пример выше, то мы не увидим две комбинации вида ["A","B"] и ["B","A"], на выходе данный нод выдаст лишь одну из них.Чтобы уникальность порядка элементов в комбинации тоже учитывалась, следует использовать другой нод -List.Permutations.

Входные и выходные слоты

Список элементов для создания комбинаций из них

Тип и структура данных

Направление

Значение по умолчанию

var[]..[]

In

Примеры практического применения

Для каждого фасада нужно подобрать по 3 разных цвета. К какому именно элементу применен цвет - не важно. Но нужно понять, сколько можно сделать уникальных сочетаний цветов из предложенного списка.

С увеличением числа цветов возрастает количество их уникальных сочетаний

Вкладка Modify

circle-info

На вкладке Modify расположены ноды, которые берут исходный список и модифицируют его тем или иным образом. Например, выкидывают из списка каждый второй элемент, убирают элементы из списка по какому-либо правилу, модифицируют его структуру (делают более плоским или наоборот).

List.FilterByBoolMask

Описание

Один из самых распространенных нодов по фильтрации списков. Он по очереди перебирает все элементы списка и каждый из них помещает либо в слот in, либо в слот out. Решение о том, в какой из двух слотов отправить элемент узел принимает на основе списка из значений типа bool, в котором для каждого элемента есть ответ "да или нет" (т.е. отправить ли элемент в in или в out).

circle-info

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

Проверка списка чисел на четность. В in попадают четные числа, в out - нечетные
circle-exclamation

Входные и выходные слоты

В этот слот подается список, который мы хотим отфильтровать.

Тип и структура данных

Направление

Значение по умолчанию

var[]..[]

In

Примеры практического применения

Описание

1.

Получение всех экземпляров стен одного типоразмера

2.

Удаление из списка элемента с минимальным (максимальным) значением

Получение всех экземпляров стен одного типоразмера

В Dynamo для Revit нет базовых нодов, которые позволили бы нам сразу получить список всех экземпляров стен конкретного типоразмера. Чтобы выполнить данную задачу, воспользуемся фильтрацией:

  1. Получим полный список всех экземпляров стен в проекте

  2. Сравним значение имени их типоразмера с эталонным ("PR-150"), получим список значений типа bool (булевскую маску)

  3. Отфильтруем исходный список экземпляров стен, используя полученную маску

circle-check

2020 © BIM Planet

Last updated