A single C# Grasshopper node for early-stage AEC design
# GH Massing + Structure Generator — LOD 2
### A single C# Grasshopper node for early-stage AEC design
---
## What it does
Drop one closed curve and seven numbers into this script and get a complete
LOD 2 building model back in under a second — floor slabs, structural columns,
beam topology, perimeter façade skins, a service core, and a 30-metric BIM
schedule, all in a single organised DataTree.
It replaces roughly 40–60 native Grasshopper components and the manual wiring
that comes with them.
---
## Requirements
| Requirement | Version |
|---|---|
| Rhinoceros 3D | 7 or 8 |
| Grasshopper | Built-in (no plugins needed) |
| Script component | C# Script (default GH node) |
No third-party plug-ins. No Grasshopper libraries. Paste and run.
---
## Installation
1. Open Grasshopper inside Rhino.
2. Place a **C# Script** component on the canvas (`Math → Script → C# Script`).
3. Double-click the component to open the editor.
4. Select all existing code and delete it.
5. Paste the contents of `AEC_MassingColumnGrid_LOD2.cs`.
6. Click **OK** / **Compile**.
---
## Inputs
Right-click the `y` input → set **Access** to **List**.
| Port | Label | Type | Default | Description |
|---|---|---|---|---|
| `x` | Boundary | Curve | — | Closed planar footprint curve |
| `y[0]` | FloorHeight | Number | 4.0 | Floor-to-floor height |
| `y[1]` | NumFloors | Number | 8 | Number of storeys |
| `y[2]` | BaySpacing | Number | 6.0 | Structural grid spacing |
| `y[3]` | SlabThickness | Number | 0.30 | Concrete slab depth |
| `y[4]` | ColumnSize | Number | 0.50 | Square column section side |
| `y[5]` | CoreRatio | Number | 0.15 | Core area as fraction of floor plate (0–1) |
| `y[6]` | WWR | Number | 0.40 | Target window-to-wall ratio (0–1) |
Wire a **Merge** component with 7 Number Sliders into `y`.
---
## Output DataTree — port `a`
| Branch | Contents | Geometry type |
|---|---|---|
| `{0 ; i}` | Slab solid — one per floor `i` | Brep |
| `{1 ; i}` | Column Breps — all columns for floor `i` | Brep |
| `{2 ; i}` | Façade surface skin — floor `i` | Surface |
| `{3 ; i}` | Beam curves at slab soffit — floor `i` | LineCurve |
| `{4 ; 0}` | Service / lift core — full height | Brep |
| `{5}` | BIM schedule text lines | String |
Use a **Tree Branch** component set to path `{0}`, `{1}`, etc. to unpack layers.
Pipe `{5}` into a **Panel** for the schedule display.
---
## Schedule metrics
The built-in BIM schedule outputs 30+ metrics across five categories:
**Geometry** — floors, floor height, building height, bay spacing, slab thickness, column size
**Areas** — floor plate, core area, gross floor area (GFA), net floor area, net/gross ratio, perimeter
**Façade** — gross façade area, target WWR, glazing area, compactness ratio
**Structure** — columns per floor, column density per 1 000 m², beams per floor, slab/column/core volumes
**Embodied Carbon (proxy)** — slab kgCO₂e, column kgCO₂e, total kgCO₂e, intensity per m² GFA
> Carbon figures use published benchmark rates (concrete slab ≈ 300 kgCO₂e/m³,
> steel column ≈ 12 000 kgCO₂e/m³) and are suitable for feasibility-stage
> comparison only.
---
## Typical workflow
```
Curve (site boundary)
│
▼
┌─────────┐ Merge (7 sliders)
│ C# Node │◄────────────────────
└─────────┘
│ a (DataTree)
├── Tree Branch {0} ──► Bake slabs
├── Tree Branch {1} ──► Bake columns
├── Tree Branch {2} ──► Bake façade
├── Tree Branch {3} ──► Bake beams
├── Tree Branch {4} ──► Bake core
└── Tree Branch {5} ──► Panel (schedule)
```
---
## Tips
- **Any footprint shape works.** The column grid clips to the boundary using
`PointContainment`, so irregular, curved, and L-shaped plans are handled
automatically.
- **Units are model-aware.** The schedule reads `RhinoDocument.ModelUnitSystem`
and all geometry respects whatever unit your file uses.
- **Setback / offset.** Pipe the boundary through a Grasshopper **Offset Curve**
before connecting to `x` to apply a fire-escape or planning setback.
- **Multiple massing options.** Place the script inside a **Cluster** and feed
different boundary curves to compare GFA and carbon across scheme options in
one canvas.
---
## License
Single-user license. Do not redistribute the source file.
For studio/team licensing contact the seller through Payhip.
---
*Tested on Rhino 7.36 and Rhino 8.9 — Windows and macOS.*