Skill-Details
bim-consistency-checker
Validates construction BIM model data and coordination quality.
Vor Nutzung prüfen
Die automatische Prüfung bewertet Relevanz, nicht Sicherheit oder Empfehlung. Lies vor der Nutzung die Quellanweisungen.
SKILL.md
Dieser Auszug wurde bei der Prüfung gespeichert. Die externe Quelle enthält die vollständige und aktuelle Version.
---
name: "bim-consistency-checker"
description: "Check BIM model consistency: naming conventions, parameter completeness, spatial relationships, and data integrity across model elements."
homepage: "https://datadrivenconstruction.io"
metadata: {"openclaw": {"emoji": "🔎", "os": ["darwin", "linux", "win32"], "homepage": "https://datadrivenconstruction.io", "requires": {"bins": ["python3"]}}}
---
# BIM Consistency Checker for Construction
## Overview
Validate BIM model consistency including naming conventions, parameter completeness, spatial relationships, classification compliance, and cross-reference integrity.
## Business Case
BIM consistency checking ensures:
- **Data Quality**: Complete and accurate model data
- **Interoperability**: Models work across platforms
- **Coordination**: Consistent information for all trades
- **Deliverable Compliance**: Meet BIM execution plan requirements
## Technical Implementation
```python
from dataclasses import dataclass, field
from typing import List, Dict, Any, Optional, Set
from enum import Enum
import re
class CheckSeverity(Enum):
ERROR = "error"
WARNING = "warning"
INFO = "info"
class CheckCategory(Enum):
NAMING = "naming"
PARAMETERS = "parameters"
SPATIAL = "spatial"
CLASSIFICATION = "classification"
GEOMETRY = "geometry"
RELATIONSHIPS = "relationships"
@dataclass
class ConsistencyIssue:
element_id: str
element_name: str
category: CheckCategory
severity: CheckSeverity
rule: str
message: str
suggestion: str = ""
@dataclass
class ConsistencyReport:
model_name: str
total_elements: int
elements_checked: int
issues: List[ConsistencyIssue]
issues_by_category: Dict[str, int]
issues_by_severity: Dict[str, int]
pass_rate: float
@dataclass
class NamingConvention:
element_type: str
pattern: str
description: str
examples: List[str]
class BIMConsistencyChecker:
"""Check BIM model consistency and data quality."""
# Default naming conventions
DEFAULT_NAMING_RULES = [
NamingConvention(
element_type='Level',
pattern=r'^(L|Level)\s*\d{1,2}$|^(B|Basement)\s*\d?$|^(R|Roof)$',
description='Levels should follow L01, Level 1, B1, Roof pattern',
examples=['L01', 'Level 1', 'B1', 'Roof']
),
NamingConvention(
element_type='Grid',
pattern=r'^[A-Z]$|^\d{1,2}$|^[A-Z]\.\d$',
description='Grids should be single letters (A-Z) or numbers',
examples=['A', '1', 'A.1']
),
NamingConvention(
element_type='Room',
pattern=r'^\d{3,4}[A-Z]?\s*-?\s*.+',
description='Rooms should have number and name (101 - Office)',
examples=['101 - Office', '201A Conference']
),
NamingConvention(
element_type='Wall',
pattern=r'^(INT|EXT|CW|CMU|GYP)[-_].+',
description='Walls should have type prefix',
examples=['INT-GYP-1HR', 'EXT-CMU-8IN']
),
NamingConvention(
element_type='Door',
pattern=r'^[A-Z]?\d{2,3}[A-Z]?$',
description='Doors should follow type numbering',
examples=['101', 'A101', '101A']
),
]
# Required parameters by element type
REQUIRED_PARAMETERS = {
'Wall': ['Fire Rating', 'Function', 'Structural'],
'Door': ['Fire Rating', 'Width', 'Height', 'Frame Material'],
'Room': ['Name', 'Number', 'Area', 'Department'],
'Window': ['Width', 'Height', 'Glass Type'],
'Floor': ['Structural', 'Fire Rating'],
'Ceiling': ['Height', 'Type'],
'Column': ['Structural Material', 'Shape'],
'Beam': ['Structural Material', 'Size'],
}
def __init__(self):
self.naming_rules: List[NamingConvention] = list(self.DEFAULT_NAMING_RULES)
self.required_params: Dict[str, List[str]] = dict(self.REQUIRED_PARAMETERS)
Vollständige Quelle auf GitHub lesen (öffnet externe Seite)