Принципы взаимодействия структур
Основными структурами данных в Grasshopper являются список и дерево данных. Эти структуры всегда взаимодействуют друг с другом. Совместная работа двух, трех или более структур (но как правило всё-таки двух) является в определённом смысле сутью работы Grasshopper.

Данная тема требует подробного теоретического раскрытия с объёмной практической частью, ввиду того, что у новичков (даже у пользователей с опытом) отсутствует понимание принципа взаимодействия структур, либо является фрагментарным. Этот урок, разбитый на несколько шагов позволит вам в более полной мере понять данную тему и начать подходить к созданию алгоритмов более осознанно.
В Grasshopper существует три принципа взаимодействия структур, такие как списки:
1) По самому длинному списку или Longest list;
2) По самому короткому списку или Shortest list;
3) Взаимодействие всех элементов или Cross reference.

Рассмотрим данные принципы на примере взаимодействия двух точек и списка точек.
Обратите внимание на изображении выше, что в списке, поданного во входной разъём List есть повторяющиеся элементы, а конкретно цифры 1 и 4. В Set мы получаем список уникальных значений без повторяющихся цифр. В Map выводится карта индексов элементов List. Map может быть полезен в дальнейшем для обращения к изначальному списку.

В следующем примере в качестве элементов List подаётся текстовый список:
Обратите внимание на повторяющиеся значения элементов List. На первый взгляд невозможно понять какие элементы содержатся в списке. Фрагмент списка содержит текстовые значения Apple, Orange и Kiwi, однако нельзя быть уверенным, есть ли иные элементы. Список может быть очень большим, например длинной в 1000 элементов и более. Так каким же образом понять какие элементы содержатся в нём? В таком случае Create Set позволяет вычислить уникальные значения.
В конечном итоге в списке уникальных значений всего 3.

Так же интересной задачей может быть исключение дублирующихся точек. Обычно для этих целей используется нод Cull Duplicates или нод из плагина Kangaroo 2 Remove duplicate pts. Однако данную задачу можно решить при помощи Create Set. В некоторых случаях, возможно, это будет отличным решением.

Например, есть n-ое количество дублирующихся точек. В окне Rhino невозможно увидеть где точки дублируются, а где нет:
Принципы взаимодействия списков
При визуализации списка точек при помощи панели можно увидеть, что действительно, в списке есть дублирующиеся точки. Длина списка = 40 точкам, хотя на экране Rhino всего 14 точек.
Для избавления от дубликатов достаточно провести список точек через Create Set:
Часть 1
Часть 2
Часть 3
Задача 1
Уровень задачи: средний
Дано: дублирующиеся линии. На изображении кажется, что всего 4 линии, но их на самом деле намного больше, так как линии наслаиваются друг на друга. В окне Rhino на глаз это нельзя определить.
Необходимо: при помощи Create Set избавиться от дубликатов, чтобы в итоге осталось только 4 линии.
Скачайте файл Grasshopper и решите в нём задачу.
При затруднении смотрите видео ответ:
Задача 2
Уровень задачи: средний +
Автор задачи : Латентный Сантехник
Дано: множество дублирующихся полилиний по аналогии с задачей 1 необходимо избавиться от дублирующихся полилиний используя 3 нода.

Подсказка: одним из нодов должен быть key/value search из подраздела Set.
Скачайте файл Grasshopper и постройте скрипт. Видео-ответ к данной задаче появится в ближайшее время. А пока что поломайте голову над её решением. При затруднении пишите в наш общий телеграм чат.
Оцените этот урок и помогите тем самым сделать его лучше.
Контакты
Время работы
  • Понедельник - пятница
  • с 10 до 19 часов
Подпишитесь на еженедельную рассылку
© 2022 SKY ARCH SCHOOL
ИП Аюпов АМ. Все права защищены