BIM Planet | Docs
github.onlinetelegram
Энциклопедия визуального программирования v0.1.6
Энциклопедия визуального программирования v0.1.6
  • 🖐️Добро пожаловать!
  • О разделе
  • Dynamo
    • 🧩Основы Dynamo
      • Общие вопросы
  • 🧩Библиотека узлов Dynamo
    • Базовые ноды Dynamo
      • Вкладка List
    • Revit
      • Вкладка Selection
    • Civil 3D
    • Пакеты узлов
  • Разное
    • ❓ЧаВо
    • О нас
    • Глоссарий
    • Журнал изменений
  • Ссылки
    • dynamobim.org
    • bimpanet.org
Powered by GitBook
On this page
  • Вкладка Generate
  • List.Combinations
  • Вкладка Modify
  • List.FilterByBoolMask

Was this helpful?

  1. Библиотека узлов Dynamo
  2. Базовые ноды Dynamo

Вкладка List

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

PreviousБазовые ноды DynamoNextRevit

Last updated 5 years ago

Was this helpful?

Вкладка Generate

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

List.Combinations

Описание

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

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

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

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

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

Направление

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

var[]..[]

In

Количество элементов в одной комбинации

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

Направление

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

int

In

Включение/отключение режима, при котором комбинации будут создаваться не только с соседними, но и с исходным элементом

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

Направление

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

bool

In

false

Выдает список полученных комбинаций

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

Направление

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

var[]..[]

Out

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

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

Вкладка Modify

На вкладке 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 нет базовых нодов, которые позволили бы нам сразу получить список всех экземпляров стен конкретного типоразмера. Чтобы выполнить данную задачу, воспользуемся фильтрацией:

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

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

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

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

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

Часто из списка элементов нужно исключать те, которые имеют какое-либо минимальное (максимальное) значение своего параметра или свойства. В данном конкретном примере у нас есть список векторов. И необходимо исключить из него самый короткий из них. Для этого мы:

  1. Получаем значения длин векторов;

  2. С помощью нода List.MinimumItem получаем наименьшее значение;

  3. Сравниваем все значения с минимальным;

  4. Получаем маску и фильтруем исходный список элементов.

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

🧩
С увеличением числа цветов возрастает количество их уникальных сочетаний
Проверка списка чисел на четность. В in попадают четные числа, в out - нечетные
2020 © BIM Planet