Вкладка List

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

Вкладка Generate

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

List.Combinations

Описание

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

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

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

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

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

Направление

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

var[]..[]

In

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

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

Вкладка Modify

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

List.FilterByBoolMask

Описание

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

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

Количество элементов в исходном списке и списке масок должно быть одинаковым и иметь одинаковую структуру! Только в этом случае у программы будет "ответ" для каждого элемента и она сможет корректно отфильтровать список.

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

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

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

Направление

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

var[]..[]

In

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

Описание

1.

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

2.

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

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

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

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

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

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

Мы получили список всех экземпляров стен типоразмера "PR-150"

Last updated