ArchLang Playground

Practice Office (workplace) — an ArchLang floor plan example

A 225 m² office on a spine corridor: open workspace, meeting rooms, break room and an accessible WC, issued with tagged openings.

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

Team Workspace 63.0 m² Manager 21.0 m² Meeting 1 24.0 m² Meeting 2 21.2 m² Corridor 32.4 m² Reception 21.2 m² Break Room 22.6 m² AccessibleWC 11.8 m² Comms 8.0 m² 1750 1200 3250 1800 8100 1800 300 4500 4800 1200 1300 1700 500 4000 18200 2100 2000 8600 6000 1800 4700 12700 1600 2000 2000 2000 500 2000 1550 1400 2050 2000 1100 4500 4800 1200 1300 1700 500 4000 18200 2100 2000 2400 1000 1100 2000 2100 6000 1800 4700 12700 100 200 D01 D02 D03 D04 D05 D06 D07 D08 D09 W01 W02 W03 W04 W05 W06 W07 W08 W09 W10 ROOM SCHEDULE NO. NAME AREA (CENTRELINE, m²) NET AREA (m²) Workspace 01 Team Workspace 63.00 60.55 02 Manager 21.00 19.89 03 Meeting 1 24.00 22.52 04 Meeting 2 21.15 19.79 SUBTOTAL 129.15 122.75 Support 05 Corridor 32.40 30.26 06 Reception 21.15 19.79 07 Break Room 22.56 21.39 08 Accessible WC 11.75 10.92 09 Comms 7.99 7.28 SUBTOTAL 95.85 89.64 TOTAL 225.00 212.39 DOOR & WINDOW SCHEDULE TAG ROOM(S) WIDTH TYPE HAND D01 exterior / Reception 1200 hinged left D02 Team Workspace / Cor... 1200 hinged right D03 Manager / Corridor 1000 hinged right D04 Meeting 1 / Corridor 1000 hinged right D05 Corridor / Break Room 1000 hinged left D06 Corridor / Accessibl... 1000 hinged right D07 Corridor / Comms 1000 hinged left D08 Meeting 2 / Corridor 1000 hinged left D09 exterior / Corridor 1000 hinged right W01 Team Workspace 2000 window - W02 Team Workspace 2000 window - W03 Team Workspace 2000 window - W04 Manager 1400 window - W05 Meeting 1 2000 window - W06 Meeting 1 2000 window - W07 Meeting 2 2000 window - W08 Break Room 1800 window - W09 Meeting 2 1800 window - W10 Team Workspace 2000 window - NOTES 1. All dimensions in millimetres. Do not scale from this drawing. 2. Room areas are as scheduled; confirm on site before ordering finishes. 3. Fire-rated door to the comms room to be confirmed by the engineer. N 02 m PROJECTPractice OfficeDRAWN BYArchLangDATE2026-10-14DRAWING NO.A-201REVISIONASCALE1:100
"Practice Office" — a 9-room floor plan, 225 m² total: Team Workspace (63 m²), Manager (21 m²), Meeting 1 (24 m²), Meeting 2 (21.15 m²), Corridor (32.4 m²), Reception (21.15 m²), Break Room (22.56 m²), Accessible WC (11.75 m²), and 1 more; 9 doors, 10 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 small professional-services office: one open workspace, a manager's room, two meeting
# rooms, a break room, reception, a comms room and an accessible WC, all on a
# 1800 mm spine corridor.
#
# It is the WORKPLACE counterpart of the dwellings in this folder — no bedrooms, no kitchen
# triangle — and it shows the sheet statements a contractor reads first:
#
#   schedule rooms       NO. · NAME · AREA, grouped by the two zones below
#   schedule openings    D01… / W01… tags and the DOOR & WINDOW SCHEDULE, derived from the
#                        walls, never typed
#   notes "…"            the general notes, numbered in source order
#
# The spine is a real room (`uses circulation`) so every door lands on a space the
# reachability and path-width lint can measure. The WC door is 1000 wide and the room is
# deep enough to turn a wheelchair — the accessible-WC rule in
# `--profile accessibility-advisory`.
plan "Practice Office" {
  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 "Room areas are as scheduled; confirm on site before ordering finishes."
  notes "Fire-rated door to the comms room to be confirmed by the engineer."

  title { project "Practice Office" drawn_by "ArchLang" date "2026-10-14" number "A-201" revision "A" }

  # ---- shell and partitions ---------------------------------------------------
  wall id=shell exterior thickness 200 { (0,0) (18000,0) (18000,12500) (0,12500) close }
  # The two corridor walls run the full width; the cross walls stop on them.
  wall id=w_cn partition thickness 100 { (0,6000) (18000,6000) }
  wall id=w_cs partition thickness 100 { (0,7800) (18000,7800) }
  wall id=w_n1 partition thickness 100 { (10500,0) (10500,6000) }
  wall id=w_n2 partition thickness 100 { (14000,0) (14000,6000) }
  wall id=w_s1 partition thickness 100 { (4500,7800) (4500,12500) }
  wall id=w_s2 partition thickness 100 { (9300,7800) (9300,12500) }
  wall id=w_s3 partition thickness 100 { (11800,7800) (11800,12500) }
  wall id=w_s4 partition thickness 100 { (13500,7800) (13500,12500) }

  # ---- rooms ------------------------------------------------------------------
  zone work "Workspace" {
    room id=r_team    at (0,0)        size 10500x6000 label "Team Workspace" uses office
    room id=r_manager at (10500,0)    size 3500x6000  label "Manager" uses office
    room id=r_meet1   at (14000,0)    size 4000x6000  label "Meeting 1" uses office
    room id=r_meet2   at (13500,7800) size 4500x4700  label "Meeting 2" uses office
  }
  zone support "Support" {
    room id=r_spine   at (0,6000)     size 18000x1800 label "Corridor" uses circulation
    room id=r_recep   at (0,7800)     size 4500x4700  label "Reception" uses entry
    room id=r_break   at (4500,7800)  size 4800x4700  label "Break Room" uses kitchen dining
    room id=r_wc      at (9300,7800)  size 2500x4700  label "Accessible WC" uses wc
    room id=r_comms   at (11800,7800) size 1700x4700  label "Comms" uses utility
  }

  # ---- doors ------------------------------------------------------------------
  door id=d_front at (2250,12500) width 1200 wall shell hinge left swing in
  opening id=o_recep on w_cs at 2250 width 1500
  door id=d_open on w_cn at 6000 width 1200 swing into r_team
  door id=d_mgr on w_cn at 12250 width 1000 swing into r_manager
  door id=d_m1 on w_cn at 16000 width 1000 swing into r_meet1
  door id=d_break on w_cs at 7000 width 1000 swing into r_break
  door id=d_wc on w_cs at 10550 width 1000 swing into r_spine
  door id=d_comms on w_cs at 12650 width 1000 swing into r_comms
  door id=d_m2 on w_cs at 15750 width 1000 swing into r_meet2
  # A second way out: an outward-opening door closes the east end of the spine, so no room is a dead end.
  door id=d_east at (18000,6900) width 1000 wall shell swing out

  # ---- windows ----------------------------------------------------------------
  window at (2500,0) width 2000 wall shell
  window at (6500,0) width 2000 wall shell
  window at (9000,0) width 2000 wall shell
  window at (12250,0) width 1400 wall shell
  window at (16000,0) width 2000 wall shell
  window at (18000,3000) width 2000 wall shell
  window at (18000,9500) width 2000 wall shell
  window at (7000,12500) width 1800 wall shell
  window at (16900,12500) width 1800 wall shell
  window at (0,3000) width 2000 wall shell

  # ---- fit-out ----------------------------------------------------------------
  for i in 0..3 {
    furniture desk at (600 + i * 3200, 800) size 1600x800 label "Desk {i + 1}"
    furniture desk at (600 + i * 3200, 3600) size 1600x800 label "Desk {i + 4}"
  }
  furniture meeting_table in r_meet1 centered size 2600x1200 label "Meeting table"
  furniture meeting_table in r_meet2 centered size 2600x1200 label "Meeting table"
  furniture desk in r_manager anchor top inset 600 size 1600x800 label "Desk"
  furniture reception_desk in r_recep anchor top inset 800 size 2200x800 label "Reception"
  furniture kitchen_sink against wall w_s2 offset 1200 in r_break
  furniture counter against wall w_s2 offset 2400 in r_break
  furniture fridge against wall w_s2 offset 3600 in r_break
  furniture table in r_break centered size 1800x900 label "Table"
  furniture wc against wall shell segment 2 offset 7450 in r_wc
  furniture basin against wall w_s3 offset 2200 in r_wc
}

Read more