1. 1 design 9: digital methodologies process book andrew cook
matthew fisher kevin ryan arch-507 | professor ku | fall 2014
2. 01 37 55 13 41 23 63 This process book is a documentation of
our collective understanding of digital design, generative coding,
and problem solving in unfamiliar environments. Its purpose is to
both chronicle our design process and give an empathetic view into
our project understanding. We hope it invokes and inspires readers
to push the boundaries of their own worldview. - The Team
3. 3 python codingprogression + (dis)order. classes +
functions. repetition + recursion. algorithms. concept. narrative.
resources. site. technology. previous attempts. expedition mars it
. 1 it . 2 iteration 1 iteration 2 final ex . 1 ex . 2 exploration
1 exploration 2 it . f
4. This is a series of explorations of the Python scripting
component in the Rhinoceros 3D modeling program. These exercises
explore concepts relating to self-organization, emergence, and
generative design.
6. import math import random import rhinoscriptsyntax as rs
#setting range min = 0. max = 90. int = 8. #creating unit through
range interval for x in rs.frange(min, max, int): for y in
rs.frange (min, max, int): wave1 = rs.AddSphere ([0,0,0], 1) z =
60*math.cos(math.radians(x+y))
rs.ScaleObject(wave1,[0,0,0],[4,4,4]) rs.MoveObject(wave1,[x, y,
z]) #remaining sides of finished product wave2 = rs.RotateObject
(wave1, (0,0,0), 90, axis=None, copy=True) wave3 = rs.RotateObject
(wave2, (0,0,0), 90, axis=None, copy=True) wave4 = rs.RotateObject
(wave3, (0,0,0), 90, axis=None, copy=True) #flipping object
rs.RotateObject([wave1, wave2, wave3, wave4], (0,0,0), 180,
[1,1,0], False) import rhinoscriptsyntax as rs import math
corners=([0,0,3],[3,0,3],[3,3,3],[0,3,3],[1.49,1.49,0],
[1.51,1.51,0],[1.51,1.49,0],[1.49,1.51,0]) dblA=0 dblB=90 dblStep=3
for x in rs.frange(dblA,dblB,dblStep): for y in
rs.frange(dblA,dblB,dblStep): box=rs.AddBox(corners)
z=40*math.sin(math.radians(x+y))
rs.ScaleObject(box,[0,0,0],[1,1,1]) rs.MoveObject(box,[x,y,z])
box2=rs.RotateObject(box,[0,0,0],90,None,True)
points=([0,0,3],[0,3,3],[1.5,1.5,0],[0,0,3])
polyline=rs.AddPolyline(points) srf1=rs.AddPlanarSrf(polyline)
points2=([0,0,3],[3,0,3],[1.5,1.5,0],[0,0,3])
polyline2=rs.AddPolyline(points2) srf2=rs.AddPlanarSrf(polyline2)
points3=([3,3,3],[3,0,3],[1.5,1.5,0],[3,3,3])
polyline3=rs.AddPolyline(points3) srf3=rs.AddPlanarSrf(polyline3)
points4=([3,3,3],[0,3,3],[1.5,1.5,0],[3,3,3])
polyline4=rs.AddPolyline(points4) srf4=rs.AddPlanarSrf(polyline4)
points5=([0,0,3],[3,0,3],[3,3,3],[0,3,3],[0,0,3])
polyline5=rs.AddPolyline(points5) srf5=rs.AddPlanarSrf(polyline5)
box=rs.JoinSurfaces([srf1,srf2,srf3,srf4,srf5])
rs.DeleteObject(srf1) rs.DeleteObject(srf2) rs.DeleteObject(srf3)
rs.DeleteObject(srf4) rs.DeleteObject(srf5) A b
7. 3 progression + (dis)order A b
8. import math import random import rhinoscriptsyntax as rs
class lotus: #defining variables for output def __init__(self,
_min, _max, _int, _amp, _rot): self.min = _min self.max = _max
self.int = _int self.amp = _amp self.rot = _rot self.quarterList =
[] self.petList = [] #creating first petal def bloom (self): for x
in rs.frange (self.min, self.max, self.int): for y in rs.frange
(self.min, self.max, self.int): pet1 = rs.AddSphere ([0,0,0],
random.uniform(0,1)) z = self.amp*math.cos(math.radians(x+y)) scale
= rs.ScaleObject(pet1,[0,0,0],[4,4,4]) full =
rs.MoveObject(scale,[x, y, z]) self.quarterList.append(full)
#arraying petals def flower (self): for i in range
(len(self.quarterList)): pet2 = rs.RotateObject
(self.quarterList[i], (0,0,0), self.rot, axis=None, copy=True) pet3
= rs.RotateObject (pet2, (0,0,0), self.rot, axis=None, copy=True)
pet4 = rs.RotateObject (pet3, (0,0,0), self.rot, axis=None,
copy=True) petall = rs.BooleanUnion([self.quarterList[i], pet2,
pet3, pet4], True) self.petList.append(petall) #mirror flower to
bloom upward def flip (self): for i in range (len(self.petList)):
rs.RotateObject(self.petList[i], (0,0,0), 180, [1,1,0], False) lf =
lotus(0, 90, 8, 60, 90) lf.bloom() lf.flower() lf.flip() import
rhinoscriptsyntax as rs import math import random class myClass():
def __init__(self, _min, _max, _step): self.min = _min self.max =
_max self.step = _step self.corners =
([0,0,3],[3,0,3],[3,3,3],[0,3,3],[1.49,1.49,0],[1.51,1.51,0],[1.51,1.49,0],[1.49,1.51,0])
#create form and replicate along sine curve def form(self): for x
in rs.frange(self.min, self.max, self.step): for y in
rs.frange(self.min, self.max, self.step): pyramid =
rs.AddBox(self.corners) z = 40*math.sin(math.radians(x+y))
rs.ScaleObject(pyramid,[0,0,0],[1,1,1],True)
rs.MoveObject(pyramid,[x,y,z]) field =
rs.MoveObject(pyramid,[random.uniform(0,10),random.uniform(0,10),0])
field2 = rs.RotateObject(field,[0,0,0],90,None,True) obj =
myClass(0,120,6) #references def __init__() obj.form() #references
def form(self): A b
16. Expedition Mars is our response to build a tower in an
extreme environment with limited resources to create a sustainable
future for humanity. The project is meant both to preserve and
develop the Earth-like environment. It is based on research of the
past and proposes design responses for the future.
19. 15 Mission_ We will colonize in interstellar territory on
Mars by creating a sustainable living environment. As a response to
the potential extinction of the human race, establishing a
codependent network of communities will ensure the preservation of
humans. Attempts to terraform are necessary to adapt to the harsh
Martian environment. With limited time to plan, utilization and
recycling of natural resources on Mars is critical in developing
stability over time. Seek immediate refuge on an adjacent planet
concept + narrative
20. CO2 O2 N2 NITROGEN USE: USE: USE: USE: USE: USE: WATER
OXYGEN MARS SOIL CARBON DIOXIDE SUNLIGHT PHOTO- SYNTHESIS ENERGY
BREATHING CONSTRUCTION BREATHING HYDRATION 96% PLENTIFUL
PLENTIFUL.13% 2.7% POTENTIALLY PLENTIFUL
21. 17 resources + site MARS SITE HEBES CHASMA 5000 15000 40000
FT FTSITE GLOBAL TEMPERATURE 70 F -100 F -195 F 2500 7500
15000
22. D-SHAPE PRINTER | MONOLITE UK MARS ONE | NASA MARS ROVERS |
NASA SOJOURNER OPPORTUNITY CURIOSITY
23. 19 technology MARCOPOLO LIFE-SUPPORT LANDER | NASA WATER
PROCESSING LIQUEFICATION WATER CLEANUP POWER PRODUCTION POWER
DISTRIBUTION ATMOSPHERIC PROCESSING SOIL PROCESSING
24. EDEN PROJECT | NICHOLAS GRIMSHAW LUNAR HABITATIONS | NORMAN
FOSTER MARS ONE | NASA; KRISTIAN VON BENGTSON
25. 21 previous attempts MARS ONE LIFE SUPPORT | NASA; KRISTIAN
VON BENGTSON MARS ONE LIFE SUPPORT | NASA; KRISTIAN VON
BENGTSON
26. This iteration focused on creating a self-sustaining tower
that is based largely on preexisting technology. We explored the
potential for a productive tower to support a dependent population.
The tower produces resources without direct human intervention by
focusing on atmospheric production, solar gathering, and
agricultural revival.
27. 23 iteration 1it . 1
28. MARS COLONIZATION | ZA ARCHITECTS
29. 25 component precedents IT.1 ASM HEADQUARTERS |
SYNERGETICS, INC.
30. TOWER DOME TUNNEL
31. 27 SOLAR GATHERING GAS EXTRACTOR FAILSAFE PRESSURE GAUGE
ICE HARVESTER HYDROPONICS VERTICAL FARM ING CO2 RECYCLING CENTRAL
CORE EXPOSED PROTECTED components + program IT.1
32. INTERNATIONAL SPACE STATION CONSTRUCTION
33. 29 tower construction IT.1 SOLAR STORAGE SOLAR STORAGE GAS
EXTRACTOR VERTICAL FARMING CENTRAL CORE LAND EXTEND CONSTRUCT SOLAR
APPLICATIONSKIN APPLICATION
34. a b c
35. 31 tower section b d d c DWELLING UNITS CENTRAL CORE FAIL
SAFE PRESSURE GAUGE GAS EXTRACTOR VERTICAL FARMING CIRCULATION
TOWER GAS EXTRACTOR SOLAR GATHERING a IT.1
36. 4500FEET 6FEET M AGNIFIED 100x MT EVEREST PROJECT
BURJKHALIFA
37. 33 ON SITE LAYERS PREFABRICATED LAYERS HIGHLY RADIATION
RESISTANT SOLAR PANEL ALUM INUM SHEATHING TITANIUM STRUCTURE KEVLAR
PANEL M ARTIAN CONCRETE FINISH LAYER scale + materiality IT.1
38. YEAR 2020 YEAR 2520
39. 35 terraforming IT.1 YEAR 3020
40. This iteration explored the application of a 3D printer as
a method of producing structure. It incorporated both a
standardized and responsive method of construction. By housing the
program directly within the vertical structure, the result was a
purely functional tower.
41. 37 exploration 1ex . 1
42. SOLAR PANEL INTEGRATION
43. 39 GENERATOR GAS EXTRACTION GAS EXTRACTION SOLAR COLLECTION
PRODUCTIONCORE/PRINT CORE LAUNCH PROGRAM DISTRIBUTION SCALE STUDY
ex.1production tower exploration
44. This iteration was an experimental modular form through a
Voronoi pattern. In order to make use of the materials available,
we introduced an industrial program. This allowed us to express the
design in a more provocative form. To support a growing population,
we explored the potential for expansive architecture.
45. 41 iteration 2it . 2
46. 43CORE INDUSTRY INDUSTRY AGRICULTURE AGRICULTURE EXPANSION
CORE TRANSPORTATION, UTILITY DISTRIBUTION MATERIAL CONSTRUCTION,
RESOURCE SYNTHESIS FARMING, MASS VEGETATION PRODUCTION WATER
STORAGE, EXTERNAL CONNECTIVITY INDUSTRY AGRICULTURE EXPANSION 1 2 3
4 1 2 3 4 parti + program IT.2
47. 2722 FT.INITIAL 900 FT. BURJ KHALIFA COMCAST CENTEREMPIRE
STATE 1454 FT. 974 FT. MAX EXPANSION 7500 FT.
48. 45 scale + program distribution IT.2 CORE INDUSTRY
AGRICULTURE
49. 100 FT 300 FT 600 FT
50. 47 site + tower plans IT.2 0 25 75 150 AGRICULTURE INDUSTRY
CORE 2500 FT 7500 FT 15000 FT
51. 49 circulation + sections IT.2
52. 51 materiality IT.2 MARTIAN CONCRETE IRON MULLIONS
PLENTIFUL DIRT AGGREGATE PLENTIFUL MATERIAL RADIATION PROTECTION
LEAD GLASS
53. import rhinoscriptsyntax as rs import random class
Points(): def __init__(self,X): self.X = X self.square =
rs.AddCurve(([-5.5,5.5,0],[5.5,5.5,0],
[5.5,-5.5,0],[-5.5,-5.5,0],[-5.5,5.5,0]),1) def main(self,X):
self.arrX=[] self.arrY=[] self.ptListIN = [] self.ptListOUT = []
self.POINTLIST = [] gridpts =
rs.AddPoints([[-5,5,0],[0,5,0],[5,5,0],[-5,0,0],
[0,0,0],[5,0,0],[-5,-5,0],[0,-5,0],[5,-5,0]])
self.POINTLIST.append(gridpts) for i in range (100): sv=0 while
True: rx=random.randint(-20,20) ry=random.randint(-20,20) overlap =
False for j in range (i): diffx=abs(self.arrX[j]-rx)
diffy=abs(self.arrY[j]-ry) if(diffx