3.9. Member index
Member index — нахождение индекса элементов одного множества, встречающихся в другом множестве.
У нода Member index два входных разъёма, два выходных.
1) В Set - подаются данные, в котором мы ищем индексы элементов;
2) В Member - подаются те элементы, индексы которых необходимо найти в Set.

На выходе в Index выводятся индексы элементов, поданных в Member. Count — количество. Специфика в том, что в данный нод можно подавать только численные значения. С текстами данный нод не будет работать.

В чём смысл работы нода Trim tree?

1) Иногда при взаимодействии двух структур в виде дерева данных (и списка) необходимо следить за тем, чтобы их структуры (или например длины списков) были идентичными, поэтому дерево одной из структур приходится привести в необходимый вид разными способами, например при помощи подрезки дерева;
2) После работы некоторых нодов происходит углубление дерева, поэтому необходима своего рода постобработка в виде упрощения его структуры;
3) При необходимости упрощения структуры дерева в сложных скриптах целесообразно пользоваться нодом Trim tree.

На изображении ниже приведён небольшой пример: в структуре дерева данных находятся 9 объектов Closed Brep. Они сгруппированы по 3 в каждой ветке. Пути веток описываются как {0;0;0}.
После того как мы подключим Trim Tree к панели, чтобы посмотреть каков результат подрезки, то можно увидеть следующее:
Во-первых всё слилось в один список: группировка по три Closed Brep удалилась и во-вторых изменился путь с вида {0;0;0} на {0;0}. Был убран один уровень дерева и структура хранения была изменена с более сложной на более простую. В итоге мы получили список, имеющий, однако, путь {0;0}, что в некоторых случаях не очень хорошо.

Как было сказано в начале, во входном разъёме Depth по умолчанию установлено значение = 1. Это значит, что удаляется один уровень. Если же установить значение = 2, к примеру при помощи нода Number Slider, то вы получите удаление ещё одного уровня дерева:
Обратите внимание на изменение написания пути. Теперь он описывается видом {0}. Изначально путь записывался как {0;0;0}, после первой подрезки он стал {0;0} и после второй {0}. Далее подрезать смысла никакого нет, так как нод выдаст ошибку. Обратите внимание на гифке ниже при выборе в Number Slider значения 3 нод Trim tree подсвечивается оранжевым цветом, что говорит о некорректной работе.
Пример

Давайте рассмотрим пример, в котором не обойтись без нода Trim tree. Представим себе простую ситуацию, в которой есть две группы кривых квадратного очертания.
Синие кривые это нижняя группа кривых, бирюзовая это верхняя группа. Кривые размещаются друг над другом. В результате необходимо построить между ними поверхности методом Loft, соединив кривые друг с другом как на изображении ниже:
В данном примере используется нод Ruled Surface, который строит ту же самую поверхность методом Loft (как и нод Loft), просто данный нод представлен в более упрощённом виде. И так, давайте рассмотрим алгоритм в окне Grasshopper; что нам необходимо сделать, чтобы получить нужный результат:
В нашем распоряжении имеется группа кривых 1, это нижние кривые синего цвета, группа кривых 2 это верхние кривые бирюзового цвета. Очевидным действием будет подключить ноды кривых к разъёмам Curve A и Curve B нода Ruled Surface. Давайте так и поступим:
На первый взгляд может показаться, что всё впорядке: нод не выдаёт ошибок (цвет нода не красный и не оранжевый, что может говорить об ошибке). Однако если взглянуть на результат в окне Rhino, то получится следующее:
На изображении ясно видно, что получилось совсем не то, что мы ожидали. Причина в том, что нами не была просмотрена структура хранения кривых. Давайте визуализируем структуру дерева данных при помощи панели:
При помощи панели ясно видно, что у двух взаимодействующих групп кривых разные глубины путей. Обратите внимание, что у группы кривых 1 путь имеет вид {0;0;0}, а у группы кривых 2 {0;0;0;0;0}. В данном случае у второй группы два лишних уровня, которые необходимо "подрезать" при помощи Trim tree:
После подрезки двух лишних уровней пути дерева данных структура обоих групп кривых стала идентичной. В данном случае мы можем рассчитывать на корректный результат:
Таким образом, нод Trim tree нам помогает убирать лишние пути в дереве данных. Двигайтесь дальше по шагам в этом уроке.

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

Вам необходимо скачать файл gh и "починить" его. Кажется, в нём что-то сломалось. На изображении ниже можно увидеть проблему (она аналогична, в показанном примере в шаге 1 данного урока):
Результат должен быть следующий:
Доработайте скрипт так, чтобы результат был корректен. В файле Grasshopper дополнительно дана усложнённая задача.
При необходимости обратитесь к видео ответу в следующем шаге.
Видео-ответ на задачу

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