Overview
The Element Selection feature provides comprehensive tools for interacting with IFC building elements in the 3D viewer. Select elements with a click, inspect their properties, explore relationships, and control visibility - all through an intuitive interface.Selection works seamlessly with both standard and streamed IFC models, handling projects of any size.
Selection Methods
Multiple ways to select elements in your BIM model:Click Selection
Click any element in the 3D viewer to select it and view its properties
Multi-Selection
Hold Ctrl/Cmd while clicking to select multiple elements simultaneously
Focus Selection
Use the Focus button to zoom the camera to your current selection
Chart Selection
Click chart elements to select all items of that type or on that building level
Highlighter System
The selection system is powered by the ThatOpen Components Highlighter:Highlighter Features
- Automatic Setup
- Zoom to Selection
- Visual Feedback
- Event System
The highlighter is automatically configured when the world is created, ensuring seamless integration.
Selection Toolbar
The Selection toolbar provides essential visibility and navigation controls:Toolbar Actions
Show All
Show All
Makes all elements in all loaded models visible, clearing any isolation or hiding.Shortcut: Useful for resetting the view after exploring specific elements.
Toggle Visibility
Toggle Visibility
Inverts the visibility of selected elements - hides visible ones, shows hidden ones.Use Case: Quick way to remove clutter without losing selection context.
Isolate
Isolate
Hides all elements except the current selection, focusing attention on specific components.Pro Tip: Perfect for analyzing complex areas without distractions.
Focus
Focus
Smoothly animates the camera to frame the selected elements optimally.Behavior: Sphere radius is expanded 1.2x for comfortable viewing distance.
Show All Implementation
Restore full model visibility with a single click:Process Flow
Streamed vs Static Handling
Distinguishes between streamed (LOD) and static models for appropriate visibility control.
Toggle Visibility
Invert visibility for selected elements:The system checks
fragment.hiddenItems to determine current visibility state before toggling, ensuring accurate inversion.Isolate Selection
Focus exclusively on selected elements:Isolation Strategy
Focus Selection
Automatically frame selected elements in the viewport:Focus Algorithm
Bounding Box Calculation
Bounding Box Calculation
The
BoundingBoxer component calculates the minimum bounding box containing all selected elements.Sphere Conversion
Sphere Conversion
The bounding box is converted to a bounding sphere for smooth camera animation.
Validation Checks
Validation Checks
System validates sphere properties to prevent infinite, zero, or invalid camera positions.
Radius Expansion
Radius Expansion
Sphere radius is increased by 20% (1.2x) to provide comfortable viewing distance.
Camera Animation
Camera Animation
Camera smoothly animates to fit the sphere using
fitToSphere with animation enabled.Property Inspection Panel
When elements are selected, a dedicated panel displays their properties:Panel Features
Search Filter
Real-time property search with 200ms debounce for smooth filtering
Expand/Collapse
Toggle between compact and expanded views of property hierarchies
Export Data
Download property data as TSV (Tab-Separated Values) for external analysis
Properties Table
The properties table is powered by ThatOpen UI components:Table Behavior
Structure Preservation
Property hierarchy is maintained even when filtering (
preserveStructureOnFilter: true).Property Search
Real-time search filtering for quick property lookup:Search has a 200ms debounce to prevent excessive filtering during typing, improving performance.
Expand/Collapse Control
Clear Selection
When selection is cleared, the panel automatically hides:Layout Management
- Main Layout
- Second Layout
Template:
"leftPanel viewport" 1fr / 29rem 1frLeft panel and viewport without properties panel.Streamed vs Static Models
The selection system intelligently handles both model types:Static Models
Static Models
Standard IFC LoadingAll geometry is loaded into memory. Selection uses
fragment.setVisibility() and direct mesh manipulation.Best For: Models under 50MB with moderate complexity.Streamed Models
Streamed Models
Progressive LOD LoadingGeometry is loaded on-demand. Selection uses
streamer.setVisibility() with fragment ID maps.Best For: Large models over 100MB, complex buildings with many elements.Performance Optimizations
Culling Integration
Visibility changes trigger culling updates for optimal rendering:Culling updates are batched - only meshes affected by visibility changes are processed, minimizing overhead.
Fragment ID Maps
The system uses efficient fragment ID maps for selection:{ [fragmentId: string]: Set<number> }
- Key: Fragment ID (geometry chunk identifier)
- Value: Set of Express IDs (individual element IDs)
Best Practices
Single Click for Quick Inspection
Click any element to instantly see its properties without losing context.
Use Isolate for Complex Areas
In dense models, isolate elements to focus on specific components without distraction.
Search for Specific Properties
Use the search function to quickly find elements by property name or value.
Keyboard Shortcuts
While not explicitly defined in the code, standard browser interactions work:Ctrl/Cmd + Click
Add element to selection (multi-select)
Click Empty Space
Clear selection and hide properties panel
Scroll in Panel
Navigate through element properties
Type in Search
Filter properties in real-time
Element Property Types
The properties table displays comprehensive IFC data:Basic Attributes
Name, GlobalId, Type, Description, Object Type
Geometric Properties
Dimensions, coordinates, placement, representation
Material Associations
Materials, layers, material properties
Relationships
Spatial containment, aggregations, connections, definitions
Property Sets
Custom properties, quantities, classifications
Type Properties
Shared properties from element type definitions
Common Use Cases
Quality Control Inspection
Quality Control Inspection
Select elements to verify properties match specifications. Export data for compliance reporting.
Clash Detection Analysis
Clash Detection Analysis
Isolate intersecting elements to understand spatial conflicts. Focus camera for detailed inspection.
Material Verification
Material Verification
Select walls, slabs, or beams to confirm material assignments and specifications.
Quantity Takeoff
Quantity Takeoff
Multi-select elements by type, export properties to calculate quantities and costs.
BIM Coordination
BIM Coordination
Inspect element relationships and spatial containment to ensure model integrity.