An IFC repository where all commits and branches are LLM generated
Find a file
Bruno Postle 5f9405d492 Add south outdoor gathering space (Pattern 105/161/163)
8m x 10m south-facing paved outdoor room adjoining the building south
face. Three low sitting walls (0.45m, 0.3m thick) on south, east and
west sides create enclosure per Pattern 163. Paving slab covers the
full area. IfcSpace EXTERNAL registered as south-garden/0 in storey 0.
2026-03-01 14:10:10 +00:00
.github/workflows Add some continuous integration config 2026-02-24 23:19:12 +00:00
IDS Update schedule and BoQ for door, stove, chimney, window seat, bench, tree; add door IDS rules 2026-02-28 10:06:30 +00:00
.gitattributes Add .gitattributes to use ifcmerge for IFC files 2026-02-27 14:43:13 +00:00
.mcp.json MCP configuration 2026-02-24 21:24:13 +00:00
_test_simple.ifc Add south outdoor gathering space (Pattern 105/161/163) 2026-03-01 14:10:10 +00:00
CLAUDE.md Update append_asset docs to use ifc_edit now that library accepts file_path 2026-02-28 07:47:07 +00:00
README.md Add README 2026-02-25 00:10:47 +00:00

simple-ifc

A small IFC building model used as a sandbox for exploring IFC model workflows with LLM agents and the IfcOpenShell MCP server.

What this is

The model (_test_simple.ifc) is a simple house — four exterior walls, windows, a concrete floor slab, ground beam footings, and a pitched roof. It's intentionally small enough to be easy to reason about, but complete enough to exercise real IFC workflows:

  • Quantity take-off — running ifc_quantify to compute wall volumes, roof areas, window areas, etc.
  • Construction schedulingIfcWorkSchedule with phased tasks linked to physical elements
  • Bill of QuantitiesIfcCostSchedule with parametric quantity links and unit rates, exported to PDF via ifc5d
  • IDS validation — checking model completeness against Information Delivery Specifications

The point is to see how well an LLM agent (Claude Code + the IFC MCP server) can handle multi-step IFC editing tasks — things that would normally require a BIM technician and specialist software.

Setup

pip install ifcopenshell ifcmcp ifc5d ifctester typst

The MCP server is configured in .mcp.json. In Claude Code it loads automatically; the agent can query and edit the model in memory across tool calls without round-tripping to disk between every operation.

Repository contents

Path Description
_test_simple.ifc The IFC model (IFC4 schema)
IDS/ IDS specification files for CI validation
IDS/CI_project_checks.ids Project CI checks: QTO completeness, element naming, BoQ properties
IDS/EN_Basic IDM Check.ids Standard BIM Basic IDM checks
CLAUDE.md Instructions and reference for the LLM agent

Validation

Run IDS checks manually:

python3 -m ifctester IDS/CI_project_checks.ids _test_simple.ifc
python3 -m ifctester "IDS/EN_Basic IDM Check.ids" _test_simple.ifc

Generating the Bill of Quantities

Quantities must be computed before generating the BoQ (or after any geometry changes):

# In a Claude Code session with the MCP server active:
ifc_load("_test_simple.ifc")
ifc_quantify("IFC4QtoBaseQuantities")
ifc_save()

Export a BoQ to PDF:

python3 -c "
import ifcopenshell
from ifc5d.ifc5Dspreadsheet import Ifc5DPdfWriter
f = ifcopenshell.open('_test_simple.ifc')
cs = next(iter(f.by_type('IfcCostSchedule')))
Ifc5DPdfWriter(file=f, output='boq.pdf', options={}, cost_schedule=cs,
               force_schedule_type='PRICEDBILLOFQUANTITIES').write()
"

Git workflow

IFC files are plain text (STEP format) and diff cleanly. Merging requires ifcmerge as the git merge driver — see CLAUDE.md for configuration.

Bruno Postle bruno@postle.net 2026. All files are licensed Creative Commons Attribution-ShareAlike 4.0 International