Основными структурами данных в Grasshopper являются список и дерево данных. Эти структуры всегда взаимодействуют друг с другом. Совместная работа двух, трех или более структур (но как правило всё-таки двух) является в определённом смысле сутью работы Grasshopper.
Данная тема требует подробного теоретического раскрытия с объёмной практической частью, ввиду того, что у новичков (даже у пользователей с опытом) отсутствует понимание принципа взаимодействия структур, либо является фрагментарным. Этот урок, разбитый на несколько шагов позволит вам в более полной мере понять данную тему и начать подходить к созданию алгоритмов более осознанно.
В Grasshopper существует три принципа взаимодействия структур:
1) По самому длинному списку или Longest list;
2) По самому короткому списку или Shortest list;
3) Взаимодействие всех элементов или Cross reference.
Рассмотрим данные принципы поочерёдно.
Принципы взаимодействия списков
Часть 1
Часть 2
Часть 3
1) Принцип Longest List
По умолчанию в Grasshopper структуры взаимодействуют по принципу наиболее длинного списка (Longest List). В стандартном наборе для этого даже есть специальный нод:
В подавляющем большинстве случаев использовать его не нужно, так как по умолчанию взаимодействие структур производится по принципу Longest list.
И так, давайте рассмотрим один из примеров, при помощи которого будет более понятно о чём идёт речь. На изображении ниже показано простое арифметическое действие, такое как сложение:
Может возникнуть справедливый вопрос: причём тут списки? Можно сказать, что данном случае складываются два простых числа 5 и 5. В результате суммы мы получаем 10. Где же они списки?
Дело в том, что в Grasshopper понятие списком считается не только набор элементов, но так же и один какой-либо элемент.
Дано: множество дублирующихся полилиний по аналогии с задачей 1 необходимо избавиться от дублирующихся полилиний используя 3 нода.
Подсказка: одним из нодов должен быть key/value search из подраздела Set.
Скачайте файл Grasshopper и постройте скрипт. Видео-ответ к данной задаче появится в ближайшее время. А пока что поломайте голову над её решением. При затруднении пишите в наш общий телеграм чат.
Оцените этот урок и помогите тем самым сделать его лучше.