
In this week’s lecture, we transition from the general course setup to concrete design and technical workflows. We focus on two main pillars: setting the stage for the Design Project and deepening our Computational Foundation.
We will discuss the updated project perimeter and site requirements for the Quartiergarten Hard, establish the group design process, and walk through the submission workflow on POLY.GRADE.
Technically, we dive into the logic of Reciprocal Frame (RF) Systems. We will explore how to bridge the gap between abstract geometry and timber construction by creating custom mesh-generating algorithms (Brep Meshing) and converting these meshes into structural systems where every beam is logically linked to its neighbors.
The design process evolves in parallel with individual coding assignments (A01, A02) until the integration phase in Assignment A03.


POLY.GRADE is the central platform for all assignment submissions and grading.
Further details are available on Moodle.

Object-Oriented Programming (OOP) is a paradigm that allows us to structure our code by grouping data and functionality into logical units.
In Python, we use the class keyword to define new types. This allows us to define both Data (what the object knows/is) and Behavior (what the object can do).
class Room:
def __init__(self, name: str, width: float, depth: float):
# Data / Attributes
self.name = name
self.width = width
self.depth = depth
# Behavior / Method
def scale(self, factor: float) -> None:
self.width *= factor
self.depth *= factor
self.width). These are variables that belong to the object.__init__.__init__): A special magic method that is called automatically when a new object is created. It initializes the object’s attributes.def scale(self, factor: float = 1.0)).: str, : float, and -> None helps with code clarity and allows IDEs like VS Code to provide better linting and autocomplete.Reciprocal Frames (RF), often referred to as Hebelstabwerke, are surface structures consisting of individual beam elements that are connected to each other via spatial interlocking, which is referred to as an overlap.
The fundamental characteristic is mutual support: at least three elements rest on each other in such a way that each element is supported at one end by another and itself serves as a bearing for the next one.
The term is derived from the Latin reciprocus (mutual or alternating). In research and practice, various descriptions exist, such as Nexorades, Mutual Supporting Element Systems (MSE), or Mandala Roofs in traditional carpentry. Structurally, RF systems share a strong affinity with weaving and plaiting techniques, though they consist of short, discrete elements rather than continuous strands.

Transforming a conventional lattice (mesh) into a reciprocal system involves “opening” the nodes to create the characteristic overlapping pattern.

Unlike a standard reticulated framework where members meet at a single point, the nodes in an RF system are opened via two key operations:
In our computational workflow, this shift is driven by the underlying tessellation of the mesh. Each edge is enriched with a logical link to its next_edge and prev_edge, establishing a closed structural circuit across the surface.
Before creating an RF system, we need a clean mesh. Since we want to work with NURBS surfaces or Breps for intuitive design control, we will write a custom QuadMesher to automate the discretization process based on UV evaluation.

The core of the mesher is the evaluation of the surface domain ($u$, $v$). By dividing the domain into a grid of coordinates, we can map any $(u, v)$ pair back to a 3D point on the surface: \(P = S(u, v)\)
To generate a mesh from a surface, we follow these steps:
The surfaces you design might be “trimmed” or have irregular boundaries. Our mesher handles this by:
is_vertex_on_face for each vertex to identify holes or boundary constraints.With this approach, you will be able to represent a wide variety of surfaces as a mesh to kickstart your design.
In the first graded individual assignment, you will implement a custom QuadMesher class to generate quad meshes from Brep surfaces. The goal is to create a robust topological foundation for an RF system, handling UV mapping, vertex validation for trimmed surfaces, and materializing the structure using compas_timber.
Detailed instructions and tasks can be found here: Assignment A01: Brep Mesher
The examples for this week can be found in the assignment directory: