ArchLang Playground

Issued Sheet (tags + notes) — an ArchLang floor plan example

A small flat issued on A3 with a drawing number, general notes and a tag on every door and window, keyed to a schedule.

This plan compiles to 3 rooms, 54 m² of floor area and 3 windows; every room is reachable from the entrance.

Living Room 30.0 m² Bedroom 12.0 m² Study 12.0 m² 5000 4000 9200 3200 1800 1200 3000 3000 6200 2100 1000 3300 1400 1400 5000 4000 9200 3900 1400 900 3000 3000 6200 100 200 D01 D02 D03 W01 W02 W03 ROOM SCHEDULE NO. NAME AREA (CENTRELINE, m²) NET AREA (m²) 01 Living Room 30.00 28.13 02 Bedroom 12.00 10.97 03 Study 12.00 10.97 TOTAL 54.00 50.07 DOOR & WINDOW SCHEDULE TAG ROOM(S) WIDTH TYPE HAND D01 exterior / Living Room 1000 hinged left D02 Living Room / Bedroom 900 hinged left D03 Living Room / Study 900 sliding - W01 Living Room 1800 window - W02 Bedroom 1400 window - W03 Study 1400 window - NOTES 1. All dimensions in millimetres. Do not scale from this drawing. 2. Check every dimension on site before work starts. 3. Room areas are taken to wall centrelines. 4. Door hand is read from the side the door opens into. N 01 m PROJECTSheet Notes FlatDRAWN BYArchLangDATE2026-10-13DRAWING NO.A-101REVISIONBSCALE1:50
"Sheet Notes Flat" — a 3-room floor plan, 54 m² total: Living Room (30 m²), Bedroom (12 m²), Study (12 m²); 3 doors, 3 windows, entrance via d_front.
Open in the editor

The source

This is the whole plan. The drawing above is what the compiler produced from it — nothing was drawn by hand.

# An issued sheet — the SHEET-ANNOTATION example.
#
# A drawing that leaves the office carries more than the plan: a drawing number and a
# revision in the title block, the general notes every contractor reads first, and a tag
# on every door and window keyed to a schedule. All three are opt-in sheet statements, and
# all three are presentation only — `describe()` and `lint()` learn nothing from them:
#
#   title { … number "A-101" revision "B" }   two more title-block rows
#   notes "…"                                 the NOTES table, numbered in source order
#   schedule openings                         D01…/W01… tags + the DOOR & WINDOW SCHEDULE
#
# The schedule is DERIVED, never typed: the rooms each opening serves (the same answer as
# `describe --json`'s `doors[].between` / `windows[].room`), its width, its kind and, for a
# hinged leaf, its HAND — read off the drawn leaf from the side it opens into, so it does
# not depend on which way the wall was written. A tag sits beside its opening: a window's
# inside the room, a door's past the hinge jamb, clear of the swing and out of the doorway.
plan "Sheet Notes Flat" {
  units mm
  grid 50
  paper A3 landscape
  scale 1:50
  north up
  dims auto all
  schedule rooms
  schedule openings
  notes "All dimensions in millimetres. Do not scale from this drawing."
  notes "Check every dimension on site before work starts."
  notes "Room areas are taken to wall centrelines."
  notes "Door hand is read from the side the door opens into."

  title { project "Sheet Notes Flat" drawn_by "ArchLang" date "2026-10-13" number "A-101" revision "B" }

  # ---- shell -------------------------------------------------------------------
  wall id=shell exterior  thickness 200 { (0,0) (9000,0) (9000,6000) (0,6000) close }
  wall id=w_mid partition thickness 100 { (5000,0) (5000,6000) }
  wall id=w_bed partition thickness 100 { (5000,3000) (9000,3000) }

  # ---- rooms -------------------------------------------------------------------
  room id=r_living at (0,0)    size 5000x6000 label "Living Room" uses living
  room id=r_bed    at (5000,0) size 4000x3000 label "Bedroom" uses bedroom
  room id=r_study  at (5000,3000) size 4000x3000 label "Study" uses office

  # ---- doors -------------------------------------------------------------------
  # The front door opens IN, so its tag cannot sit outside (the dimension chains live
  # there): it goes on the swing side, behind the hinge, where the leaf never reaches.
  door id=d_front on shell at 2500 width 1000 hinge left swing in
  door id=d_bed on w_mid at 1500 width 900 hinge right swing out
  door id=d_study sliding on w_mid at 4500 width 900

  # ---- windows -----------------------------------------------------------------
  window on shell at 26000 width 1800
  window on shell at 7000 width 1400
  window on shell at 13500 width 1400
}

Read more