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

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

Входные и выходные слоты
Список элементов для создания комбинаций из них
Тип и структура данных
Направление
Значение по умолчанию
var[]..[]
In
Количество элементов в одной комбинации
Тип и структура данных
Направление
Значение по умолчанию
int
In
Включение/отключение режима, при котором комбинации будут создаваться не только с соседними, но и с исходным элементом
Тип и структура данных
Направление
Значение по умолчанию
bool
In
false

Выдает список полученных комбинаций
Тип и структура данных
Направление
Значение по умолчанию
var[]..[]
Out
Примеры практического применения
Для каждого фасада нужно подобрать по 3 разных цвета. К какому именно элементу применен цвет - не важно. Но нужно понять, сколько можно сделать уникальных сочетаний цветов из предложенного списка.

Вкладка Modify
List.FilterByBoolMask

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

Количество элементов в исходном списке и списке масок должно быть одинаковым и иметь одинаковую структуру! Только в этом случае у программы будет "ответ" для каждого элемента и она сможет корректно отфильтровать список.
Входные и выходные слоты
В этот слот подается список, который мы хотим отфильтровать.
Тип и структура данных
Направление
Значение по умолчанию
var[]..[]
In
В этот слот подается список булевских значений, на основе который будет происходить распределение элементов по двум выходным слотам. Структура списка и количество значений bool, которые мы подаем в данный слот, должны в точности повторять структуру и количество элементов в исходном списке!
Тип и структура данных
Направление
Значение по умолчанию
bool[]..[]
In
Выходной слот для всех элементов, для которых программа нашла значение true в слоте mask
Тип и структура данных
Направление
Значение по умолчанию
var[]..[]
Out
Выходной слот для всех элементов, для которых программа нашла значение false в слоте mask
Тип и структура данных
Направление
Значение по умолчанию
var[]..[]
Out
Примеры практического применения
№
Описание
1.
Получение всех экземпляров стен одного типоразмера
2.
Удаление из списка элемента с минимальным (максимальным) значением
Получение всех экземпляров стен одного типоразмера
В Dynamo для Revit нет базовых нодов, которые позволили бы нам сразу получить список всех экземпляров стен конкретного типоразмера. Чтобы выполнить данную задачу, воспользуемся фильтрацией:
Получим полный список всех экземпляров стен в проекте
Сравним значение имени их типоразмера с эталонным ("PR-150"), получим список значений типа
bool(булевскую маску)Отфильтруем исходный список экземпляров стен, используя полученную маску

Мы получили список всех экземпляров стен типоразмера "PR-150"
Удаление из списка элемента с минимальным (максимальным) значением
Часто из списка элементов нужно исключать те, которые имеют какое-либо минимальное (максимальное) значение своего параметра или свойства. В данном конкретном примере у нас есть список векторов. И необходимо исключить из него самый короткий из них. Для этого мы:
Получаем значения длин векторов;
С помощью нода List.MinimumItem получаем наименьшее значение;
Сравниваем все значения с минимальным;
Получаем маску и фильтруем исходный список элементов.

Вектор с минимальным значением длины попал в выходной слот in, а остальные вектора ушли в out!

Last updated
Was this helpful?