IFClite supports IDS (Information Delivery Specification), the buildingSMART standard for defining and validating information requirements in BIM models. The @ifc-lite/ids package implements IDS 1.0 with full facet and constraint support.
IDS allows you to define specifications that describe what information an IFC model should contain. Each specification has:
- Applicability - Which entities the rule applies to (e.g., all walls)
- Requirements - What information those entities must have (e.g., fire rating property)
Validation checks every applicable entity against the requirements and produces a pass/fail report.
import { parseIDS } from '@ifc-lite/ids';
// Parse an IDS XML file
const idsDocument = parseIDS(idsXmlString);
console.log(`${idsDocument.info.title}`);
console.log(`${idsDocument.specifications.length} specifications`);
for (const spec of idsDocument.specifications) {
console.log(` ${spec.name} [${spec.optionality}]`);
}import { parseIDS, validateIDS } from '@ifc-lite/ids';
import type { IFCDataAccessor, IDSModelInfo } from '@ifc-lite/ids';
const idsDocument = parseIDS(idsXml);
// Create a data accessor that bridges IDS to your IFC data
const accessor: IFCDataAccessor = {
getEntities: () => allEntities,
getEntityType: (id) => entityTypeMap.get(id),
getPropertyValue: (id, pset, prop) => getProperty(id, pset, prop),
getClassification: (id) => getClassificationInfo(id),
getMaterial: (id) => getMaterialInfo(id),
getParent: (id) => getParentInfo(id),
getAttribute: (id, attr) => getAttributeValue(id, attr),
};
// Model info for the validation report
const modelInfo: IDSModelInfo = {
filename: 'model.ifc',
schema: 'IFC4',
};
// Validate (requires: document, accessor, modelInfo, options?)
const report = await validateIDS(idsDocument, accessor, modelInfo, {
onProgress: (progress) => console.log(`${progress.phase}: ${progress.percent}%`),
});
console.log(`${report.summary.totalEntities} entities checked`);
console.log(`${report.summary.passedEntities} passed`);
console.log(`${report.summary.failedEntities} failed`);IDS supports six facet types for defining applicability and requirements:
| Facet | Description | Example |
|---|---|---|
| Entity | Match by IFC type | IFCWALL, IFCDOOR |
| Attribute | Match by IFC attribute | Name = "W-042" |
| Property | Match by property set/property | Pset_WallCommon.FireRating |
| Classification | Match by classification system | Uniclass 2015: Ss_25_10 |
| Material | Match by material name | Concrete C30/37 |
| PartOf | Match by spatial containment | IfcBuildingStorey "Level 1" |
Each facet can use different constraint types to match values:
| Constraint | Description | Example |
|---|---|---|
| Simple | Exact value match | "REI 120" |
| Pattern | Regex pattern match | "REI \\d+" |
| Enumeration | One of several values | ["REI 60", "REI 90", "REI 120"] |
| Bounds | Numeric range | >= 0.2 AND <= 0.5 |
Validation reports can be generated in multiple languages:
import { createTranslationService } from '@ifc-lite/ids';
const t = createTranslationService('de'); // German
// Or: 'en' (English), 'fr' (French)In the IFClite viewer, IDS validation is integrated through the IDS panel:
- Load IDS - Drag and drop an
.idsXML file - Run Validation - Click validate to check the loaded model(s) against IDS rules
- Browse Results - View pass/fail per specification and per entity
- 3D Highlighting - Failed entities are highlighted in red in the 3D view
- Filter - Show all entities, only failed, or only passed
- Navigate - Click a failed entity to zoom to it in 3D
| Option | Default | Description |
|---|---|---|
| Highlight failed | On | Red highlight on failed entities in 3D |
| Highlight passed | Off | Green highlight on passed entities in 3D |
| Filter mode | All | Show all, failed only, or passed only |
| Locale | Auto | Language for validation messages (EN/DE/FR) |
| Type | Description |
|---|---|
IDSDocument |
Parsed IDS file with info and specifications |
IDSSpecification |
A single validation rule with applicability and requirements |
IDSFacet |
Entity, Attribute, Property, Classification, Material, or PartOf |
IDSConstraint |
Simple, Pattern, Enumeration, or Bounds value matcher |
IDSValidationReport |
Complete validation results with per-entity details |
IDSEntityResult |
Pass/fail result for a single entity with failure details |