A web-based application for validating IFC (Industry Foundation Classes) models against common issues and IDS (Information Delivery Specification) requirements. The Model Checker helps ensure high-quality BIM data in AEC (Architecture, Engineering, and Construction) projects.
Try out the application at https://modelcheck.opensource.construction
- Client-side Processing: All file processing happens in your browser using WASM technology - no data is sent to servers
- Standard Validation: Check IFC models against common issues like naming conventions, relationships, and more
- IDS Validation: Validate IFC models against custom IDS (Information Delivery Specification) requirements
- Multiple Report Formats:
- View HTML reports directly in browser
- Download BCF (BIM Collaboration Format) reports for use in other BIM tools
- Multi-language Support: Available in multiple languages:
- English
- German
- French
- Italian
- Romansh
- Browser-based Python: Utilizes Pyodide to run Python code (IfcOpenShell and IfcTester) directly in the browser
- Node.js v20 or later
- Modern web browser (Chrome, Firefox, Edge, etc.)
-
Clone the repository:
git clone https://github.com/opensourceconstruction/model-checker.git cd model-checker
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to:
http://localhost:8000
- Open the application in your browser
- Drag and drop your IFC file(s) onto the upload area, or click to select files
- Click "Validate" to start the validation process
- View the results directly in the browser, including:
- Project, site, and building relationships
- Element naming conventions
- Material associations
- Type definitions
- And more...
- Enable IDS validation by toggling the switch
- Upload both your IFC file(s) and an IDS specification file
- Select your preferred report format(s):
- HTML Report (view in browser)
- BCF Report (download for use in BIM tools)
- Click "Validate" to start the process
- Review the detailed validation results
model-checker/
├── public/ # Static assets and Python files
│ ├── locales/ # Translation files
│ ├── python/ # Python scripts
│ └── pyodideWorker.js # Web worker for Pyodide
├── src/ # Source code
│ ├── assets/ # Images and assets
│ ├── components/ # React components
│ ├── context/ # React context providers
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ ├── types/ # TypeScript type definitions
│ ├── utils/ # Utility functions
│ └── main.tsx # Application entry point
└── ... # Configuration files
npm run build
The production-ready files will be generated in the dist
directory.
npm run test
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Please make sure to update tests as appropriate and adhere to the existing coding style.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- IfcOpenShell - Open source IFC library
- Bonsai - BIM technology for sustainability
- Pyodide - Python for the browser
- All contributors who have helped this project grow
Made with ❤️ by Open Source Construction