CH NEO-ZÜRICH EDITION
WEATHER · OVERCAST 8°C
BLEND OF THE DAY · 07/ROGUE
EST. 2027
THE AEC CYBER MORNING NEWS

PAZ Kaffi

DESIGN · DEMOLITION · CAFFEINE · DISPATCH
EDITION 1023 · 23 October 2026
BROADCAST 04:42 CET
2,400 BROADSHEETS PRINTED
READ TIME · 47 MIN
Seven Lines of Plain Text Turn the Room You Draw Into an IFC Solid
ACTION
FRAME · 06:55
23-10-2026

Seven Lines of Plain Text Turn the Room You Draw Into an IFC Solid

Draw a rectangle, circle or L-shaped room and watch the IFC4 lines write themselves: three lines for a profile, one on the origin, four more for a solid.

Open the geometry of an IFC model in a text editor and nothing is hidden. It is plain text, one object per line, written as #id=ENTITY(arguments);, and the lines point at each other by number. A shape is a small graph of numbered sentences. A 2D outline, called a profile, plus one more number, a height, is a solid: a wall, a room, a slab. Today’s ACTION sketch lets you draw the outline and watch its lines write themselves.

The grammar is ISO 10303-21, known as STEP Part 21, and the schema behind it is written in EXPRESS, ISO 10303-11. $ is a value deliberately left unset. .AREA. is an enumeration, with dots on both sides. According to the Part 21 standard, every real number carries a decimal point, so 4. and 0.05 are valid while 4 and .05 are not. Integer index lists carry no point. Every line ends in a semicolon.

In Switzerland, the people who keep that language shared are «Bauen digital Schweiz / buildingSMART Switzerland», constituted at Swissbau Basel in January 2016. In September 2026 it published its «Data Dictionaries» recommendation, aligned to IFC 4.3.2.0. Behind it stands buildingSMART, which grew out of the Industry/International Alliance for Interoperability (1994–95) and publishes IFC openly under CC BY-ND 4.0. Schema editors rarely get a byline. Every line below is their work.

The rectangle, and the line that vanishes

A 4 m × 3 m rectangle drawn from the origin costs three lines and 108 bytes. The three lines are a point at the centre (2, 1.5), a 2D placement at that point, and the filled profile, 4. wide and 3. deep. The placement uses the centre because, according to buildingSMART’s IFC4 ADD2 TC1 schema, the rectangle “is placed centric within the position coordinate system.”

Centre it on 0,0 and the placement can simply be left out, because IFC4 makes it optional. The profile collapses to IFCRECTANGLEPROFILEDEF(.AREA.,$,$,4.,3.), which is one line. A circle takes the same three lines, ending in a centre and a radius: IFCCIRCLEPROFILEDEF(.AREA.,$,#2,1.5).

The polygon, in two dialects

An L-shaped room needs corners. The classic dialect writes one IFCCARTESIANPOINT per corner, threads the points through an IFCPOLYLINE, and wraps that in an IFCARBITRARYCLOSEDPROFILEDEF. That makes n + 2 lines for n corners. The compact dialect was added in IFC4 Addendum 1 (2015). It packs every corner into one IFCCARTESIANPOINTLIST2D and lets an IFCINDEXEDPOLYCURVE walk the points by index, so it always takes three lines. Written as a polygon, the same 4 × 3 outline is 6 lines and 204 bytes in classic, and 3 lines and 167 bytes in compact.

Closing is never automatic. Classic repeats the first point at the end, and compact returns to index 1. Forget it and the outline is open, which is not a valid profile. The trade-off is plain: compact stays small however many corners you add, while classic gives every corner its own #id to point at.

←TODAY: an IFC4 rectangle is three lines of plain text, 108 bytes, and one line if it sits on the origin.
→3012: the models still legible in Zurich-3012 are the ones whose geometry a person can read aloud.
Fulcrum: geometry you can read as a sentence is geometry you can rebuild from the principle rather than from the file.

One number, and the wall is a sentence

Tick “+ height” and four lines appear: an origin point, a direction (0.,0.,1.), a 3D placement, and #7=IFCEXTRUDEDAREASOLID(#3,#6,#5,2.8);. Read it aloud: take profile #3, place it at #6, push it along #5, straight up, 2.8 deep. The whole wall is that sentence. The profile must be .AREA., because the schema forbids extruding a bare outline. From where this desk sits, the models that survived were the ones whose derivation stayed this readable.

The sketch offers rectangle, circle or polygon. Drag polygon corners on a 0.05 m grid. Double-click an edge to add a corner, and shift-click or right-click a corner to delete it (the minimum is three). Click a corner and its line lights up; click a line and its entity lights up. The readout shows area (by the shoelace formula), perimeter, line count and bytes. A name field writes ProfileName, starting with ‘Room’.

Every output was parsed and its solid measured with IfcOpenShell 0.9.0, the open library started by Thomas Krijnen, with no schema errors. The lines were checked; they are not certified. They are also not an .ifc file, and they will not open in a viewer on their own. A real file adds a header, units, a project, a context and an element such as IfcWall or IfcSpace. The sketch is a lens on geometry, not a BIM tool.

Hack: Write the three lines of a placed rectangle by hand, so the next export you open reads like a sentence and not like noise.

#1=IFCCARTESIANPOINT((2.,1.5));
#2=IFCAXIS2PLACEMENT2D(#1,$);
#3=IFCRECTANGLEPROFILEDEF(.AREA.,$,#2,4.,3.);

Line 1 is the centre. Line 2 is the placement, where $ keeps the default x-direction. Line 3 is the filled 4 × 3 profile: 12 m² and a perimeter of 14 m in a file set to metres. Move the centre to 0,0 and lines 1 and 2 go.

Atelier: Archicad exports IFC natively. Rhino 8 does not read or write IFC out of the box (plug-ins do), and the point today is that the text is simple enough to write yourself. For a Grasshopper-and-Archicad studio now letting AI draft its scripts, a line you can read is a line you can check. Monday move: ask one Grasshopper user to build a C# component that takes a closed curve and emits these seven lines, then have them read the output aloud at the team meeting.

PAZ, a Rhino center in Switzerland, already decoded one IFC wall line argument by argument in Start C# From One Variable — and Learn to Read an IFC Line While You’re There. Today is its geometry sequel.

So draw the L-shaped room the sketch starts with: six corners, 25 m², and 70 m³ at 2.8 m high. Switch to compact, tick + height, and copy the seven lines. Then drag a rectangle onto 0,0 and watch three lines become one.

FILED FROM
CO-SIGNERS
PAZ Academy
CONFIDENCE
HIGH
REPRINTS
© PAZ - PARAMETRIC ACADEMY ZURICH · ALL RIGHTS RESERVED

PAZ Kaffi · multidisciplinary editorial, led by PAZ Academy

⚑ REPORT AN ERROR · SUBMIT A CORRECTION
◂ BACK TO FRONT PAGE · PAZ KAFFI

© 2026 PAZ Academy.