Assignment and Inspiration
In this semesters studio project, I created a structure that was supposed to arch over a pre-existing building, creating this kind of cut-out shape that was loosely inspired by Snøhettas Charles Library as seen below. My drawing and 3D-modelling software reached its limits very quickly, while trying to create a curved shape like this, not even mentioning tiling. Hence, I wanted to recreate it using Grasshopper.
The following image shows the shape of the arch as created in Archicad. Even though it works, the software is very limited, when it comes to these kinds of shapes. It was for example only possible for me to create an arch that is as deep as it is high, which was not ideal for me. Additionally, applying a texture to convey materiality was near impossible using this approach.
Step 1: Creating the curve
Similar to my first approach, I created a curve in Grasshopper, that I could loft later to create an arched surface. Because I wanted a modifyable arch, I created the curve remapping 20 points using a Bezier Curve in a Graph Mapper. This way, it was possible to easily modify the curvature and overall shape of the curves. If the curve should be more detailed, more points can be used. The subtraction tool is important in combination with the range tool, to have an even spacing of points on the curve.
In the next step, the points get interpolated, to create a curve through them. The bezier curve is used to create different curvatures.
Next up, the curve gets copied and rotated by 90 degrees, to serve as the vertical boundary of the arch. I copy it seperately, so I can modify this curve seperately from the bottom one. Additionally I create a third curve that sits in between, to give me more control over the shape of the arch.
Step 2: Creating the Surface
In the next step, I created the surface using the loft tool. Because I am lofting more than 2 curves at the same time, I have to be careful about the order of the connections. I use TriRemesh to divide the Surface into Triangles. By using the Dual Output, these triangles are being connected into NGons, which will help with creating the tiles in the next step. NGons are more benefitial than using hexagons, because they thend to get very distorted towards the corners on a shape like this. NGons allow for a even distribution of similarly shaped tiles across the whole surface.
Step 3: Tiling
The next and final step is the extrusion of the previously created mesh, in order to create the tiles, that the final product should consist of. Therefore I deconstruct the mesh into its components using the tool ExplodeMesh by the Plugin NGon and get the average normal vector for each tile, using the following script. The number that gets multiplied with the resulting vector influences the amplitude of the vector, which is used by the MeshExtrude tool, to determine the distance of the extrusion.
Step 4: Planarization
The cells in the mesh consist of multiple triangles at this point, they are not actually planar yet, which is something that I want to achieve. Therefore, I insert the Planarize tool from the NGon Plugin. To check, if the planarization has actually worked, I deconstruct the Mesh and create Polylines out of the resulting vertices. The Planar tool is then used to check for planarity in all the Polylines.
Step 5: Reorienting the tiles
As the final step I want to get all the tiles that form the arch and put them in a grid, so they could be exportet for 3D-printing, for example. To achieve this, I create a square grid. The amount of tiles may vary, based on their size and the shape of the arch, so the extent of the grid in y-direction has to be parametric. I achieve this by dividing the length of the list of tiles by the extent in x-direction. Another important step is to match the amount of points on the grid to the number of tiles. Otherwise, the grid would be filled up with duplicates of the last tile in the list. This can be achieved with the “shorten-list”- tool. The “orient”-tool is then used to aligne the tiles with the created grid.
The final script looks like this:
- Rhino Version: 8.8.24170.13001
- Used Plugins: NGon