Skip to content

louistrue/ifc-classifier

Repository files navigation

IFC Classifier △●▢●◯

License: AGPL v3 Work in Progress TypeScript Next.js React Three.js web-ifc IfcOpenShell

A simple tool to add classifications to your IFC models 🛠️

🎯 The Problem

Working with IFC files? Then you know how hard it can be to get everyone to consistently classify model elements. Whether you're using Uniclass, eBKP-H, or your own system, getting teams to properly implement IfcClassificationReference is often a pain.

After initially thinking about how to fully automating this process, I quickly realized that regulations, responsibilities across disciplines, and accountability requirements make that approach less practical.

✨ What This Tool Does

IFC Classifier helps you classify IFC elements without needing expert knowledge of BIM authoring tools. It's designed to make the process simpler and more repeatable.

Note: This is a Work In Progress and open source under the AGPL v3 license.

🏗️ Architecture Overview

Tech Stack

Tech Stack Architecture

Data Flow Diagram

The application follows a modern web architecture with:

  • Frontend: Next.js + React with TypeScript for type safety
  • 3D Visualization: Three.js with React Three Fiber for IFC model rendering
  • IFC Processing: web-ifc for parsing and IfcOpenShell via Pyodide/WASM for advanced operations
  • Styling: Tailwind CSS with Shadcn/ui components for a consistent design system
  • Privacy-First: All processing happens locally in the browser - no data leaves your device

🌟 Features

  • 🖼️ IFC Viewer:

    • View IFC models in your browser
    • Standard navigation (orbit, pan, zoom)
    • Easy model exploration through spatial tree
    • Check element properties
    • Hide/show elements as needed
  • 📖 IFC Schema Documentation:

    • Real-time schema previews: Hover over IFC class names to see instant schema information
    • Full documentation reader: Click "View Schema" to open comprehensive IFC documentation
  • 📚 Classification Systems:

    • Use ready-made systems:
      • 🇨🇭 Swiss CRB eBKP-H
      • 🇬🇧 Uniclass
    • Or create your own custom system
    • Assign colors to visualize different classifications
    • Import or export classification sets as JSON or Excel files
  • ⚙️ Rule-Based Sorting:

    • Create rules to automatically sort elements
    • Based on properties like: IsExternal, LoadBearing, etc.
    • Example: "Put all external, non-load bearing walls (except basement) into category C02.01"
    • See rule results live on your model
    • Import rules from JSON or Excel for easy setup
    • Export rules to JSON or Excel for sharing
  • ✍️ Export Your Work:

    • Save your model with proper IfcClassificationReference entities
    • Use the improved file in other BIM tools
  • 🔎 Search & Filter:

    • Search across the model tree or entire 3D scene
    • Cancel long searches and track progress
    • Quickly hide or unhide found elements
  • 📋 Property-Based Classification:

    • Support for classification codes stored in property sets (Psets)
    • Automatically map full classifications from existing Psets
    • Extract classifications from existing property values in the model
    • Flexible property set name matching with wildcard support
  • 🗣️ Multi-Language UI:

    • English, French, Italian and German built in
    • Switch languages from the menu or settings panel
    • Add new translations via simple JSON files
  • 🔐 Privacy First:

    • All processing happens locally in your browser
    • IFC data never leaves your device
    • Open DevTools → Network to confirm no IFC file is uploaded

🚀 Recent Updates

July 10, 2025:

  • README update, added architecture overview diagrams

May 23, 2025:

  • Added comprehensive schema preview and documentation reader for IFC classes
  • Integrated schema preview tooltips and "View Schema" links

May 22, 2025:

  • Added search across the 3D view and model explorer with progress feedback.
  • Implemented automatic mapping of classifications from property sets with wildcard support.
  • Introduced central IFC property caching for faster lookups.
  • Improved language selection menu and settings layout.
  • Refined properties panel and overall UI styling.

May 21, 2025:

  • Added ability to import rule definitions from Excel (.xlsx) files.
  • Added ability to export rules to Excel for easier sharing.

May 20, 2025:

  • Enhanced user interface with footer improvements.
  • Added settings for managing rules and default classifications.
  • Implemented IFC GUID display with a copy-to-clipboard feature in the properties panel.
  • Major refactor of classification and IFC model components for better performance and readability.
  • Fixed an issue to preserve model coordinates when loading new IFC files.
  • Improved layout and introduced a rule management menu for easier access.
  • Added functionality to import and export classifications as JSON files.
  • Added favicons for better cross-browser compatibility.
  • Enhanced property extraction and rendering from IFC models.

May 19, 2025:

  • Introduced 3D selection-based classification, allowing manual assignment of classifications to selected elements.
  • Refactored and cleaned up code in ModelInfo and SpatialTreePanel components.
  • Fixed a bug related to null values for IFC class names in the spatial tree.
  • Added display for material sections and improved IFC model property extraction.

May 18, 2025:

  • Initial project setup and README creation.

💡 Goal

Make IFC classification simple enough that anyone can do it properly.

🛠️ Tech Stack

📄 License

GNU Affero General Public License v3.0 - See the LICENSE file for details.