Spaces:
Sleeping
IFC Solar & Daylight Compliance Checker
An AI-powered system that automatically verifies building information models (BIM) against solar radiation and daylight regulations using IFC data extraction and Google Gemini as the LLM orchestrator.
Project Overview
This is a collaborative 6-team effort. Each team develops one compliance-check tool that extracts specific geometric or property data from IFC files and evaluates it against international building codes. A shared orchestrator registers all tools as Gemini function calls, allowing users to query building models in natural language and receive compliance verdicts.
The 6 Tools
| # | Tool | Checks | Regulation |
|---|---|---|---|
| 1 | Minimum Daylight Glazing Ratio | Window area β₯ 10% of floor area per room | IBC Β§1205 / RT2012 |
| 2 | Window-to-Wall Ratio (WWR) by Facade | Glazing % per facade orientation | CTE DB-HE 1 |
| 3 | Solar Heat Gain Coefficient (SHGC) | SHGC per window vs. orientation limits | IECC C402.4 / ASHRAE 90.1 |
| 4 | Shading Device Presence | S/W windows have shading elements | EN 14501 / RE2020 |
| 5 | Room Depth vs. Daylight Penetration | Depth β€ 2.5 Γ window head height | BS 8206-2 / EN 17037 |
| 6 | Skylight Solar Exposure | Skylight ratio 3β5%, SHGC limits | ASHRAE 90.1 / IECC C402 |
Architecture
Data Flow:
- User provides an IFC file and asks a compliance question in natural language
- Google Gemini interprets the query and selects relevant tools
- Each tool function extracts data from the IFC model and returns a JSON compliance result
- Gemini combines results and generates a natural-language summary
Tech Stack:
ifcopenshellβ IFC parsing and geometry extractiongoogle-generativeaiβ Google Gemini SDK (function calling)- Python 3.10+
python-dotenvβ API key management
Repository Structure
Each team contributes a Python tool file to teams/<team-name>/tools/ with this signature:
def check_<tool_name>(ifc_file_path: str) -> dict:
"""Analyse IFC model and return compliance result as JSON."""
return {
"compliant": bool,
"regulation": str,
# ... tool-specific data fields
}
The shared orchestrator (orchestrator.py) imports all tools and registers them with Gemini for function calling.
Shared Objectives
- β Automated BIM compliance checking against multiple international codes
- β Performance-based, regulation-aware analysis (not prescriptive-only)
- β Modular design: each tool independently testable
- β Natural-language interface via Gemini orchestration
- β JSON API: suitable for CI/CD pipelines and downstream integrations
References
- Gemini Function Calling Guide
- IfcOpenShell Documentation
- CTE DB-HE 1 (Spanish Technical Building Code)
- ASHRAE 90.1, IECC, EN 15804