ACD_SM1/2021_Assignment 1_Isabel Solin

Page 1

DESIGN 1: TOWER 25m x 25m x 100m

Define 25m x 25m box.

h = 4, n = 0

Extrude surface in z direction by 4m to generate a ‘floor’.

Duplicate floor in z direction by 4m from origin.

Yes

EG. N = 4 #5

22

#4

18

#3

16

#2

12

#1

8

#0

4

h=h+4

No

is h > 100?

Get every nth item in list of floors, feed into new ‘list a’.

Dispatch every 2nd item in list a into ‘list b’.

#5

22

#3

16

#1

8

Rotate floors in list a by -nth degrees.

Rotate floors in list b by nth degrees.

No

is n > 24?

#4

18

#2

12

#0

4

n=n+1

Yes

Stop

N = 0

N = 1

N = 2

N = 3

3


DESIGN 2: DOME 50m Diameter

Define semi-sphere/dome with radius of 25m.

Extract dome edge, create planar surface.

U = 5, V = 5

Divide base surface by UV values.

Benefit of using oscillating circles method is it creates non uniform pts on surface (as opposed to regular surface subdivisions).

Create ‘oscillating circle’ curves, using dome as base surface, and UV origin points in planar surface as a centers.

{

}

Find intersection points of oscillating circle curves on dome surface.

Create circles at each intersection point. Use pt locations and normals to centre and orient circles.

Irrational Number (eg. √2, √3, π)

Extract individual digits (integers) to extent of intersecting pt list length.

Use list of integers values to create variation in radius of circles.

Project circle curves onto dome surface, creating surface fragments.

New Section 1 Page 1

New Section 1 Page 1

Dispatch fragments into individual lists based on surface area, apply different materials/ finishes.

4

New Section 1 Page 1

New Section 1 Page 1

New Section 1 Page 1

New Section 1 Page 1


DESIGN 3: HOLLOW CYLINDER 20m internal diameter, 50m outer diameter

Define two circles with radius of 25m and 10m.

Copy circles up in z direction by 20m.

Divide inner circle curves by 20 points, equally spaced

Create circles at each point on curves, radius of 3.

Divide circle curves by one.

Irrational Number (eg. √2, √3, π)

Extract individual digits (integers) to 80 digits.

Use list of integers values to determine rotation of each circle in xy plane.

Create interpolated curves through new points on each initial curve.

Repeat for inner curves. Loft top and bottom curves.

5


DESIGN 4: PLAZA 100m x 100m

Define 100m x 100m plane

Divide plane into grid by distance of 10m in UV directions.

i=0

Input string

i = i + 1, n = n + 1

String length = n (eg. n = 11)

(eg. “Computation”)

eg. “computation” n = 11 “computationc” n = 12 “computationco” n = 13

{

At least 13 characters are needed to generate more than 100 values, the amount of cells in the plaza grid. 13 characters will generate 104 digits (binary numbers are 8 digits long).

}

n >= 13?

No

Append string index (i) character to end of string.

Yes Convert string from ASCII to Binary (using module such as binascii).

Moving left to right in each row of grid starting from top, assign binary digits for 100 iterations.

Assign ‘0’ cells program of vegetation, and ‘1’ cells program of ‘pathway’.

0 1 1 0 0 1 1 0 1 1

0 1 1 0 0 1 1 0 1 1

0 1 1 0 1 1 1 1 0 1

0 1 1 0 1 1 1 1 0 1

1 0 1 1 0 1 0 1 1 1

1 0 1 1 0 1 0 1 1 1

0 0 0 0 0 1 1 1 0 1

0 0 0 0 0 1 1 1 0 1

0 1 0 1 1 1 0 1 0 0

0 1 0 1 1 1 0 1 0 0

0 1 1 0 1 0 1 0 0 1

0 1 1 0 1 0 1 0 0 1

0 1 1 0 1 1 1 0 0 1

0 1 1 0 1 1 1 0 0 1

1 1 0 0 1 1 1 0 1 1

1 1 0 0 1 1 1 0 1 1

0 1 1 1 1 0 1 1 0 1

0 1 1 1 1 0 1 1 0 1

1 1 0 1 1 1 0 1 1 0

1 1 0 1 1 1 0 1 1 0 LEGEND

0 6

Vegetation

eg. 01100011 01101111 01101101 01110000 01110101 01110100 01100001 01110100 01101001 01101111 01101110 01100011 01101111

To create further variation, repeat process for each cell type (0 or 1).

LEGEND

1

Pathway

Lawn

Tiles

Trees

Timber


DESIGN 5: BOX 25m x 25m x 25m

Define 25m x 25m rectangle

Create Srf from crv

25/3 (Division cell size)

Isotrim Srf in U and V direction

25/3 (Move factor)

Move in Z direction

25/3 (Extrusion factor)

Extrude in Z direction

Deconstruct Brep

Irrational Number (eg. √2, √3, π)

Extract individual digits from list of ints.

Use each integer value to move nth times through list of Brep faces and edges, culling them each time.

End after 10 cycles.

7


DESIGN 2: DOME - GRASSHOPPER SCRIPT 50m Diameter

This script is an extension of my initial computational workflow for a dome. It uses irrational numbers to create variation in the radius of circles that are projected onto the dome surface. In lieu of using a ‘populate 3d’ component, I have been able to create seemingly non uniform points as origin points by projecting the vertices of a complex mesh geometry. 25m Factor

Unit Z Vector Direction

1

Extrude

Radius Define Circle

Define Sphere

Weaverbird Mesh Icosahedron

Srf

Weaverbird Split Triangle Subdivision

Surface Split

Deconstruct Mesh

3

Crv Surface from Crv Srf

Cap Extrusion

Item index 0 (sphere top)

2

Vertices Srf

4

Pull point to Srf

Cull duplicate pts Brep

5

Pts

Pts Deconstruct pts

Facet Dome

{

Z components Boundary Surfaces =0?

Srf List

50 digits of pi

Boolean list Pt list

Boolean list

7

Cull by pattern

>1?

6

Srf

List

Cull by pattern Boolean list

Pts Surface closest pts

Cull by pattern

Pts

Srf

Evaluate srf at pts

List

List

Split list at index Normals

Radius Circle CNR

Srf

Center

8

Crv Project Crv Crv

Srf Split

Number

Duplicate data

List Length Index

8

Note - it is not possible to generate a list of digits of pi within Grasshopper beyond 15 digits. I imported the 50 individual values and duplicated that set to achieve desired list length.

9

3

}


Srf Split

Srf fragments

Area

10

>20?

Analysis of srf fragments

Srf List Swatch

Boolean List Dispatch list

Srf (area >20)

Srf (area <20)

>13?

Boolean List

Dispatch list

Srf (area >13)

Swatch

12

>9?

Boolean List

Dispatch list

Srf (area >9)

Swatch

13

>5?

Boolean List

Dispatch list

Srf (area >5)

Swatch

14

>3?

Boolean List

Dispatch list

Srf (area >3)

Mass Add

629.67m2

Custom Preview 73

List length Mass Add

783.10m2

Custom Preview 112

List length Area

Srf (area <5)

649.82m2

40

List length

Area

Srf (area <9)

Mass Add

Custom Preview

Area

Srf (area >13)

23

List length Area

Swatch

11

Custom Preview

Mass Add

766.41m2

Custom Preview 208

List length Area

Mass Add

284.88m2

9


DESIGN 2: DOME - GRASSHOPPER SCRIPT 50m Diameter

1. Sphere and extruded circle

2. Spliced sphere, creating dome

6. Points with Z value = 0 culled

10. Fragments with area of 20m2 or more dispatched out of list and allocated material.

10

3. Weaverbird Mes

7. Subsequent facets srfs also now culled.

11. Fragments with area of 13m2 or more dispatched out of list and allocated material.

12. Fragments wit more dispatched o allocated materia


sh Icosahedron

4. Icosahedron vertices (orange) pulled onto dome srf (dark blue). This was done to create evenly spaced, but not entirely uniform points on the dome surface.

8. Circle curves located at each point on dome srf, oriented based on normal of associated facet srf.

th area of 9m2 or out of list and al.

5. Dome facets - creates planar hexagons based on projected points on dome srf.

9. Circles projected onto dome srf, used to split dome srf into fragments.

13. Fragments with area of 5m2 or more dispatched out of list and allocated material.

14. Fragments with area of 3m2 or more dispatched out of list and allocated material.

11


DESIGN 5: BOX - GRASSHOPPER SCRIPT 25m x 25m x 25m

This script implements the ‘Traveling Salesman’ recursive algorithm, where the shortest possible path between several ‘cities’ is found, starting from a particular index in a list of cities. In this script, ‘cities’ are defined as points, and the salesman’s path through each city point is visualized via a polyline which is utilised to create a maze like facade envelope. This is an extension of my original box design idea, where I used an irrational number (pi) to help create what appears to be ‘random’ variation.

25m

Define Rectangle Height

{

Base

1

Box

50 digits of pi Dividend

Deconstruct Box

0, 1, 2, 3

List

2

Srfs

9

}

1000

Divisor

Divide

Faces

Index

Note - it is not possible to generate a list of digits of pi within Grasshopper beyond 15 digits. I imported the 50 individual values and duplicated that set to achieve desired list length.

Number

8

Duplicate data U&V Count

List

Index

3

Divide Srf

Split List Factor

Pts

Unit Z

List length

2

Motion

A

B

Unit Y

Move 2

Subtraction

Pts

Iterations

Pts

4 allCities

GhPython output pts

srf

Pull pt to srf Pts

Polyline

12

Motion

Move

The travelling salesman algorithm works by starting with a list (i From that specified index, the algorithm searches for the nearest removes it from the list of all points to visit, and repeats. It i itself until a base case is reached (number of iterations).

import rhinoscriptsyntax as rs import Rhino

Cull Duplicates pts

Unit X

Move

StartIndex

5

Motion

#initialized variables firstCity = allCities[startIndex] allCities.RemoveAt(startIndex) #remove first list from list of poi visitedCities = [firstCity] #used list of points

#the function def TravellingSalesman(fromCities, i): #two parameters nextIndex = Rhino.Collections.Point3dList.ClosestIndexInLi nextCity = allCities[nextIndex] visitedCities.append(nextCity) #after visiting a city, it allCities.RemoveAt(nextIndex) if (i>0): TravellingSalesman(nextCity, i-1) #continue itera

TravellingSalesman(firstCity, iterations) #calling the function output = visitedCities #what is used to build the polyline to visu Based off of example by Ex-Lab: https://vimeo.com/60606151


Polyline Crv Explode Segments Crv Length

> 3.5 ?

List

Boolean List

Cull by pattern

6

Segments Join Crvs

Simply Crv

Construct plane

7

0

Explode Crv Vertices

Index Area

List Item Centroid

Geometry

Target Orient

Index List Item

Pt A

1

Pt B

Vector 2pt

Centroid

X&Y size Rectangle Centroid

Area

in this example, points) and an index in that list. point to the start point, ‘visits’ that point, is considered a recursive function as it calls upon

8

1

Z Axis

Area

Origin

9

Plane Normal

Source

Target

Origin

10

ints, already visited

ist(allCities, fromCities)

Orient Sections

11

Rail

Sweep 1 Brep

is removed from list of cities to still visit

Cap Holes

ating until no iterations remaining

ualise path travelled

12

Boolean Difference

13


DESIGN 5: BOX - GRASSHOPPER SCRIPT 25m x 25m x 25m

1. 25x25x25m box defined

2. Side surfaces indexed out

3. Srfs divided b directions

5. TravellingSalesman output: Point list order preview + polyline

5a. TravellingSalesman output (without any ‘jittering’ of points): Point list order preview + polyline

6. Any line segme ‘grid’ culled by segments by lengt joined where poss polylines.

9. Line indexes used to construct vector direction to orient planes.

10. 1mx1m square curves oriented to polyline end points.

11. Square curve through polyline

14


by 9 in UV

3a. Pts list order preview + polyline - order is uniform.

4. Points are ‘jittered’ by extremely small amounts in xyz direction (using divided digits of pi). Duplicates culled.

ents outside separating th. Curves then sible to form

7. Polylines exploded, vertices index [0].

8. Polylines exploded, vertices index [0] and [1].

profile sweep rails.

12. Different resulting forms using boolean difference. 15


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.