An IFC repository where all commits and branches are LLM generated
Find a file
Bruno Postle 7b15ba18b6 Fix half-space clipping normal convention in docs
The clip normal must point toward the REMOVED material (not the kept
region). Correct the CLAUDE.md examples and note. Update workflow to
use new geometry.clip_solid API.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 21:27:57 +00:00
.github/workflows Exclude libraries/ folder from CI validation workflows 2026-03-01 20:32:56 +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
libraries Remove superfluous info from type descriptions 2026-03-11 21:22:55 +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 Fix porch wall slope clipping: reverse half-space normals 2026-03-12 20:57:01 +00:00
CLAUDE.md Fix half-space clipping normal convention in docs 2026-03-12 21:27:57 +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