Issuu on Google+

manual de ejercicios de grashopper nivel 2

miguel vidal calvet guillermo ramírez camarero www.frikearq.com 1ª edición 2011


manual de ejercicios de grasshopper nivel 2 aplicado al diseño algorítmico de arquitectura índice 01. Grasshopper como herramienta de visualización de datos

02. geometría de mallas

03. gestión de listas: estructura de árbol de datos E06 Repetición de números en listas E07 Estructura del Convento de las Teresianas, Gaudí. E08 Anillo paramétrico E09 Subdividisión de superficie no homogénea E10 Voronoi Masterplan manual de grasshopper nivel I aplicado al diseño de arquitectura por miguel vidal calvet y guillermo ramírez camarero edición Noviembre 2010 grasshopper v0.8.002

04. modelado con algoritmos evolutivos


manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

03

gestión de listas: estructura de árbol de datos p03


manual de grasshopper nivel 2 Miguel Vidal Guillermo RamĂ­rez

Estructura de datos: ĂĄrboles de Grasshoper En Grasshopper, las listas datos se ordenan, acumulativamente, con una estructura ramificada. rama

rama

rama

rama

rama

Fuente: Grasshopper Primer for version 0.6.0007

Ă­ndice

dato

p04


manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

Visualización de estructura de árbol en Grasshoper Para visualizar la estructura de una lista, utilizamos el componente param viewer. Podemos escoger entre una vista textual, por defecto, y una vista gráfica, “draw tree” (abajo).

Paths

número de ramas que hay.

{0;0;0} ruta de rama.

la

N

número de ítemes en cada rama.

representación de esta lista

p05


manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

Operaciones sobre estructura de árboles Se pueden realizar las mismas operaciones que con listas, pero con distintos componentes y, sobre todo, diferente sintaxis.

-

tree branch

Con este componente extraemos ramas de una estructura de árbol. Tiene dos entradas: T para la(s) estructura(s) de árbol de la que queremos extraer una rama, P para el ruta de la rama que queremos obtener. Las rutas de las ramas son colecciones de enteros (integer). -

path es una colección de integers

tree item

Con este componente extraemos ítemes dentro de ramas de una estructura de árbol. Tiene cuatro entradas: T para la(s) estructura(s) de árbol de la que queremos extraer una rama, P para el ruta de la rama que queremos obtener, i para el índice del item y W para wrap. Los índices de listas son enteros.

path es una colección de integers

p06


manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

-

flatten tree

“Flatten tree” convierte una estructura de diversas ramas en otra de una sola rama. Es decir hace de una lista de sublistas una lista única. En D insertamos la estructura y con P decidimos la ruta en la que colocamos esa lista. -

graft tree

Con “graft tree” hacemos la operación contraria: convertimos en una rama cada item de la lista original.

p07


manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

-

explode tree

Extrae las ramas de una estructura de árbol una por una. Se añaden salidas haciendo click con el botón derecho en “output manage”.

-

merge/merge03/merge multiple

Merge combina las listas de estructuras de árbol, teniendo en cuenta las rutas de dichas estructuras de árbol, dando lugar a una lista de listas con las rutas correspondientes.

p08


E06

repetición de números en dos listas

manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

01. objetivos - entender el concepto de ramas en estructura de árbol de datos en Grassshopper, para ello, trataremos de saber la cantidad de veces que se repiten los números de una lista en otra

02. conceptos clave graft tree, flatten tree 03. procedimiento 1. Estructura de árbol en la lista A 2. Repeticiones de la lista A en la lista B 3. Deshacer la estructura de árbol de la lista A 1. Estructura de árbol en la lista A Convertimos la primera lista de números en una lista de listas con un ítem en cada una de ellas, es decir, fabricamos una estructura de ramas para cada ítme de la lista con Graft tree. 2. Repeticiones de la lista A en la lista B Para hallar las repeticiones de la primera lista en la segunda, utilizamos un componente de igualdad y nos quedamos sólo con las coincidencias de True con Dispatch.

3. Deshacer la estructura de árbol de la lista A Finalmente, contamos cuántos elementos hay en la lista de salida de Dispatch, con List length: las ramas que no tengan ningún elemento contarán como cero. Por último, deshacemos la estructura de ramas con Flatten tree para compararlo con la lista A.

p09


E07

manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

convento de las Teresianas, Gaudí

01. objetivos - trabajar con los conceptos de ramas en estructura de árbol de datos - entender cómo funciona Loft con varias listas de curvas

02. conceptos clave

Colegio Teresiano, Barcelona, Antonio Gaudí.

catenary, offset curve, loft, graft tree 03. procedimiento 1. Curvas de sección de los arcos 2. Piel de cubierta 3. Estructura de cubierta 1. Curvas de sección de los arcos Dibujamos unas curvas catenarias entre dos listas de puntos A y B con la misma serie para las coordenadas Y, separadas una distancia para las coordenadas X, una longitud L proveniente de un slider y una dirección de gravedad con vector unitario Z. 2. Piel de cubierta Dibujamos una superficie de transición Loft a lo largo de la lista de curvas del apartado anterior y la extruímos a lo largo del eje Z. 3. Estructura de cubierta En primer lugar, desfasamos las curvas iniciales con Offset Curve para tener las curvas de sección planas de las vigas. Para dibujar, la superficie plana de los nervios, utilizamos un Loft de esas dos listas de curvas, pero primero debemos tener la misma estructura en las listas, una lista para cada curva, para ello aplicamos un Graft Tree a la lista de curvas iniciales (comparar las listas en la captura de pantalla en la siguiente página). En segundo lugar, nos queda extruir las superficies del Loft para tener la estructura definitiva. p010


manual de grasshopper nivel 2 Miguel Vidal Guillermo RamĂ­rez

p011


E08

anillo paramĂŠtrico

manual de grasshopper nivel 2 Miguel Vidal Guillermo RamĂ­rez

01. objetivos - practicar las nociones de estructura de ĂĄrbol de datos, dibujando una estructura desfasada

02. conceptos clave offset, flatten, param viewer, tree branch 03. procedimiento

p012


manual de grasshopper nivel 2 Miguel Vidal Guillermo RamĂ­rez

p013


E09

lamas no homogéneas en superficie

manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

01. objetivos - entender cómo se tratan independientemente partes de geometría con estructura de árbol de datos, para ello fabricaremos una fachada de lamas con distribución heterogénea de la superficie del ejercicio E08 - repasar conceptos de topología y análisis de curvas

02. conceptos clave graft tree, flatten tree, shatter curve, offset, evaluate curve 03. procedimiento 1. Dividir las curvas en tramos 2. Mallar cada tramo de fachada independientemente 3. Dibujar la estructura de fachada 1. Dividir las curvas en tramos Para dividir las curvas base en tramos, utilizamos la herramienta Shatter Curve, que trabaja con el parámetro t de las curvas. Antes de nada, para que cada curva tome un “canal de información” independiente, utilizamos Graft Tree. Luego tomamos la curva, la desfasamos hacia adentro con Offset Curve. Para hallar el parámetro t de división de las curvas, buscamos con Curve Closest Point el punto más cercano a las curvas de los puntos de división del ejercicio anterior, que nos devuelve el parámetro t de dichas curvas que buscábamos. 2. Mallar cada tramo de fachada independientemente 2.1. Desplazamos cada tramo de curva a lo largo del eje Z: para dibujar una fachada “prototipo”, tomamos valores de vectores de desplazamiento pseudoaleatorios. En primer lugar, como en el apartado anterior, aplicamos Graft Tree a la lista de tramos de curvas, para que cada una de ellas esté en una ruta de datos distinta. Para tener valores distintos de desplazamiento, pero contenidos dentro del valor de la altura del recinto superior, limitamos esos valores con un dominio. A continuación, subidivimos ese dominio con un rango. El valor de subdivisiones N está definido por valores de un Random, limitado por un dominio R de cantidad de huecos mínimo y máximo, el número de valores N será de tantos valores como ítemes tengamos en las listas (tomamos la longitud de lista del Param Viewer) y también necesitaremos una semilla S diferente para cada uno de ellos, por ejemplo, tomamos de una serie.

p014


manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

2.2. Fabricar las superficies planas de las lamas: necesitamos desfasar las curvas base con Offset Curve y además tener las listas de curvas con la misma estructura de datos, para poder, por ejemplo, utilizar una superficie de transición con Loft. Para ello, aplicamos un Graft Tree a las curvas base, puesto que con Offset Curve, se hace una lista diferente para cada curva. 2.3. Extruir las superficies planas de las lamas: tan sólo tenemos que aplicar un Extrude a lo largo del vector Z.

3. Dibujar la estructura de fachada Para dibujar una estructura de fachada formada por perfiles rectangulares, necesitamos dibujar un rectángulo en cada punto base de las curvas superiores orientado según el vector normal a la curva en ese punto. Para ello, evaluamos las curvas con Evaluate curve en cada uno de los parámetros t que hemos obtenido antes. A continuación, tomamos la salida P (puntos en la curva) y T (vectores paralelos de la curva) para dibujar los planos que tomaremos como orígenes para los rectángulos de sección de la estructura. Los valores de X e Y del rectángulo de sección son los dominios de extensión para cada dirección. Para terminar, sólo nos queda extruir estos rectángulos.

p015


E10

Voronoi masterplan

manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

01. objetivos - comprender la relación entre las rutas de la estructura de árbol y la geometría que se va empleando en Grasshopper y modificarlas con graph mapper - trabajar con diferentes elementos geométricos independientemente

02. conceptos clave graft tree, voronoi, param viewer, path mapper 03. procedimiento 1. Planta. Diagramas de Voronoi 2. Cerramientos 3. Cubiertas 1. Planta. Diagramas de Voronoi Para dibujar una planta, tomamos la triangulación plana de Voronoi, para lo cual necesitaremos una colección de puntos (P). 1.1. Coordenadas de puntos: dibujaremos con dos colecciones numéricas pseudoaleatorias (Random) tanto para las coordenadas X como para las Y. Además, limitaremos la extensión del Voronoi con una Interval Box en B. 1.2 Diagramas de Voronoi: tomamos las entradas anteriores para dibujar los polígonos de Voronoi. 1.3 Desechamos algunos polígonos: para tener algunos vacíos en la planta, aplicamos Random Reduce a la salida de Voronoi, que elimina R elementos de una lista L, de un modo pseudoaleatorio, tomando una semilla S. 2. Cerramientos 2.1. Puntos perímetro base: dividimos los perímetros de cada polígono de Voronoi con Divide Curve, para ello, antes debemos tener cada polígono en una rama distinta con Graft Tree. 2.2. Puntos perímetro de coronación: damos unos valores pseudoaleatorios, limitados por una altura mínima y máxima con un dominio a la cota Z de cada uno de los puntos de perímetro base. 2.3. Superficies para los cerramientos: uniendo los puntos base con los de coronación con una colección de líneas, podemos utilizar éstas como curvas de sección de una superficide de transición Loft.

p016


manual de grasshopper nivel 2 Miguel Vidal Guillermo Ramírez

3. Cubiertas 3.1. Puntos interiores base: dividimos los perímetros de cada polígono de Voronoi con Surface Divide, para ello, antes debemos convertir los polígonos en superficie con un parámetro de Surface. 3.2. Puntos interiores de coronación: damos unos valores pseudoaleatorios, limitados por una altura mínima y máxima con un dominio a la cota Z de cada uno de los puntos interiores base. 3.3. Cubiertas: podemos utilizar una malla de Delaunay con los puntos de coronación. Antes debemos fusionar las dos listas de los puntos de perímetro de coronación con los puntos interiores de coronación con Merge. En Grasshopper, la operación de subdivisión de geometría, como la del apartado 3.1, da lugar a nuevas subramas en cada polígono para cada columna de puntos de subdivisión, las rutas de las dos lístas de puntos de coronación, no van a coincidir. Antes de nada, a efectos de claridad, eliminamos índices de rutas sobrantes con Simplify Tree. Ahora, para hacer corresponder las dos listas de puntos con las mismas rutas para cada polígono, debemos deshacer la ruta que ha generado Surface Divide para cada columna con Path mapper. Dicho componente trabaja con operaciones léxicas sobre las rutas de la estructura de árbol. Cualquier estructura léxica en la parte izquierda del componente será sustituída por la de la derecha. En nuestro caso, los índices de la primera columna “A” equivalen a cada uno de los polígonos, la segunda columna, con todo ceros, es residual de algún componente y la tercera columna “B”, son cada una de las columnas de puntos de cada polígono, la última es también residual. La tercera columna es la que debemos eliminar en nuestra operación léxica.

p017


www.frikearq.com


manual de ejercicios de Grasshopper nivel 2