Компоненты среды GRASSHOPPER Работа с листами данных
Шпаргалка № 1
Составитель : Кац Филипп aka Casy_fill Редакторы: Эдуард Хайман aka hameleon-ed Александра Болдырева
branchpoint.ru
Moscow 2011
Работа с листами
Шпаргалка № 1
Введение Эта небольшая шпаргалка (методичка) должна помочь начинающим в освоении замечательного и во многих смыслах уникального дополнения (plugin) к 3д-моделлеру Rhinoceuros. Работа в среде grasshopper - это не требующее специальных навыков или образования визуальное программирование геометричечских форм, механизмов, и всего остального, но в первую очередь - геометрии. Именно простота и заточенность на геометрию делают его ключевым для архитекторов, занимающихся параметрическим направлением в архитектуре. Сам процесс состоит из создания логических цепочек компонентов, каждый из которых обозначает определенную операцию. кроме операций над объектами (геометрией, данными) есть отдельные наборы компонентов работы с самой структурой представления данных. Эти компоненты работают либо с “листами” (наборами) данных, либо с “деревьями”(совокупностями листов) данных. Как правило именно эти темы наиболее сложны для понимания ведь структура - это нечто абстрактное, что нельзя увидеть или пощупать; зачастую один и тот же набор данных может представляться разными структурами. Тем не менее, работа с структурами, понимание их механики - ключевой навык для работы в среде grasshopper. В данной брошюре сделан обзор компонентов, работающих с “листами” (наборами) данных, показано как сортировать данные, отбирать их, чистить списки, и пр., и пр. В конце книги приведены несколько примеров решения часто встречающихся при работе задач.. На русском языке на данный момент почти нет письменных источников по работе в среде grasshopper. Новявленным участникам наших проектов трудно сразу сориентироваться и освоить новый инструментарий. Поэтому я решил создать такие шпаргалки по разным сложным и важным темам, а в дальнейшем надеюсь соединить их в книгу по параметрическому проектированию. Хочу поблагодарить за помощь в создании: редакторов и близких друзей Эдуарда Хаймана и Александру Болдореву наших участников воркшопов, ребят, которые внимательно вычитывали тексты, Русских Любу и Попова Никиту. а также всех, кто поддерживает Точку ветвления и помогает нам! Спасибо!
Работа с листами
Шпаргалка № 1
Легенда специальных обозначений Вывод (output)
Обозначение (иконка) компонента
Название компонента Слева - вводимые данные, справа - результат. Картинка в центре соответствует картинке на панели инструментов. Также можно найти компонент по названию. Для этого нужно ввести название компонента в окошке, которое появляется после двойного щелчка мышкой на рабочем поле.
Ввод (input)
1
Номер входящего параметра Там, где стрелочками описать не вышло.
Input Manager Возможность управлять количеством входящих параметров (правой кнопкой мыши щелкаем на компоненте, выбираем input manager, задаем нужное количество компонентов)
Output Manager Возможность управлять количеством исходящих параметров (ПКМ на компоненте, выбираем output manager, создаем и называем нужное количество компонентов)
1
Работа с листами Вкладка Sets, свиток List
Шпаргалка № 1
Список (любой тип данных)
Item index Номер элемента (целое)
Определяет номер элемента в списке (если этот элемент из этого списка)
Элемент списка
List insert 1
Вставляет один список в другой, объединяя их.
2 3 4
Новый список
1
Основной список (список данных)
2
Второй список (список данных)
3
перед каким элементом первого списка вставить второй (целое число)
4
Свернуть ли нумерацию в кольцо? (Булевое) Если да, то вставляемые элементы с индексом, большим чем длина основного списка +1 вставляются с индексами = указанный индекс - длина списка (две, три,четыре длины и т.д.)
1
List item
2
Выделяет элементы из списка соответственно номерам.
3
Список выделенных элементов
1
Основной список (список данных) (список данных)
2
Номера (index) нужных элементов (целые)
3
Свернуть ли нумерацию в кольцо? (булевое) Если да, то номера, превышающие существующие индексы элементов, оборачиваются (из них вычитается длина списка) столько раз, сколько потребуется чтобы выбрать какой-либо элемент..
2
Работа с листами Вкладка Sets, свиток List
Шпаргалка № 1
Weave (вязание списков)
1
Создает новый список, связывая его из нескольких, на основе числового паттерна
2 3 Связанный список
1
Паттерн (целые)
2
Нулевой список
3
Первый список ...
Пример: (0) = {A;B;C;D;E;F} (1) = {a;b;c;d;e;f} (2) = {X;Y;Z} P= {0, 1, 0, 1, 2} результат будет сплетен по очереди из элементов нулевого, первого, нулевого, первого, второго списков: {A;a;B;b;X;C;c;D;d;Y;E;e;F;f;Z} Примечание: Вспомним, что данные типа boolean мы можем конвертировать в числа 0 и 1.
Reverse list
Список данных
Переворачивает список в обратной очередности, так что последний элемент станет первым и наоборот. Перевернутый список данных
Примечание: в последних версиях перевернуть лист можно так же через пкм/reverse на входе (input) списка в компонент
1
Shift list
2
сдвигает нумерацию списка на необходимое количество позиций.
3 Сдвинутый список
1
Список (список данных)
2
Количество позиций, на которое необходимо сдвинуть нумерацию ссписка. (целое)
3
Замкнуть ли список? (Boolean) Если да, то при смещении последние числа перемещаются в начало, так, чтобы нумерация сохранилась.
3
Работа с листами Вкладка Sets, свиток List
Шпаргалка № 1
List length (Длина списка)
Список данных
Определяет длину списка (число элементов)
1 Длина списка (целое)
Примечание: так как нумерация элементов идет с нуля, то номер последнего элемента всегда на 1 меньше чем общая длина списка
1 1
3
Sort list (Сортировка листа)
2
4
Сортирует данные в порядке возрастания списка данных-”ключей” 1
Список ключей (цифровых данных)
2
(Опционально) Соответствующий ему по длине список данных любого типа.
3
Отсортированный по возрастанию список “ключей”
4
Соответственно первому списку отсортированный второй список Количество вторичных списков (не-ключей) можно увеличить
Все списки сортируются
Пример:
0 1 2 3 4 5
12 1 3 5 2 4
f a c e b d 1 4 2 5 3 0
1
{12;1;3;5;2;4}
2
{a;b;c;d;e;f}
результатом будет два рассортированных списка:
1 2 3 4 5 12
a b c d e f
3
{1;2;3;4;5;12}
4
{b;e;c;f;d;a}
Примечание: на вкладке list, свиток string существует аналогичный по принципу действия компонент Sort String (сортировка по тексту). В нем сортировка производится не по очередности чисел, а в алфавитном порядке набора текстов (string)
4
Работа с листами Вкладка Sets, свиток List
Список данных 1
1 Список данных
2 Список данных
Шпаргалка № 1
Split list (Разделение списка на два) Делит список на два: до и после (включительно) введенного индекса. Примечание: индекс в данном случае означает первый элемент второго списка
Индекс
Полученный суб-список
Sublist (Выделение субсписка)
1 1 1 2 3 Выделенные индексы (попавшие в интервал)
Выделяет часть списка в интервале индексов. Например - элементы с 2 по 8 (2 to 8). если третий инпут - true, то при интервале большем, чем длина списка, начнут выбираться первые элементы. 1 1 1 2 3
1 1 2
3 4
Список данных (любой тип данных) Интервал индексов (одномерный интервал) Закольцевать ли список данных? (булевое)
Dispatch (Диспетчер) разбивает список на два соответственно паттерну булевых значений (true/false). Используется 1 1 1 2
Список данных (любой тип данных) Паттерн данных (булевые)
3
Cписок данных, соответствующих “true”
4
Cписок данных соответствующих “false”
Примечание 1: при необходимости (список данных больше паттерна) паттерн повторяется (тайлится) Примечание 2: по умолчанию стоит паттерн true false, позволяющий разбить список на четные и нечетные элементы
5
Работа с листами Вкладка Sets, свиток List 1 1 2 3 4
Replace (замена в списке) Полученный список
{
Заменяет определенные элементы первого списка на элементы второго. 1 1
Список данных (любой тип данных)
2
Элементы замены (если их нет, элементы списка будут просто удалены)
3
Индексы элементов списка на замену (должно быть столько же. сколько и элементов замены
4
Свернуть ли список? (булевое)
Pick`n`Choose (подбор)
1 1 2
Шпаргалка № 1
Полученный список
Сводит два или более списка в один в соответствии с паттерном 1 1
паттерн, состоящий из номеров списков (по вводам)
2
вводы списков
В отличии от Weave связывает элеметны списков не по очереди, а соответственно индексам Пример:
1
{0;1;0;1;1;0}
2
0 {a;b;c;d;e;f} 1 {A;B;C;D;E;F}
Результат: {a;B;c;D;E;f}
1 1
2 3
Null item Тестер. Определяет элементы списка на корректность (invalid) и обнуление (null) 1 1
Список данных (любой тип данных)
2 1 3
выдает значение true если элемент = null
4
выдает значение true если элемент = invalid
6
Работа с листами Вкладка Sets, свиток Sequence
1 1 2 1
Cull index (исключение по индексу) Очищенный список
3
1 1 2 1
Шпаргалка № 1
Очищенный список
Антипод List item; выкидывает элементы по индексу из листа 1 1
Список данных (любой тип данных)
2
Индекс вычеркиваемых элементов
3
Завернуть ли список (булевое) если true, то индексы, большие чем длина списка, будут вычеркивать элементы из начала списка (из них вычитается длина списка).
Cull pattern(исключение по паттерну) Оставляет только элементы, соответствующие true в паттерне
1 1 2 1
1 1 2 3
Очищенный список
1 1
Список данных (любой тип данных)
2
Паттерн вычеркивания элементов (булевые)
CullN (исключение каждого N-того) Исключает каждый N-тый элемент списка
Очищенный список
1 1
Список данных (любой тип данных)
2
Число N
Random reduce (случайное выбивание) Выбивает R элементов в случайном порядке 1 1
Список данных (любой тип данных)
2
Число выбиваемых элементов
3
Сид генератора случайных чисел
7
Работа с листами Вкладка Sets, свиток Sequence
1 1 2 1
Дублированный список
3
1 1 2 1
Шпаргалка № 1
Duplicate data (дублирование списка) Дублирование списка N раз
Повторенный список
1 1
Список данных (любой тип данных)
2
Количество повторений
3
Сохранять ли очередность списка (булевое) если = true, то копии будут повторяться после основного списка, если =false, то копия каждого элемент будет идти после оригинала
Repeat data (повторение списка) Последовательное повторения элементов до достижения нужной длины списка 1 1
Список данных (любой тип данных)
2
Необходимая длина списка
Jitter (Перемешивание) 1
Перемешанный список
2 3
Перемешанные индексы
Перемешивает элементы списка в случайной очередности 1 1 2
Список данных (любой тип данных)
3
Сид генератора случайных чисел
Сила смешения (от 0 до 1)
8
Работа с листами Вкладка Sets, свиток tree
Шпаргалка № 1
Clean (очистка структуры данных) 1 2 3
Очищенный список
1 2 3
1 2
Данные
Очистка списков от нулевых и некорректных (invalid) данных 1 1 2
Список данных (любой тип данных)
3
Удалять ли пустые списки (листы) (булевое)
Удалять ли некорректные данные (булевое)
Filter (выбор одного из нескольких потоков) Очистка списков от нулевых и некорректных (invalid) данных
Поток 1 Поток 2
1 1
Номер выбранного списка (может быть только один)
2
1 Список данных (любой тип данных)
3
2 Список данных (любой тип данных)
Gate (диспетчер направлений потока) 1 1
Поток данных
2
Номер выхода (может быть только один)
9
Работа с листами Решение часто встречающихся задач
Шпаргалка № 1
Выделение первого элемента списка
Выделение последнего элемента списка
Выделение всех кроме первого и последнего элементов списка
10
Работа с листами Решение часто встречающихся задач
Шпаргалка № 1
Разделение и последующее восстановление списка
Выборка минимального и максимального значения
Выборка самой ближней и самой дальней точек
11
Работа с листами Решение часто встречающихся задач
Шпаргалка № 1
Диспетчер выбора потоков. Применяется вместо GATE когда нужно ввести несколько значения в паттерн (P) диспетчера
Выбор - взять первый лист, или, если он пуст, второй. Может применяться например при создании кластеров.
12
Точка ветвления Точка Ветвления – образовательно-исследовательская инициатива, направленная на продвижение высокотехнологичной передовой архитектуры и современных взглядов на проектную культуру и встроенность ее в современную жизнь. Цель: объединение в облачную структуру разнообразных близких по духу инициатив, творческих групп, мероприятий. В рамках проекта организуются встречи, лекции. Основная наша публичная деятельность - проведение открытых воркшопов, где мы вместе с участниками разрабатываем методики и учимся технологиям высокотехнологичной архитектуры. Кроме этого, мы проводим курсы, где помогаем студентам понять логику и технологию нового поля деятельности - программирования, и помогаем понять, зачем оно нужно и как оно позволяет поднять архитектуру, градостроительство и дизайн на принципиально новый уровень. Особый проект - передача “Точка ветвления” на 1 архитектурном радио, где мы беседуем с специалистами совершенно различных специальностей, пытаясь понять все аспекты взаимодействия архитектора и компьютера.
По всем вопросам, пожеланиям и со всеми идеями - обращайтесь!
Наши Контакты Точка ветвления
Branchpoint.ru Branch_point (twitter) branch-point.rpod.ru (Podcasts)
Кац Филипп
Casyfill@gmail.com ztmarch.blogspot.com casy_fill (skype)
Эдуард Хайман
haiman-ed@yandex.ru hameleon-ed.livejournal.com hameleon-ed (skype)
Александра Болдырева
alexandra.bld@gmail.com aleksandra-boldyreva.blogspot.com alehandra_bld (skype)