https://github.com/louistrue/ifc-classifier
https://github.com/louistrue/ifc-classifier
ifc2x3 ifc4 ifcopenshell threejs web-ifc
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/louistrue/ifc-classifier
- Owner: louistrue
- License: agpl-3.0
- Created: 2025-05-15T18:47:49.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-12-15T13:41:28.000Z (6 months ago)
- Last Synced: 2025-12-18T17:00:39.873Z (6 months ago)
- Topics: ifc2x3, ifc4, ifcopenshell, threejs, web-ifc
- Language: TypeScript
- Homepage: https://ifcclassify.com
- Size: 6.68 MB
- Stars: 21
- Watchers: 2
- Forks: 3
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IFC Classifier △●▢●◯
[](https://www.gnu.org/licenses/agpl-3.0)
[]()
[]()
[]()
[]()
[]()
[]()
[]()
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


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
- [Next.js](https://nextjs.org/)
- [React](https://reactjs.org/)
- [TypeScript](https://www.typescriptlang.org/)
- [Three.js](https://threejs.org/) / [@react-three/fiber](https://docs.pmnd.rs/react-three-fiber)
- [web-ifc](https://github.com/IFCjs/web-ifc)
- [IfcOpenShell](https://ifcopenshell.org/) via Pyodide/WASM
- [Tailwind CSS](https://tailwindcss.com/)
- [Shadcn/ui](https://ui.shadcn.com/)
- [Radix UI](https://www.radix-ui.com/) - For accessible UI primitives
## 📄 License
**GNU Affero General Public License v3.0** - See the [LICENSE](./LICENSE) file for details.