Page 1

Digital Design - Module 02 Semester 1, 2018 Tony Cheung

(913682) Xiaoran Huang + Studio 3

Week Three

Reading: Kolerevic B. 2003. Architecture in the Digital Age

Kolerevic described three fundamental type of fabrication techniques in the reading. Outline the three techniques and discuss the potential of Computer Numeric Controlled fabrication with parametric modelling.

The three fundamental types of fabrication in this age is additive, subtractive and formative fabrication. Additive focuses on the creation of material by coating on top of each other in successive layers from a base. This is highly relevant with to Task 2 portion of the Module, well suited for any sort of sculptural or forms with a plasticity property. Formative fabrication is the process of bending and morphing the material into the desired shape, without taking away or adding material. Lastly, subtractive fabrication involves removing material (where to specifically cut out geometry or to create empty voids), such as with the laser cutter or Computer Numeric Controlled (CNC) miller. The potential of the new age of digital fabrication, especially with the integration of CNC fabrication into practice allows efficient and effective prototyping straight from a digital file, without the need for tedious plans and drawings. The nature and flexibility of parametric modelling opens up possibilities of interchangable complex designs, easily adjustable for different iterations and quickly prototypable. Moreover, the scripts created by the parametric visual scripting softwares can be collaboratively worked on from virtually anywhere.


Week Three

Surface Creation

(Iteration 1: Top Left.

2: Top Right.

3: Bottom Left. 4: Bottom Right.)

Scripting in Rhino was a straightforward process of creating the base script from the workshops, and plugging in my own containers and sliders to create the iterations parametrically. I found my first two iterations to be quite interesting, with both surfaces retaining the same base shapes, but with reverse holes. The third iteration was a mixture of a flat 2D section with a truncated pyramid, which when viewed as a grid creates a nice checker board pattern. The fourth iteration I explored the form of the pointed geometry bending with the flow of the surface, where the bottom right becomes the attractor point.


Week Four Panels & Waffle

The 2D surface was designed to look like a twisting, more stable component that would counteract the ‘spikey’ nature of the 3D panels. I quite liked the form of the 3D pyramids warping and slanting owards the “meeting point“ of the surfaces. I wanted to create this dynamic nature of cause and effect, or a form of momentum and response.


Created from two base breps, I was exploring the approach of one dominant, and one receeding or holding up the structure as a response, so that the waffle would stand. The 3D portion of the panel would touch opposite sides of the box, whereas the 2D portion curves in a similar manner, only not as much.

Week Four

Laser Cutting

A script was used in grasshopper to unroll the waffle structure directly from the breps into a flattened form. The 3D panels I used ptUnrollFaces and ptTabs. The 2D panels I had to use the Smash command, as part of my surface was ‘doubly-curved’, preventing me from using the same commands as the 3D. Unfortunately, this resulted in minor warping, less than 0.1% (according to Rhino), but it was enough to display several duplicate lines in each unroll. Unless I was to completely redo my original brep curve (and unroll again), my workaround was to manually relocate and delete duplicate curves (SelDup did not work). Fortunately it did not take too long to fix. The complexity of my base geometry may be to blame, however in the future I may try different waffle structures, perhaps some bent or notched.


Week Five

Iteration 1: Red (Spheres).

2: Yellow (Dodecahedron w/ Stellate).

3: Green (Platonic Tetrahedron).

4: Blue (Icosahedron).

In Green is the Grasshopper script used to create the 3x3 mesh square. Later in the appendix will be the script for the boolean geometry. The scripting process for the boolean surface was a lot more complex, using different point and curve attractors (even a randomiser) to create the square mesh. I experimented on more complex geometry with sharp edges and high polycounts, however I didn’t particuarlly like the roughness and many of the surfaces were jagged; too thin for the 3D printer to operate. I opted for simpler geometry, using the Icosahedron’s rounder properties to shape out differently angled planar sections. The result was a much more gentle and flowing surface that was one, developable, and two, able to create qualities of circulation, threshold and usable spatial volume.


Week Five


This boolean isometric was designed by using icosahedrons as the base shape through the process of twisting and scaling the brep in different areas of the 3x3 box. I found this iteration to be the most appealing as I noticed several distinct pockets of space forming (some along the back, some along the front slant), almost like circular seating indents of different proportions. The porosity in this design is fairly functional (and practical for 3D printing), as I have opened up the three sides (viewed at this isometric angle), prompting several informal access points and entrances. There were also some pockets of open cuts at the base, where the booleans intersected through the bottom of the square. This creates interesting opportunities of light fixtures or floor lamps at the base for points of interest and interaction. In terms of light and shadow, the round nature of the icosahedron allows each surface to be exposed directly (at some point of the sun’s rotation) or hidden. I deliberately chose my cuts to uncover the front (facing bottom left) portions as more open microclimates of space. This frees up a more direct space for public circulation, while the back pockets are much more closed, individual and private. The middle sections between the geometries serve as physical and visual barriers for the chambers of space, putting defined thresholds between the public and private realm.


Week Six Task 01








{0,0,0} {75,150,150}

{0,50,150} {0,0,150}





{0,150,25} {150,25,150}














Paneling Grid & Attractor Point




Grid Points


{50,150,0} {75,150,0}

{150,25,0} {150,75,0}



Attractor / Control Curves




Attractor / Control Points (X,Y,Z)





{-18, 60, 135} {75, 185, 55}

{105, 157, 64} {-5, 45, 35}

{100, 100, 80}

{37, 6, 22}

{160, 25, 55}


{Skewed Attractor Points}

{Attractor Point Locations}

{Attractor Curve}

{Panel Point Grids}





Task 01 Matrix The first stage involved the selection of two breps that had a certain relationship between each other. My first few iterations were simply two surfaces spread apart from each other, so I chose to develop one that had a dynamic relationship; one cutting across the entirety of the boundary and one in reponse to hold up the waffle. My panels were focusing on the properties of holes and cutouts that could allow light in at certain angles, but would block off completely from elsewhere. I found it interesting in my unused iterations of mixing panel types (even those of similar shape). I chose to iterate the matrix vertically rather than horizontally (different panels on different surfaces) as I wanted to explore more geometries and possibilities of form and flow, unconstrained by the base surface and not just plugging in different reference geometries.


Week Six Task 02

Grid Manipulation





Key {0,0,0}

{165, 80, 155}

Attractor / Control Points (X,Y,Z) Attractor / Control Curves Grid Points

{45, 55, 150} {212, 22, 0} {-50, 172, 190}

{47, 170, 58} {-35, 43, 6}

Centroid Distribution Geometry Morph

{3 Point Attractors + 1 Curve}

{3 Curvature Attractors + 1 Point}


{Point Cloud Attractor}





{Internal Mesh Volume}

{Internal Mesh Volume}

{Internal Mesh Volume}

{Mesh Centroids}







{Stellated Dodecahedron}


Task 02 Matrix I chose to experiment with the Grasshopper plugins for geometries that could be formed parametrically, such as with Weaverbird and LunchBox. I found the Randomiser Attractor useful, but it was unpredictable and it was impossible to recreate the same meshes without baking it out first. I used a mix of point and curve attractors to skew the focus of the centroids towards one side. Similar to Task 1, I chose to iterate my designs based on interchanging geometries and scaling based on the attractor containers used, not sticking to the same mesh for mutliple shapes. I liked this approach better as I used the icosahedron geometries for a different mesh, but worked better in 3.2 which became my final design. Spikier, more complex shapes like a stellated dodecahedron in 3.3 cut away too much of the material to have any formal character.


Week Six

Final Isometric Views




Script used for Task 1 after the contouring of X and Y axis of waffles, unwrapped directly into a grid for laser cut nesting. I only labelled the X axis unwrap as the horizontal waffle contours were simple enough to compare to the file, whereas the vertical components were often similar to each other.

The script used to deconstruct the box boundaries to divisible points on the edges, using Deconstruct Brep, List Item and Divide Curve. Moving the sliders will change either the edge of the box, the number of divisions, or the location of the points along the divided edge. I found that base surfaces worked better when they were quite different and far apart from each other, and not intersecting in a major way.


Appendix Process

When filling out the matrix, I created a short script to deconstruct the base surfaces around a bounding box plane, essentially creating a relative coordinate plane to reference the points (deconstructed from the brep). I could plug this into any Surface and point to list the coordinates without manually measuring the location in Rhino.

In the process of cutting my 150x150x150 boolean box, I explored ways of angular cuts and quarter trims to move away from the original box shape. The boolean geometry that I chose however had interesting volumetric properties lower at the base, where I had put my attractor points for the scaling and rotation script. Showcasing the base portions could show off more of the icosahedron’s boundaries.

For creating the 2D panels, I used Grasshopper to create a basic script that combines two “Point on Curve“ slides that would move outwards to join with the edges of the surface, effectively creating a tab for 25 panels at once. I repeated this on the other axis to cover the two dimensions of the panels.




The Grasshopper script for the creation of the boolean geometry. The process was fairly straightforward, where the distance between the mesh centroids and attractor points would be remapped as a magnitude of size scaling and rotation along the XY plane. However, in the process of creating the Weaverbird geometries (which could only create meshes, not NURBS), I was to either use BoxMorph (which led to perculiar stacking results) or to move to the centroids using vectors. Move to Centroids was a more suitable approach, allowing me to preserve the form of the base icosahedron and to freely manipulate it in all 3 axis.

Weaverbird and Lunchbox both and an array of geometries, however most of Lunchbox’s were complex mathematical shapes and not so much geometry. In my iterations I also played with Wb’s edge and bevel modifiers, which could subdivide surfaces and create newer and rounder booleans. However, Weaverbird could only create meshes, so I had a separate section of Grasshopper for baking out the geometries to be later referenced in Brep containers.


Appendix Process

I encountered some complications when I was making my Task 1 model. I opted to use cut layers for the edges and etches for the folds. In the future I may switch to dashed cut lines (via grasshopper containers) to make the folding process easier, as etched lines will only fold in one direction. This was a big issue, however for the few that were to bend both ways I had to manually score on the opposite side.

I experimented with the scale of the models with tiny human figurines, which really establishes the proportions and the spatial opportunities in the volumes. I found the 3D panels from Task 1 to be quite interesting as they allow certain amounts of light from specific angles. The dark framing within the volume of the waffle defines the atmosphere of space, like a passageway well protected from the outside. At this scale, Task 2 plays with the thresholds of physical and visual barriers, with altering heights, geometry sizes and walls from the base booleaned square. The two figures establish the communal qualities of the round-like envelopes, while the sitting figure creates the affordances and microclimates between the microclimates.

Doubly curved surfaces prevented a clean unroll on Rhino. As a workaround, I used PointsOn to manually join each curve together so that the laser cutter will not duplicate any cuts or etches. If I omitted this step, it could potentially could burn my panels in the laser cutting process.




A shot of the waffle from above, which the 2D surface flexes in response to the 3D’s sway in movement. When I was choosing which side to showcase for the model photo, both tend to curve counterclockwise and away from each other, making it difficult to showcase the other side in full effect. This view showcases the dynamic rotations and points of the waffle’s top, while retaining a solid foundation and base to stand.

A shot of the boolean geometry upright on the side, with the petagonal holes facing up and the solid volumes at the base. Lighting is still functional just as the original composition, in particular with the darker shadows at the base bringing out the qualities of the darker, isolated and more private areas. Thresholds remain the same, however circulation is different as the plane has rotated vertically.



913682 - Tony Cheung - DD-M2-Journal  

Generating Ideas Through Process

913682 - Tony Cheung - DD-M2-Journal  

Generating Ideas Through Process