Open Editable BIM Format

← Back to Overview

OEBF Applications

A path-first, human-readable building model format designed for direct editing by people and language models alike. All geometry is stored as plain JSON — paths, profiles, elements, junctions — in a structured directory bundle.

Applications

Viewer

Inspect OEBF bundles and compressed archives in 3D. Includes a sample model you can load immediately.

  • Click Load demo to open the sample model
  • Open any .oebf folder (Chrome/Edge) or .oebfz file (all browsers)
  • Use View profiles to inspect wall and slab cross-sections
Editor

Draw walls and slabs, manage storeys, add reference grids and guides. Saves directly to an .oebf folder or downloads as a .oebfz archive.

  • Open an existing .oebf folder or .oebfz file
  • Select a wall profile and use the Wall tool to draw
  • Save to write changes back to the bundle
Profile editor

Edit the cross-sections that walls and slabs are swept from: the layers, their materials and thicknesses, and the origin the path runs through.

  • Open a .oebf folder (Chrome/Edge), or use View profiles in the viewer
  • Pick a profile, then edit its layers and drag its origin
  • Save to write the profile back to the bundle
Detail axonometrics

View junction details as axonometric drawings: the swept wall profiles plus each detail's own regions, with the junctions that use it.

  • Click NMB example to open the New Model Building details
  • Pick a detail, then an isometric, military or plan view
  • Save the current view as a PNG
Detail editor

Draw and edit junction details: regions, members from profiles, repeating units, annotations, plan and section views, and small multi-part objects such as wall ties.

  • Click Demo to open the terraced house, or open a bundle folder
  • Use Plan / Section to move between the two views of a junction
  • Export a DXF or a printable sheet

How it works

Format Plain JSON, one file per entity

Every wall, path, profile, junction, and storey is a separate JSON file. No binary, no proprietary encoding — open a bundle in any text editor.

Geometry Profile swept along a path

All solid geometry derives from sweeping a cross-section profile along a polyline path. Junctions and slabs are first-class entities, not auto-computed.

Portability Folder or compressed archive

Bundles live as a plain .oebf directory for editing, or are compressed to a single .oebfz file (Zstd) for sharing.

OEBF and IFC, measured

One small model, the example terraced house (four walls, a slab, a door, 24 wall ties, five junctions and a corner detail), written both ways. Token counts use the cl100k_base tokeniser as a stand-in for a language model's; other models count differently.

Size 8,300 tokens against 18,600

The OEBF bundle's data is 33 files and about 8,300 tokens. The same model as plain IFC, with no OEBF records, is 911 lines and about 18,600 tokens, 2.2 times as many. OEBF's own IFC export, which also carries the records needed to round-trip, is about 30,500.

Finding things One file per entity, named by id

A wall is two small files, the element and its path: 350 tokens. In IFC the same wall's placement and shape are 19 linked entities reached by following numeric references, before its materials and properties.

Editing Lengthen a wall: one number, one file

In OEBF, the wall's length is two points in its path file, so lengthening a wall changes one line. In IFC the length is held twice, as the start point and as the extrusion depth, in different entities.

Checking A checker the model can run

Every entity has a JSON Schema and oebf validate reports broken references and missing files by name. oebf apply runs a file of commands on a copy and writes back only if the result validates.

What this does not show. It is one small model and one edit, and it measures tokens, not how fast or how accurately a language model makes changes: that has not been tested. The OEBF count leaves out the guide a model should read first (about 9,800 tokens, read once) and the schemas. The formats also do not hold the same things: OEBF stores paths, profiles and the relations between them, and derives the geometry; IFC stores far more semantics than OEBF reads. The comparison is of equal content, not equal capability. Method and issue: #128.

IFC Converter Tools

CLI Available

A Python CLI converts between IFC4 and OEBF bundles. Walls, slabs, openings, doors, windows, storeys and material layer sets are mapped to OEBF entities and back, and an OEBF export imports again with every file restored. IFC from other tools is read for wall axes (including curved and multi-segment), build-ups and property sets. Some shapes are not read yet: see the issue list.

Step 1 Import IFC

Convert an IFC4 file to an OEBF bundle. Walls, slabs, openings, doors, windows, storeys and material layer sets are mapped to OEBF entities.

Step 2 Edit with an LLM

Point a language model at the bundle directory. Because files are plain JSON, the model can read, modify, and write entities directly — changing geometry, profiles, or metadata with natural-language instructions.

Step 3 Export to IFC

Convert the modified OEBF bundle back to IFC. The result opens in Revit, FreeCAD, BIMvision, or any IFC-compatible viewer.

Import IFC → OEBF
uv run oebf ifc-import model.ifc --output my-model.oebf
Export OEBF → IFC
uv run oebf ifc-export my-model.oebf --output model-out.ifc

Requires Python 3.12+ and uv. Run uv sync in ifc-tools/ to install dependencies. Full setup instructions and entity mapping are in the ifc-tools README.

Coming soon

Roadmap

A browser-based IFC converter is planned — no local Python install required. Possible approaches include a WASM build of IfcOpenShell or a lightweight server-side conversion endpoint.