> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aliengh.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Walls and openings

> Layered walls from real build-ups, with doors and windows cut through them, and curtain walls.

Pick a build-up, draw a line, and get a layered wall from one level to the next. Doors and windows are hosted in it: each one cuts through every layer, and each step passes the walls on, so every opening so far stays cut.

```text theme={null}
wall_types.wall_type ─> walls.wall_type
levels.levels ─> walls.levels
walls.walls ─> doors.walls ─> doors.walls ─> windows.walls
```

| Component | What it's for |
| - | - |
| [Wall types](#wall-types) | A wall build-up: pick an Australian preset (brick veneer, double brick, timber stud, CLT, AAC and more) or type your own layers in millimetres. |
| [Walls](#walls) | Layered walls along any line, polyline, arc or outline, from one level to the next, joined at the corners, with plan linework at the cut height. |
| [Doors](#doors) | Doors hosted in your walls (swing, double, sliding, pocket, bifold), cut through every layer, with frames, leaves, plan swings and elevation marks. |
| [Windows](#windows) | Windows hosted the same way (fixed, casement, awning, hopper, sliding, double hung) at a sill height, with frames, sashes, glass and drawing symbols. |
| [Curtain wall](#curtain-wall) | Mullions, transoms and glass along a straight, curved or closed path between levels, in box, I, T, round, fin or flat bar profiles, with optional trusses behind. |

***

## Wall types

`wall_types`

A wall build-up: pick an Australian preset (brick veneer, double brick, timber stud, CLT, AAC and more) or type your own layers in millimetres.

**Cost:** Free.

### Inputs

| Input | Type | On the component | Default | What it does |
| - | - | - | - | - |
| `preset` | Text | Dropdown | `brick veneer` | a common Australian build-up, or custom (from layers). One of `brick veneer`, `double brick`, `timber stud`, `steel stud partition`, `concrete 200`, `precast 150`, `blockwork 190`, `CLT`, `rendered AAC`, `custom` |
| `name` | Text | Text field | blank | type name (blank: the preset's) |
| `layers` | list of Text | Text field | blank | layers exterior -> interior, thickness in mm: 'brick 110; cavity 40; timber stud 90\*; plasterboard 10' (\* = core). Replaces the preset's layers when given |
| `plane` | Plane | Wire | — | where the swatch sits (default: world origin) |
| `save` | Boolean | Button | — | add this type to the Alien library |

### Outputs

| Output | Type | What it gives you |
| - | - | - |
| `wall_type` | Text | wall\_type record for walls |
| `names` | list of Text | layer names, exterior first |
| `materials` | list of Text | layer materials |
| `thicknesses` | list of Number | layer thicknesses (m) |
| `total` | Number | overall thickness (m) |
| `swatch` | list of Brep | a stepped section sample, one solid per layer |
| `colours` | list of Colour | colour per swatch solid |
| `info` | Text | what happened: a summary, sources and notes |

<AccordionGroup>
  <Accordion title="How it works">
    * Layers run exterior -> interior in mm ('brick 110; cavity 40; timber stud 90\*; plasterboard 10'; m and cm work; \* marks the core); a layers text replaces the preset's.
    * Junk tokens are reported one by one; an empty custom falls back to a generic 200 mm wall.
    * Outputs layer names, materials, thicknesses, the total and a stepped swatch with colours.
  </Accordion>
</AccordionGroup>

***

## Walls

`walls`

Layered walls along any line, polyline, arc or outline, from one level to the next, joined at the corners, with plan linework at the cut height.

**Cost:** Free.

### Inputs

| Input | Type | On the component | Default | What it does |
| - | - | - | - | - |
| `path` | list of Curve | Select in Rhino | — | wall location lines: lines, polylines, arcs, splines, closed outlines (a sample room when unwired) |
| `wall_type` | list of Data | Wire | — | wall\_types record(s), one per path (the last repeats; default: generic 200 mm) |
| `levels` | list of Data | Wire | — | level records (sample levels when unwired) |
| `base` | Text | Text field | blank | base level: name, code or index (blank: the first) |
| `top` | Text | Text field | blank | top level: name, code or index (blank: the level above the base) |
| `height` | Number | Slider 0–30 | `0` | height (m); 0 = up to the top level |
| `offset` | Number | Slider -5–5 | `0` | base offset from the base level (m) |
| `location` | Text | Dropdown | `centre` | which line of the wall the path is. One of `centre`, `exterior`, `interior`, `core centre` |
| `flip` | Boolean | Switch | off | swap the exterior and interior sides |
| `join` | Boolean | Switch | on | clean joins: mitre L corners, trim walls that butt into others |
| `cut` | Number | Slider 0–3 | `1` | plan cut height above the base level (m) |
| `site` | Data | Wire | — | site record (optional): places the sample room |

### Outputs

| Output | Type | What it gives you |
| - | - | - |
| `walls` | list of Text | wall records (for doors and windows) |
| `solids` | list of Brep | one solid per layer per wall |
| `materials` | list of Text | material per solid |
| `colours` | list of Colour | colour per solid |
| `plan` | list of Curve | plan linework at the cut height: every layer boundary and the wall ends |
| `centrelines` | list of Curve | centre of each wall's thickness, at its base |
| `info` | Text | what happened: a summary, sources and notes |

<AccordionGroup>
  <Accordion title="How it works">
    * The exterior is on the left of an open path; closed outlines put it outside; flip swaps.
    * Location line: centre, exterior, interior or core centre.
    * Corners within a wall are mitred exactly; with join on, walls meeting end to end are mitred (L) and walls stopping inside another are trimmed to its face (T). Crossings (X) are left overlapping.
    * Layers that fold over on bends too tight for the wall are dropped with a note.
    * Plan linework is cut at a height above the base (default 1 m).
  </Accordion>
</AccordionGroup>

***

## Doors

`doors`

Doors hosted in your walls (swing, double, sliding, pocket, bifold), cut through every layer, with frames, leaves, plan swings and elevation marks.

**Cost:** Free.

### Inputs

| Input | Type | On the component | Default | What it does |
| - | - | - | - | - |
| `walls` | list of Data | Wire | — | wall records from walls (or from windows / another doors component); a sample wall when unwired |
| `wall` | Text | Text field | blank | which wall: id or index, several with commas, or 'all' (blank: the first; points: the nearest) |
| `positions` | list of Text | Text field | blank | door centres along the wall (m): '1.2, 4.5'; negative = back from the end, '50%' = halfway (blank: mid-wall) |
| `points` | list of Point3d | Wire | — | or points: each door goes to the nearest wall |
| `width` | Number | Slider 0.5–6 | `0.9` | overall width, frame included (m) |
| `height` | Number | Slider 1.5–4 | `2.1` | overall height from the floor (m) |
| `family` | Text | Dropdown | `single swing` | door type. One of `single swing`, `double swing`, `sliding`, `pocket`, `bifold` |
| `hand` | Text | Dropdown | `left` | hinge side seen from the side it opens into (sliding, pocket, bifold: the side it opens towards). One of `left`, `right` |
| `swing` | Text | Dropdown | `in` | the side it opens into (in = the wall's interior). One of `in`, `out` |
| `frame` | Number | Slider 0.02–0.2 | `0.04` | frame (jamb) width (m) |
| `design` | list of Geometry | Select in Rhino | — | a generated leaf design (e.g. object\_3d parts), fitted into each leaf (optional) |
| `name` | Text | Text field | blank | door type name for the library (blank: from the family, size and hand) |
| `save` | Boolean | Button | — | add this type to the Alien library |

### Outputs

| Output | Type | What it gives you |
| - | - | - |
| `openings` | list of Text | door records |
| `walls` | list of Text | wall records with every opening so far (wire into windows) |
| `solids` | list of Brep | the walls' layer solids with every opening cut |
| `colours` | list of Colour | colour per solid |
| `parts` | list of Geometry | frames, leaves and glass together |
| `part_colours` | list of Colour | colour per part |
| `frames` | list of Brep | door frame solids |
| `leaves` | list of Geometry | leaves (or the fitted design) |
| `glass` | list of Brep | glazing in the leaves |
| `plan` | list of Curve | walls cut at the plan height, open at the doors |
| `symbols` | list of Curve | plan symbols: frame, leaf drawn open, swing arc |
| `reflected` | list of Curve | seen from below (reflected ceiling plan): head, frame, closed leaves |
| `elevation` | list of Curve | on the exterior face: outline and opening lines (dashed V points to the hinges) |
| `info` | Text | what happened: a summary, sources and notes |

<AccordionGroup>
  <Accordion title="How it works">
    * Positions '1.2, -1, 50%' (negative = back from the end), or points (nearest wall); wall by id, index, list or 'all'.
    * Openings stay clear of corners and wall ends and never overlap (skipped or moved with a note).
    * walls in, walls out: each record gains its openings, so walls -> doors -> windows chains, and solids are the walls with every opening so far cut (straight walls rebuilt face by face, curved ones by Booleans).
    * hand is seen from the side the door opens into; swing in or out.
    * Drawings: plan (leaf drawn open with its swing arc), reflected (seen from below), elevation (dashed V to the hinges).
    * design: generated geometry (e.g. object\_3d's parts) is fitted into each leaf, mirrored for right hands.
  </Accordion>
</AccordionGroup>

***

## Windows

`windows`

Windows hosted the same way (fixed, casement, awning, hopper, sliding, double hung) at a sill height, with frames, sashes, glass and drawing symbols.

**Cost:** Free.

### Inputs

| Input | Type | On the component | Default | What it does |
| - | - | - | - | - |
| `walls` | list of Data | Wire | — | wall records from walls or doors (or another windows component); a sample wall when unwired |
| `wall` | Text | Text field | blank | which wall: id or index, several with commas, or 'all' (blank: the first; points: the nearest) |
| `positions` | list of Text | Text field | `25%, 75%` | window centres along the wall (m): '1.2, 4.5'; negative = back from the end, '50%' = halfway (blank: mid-wall) |
| `points` | list of Point3d | Wire | — | or points: each window goes to the nearest wall |
| `width` | Number | Slider 0.3–6 | `1.2` | overall width, frame included (m) |
| `height` | Number | Slider 0.3–4 | `1.2` | overall height (m) |
| `sill` | Number | Slider 0–3 | `0.9` | sill height above the floor (m) |
| `family` | Text | Dropdown | `awning` | window type. One of `fixed`, `casement`, `awning`, `hopper`, `sliding`, `double hung` |
| `hand` | Text | Dropdown | `left` | casement: hinge side seen from the side it opens into; sliding: the side it opens towards. One of `left`, `right` |
| `swing` | Text | Dropdown | `out` | the side sashes open into. One of `in`, `out` |
| `frame` | Number | Slider 0.02–0.2 | `0.05` | frame width (m) |
| `design` | list of Geometry | Select in Rhino | — | a generated sash design (e.g. object\_3d parts), fitted into each sash (optional) |
| `name` | Text | Text field | blank | window type name for the library (blank: from the family, size and hand) |
| `save` | Boolean | Button | — | add this type to the Alien library |

### Outputs

| Output | Type | What it gives you |
| - | - | - |
| `openings` | list of Text | window records |
| `walls` | list of Text | wall records with every opening so far |
| `solids` | list of Brep | the walls' layer solids with every opening cut |
| `colours` | list of Colour | colour per solid |
| `parts` | list of Geometry | frames, sashes and glass together |
| `part_colours` | list of Colour | colour per part |
| `frames` | list of Brep | window frame solids |
| `sashes` | list of Geometry | sashes (or the fitted design) |
| `glass` | list of Brep | window glass |
| `plan` | list of Curve | walls cut at the plan height, open at the windows |
| `symbols` | list of Curve | plan symbols: frame and sashes (the opening dashed when above the cut) |
| `reflected` | list of Curve | seen from below (reflected ceiling plan): head, frame, sashes |
| `elevation` | list of Curve | on the exterior face: outline, sashes and opening lines (dashed V points to the hinges) |
| `info` | Text | what happened: a summary, sources and notes |

<AccordionGroup>
  <Accordion title="How it works">
    * Hosted, placed and chained like doors; a window may sit above a door.
    * Plan symbols are dashed when the window is above the cut; reflected view; elevation marks show the hinge side (side-hung casement, top-hung awning, bottom-hung hopper) or arrows (sliding, double hung).
    * design: generated geometry is fitted into each sash.
  </Accordion>
</AccordionGroup>

***

## Curtain wall

`curtain_wall`

Mullions, transoms and glass along a straight, curved or closed path between levels, in box, I, T, round, fin or flat bar profiles, with optional trusses behind.

**Cost:** Free.

### Inputs

| Input | Type | On the component | Default | What it does |
| - | - | - | - | - |
| `path` | Curve | Select in Rhino | — | base line in plan: the glazing line before offset; exterior on its right, closed outlines face out (sample: a 12 m line) |
| `levels` | list of Data | Wire | — | level records (sample: 3 storeys at 3.2 m) |
| `base` | Text | Text field | blank | base level: name, code, index or an elevation like 4.5 (blank = the lowest) |
| `top` | Text | Text field | blank | top level: name, code or index, -2 = second from the top (blank = the highest) |
| `height` | Number | Slider 0–200 | `0` | height above the base level (m); 0 = up to the top level |
| `panel` | Number | Slider 0.1–12 | `1.5` | panel width (m): mullion spacing |
| `fit` | Text | Dropdown | `equal divide` | what happens to the remainder. One of `equal divide`, `fixed from start`, `centred` |
| `transom_heights` | Text | Text field | blank | transom heights (m), e.g. '1.2, 2.4'; '@1.5' = every 1.5 m; negative = down from the top |
| `measure` | Text | Dropdown | `each storey` | transom heights are measured from. One of `each storey`, `wall base` |
| `at_levels` | Boolean | Switch | on | a transom at every level (slab edge) |
| `profile` | Text | Dropdown | `box` | mullion profile. One of `box`, `I`, `T`, `round`, `fin`, `flat bar` |
| `width` | Number | Slider 10–400 | `50` | mullion face width (mm) |
| `depth` | Number | Slider 20–1000 | `150` | mullion depth (mm), perpendicular to the facade; round: the diameter |
| `transom_profile` | Text | Dropdown | `same` | transom profile. One of `same`, `box`, `I`, `T`, `round`, `fin`, `flat bar` |
| `transom_width` | Number | Slider 0–400 | `0` | transom face height (mm); 0 = as the mullion |
| `transom_depth` | Number | Slider 0–1000 | `0` | transom depth (mm); 0 = as the mullion |
| `glazing` | Number | Slider 4–80 | `28` | glass thickness (mm) |
| `offset` | Number | Slider -2–2 | `0` | glazing line offset from the path (m); + = outwards |
| `flip` | Boolean | Switch | off | swap inside and outside |
| `truss` | Text | Dropdown | `none` | trusses behind the mullions (inside face). One of `none`, `warren`, `pratt`, `howe`, `vierendeel` |
| `truss_depth` | Number | Slider 0.2–4 | `0.8` | truss depth, chord centre to chord centre (m) |
| `chord` | Text | Text field | `box 100x100` | chord section in mm: depth x width \[x wall], e.g. 'box 100x100', 'round 114x6', 'I 150x75' |
| `web` | Text | Text field | `round 60` | web section in mm, e.g. 'round 60', 'box 60x60' |
| `cut` | Number | Slider 0–100 | `1` | plan cut height above the base (m) |

### Outputs

| Output | Type | What it gives you |
| - | - | - |
| `solids` | list of Brep | mullions, transoms, frame, glass and trusses, in that order |
| `colours` | list of Colour | preview colour per solid |
| `mullions` | list of Brep | mullion solids |
| `transoms` | list of Brep | transom solids |
| `frame` | list of Brep | jambs, sills and heads |
| `glass` | list of Brep | glass panels |
| `trusses` | list of Brep | truss solids, when trusses are on |
| `plan` | list of Curve | cut at the plan height: member outlines and glass |
| `grid` | list of Curve | the curtain grid on the glazing plane |
| `panels` | list of Brep | cell surfaces on the grid, facing out |
| `records` | list of Text | curtain\_wall record, then one curtain\_panel per cell |
| `info` | Text | what happened: a summary, sources and notes |

<AccordionGroup>
  <Accordion title="How it works">
    * The exterior is on the right of an open path's direction; closed outlines face out; flip swaps.
    * Mullions at a panel width (equal divide, fixed from start or centred); arcs and splines are faceted into straight chords; every corner gets a mullion turned to the bisector.
    * Transoms at every level and/or typed heights ('1.2, 2.4', '@1.5', '-0.9' down from the top), per storey or from the wall base.
    * Mullion and transom profiles box, I, T, round, fin (frameless glass with 12 mm joints) or flat bar, in mm.
    * Optional warren, pratt, howe or vierendeel trusses behind the mullions (depth, chord and web sections).
    * Member counts are capped (300 mullions, 1,500 cells, 1,500 truss members) with a note.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.