Grasshopper file:
Aim
The objective of this project was to develop a fully parametric timber tower using Grasshopper, creating a workflow that integrates geometric design, structural generation and digital fabrication within a single definition.
The design is inspired by the Pyramidenkogel Tower in Austria, whose expressive twisting geometry is recreated through parametric relationships rather than manual modelling. Instead of producing a fixed shape, the Grasshopper definition allows the tower to adapt dynamically by modifying a set of design parameters such as the number of floors, floor height, section radii, spiral displacement and torsion angle.
The project extends beyond the generation of the external form. Once the tower geometry is defined, the script automatically creates its structural system by generating vertical and horizontal beams, resolving their intersections through fabrication joints and preparing every structural element for laser cutting.
The final outcome is a complete digital workflow that transforms a parametric architectural concept into fabrication-ready components.
Project Result



Grasshopper Workflow

The Grasshopper definition is organised into four main stages:
- Generation of the parametric tower geometry.
- Creation of the structural timber framework.
- Fabrication preparation through joint generation and beam extraction.
- Automatic labeling and nesting of all components for laser cutting.
Stage 1 – Parametric Tower Generation
The tower geometry is generated from a series of horizontal elliptical sections distributed along the vertical axis. The number of floors and the floor-to-floor height define the overall scale of the tower, while a set of Graph Mapper components controls the evolution of the section dimensions and the overall silhouette.


To avoid a purely vertical configuration, the centre of every floor is displaced using sine and cosine functions, producing a smooth spiral movement along the height of the tower. Each section is then progressively rotated according to a torsion function, generating the characteristic twisted form inspired by the reference project.

Finally, all rotated sections are lofted into a continuous surface, producing the parametric envelope that serves as the basis for the structural system.

Stage 2 – Structural Beam System
Once the tower surface has been generated, the structural framework is created automatically.
Sixteen vertical cutting planes intersect the tower surface to generate the curved vertical beams, while thirty horizontal planes produce the perimeter rings. Both systems are then transformed into structural members with adjustable rectangular cross-sections.




The result is a lightweight radial waffle structure whose geometry updates automatically whenever the main tower parameters are modified.
Stage 3 – Fabrication Preparation
The vertical and horizontal beams are automatically intersected in Grasshopper to generate the assembly joints required for fabrication, after applying cleaning null data to avoid possible future errors.

Once all intersections are resolved, each beam is individually extracted from the three-dimensional model and projected into the XY plane. This produces a complete set of two-dimensional fabrication drawings while preserving the geometry of every curved element.


Stage 4 – Nesting for Laser Cutting
The final stage prepares all fabrication drawings for production.
Using the OpenNest plugin, every beam is automatically arranged onto A0 sheets in order to minimise material waste while maintaining the identification of each component.

Each beam is assigned a unique identifier following a continuous numbering sequence:
- B_01 – B_30 → Horizontal beams
- B_31 – B_46 → Vertical beams
The labels are generated automatically in Grasshopper, ensuring that every identifier remains linked to its corresponding element throughout the entire workflow.
Once all beams are projected into the XY plane and nested onto A0 sheets using OpenNest, the corresponding labels are added to the fabrication drawings. The labels are positioned in the centroid of each component to maintain maximum readability while preserving the complete geometry of the laser-cutting profiles.
The same identifiers are also displayed within the three-dimensional model, creating a direct correspondence between the digital structure and the fabricated components. This allows each physical beam to be immediately associated with its exact location, orientation and sequence during assembly.
The automatic labeling system transforms the parametric model into a comprehensive assembly guide. By maintaining a one-to-one correspondence between the fabrication drawings and the 3D model, every beam can be easily identified, reducing assembly time and minimizing the risk of placing components in incorrect positions.
This integrated workflow establishes a continuous link between parametric design, digital fabrication and on-site assembly, ensuring that all components remain consistently organized from the initial model to the final construction.


Script Capabilities
One of the main strengths of a parametric workflow is the ability to generate radically different design outcomes simply by adjusting a few key sliders — without modifying the underlying script logic. The following variations demonstrate the range of forms that can be produced from the same definition.
- Variation 1 — Base Tower: The base configuration uses the default slider values: 30 floors at 3.5m height, radio of 40m and 31m, a torsion angle of 0.78 rad (≈45°), and a moderate spiral displacement of 1.6m and 0.8m in X and Y respectively. The result is an organic, slightly twisted tower with a characteristic silhouette — wide at the base, narrowing towards the middle, and opening again near the top.

- Variation 2 — Increased Torsion: By increasing the torsion angle slider from 0.78 to 3.14 rad (180°), the tower undergoes a full half-rotation from base to top. The overall silhouette is maintained, but the structural grid now follows a much more dramatic spiral path along the surface. This variation demonstrates how a single slider controls the entire rotational character of the tower, from a subtle lean to a full architectural twist. (Modified parameter: Torsion Angle → 0.78 to 3.14 rad).

- Variation 3 — Slender Profile with Modified Graph Mapper Curves: Here two changes are combined: the maximum radius sliders are reduced (from 40 to 15 and from 31 to 12), producing a much more slender tower; and the Graph Mapper curves for both radii are reshaped to be more asymmetric and pronounced. The result shows how the same structural logic adapts to a completely different proportional system — the waffle grid automatically recalculates to fit the new surface, with no manual intervention required. (Modified parameters: Radius 1 max → 40 to 15 / Radius 2 max → 31 to 12 / Graph Mapper curves reshaped)).

- Variation 4 — Exaggerated Spiral Displacement: The X and Y amplitude sliders controlling the sine/cosine displacement of the section centers are pushed to extreme values (5.0 and 3.0). The tower’s vertical axis is no longer straight but describes a wide, flowing curve in space — almost sculptural in character. The plan views (top) show clearly how the elliptical sections drift off-center along the height, and how the radial structural ribs follow that movement automatically. This variation highlights the expressive potential of the trigonometric displacement system and how it interacts with the structural grid. (Modified parameters: X Amplitude → 1.6 to 5.0 / Y Amplitude → 0.8 to 3.0).



Plugins Used
This project was developed using native Grasshopper and Rhino components only, with one exception for the fabrication preparation stage:
OpenNest
OpenNest — Free, open-source nesting plugin for Grasshopper developed by Petras Vestartas.
OpenNest was used to arrange all the flat pieces (vertical ribs and horizontal rings) onto standard laser-cutting sheets automatically. Without a nesting tool, placing dozens of irregular pieces manually onto sheets is time-consuming and wastes material.
In this project, OpenNest handles:
- Automatic placement of all pieces within a defined sheet boundary (e.g. 600×300mm or 1200×600mm)
- Rotation of pieces to minimize wasted material
- Sheet pagination — if pieces don’t fit on one sheet, OpenNest generates multiple sheets automatically
It can be downloaded here: https://www.food4rhino.com/en/app/opennest
All other components — surface generation, graph mappers, torsion, attractor logic, waffle structure, solid difference for slots, and labeling — are 100% native Grasshopper/Rhino with no additional plugins required.