ArchLang Playground

Corner Cafe (front and back) — an ArchLang floor plan example

A 15 x 10 m cafe split into front and back of house: a dining room for eighteen, a servery, a kitchen and a store.

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

Dining 90.0 m² Lobby 6.0 m² WC 5.1 m² Kitchen 24.0 m² Servery 18.0 m² Store 6.9 m² 900 2000 1100 1200 1200 1800 7000 9000 2000 1700 2300 15200 1400 2400 2600 2400 1400 4000 3000 3000 10200 1100 2000 2500 2000 2300 1400 3900 9000 2000 1700 2300 15200 1600 1000 350 900 6350 4000 3000 3000 10200 100 200 ROOM SCHEDULE NO. NAME AREA (CENTRELINE, m²) NET AREA (m²) Front of house 01 Dining 90.00 86.73 02 Lobby 6.00 5.42 03 WC 5.10 4.56 SUBTOTAL 101.10 96.71 Back of house 04 Kitchen 24.00 22.52 05 Servery 18.00 16.97 06 Store 6.90 6.13 SUBTOTAL 48.90 45.62 TOTAL 150.00 142.33 LEGEND poche wc basin kitchen_sink stove fridge table chair bench upper_cabinet plant bar_counter N 02 m SCALE1:100
"Corner Cafe" — a 6-room floor plan, 150 m² total: Dining (90 m²), Lobby (6 m²), WC (5.1 m²), Kitchen (24 m²), Servery (18 m²), Store (6.9 m²); 7 doors, 8 windows, entrances via d_front, d_goods.
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 15 x 10 m neighbourhood cafe: a dining room for eighteen, a servery, a kitchen, a store and
# one customer WC.
#
# A cafe is two buildings in one plan — a front of house the public walks, and a back of
# house they never see — and the plan makes that split legible three ways:
#
#   zones      `front` and `back` group the schedule's subtotals, and cost no geometry
#   doors      the public enters the dining room by a 1200 leaf; staff reach the kitchen
#              only THROUGH the servery, and the goods door on the east wall opens onto the
#              kitchen alone; the dining room orders through a cased opening in the servery
#              wall, and the customer WC opens off its own lobby, never the dining room
#   fit-out    every seat is a catalogue `table` + `chair` pair laid by `for`, the servery
#              counter is backed onto the wall it serves, and the kitchen line (sink,
#              stove, fridge) is `against wall` so each piece derives its own footprint
#
# `legend` lists the hatch and the fixture categories actually placed; `schedule rooms`
# totals the floor. Clean under both lint profiles.
plan "Corner Cafe" {
  units mm
  grid 50
  paper A3 landscape
  scale 1:100
  north up
  dims auto all
  schedule rooms
  legend

  # ---- shell and partitions ---------------------------------------------------
  wall id=shell exterior thickness 200 { (0,0) (15000,0) (15000,10000) (0,10000) close }
  # The spine between front and back of house, with the partitions that hang off it.
  wall id=w_e partition thickness 100 { (9000,0) (9000,10000) }
  wall id=w_k partition thickness 100 { (9000,4000) (15000,4000) }
  wall id=w_s partition thickness 100 { (9000,7000) (15000,7000) }
  wall id=w_wc partition thickness 100 { (12700,7000) (12700,10000) }
  # The WC does not open off the dining room: a small lobby sits between them.
  wall id=w_lb partition thickness 100 { (11000,7000) (11000,10000) }

  # ---- rooms ------------------------------------------------------------------
  zone front "Front of house" {
    room id=r_dining at (0,0)       size 9000x10000 label "Dining" uses dining
    room id=r_lobby  at (9000,7000) size 2000x3000  label "Lobby" uses circulation
    room id=r_wc     at (11000,7000) size 1700x3000 label "WC" uses wc
  }
  zone back "Back of house" {
    room id=r_kitchen at (9000,0)     size 6000x4000 label "Kitchen" uses kitchen
    room id=r_servery at (9000,4000)  size 6000x3000 label "Servery" uses kitchen
    room id=r_store   at (12700,7000) size 2300x3000 label "Store" uses storage
  }

  # ---- doors ------------------------------------------------------------------
  door id=d_front at (4500,10000) width 1200 wall shell hinge left swing in
  door id=d_pass on w_e at 6300 width 1000 hinge near end swing into r_servery
  door id=d_kitchen on w_k at 1500 width 1000 swing into r_kitchen
  door id=d_store on w_s at 4500 width 1000 swing into r_store
  door id=d_lobby on w_e at 9200 width 1000 swing into r_lobby
  door id=d_wc on w_lb at 900 width 1000 swing into r_lobby
  opening id=o_serve on w_e at 4850 width 1200
  door id=d_goods at (15000,2000) width 1000 wall shell swing out

  # ---- windows ----------------------------------------------------------------
  window at (2000,0) width 2000 wall shell
  window at (6500,0) width 2000 wall shell
  window at (0,2500) width 2400 wall shell
  window at (0,7500) width 2400 wall shell
  window at (1800,10000) width 2000 wall shell
  window at (7200,10000) width 1800 wall shell
  window at (10500,0) width 1400 wall shell
  window at (15000,3300) width 900 wall shell

  # ---- fit-out ----------------------------------------------------------------
  # A grid of two-tops: a 800 x 800 table with a chair at each of two sides.
  for i in 0..3 {
    for j in 0..3 {
      furniture table at (1800 + i * 2400, 1400 + j * 2200) size 800x800 label "T{i * 3 + j + 1}"
      furniture chair at (1950 + i * 2400, 700 + j * 2200) size 450x450
      furniture chair at (1950 + i * 2400, 2250 + j * 2200) size 450x450
    }
  }
  furniture bench in r_dining anchor left inset 100 size 500x2400 label "Bench"
  furniture plant in r_dining anchor top-right inset 300 size 500x500

  furniture bar_counter against wall w_e offset 4850 size 1200x600 in r_servery
  furniture upper_cabinet against wall w_k offset 4500 size 1400x350 in r_servery
  furniture kitchen_sink against wall shell segment 0 offset 11000 in r_kitchen
  furniture stove against wall shell segment 0 offset 12600 in r_kitchen
  furniture fridge against wall shell segment 0 offset 14000 in r_kitchen
  furniture wc against wall w_s offset 2900 in r_wc
  furniture basin against wall w_wc offset 1500 in r_wc
}

Read more