Level: Beginner What you learn: working with lists, lists of lists (2D Arrays) and data trees.
Steps
- Make a wall that would serve as a base for perforations. Keep it 2D for now.
Illustration
👀 Hint Hint I: we need to create a plane first. This plane can later be extruded as a wall. Hint II: a plane can be constructed from a line and a point.
⚙️Solution
- Find points on one axis that would be centers of the perforation circles
Illustration
👀 Hint
Hint: divide the line into a number of segments.
⚙️Solution
- Propagate these centers along the second axis
Illustration
👀 Hint
Hint: You need to propagate each list along the axis. Check List of lists and Graft option in Grasshopper.
⚙️Solution
- Create a shape for your perforation. We can start with a circle.
Illustration
👀 Hint
Hint: you likely want this shape to lie in the same plane as the wall.
⚙️Solution
- Place the perforation in the defined cetner points.
Illustration
👀 Hint
Hint: you can use the points defined in step 3 as centers of the circles (or the amount of translation).
⚙️Solution
- Change the size of the perforation holes. Implement three different strategies:
- assign same radius to all the perforations
- assign random radius to all the perforations
- create a sphere in the scene, change radius of the holes based on their distance to the sphere (e.g. more distant → smaller radius)
Illustration
👀 Hint
Hint: there is an inbuilt block to calculate distance between two points. Center of the sphere can be the first one.
⚙️Solution
- Time to perforate the wall! Let’s first extrude the holes.
Illustration
⚙️Solution
- Let’s subtract one surface from another
Illustration
👀 Hint
Hint: look through functions under Intersect / Shape.
⚙️Solution
-
🎢 Bonus: Add rotating circular panels in the middle of the holes. These panels can have a random rotation or be rotated versus the sphere.
Check out the full script if you get stuck!
This exercise has been developed under the workshop for Umeå universitetetfor the course of Elena Vazquez Peña Architectural Design Studio HT23-24.