15
Шпаргалка № 1 Работа с листами данных Компоненты среды Составитель : Кац Филипп aka Casy_fill Редакторы: Эдуард Хайман aka hameleon-ed Александра Болдырева Moscow 2011 GRASSHOPPER branchpoint.ru

Komponenty sredy rabota s listami dannykh

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Komponenty sredy rabota s listami dannykh

Шпаргалка № 1Работа с листами данных

Компоненты среды

Составитель : Кац Филипп aka Casy_fillРедакторы: Эдуард Хайман aka hameleon-ed Александра Болдырева

Moscow 2011

GRASSHOPPER

branchpoint.ru

Page 2: Komponenty sredy rabota s listami dannykh

Шпаргалка № 1Работа с листами

Введение Эта небольшая шпаргалка (методичка) должна помочь начинающимв освоении замечательного и во многих смыслах уникальногодополнения (plugin) к 3д-моделлеру Rhinoceuros.

Работа в среде grasshopper - это не требующее специальных навыков или образования визуальное программирование геометричечских форм, механизмов, и всего остального, но в первую очередь - геометрии. Именно простота и заточенность на геометрию делают его ключевым для архитекторов, занимающихся параметрическим направлением в архитектуре. Сам процесс состоит из создания логических цепочек компонентов, каждый из которых обозначает определенную операцию.кроме операций над объектами (геометрией, данными) есть отдельныенаборы компонентов работы с самой структурой представленияданных. Эти компоненты работают либо с “листами” (наборами) данных,либо с “деревьями” (совокупностями листов) данных.

Как правило именно эти темы наиболее сложны для понимания - ведь структура - это нечто абстрактное, что нельзя увидеть или пощупать;зачастую один и тот же набор данных может представляться разнымиструктурами. Тем не менее, работа с структурами, понимание их механики - ключевой навык для работы в среде grasshopper.

В данной брошюре сделан обзор компонентов, работающих с “листами” (наборами) данных, показано как сортировать данные,отбирать их, чистить списки, и пр., и пр. В конце книги приведенынесколько примеров решения часто встречающихся при работе задач..

На русском языке на данный момент почти нет письменных источников по работе в среде grasshopper. Новявленным участникам наших проектов трудно сразу сориентироваться и освоить новый инструментарий. Поэтому я решил создать такие шпаргалки по разным сложным и важным темам, а в дальнейшем надеюсь соединить их в книгу по параметрическому проектированию.

Хочу поблагодарить за помощь в создании:редакторов и близких друзей Эдуарда Хаймана и Александру Болдоревунаших участников воркшопов, ребят, которые внимательно вычитывали тексты, Русских Любу и Попова Никиту.а также всех, кто поддерживает Точку ветвления и помогает нам!

Спасибо!

Page 3: Komponenty sredy rabota s listami dannykh

Input Manager Возможность управлять количеством входящих параметров(правой кнопкой мыши щелкаем на компоненте, выбираем input manager, задаем нужное количество компонентов)

Легенда специальных обозначений

Output Manager Возможность управлять количеством исходящих параметров(ПКМ на компоненте, выбираем output manager, создаем и называем нужное количество компонентов)

1 Номер входящего параметра

Там, где стрелочками описать не вышло.

Название компонента

Слева - вводимые данные, справа - результат. Картинка в центре соответствует картинке на панели инструментов. Также можно найтикомпонент по названию. Для этого нужно ввести название компонента в окошке, которое появляется после двойного щелчка мышкой на рабочем поле.

Вывод (output)

Ввод (input)

Обозначение (иконка) компонента

1

Шпаргалка № 1Работа с листами

Page 4: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток List

Item index Определяет номер элемента в списке (если этот элемент из этого списка)

Номер элемента (целое)

Список (любой тип данных)

Элемент списка

List insert Вставляет один список в другой, объединяя их.

Основной список (список данных) Новый список

1

2

3

41

2

3

4

Второй список

(список данных)

перед каким элементом первого списка вставить второй (целое число) Свернуть ли нумерацию в кольцо? (Булевое)Если да, то вставляемые элементы с индексом,большим чем длина основного списка +1вставляются с индексами = указанный индекс- длина списка (две, три,четыре длины и т.д.)

List itemВыделяет элементы из списка соответственно номерам.

1

2

3

Основной список (список данных) (список данных)

1

2

3

Номера (index) нужных элементов (целые)

Список выделенныхэлементов

Свернуть ли нумерацию в кольцо? (булевое)Если да, то номера, превышающие существующиеиндексы элементов, оборачиваются (из них вычитается длина списка) столько раз, сколько потребуется чтобы выбрать какой-либо элемент..

2

Шпаргалка № 1Работа с листами

Page 5: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток List

Weave (вязание списков) Создает новый список, связывая его из нескольких,на основе числового паттерна

Shift list сдвигает нумерацию списка на необходимое количество позиций.

Список (список данных)

1

2

3

Количество позиций, на которое необходимо сдвинуть нумерацию ссписка. (целое)

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 Переворачивает список в обратной очередности,так что последний элемент станет первым и наоборот.

1

2

3

Сдвинутый список

Замкнуть ли список? (Boolean)Если да, то при смещении последние числа перемещаются в начало, так, чтобы нумерация сохранилась.

Примечание: в последних версиях перевернуть лист можно так же через пкм/reverse на входе (input) списка в компонент

3

Шпаргалка № 1Работа с листами

Page 6: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток List

List length (Длина списка) Определяет длину списка (число элементов)1

Длина списка (целое)Примечание: так как нумерация элементов идет с нуля, то номер последнего элемента всегда на 1 меньше чем общая длина списка

Список данных

Sort list (Сортировка листа) Сортирует данные в порядке возрастания спискаданных-”ключей”

11

2

3

4

1 Список ключей (цифровых данных)

2 (Опционально) Соответствующий ему по длине список данных любого типа.

3 Отсортированный по возрастанию список “ключей”

4 Соответственно первому списку отсортированныйвторой список Количество вторичных списков (не-ключей) можно увеличить Пример:

{12;1;3;5;2;4} {a;b;c;d;e;f}

результатом будет два рассортированных списка: {1;2;3;4;5;12} {b;e;c;f;d;a}

1

2

3

4

1213524

facebd

012345

Все списки сортируются

12345

12

abcdef

142530

4

Примечание: на вкладке list, свиток string существует аналогичныйпо принципу действия компонент Sort String (сортировка по тексту).В нем сортировка производится не по очередности чисел, а в алфавитном порядке набора текстов (string)

Шпаргалка № 1Работа с листами

Page 7: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток List

Split list (Разделение списка на два) Делит список на два: до и после (включительно) введенного индекса.

1

Примечание: индекс в данном случае означает первый элемент второго спискаИндекс

Список данных 1 Список данных

2 Список данных

1

Полученный суб-список

Выделенные индексы(попавшие в интервал)

Sublist (Выделение субсписка) Выделяет часть списка в интервале индексов.Например - элементы с 2 по 8 (2 to 8).если третий инпут - true, то при интервале большем, чем длина списка, начнут выбиратьсяпервые элементы.

Dispatch (Диспетчер) разбивает список на два соответственно паттернубулевых значений (true/false). Используется

11

2

3

111

2

3

Список данных (любой тип данных) Интервал индексов (одномерный интервал) Закольцевать ли список данных? (булевое)

11

2

3

4

111

2

3

Список данных (любой тип данных) Паттерн данных (булевые) Cписок данных, соответствующих “true”

4 Cписок данных соответствующих “false”

Примечание 1: при необходимости (список данных больше паттерна) паттерн повторяется (тайлится)

Примечание 2: по умолчанию стоит паттерн true false, позволяющий разбить список на четные и нечетные элементы

5

Шпаргалка № 1Работа с листами

Page 8: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток List

Replace (замена в списке) Заменяет определенные элементы первого спискана элементы второго.

11

2

3

11

2

3

Список данных (любой тип данных)

Элементы замены (если их нет, элементы списка будут просто удалены) Индексы элементов списка на замену (должно быть столько же. сколько и элементов замены

4

Полученный список

4 Свернуть ли список? (булевое)

Pick`n`Choose (подбор)

Сводит два или более списка в один в соответствии с паттерном

Полученный список

11

2 {11

2

паттерн, состоящий из номеров списков (по вводам) вводы списков

В отличии от Weave связывает элеметны списковне по очереди, а соответственно индексам

Пример:

{0;1;0;1;1;0} 0 {a;b;c;d;e;f}

1

2 1 {A;B;C;D;E;F} Результат:

{a;B;c;D;E;f}

Null item

Тестер. Определяет элементы списка на корректность (invalid) и обнуление (null)

112

3

12 выдает значение true если элемент = null

3 выдает значение true если элемент = invalid

4

11 Список данных (любой тип данных)

6

Шпаргалка № 1Работа с листами

Page 9: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток Sequence

Очищенный список11

12

3

Cull index (исключение по индексу)

Антипод List item; выкидывает элементыпо индексу из листа

2

3

Индекс вычеркиваемых элементов

Завернуть ли список (булевое)если true, то индексы, большие чем длина списка,будут вычеркивать элементы из начала списка (из них вычитается длина списка).

11 Список данных (любой тип данных)

11

12

Cull pattern(исключение по паттерну)

Оставляет только элементы, соответствующие true в паттерне

Очищенный список

2 Паттерн вычеркивания элементов (булевые)

11 Список данных (любой тип данных)

CullN (исключение каждого N-того)

Исключает каждый N-тый элемент списка

Очищенный список11

12

2 Число N

11 Список данных (любой тип данных)

11

2

3

Random reduce (случайное выбивание)

Выбивает R элементов в случайном порядке

2 Число выбиваемых элементов

11 Список данных (любой тип данных)

Очищенный список

3 Сид генератора случайных чисел 7

Шпаргалка № 1Работа с листами

Page 10: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток Sequence

Дублированныйсписок

11

12

3

Duplicate data (дублирование списка)

Дублирование списка N раз

2

3

Количество повторений Сохранять ли очередность списка (булевое)если = true, то копии будут повторяться после основного списка, если =false, то копия каждого элемент будет идти после оригинала

11 Список данных (любой тип данных)

Повторенныйсписок

11

12

Repeat data (повторение списка)

Последовательное повторения элементов до достижения нужной длины списка

2 Необходимая длина списка

11 Список данных (любой тип данных)

8

Jitter (Перемешивание)

Перемешивает элементы списка в случайнойочередности

2 Сила смешения (от 0 до 1)11 Список данных (любой тип данных)

1

2

3

Перемешанный список

3 Сид генератора случайных чисел

Перемешанные индексы

Шпаргалка № 1Работа с листами

Page 11: Komponenty sredy rabota s listami dannykh

Вкладка Sets, свиток tree

Clean (очистка структуры данных)

Очистка списков от нулевых и некорректных(invalid) данных

2 Удалять ли некорректные данные (булевое)

11 Список данных (любой тип данных)

1

2

3

Очищенный список

3 Удалять ли пустые списки (листы) (булевое)

Filter (выбор одного из несколькихпотоков)

Очистка списков от нулевых и некорректных(invalid) данных

2

11

1 Список данных (любой тип данных)

3

1

2

3

Данные

2 Список данных (любой тип данных)

Номер выбранного списка (может быть только один)

Gate (диспетчер направленийпотока)

1

2

Поток 1

Поток 2

2

11 Поток данных

Номер выхода (может быть только один)

9

Шпаргалка № 1Работа с листами

Page 12: Komponenty sredy rabota s listami dannykh

Решение часто встречающихся задач

Выделение последнего элемента списка

Выделение первого элемента списка

Выделение всех кроме первогои последнего элементов списка 10

Шпаргалка № 1Работа с листами

Page 13: Komponenty sredy rabota s listami dannykh

Решение часто встречающихся задач

11

Разделение и последующее восстановление списка

Выборка минимального и максимального значения

Выборка самой ближней и самой дальней точек

Шпаргалка № 1Работа с листами

Page 14: Komponenty sredy rabota s listami dannykh

Решение часто встречающихся задач

Диспетчер выбора потоков. Применяется вместо GATE когда нужно ввестинесколько значения в паттерн (P) диспетчера

Диспетчер выбора потоков. Применяется вместо GATE когда нужно ввестинесколько значения в паттерн (P) диспетчера

12

Шпаргалка № 1Работа с листами

Выбор - взять первый лист, или, если он пуст,второй. Может применяться напримерпри создании кластеров.

Page 15: Komponenty sredy rabota s listami dannykh

Точка Ветвления – образовательно-исследовательская инициатива, направленная на продвижение высокотехнологичной передовой архитектуры и современных взглядов на проектную культуру и встроенность ее в современную жизнь. Цель: объединение в облачную структуру разнообразных близких по духу инициатив, творческих групп, мероприятий.

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

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

Особый проект - передача “Точка ветвления” на 1 архитектурном радио, где мы беседуем с специалистами совершенно различных специальностей, пытаясь понять все аспекты взаимодействия архитектора и компьютера.

Наши Контакты Точка ветвления Branchpoint.ru Branch_point (twitter) branch-point.rpod.ru (Podcasts)

Кац Филипп [email protected] ztmarch.blogspot.com casy_fill (skype)

Эдуард Хайман [email protected] hameleon-ed.livejournal.com hameleon-ed (skype)

Александра Болдырева aleksandra-boldyreva.blogspot.com alehandra_bld (skype)

[email protected]

Точка ветвления

По всем вопросам, пожеланиям и со всеми идеями - обращайтесь!