# BIMShellExtractor **Repository Path**: zhoulch/bimshell-extractor ## Basic Information - **Project Name**: BIMShellExtractor - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-20 - **Last Updated**: 2026-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BIM Shell Extractor This repository provides a **public, research-oriented implementation** of a voxel-based method for extracting **external shell components** from BIM-derived geometry. The code is released to support **algorithmic transparency and architectural-level reproducibility**, in response to reviewer and editor requests. Due to funding and intellectual property constraints, this repository contains a **simplified public version** of the original implementation. Core data structures and processing logic are preserved, while selected geometric predicates and engineering optimizations are replaced with baseline implementations. --- ## 1. Method Overview The implemented workflow consists of four main stages: 1. **Geometry abstraction** BIM components are represented as lightweight geometric entities with vertices, indices, and axis-aligned bounding boxes. 2. **Voxel grid construction** A uniform 3D voxel grid is built over the global bounding box of the scene. 3. **Voxel-based spatial classification** Grid cells are classified as `Occupied`, `Outside`, `Indoor`, or `Shell` based on connectivity and neighborhood relationships. 4. **External shell identification** Components occupying at least one `Shell` voxel are identified as external shell components. The public release focuses on **component-level shell extraction**, which corresponds to the core method described in the paper. --- ## 2. Repository Structure src/ ├─ functions/ │ ├─ BimEntityShape3D.hpp │ ├─ TriangleFace.hpp │ ├─ BimGrid.hpp │ ├─ BimShellExtractor.hpp │ ├─ BimShellExtractorPipeline.hpp │ ├─ BimShellExtractorIO.hpp │ ├─ BimShellTopology.hpp │ ├─ BimShellFaceExtraction.hpp │ └─ MeshVertexDedup.hpp └─ demo/ --- ## 3. Public Release Scope ### Included - Complete end-to-end pipeline for external shell extraction - Voxel-based spatial reasoning logic - Clear data structures and module interfaces - Runnable example using simplified geometry input - Export for result inspection ### Simplified or Abstracted The following aspects are **intentionally simplified** in the public release: - Exact triangle–voxel and ray–triangle intersection tests - Topology-aware mesh reconstruction and coplanar face merging - Robust geometric predicates and performance-oriented optimizations - Multi-threading and engineering-level acceleration strategies These components are replaced with **baseline or placeholder implementations** that preserve algorithmic structure without exposing internal project details. --- ## 4. Dependencies - C++17 compatible compiler - Eigen (required) Optional (disabled by default): - IFC parsing libraries and advanced geometry toolkits --- ## 5. Configuration Key parameters are exposed via `BimShellExtractor::Config`, including: - `cellSize`: voxel resolution - `tolerance`: geometric tolerance - Optional flags for IFC I/O, topology reconstruction, and face-level processing Changing `cellSize` affects both detection granularity and runtime. --- ## 6. Reproducibility Notes - The public release guarantees **structural reproducibility** of the algorithmic workflow. - Numerical and geometric results may differ from the internal version due to simplified predicates. - Baseline modules may be replaced with higher-fidelity implementations, provided interfaces are preserved. --- ## 7. Intended Use This repository is intended for: - Methodological inspection during peer review - Understanding the algorithmic framework of voxel-based shell extraction - Serving as a reference implementation for further research It is **not intended as a production-ready BIM processing system**.