ArchLang Playground

Classroom Block (school) — an ArchLang floor plan example

A single-storey school block: three 60 m² classrooms on a 2 m corridor, with lobby, staff prep, pupil WCs and an accessible WC.

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

Classroom 1 60.0 m² Classroom 2 60.0 m² Classroom 3 60.0 m² Corridor 45.0 m² Entrance Lobby 20.0 m² Staff Prep 18.0 m² Store 12.0 m² Pupil WCs 18.0 m² AccessibleWC 10.0 m² Plant Room 12.0 m² 1925 1400 3150 1800 14475 5000 2500 2000 3000 2500 2000 2500 3000 22750 3125 2000 9125 8000 2000 4000 14250 1625 4500 3000 4500 3000 4500 1625 5000 2500 2000 3000 2500 2000 2500 3000 22750 3125 2000 3500 1000 3000 1000 625 8000 2000 4000 14250 150 250 D01 D02 D03 D04 D05 D06 D07 D08 D09 D10 W01 W02 W03 W04 W05 W06 W07 ROOM SCHEDULE NO. NAME AREA (CENTRELINE, m²) NET AREA (m²) Teaching 01 Classroom 1 60.00 56.94 02 Classroom 2 60.00 57.33 03 Classroom 3 60.00 56.94 SUBTOTAL 180.00 171.21 Service 04 Corridor 45.00 41.16 05 Entrance Lobby 20.00 18.24 06 Staff Prep 18.00 16.53 07 Store 12.00 10.83 08 Pupil WCs 18.00 16.10 09 Accessible WC 10.00 8.93 10 Plant Room 12.00 10.64 SUBTOTAL 135.00 122.43 TOTAL 315.00 293.64 DOOR & WINDOW SCHEDULE TAG ROOM(S) WIDTH TYPE HAND D01 exterior / Entrance ... 1400 hinged left D02 Classroom 1 / Corridor 1000 hinged right D03 Classroom 2 / Corridor 1000 hinged right D04 Classroom 3 / Corridor 1000 hinged right D05 Corridor / Staff Prep 1000 hinged left D06 Corridor / Store 1000 hinged left D07 Corridor / Pupil WCs 1000 hinged left D08 Corridor / Accessibl... 1000 hinged right D09 Corridor / Plant Room 1000 hinged left D10 exterior / Corridor 1000 hinged right W01 Classroom 1 4500 window - W02 Classroom 2 4500 window - W03 Classroom 3 4500 window - W04 Classroom 1 2000 window - W05 Classroom 3 2000 window - W06 Staff Prep 1800 window - W07 Plant Room 1000 window - NOTES 1. All dimensions in millimetres. Do not scale from this drawing. 2. Classroom doors are 1000 mm leaves; a second exit closes the east end of the corridor. 3. Pupil WC cubicle partitions are 1500 mm deep. N 02 m PROJECTClassroom BlockDRAWN BYArchLangDATE2026-10-14DRAWING NO.A-301REVISIONASCALE1:100
"Classroom Block" — a 10-room floor plan, 315 m² total: Classroom 1 (60 m²), Classroom 2 (60 m²), Classroom 3 (60 m²), Corridor (45 m²), Entrance Lobby (20 m²), Staff Prep (18 m²), Store (12 m²), Pupil WCs (18 m²), and 2 more; 10 doors, 7 windows, entrances via d_front, d_east.
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.

# A single-storey classroom block: three 60 m2 classrooms on a 2 m corridor, with the
# entrance lobby, a staff prep room, a store, pupil WCs, an accessible WC and a plant room
# along the service side.
#
# Teaching rooms are the same room three times, so the furniture is written ONCE as a loop
# over the room's west edge — `let X = i * CW` is the only thing that differs between
# classrooms — and the plan keeps the three rooms in step by construction. Each room has:
#
#   a teacher's desk on the north wall, facing a class of twelve tables in three columns,
#   a bookshelf run along the corridor wall, and a door at the EAST end of that wall,
#   so the leaf swings away from the tables and the entry path stays clear of them.
#
# Schools are exactly where the `accessibility-advisory` profile is not optional, so the
# plan is written to pass it: 1000 mm door leaves, a 2000 mm corridor, the door end of every
# classroom left clear of tables, and an accessible WC with its door on the corridor. It is
# also lint-clean under the default ruleset.
plan "Classroom Block" {
  units mm
  grid 50
  paper A2 landscape
  scale 1:100
  north up
  dims auto all
  schedule rooms
  schedule openings
  notes "All dimensions in millimetres. Do not scale from this drawing."
  notes "Classroom doors are 1000 mm leaves; a second exit closes the east end of the corridor."
  notes "Pupil WC cubicle partitions are 1500 mm deep."

  title { project "Classroom Block" drawn_by "ArchLang" date "2026-10-14" number "A-301" revision "A" }

  let CW = 7500   # classroom width

  # ---- shell and partitions ---------------------------------------------------
  wall id=shell exterior thickness 250 { (0,0) (22500,0) (22500,14000) (0,14000) close }
  wall id=w_cn partition thickness 150 { (0,8000) (22500,8000) }
  wall id=w_cs partition thickness 150 { (0,10000) (22500,10000) }
  wall id=w_c1 partition thickness 150 { (7500,0) (7500,8000) }
  wall id=w_c2 partition thickness 150 { (15000,0) (15000,8000) }
  wall id=w_s1 partition thickness 150 { (5000,10000) (5000,14000) }
  wall id=w_s2 partition thickness 150 { (9500,10000) (9500,14000) }
  wall id=w_s3 partition thickness 150 { (12500,10000) (12500,14000) }
  wall id=w_s4 partition thickness 150 { (17000,10000) (17000,14000) }
  wall id=w_s5 partition thickness 150 { (19500,10000) (19500,14000) }
  # Cubicle partitions between the three pupil pans (pans at x 13000, 14500, 16000).
  wall id=w_cub1 partition thickness 150 { (13750,12500) (13750,14000) }
  wall id=w_cub2 partition thickness 150 { (15250,12500) (15250,14000) }

  # ---- rooms ------------------------------------------------------------------
  zone teaching "Teaching" {
    room id=r_c1 at (0,0)     size 7500x8000 label "Classroom 1" uses office
    room id=r_c2 at (7500,0)  size 7500x8000 label "Classroom 2" uses office
    room id=r_c3 at (15000,0) size 7500x8000 label "Classroom 3" uses office
  }
  zone service "Service" {
    room id=r_corr  at (0,8000)      size 22500x2000 label "Corridor" uses circulation
    room id=r_lobby at (0,10000)     size 5000x4000  label "Entrance Lobby" uses entry
    room id=r_prep  at (5000,10000)  size 4500x4000  label "Staff Prep" uses office
    room id=r_store at (9500,10000)  size 3000x4000  label "Store" uses storage
    room id=r_wcp   at (12500,10000) size 4500x4000  label "Pupil WCs" uses wc
    room id=r_wca   at (17000,10000) size 2500x4000  label "Accessible WC" uses wc
    room id=r_plant at (19500,10000) size 3000x4000  label "Plant Room" uses utility
  }

  # ---- doors ------------------------------------------------------------------
  door id=d_front at (2500,14000) width 1400 wall shell hinge left swing in
  opening id=o_lobby on w_cs at 2500 width 1500
  door id=d_c1 on w_cn at 6700 width 1000 swing into r_c1
  door id=d_c2 on w_cn at 14200 width 1000 swing into r_c2
  door id=d_c3 on w_cn at 21700 width 1000 swing into r_c3
  door id=d_prep on w_cs at 7250 width 1000 swing into r_prep
  door id=d_store on w_cs at 11000 width 1000 swing into r_store
  door id=d_wcp on w_cs at 14750 width 1000 swing into r_wcp
  door id=d_wca on w_cs at 18250 width 1000 swing into r_corr
  door id=d_plant on w_cs at 21000 width 1000 swing into r_plant
  # The corridor is 22.5 m long: a second exit closes its east end, so no classroom is a dead end.
  door id=d_east at (22500,9000) width 1000 wall shell swing out

  # ---- windows: one wide glazed bay per classroom, north-lit ------------------
  window at (3750,0) width 4500 wall shell
  window at (11250,0) width 4500 wall shell
  window at (18750,0) width 4500 wall shell
  window at (0,4000) width 2000 wall shell
  window at (22500,4000) width 2000 wall shell
  window at (7250,14000) width 1800 wall shell
  window at (22500,13000) width 1000 wall shell

  # ---- fit-out ----------------------------------------------------------------
  for i in 0..3 {
    let X = i * CW
    furniture desk at (X + 3000, 500) size 1600x800 label "Teacher"
    furniture bookshelf at (X + 1500, 7450) size 3000x400 label "Books" rotate 180
    for c in 0..3 {
      for r in 0..4 {
        furniture table at (X + 1200 + c * 1800, 2100 + r * 1300) size 1200x600
      }
    }
  }
  furniture desk in r_prep anchor bottom-right inset 400 size 1600x800 label "Desk"
  furniture shelf in r_store anchor bottom inset 300 size 2000x500 label "Shelving"
  furniture wc against wall shell segment 2 offset 9500 in r_wcp
  furniture wc against wall shell segment 2 offset 8000 in r_wcp
  furniture wc against wall shell segment 2 offset 6500 in r_wcp
  furniture wc against wall shell segment 2 offset 4250 in r_wca
  furniture basin against wall w_s4 offset 3000 in r_wcp
  furniture basin against wall w_s5 offset 2000 in r_wca
}

Read more