BIM & Architecture

Same parametric idea, tuned for buildings: elements are typed and hosted (a door only exists inside a wall), structure is first-class, and a schedule or a drawing sheet is just a view of the same model, not a separate document.

Rooms

A room is not drawn; it is the volume its walls enclose. ROOM BOUNDARY is given the walls that bound a space and derives the space itself from them, so the figures a schedule needs follow from the model rather than being entered alongside it.

Deriving a Space from Its Walls
NEW BIM PROJECT UNITS "mm" SET ?bim
AFTER BIM ?bim WALL FROM 0,0 TO 6000,0 HEIGHT 3000 THICKNESS 200 SET ?w1
AFTER BIM ?bim WALL FROM 6000,0 TO 6000,4000 HEIGHT 3000 THICKNESS 200 SET ?w2
AFTER BIM ?bim WALL FROM 6000,4000 TO 0,4000 HEIGHT 3000 THICKNESS 200 SET ?w3
AFTER BIM ?bim WALL FROM 0,4000 TO 0,0 HEIGHT 3000 THICKNESS 200 SET ?w4
AFTER BIM ?bim ROOM BOUNDARY [?w1 AND ?w2 AND ?w3 AND ?w4] NAME "Studio" SET ?studio
AFTER EMIT ?studio("area") & " m2, " & ?studio("volume") & " m3"
(* 22.04 m2, 66.12 m3 *)

Walls are centred on the lines given, so a 6000 x 4000 layout in 200 mm walls encloses 5800 x 3800 mm. The area reported is the floor the room actually has, not the rectangle its walls occupy.

Any plan, not only rectangles. The space is obtained by cutting the walls out of a slab spanning the plan and keeping the parts that do not reach the outside. An L-shaped room, a plan with a nib or a bay, and a simple rectangle are therefore measured by one rule. Walls that do not close return an area of zero and a note explaining that nothing is enclosed, rather than a figure that cannot be trusted.
An L-Shaped Plan
NEW BIM PROJECT UNITS "mm" SET ?bim
AFTER BIM ?bim WALL FROM 0,0 TO 6000,0 HEIGHT 3000 THICKNESS 200 SET ?a
AFTER BIM ?bim WALL FROM 6000,0 TO 6000,2000 HEIGHT 3000 THICKNESS 200 SET ?b
AFTER BIM ?bim WALL FROM 6000,2000 TO 3000,2000 HEIGHT 3000 THICKNESS 200 SET ?c
AFTER BIM ?bim WALL FROM 3000,2000 TO 3000,5000 HEIGHT 3000 THICKNESS 200 SET ?d
AFTER BIM ?bim WALL FROM 3000,5000 TO 0,5000 HEIGHT 3000 THICKNESS 200 SET ?e
AFTER BIM ?bim WALL FROM 0,5000 TO 0,0 HEIGHT 3000 THICKNESS 200 SET ?f
AFTER BIM ?bim ROOM BOUNDARY [?a AND ?b AND ?c AND ?d AND ?e AND ?f] NAME "Workshop" SET ?room
AFTER EMIT ?room("area") & " m2"
(* 18.85 m2 - the enclosed floor, not the 21 m2 the centrelines describe *)
Complete Building - Ground Floor with Structure
NEW BIM PROJECT UNITS "mm" SET ?bim
AFTER BIM ?bim LEVEL "Ground Floor" ELEVATION 0 SET ?lvl0
AFTER BIM ?bim LEVEL "Level 1" ELEVATION 3000 SET ?lvl1
AFTER BIM ?bim WALL FROM 0,0 TO 6000,0 HEIGHT 3000 THICKNESS 200 TYPE "Concrete-200mm" SET ?wall1
AFTER BIM ?bim DOOR IN ?wall1 AT 1200 WIDTH 900 HEIGHT 2100 TYPE "Single-Flush" SET ?door1
AFTER BIM ?bim WINDOW IN ?wall1 AT 3200 SILL 900 WIDTH 1500 HEIGHT 1200 SET ?win1
AFTER BIM ?bim COLUMN AT 0,0 HEIGHT 3000 TYPE "UC-254x254" SET ?col1
AFTER BIM ?bim BEAM FROM 0,0 TO 6000,0 ELEVATION 3000 TYPE "UB-406x178" SET ?beam1
Schedules - A View of What Is Already There
BIM ?bim LIST SET ?all
AFTER COUNT ?all SET ?n
AFTER EMIT ?n & " elements"

AFTER BIM ?bim SCHEDULE "Door Schedule" CATEGORY "Door" SET ?doors
AFTER FOREACH ?doors SET ?d
OPEN
  EMIT ?d("label") & " - " & ?d("type") & "<br>"
CLOSE
CATEGORY matches an element’s type or the name you gave it. To the geometry kernel a door is a window hosted in a wall, so a schedule of “Doors” finds them by what you called them - which is why naming elements as you place them is worth the keystrokes.
IFC Export - Out to Every Other Tool
BIM ?bim EXPORT AS "ifc" SET ?path
AFTER EMIT ?path

A model leaves as IFC4, the format every other BIM tool reads. A building assembled here opens in Revit, ArchiCAD or Solibri as walls, columns and windows - not as a mesh that used to be a building.

Not yet built. Stairs, room boundaries, drawing sheets, parametric families, dimensions, tags and clash detection are not part of this. What is here is the model itself - levels, walls, hosted openings, structure, schedules and IFC export - and every example on this page has been run as written.
BIM ?bim EXPORT AS "ifc" SET ?path
AFTER EMIT ?path

Not Yet Built

Stairs, room boundaries, drawing sheets, parametric families, dimensions, tags and clash detection are not part of this yet. What is here is the model itself - levels, walls, hosted openings, structure, schedules and IFC export - and everything on this page has been run as written.