@ifc-lite/parser 2.4.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/columnar-parser-indexes.d.ts +1 -7
- package/dist/columnar-parser-indexes.d.ts.map +1 -1
- package/dist/columnar-parser-indexes.js.map +1 -1
- package/dist/columnar-parser.d.ts +39 -12
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +113 -26
- package/dist/columnar-parser.js.map +1 -1
- package/dist/data-store-accessors.d.ts +24 -0
- package/dist/data-store-accessors.d.ts.map +1 -0
- package/dist/data-store-accessors.js +43 -0
- package/dist/data-store-accessors.js.map +1 -0
- package/dist/data-store-transport.d.ts +1 -0
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +16 -9
- package/dist/data-store-transport.js.map +1 -1
- package/dist/entity-extractor.d.ts.map +1 -1
- package/dist/entity-extractor.js +20 -1
- package/dist/entity-extractor.js.map +1 -1
- package/dist/entity-index.d.ts +3 -0
- package/dist/entity-index.d.ts.map +1 -1
- package/dist/entity-index.js.map +1 -1
- package/dist/entity-scanner.d.ts +30 -0
- package/dist/entity-scanner.d.ts.map +1 -0
- package/dist/entity-scanner.js +132 -0
- package/dist/entity-scanner.js.map +1 -0
- package/dist/entity-source.d.ts +17 -0
- package/dist/entity-source.d.ts.map +1 -0
- package/dist/entity-source.js +29 -0
- package/dist/entity-source.js.map +1 -0
- package/dist/ifc-schema.d.ts +10 -2
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +65 -2
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +15 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -289
- package/dist/index.js.map +1 -1
- package/dist/material-resolver.d.ts +54 -0
- package/dist/material-resolver.d.ts.map +1 -1
- package/dist/material-resolver.js +265 -0
- package/dist/material-resolver.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +34 -0
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +153 -0
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/parser.worker.d.ts.map +1 -1
- package/dist/parser.worker.js.map +1 -1
- package/dist/property-extractor.d.ts +3 -0
- package/dist/property-extractor.d.ts.map +1 -1
- package/dist/property-extractor.js.map +1 -1
- package/dist/quantity-extractor.d.ts +3 -0
- package/dist/quantity-extractor.d.ts.map +1 -1
- package/dist/quantity-extractor.js.map +1 -1
- package/dist/relationship-extractor.d.ts +3 -0
- package/dist/relationship-extractor.d.ts.map +1 -1
- package/dist/relationship-extractor.js.map +1 -1
- package/dist/spatial-hierarchy-builder.d.ts.map +1 -1
- package/dist/spatial-hierarchy-builder.js +26 -4
- package/dist/spatial-hierarchy-builder.js.map +1 -1
- package/dist/tokenizer.d.ts.map +1 -1
- package/dist/tokenizer.js +21 -4
- package/dist/tokenizer.js.map +1 -1
- package/dist/types.d.ts +2 -10
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/opfs-source-buffer.d.ts +0 -70
- package/dist/opfs-source-buffer.d.ts.map +0 -1
- package/dist/opfs-source-buffer.js +0 -166
- package/dist/opfs-source-buffer.js.map +0 -1
- package/dist/style-extractor.d.ts +0 -84
- package/dist/style-extractor.d.ts.map +0 -1
- package/dist/style-extractor.js +0 -345
- package/dist/style-extractor.js.map +0 -1
|
@@ -251,4 +251,269 @@ function resolveMaterial(store, extractor, materialId, visited = new Set()) {
|
|
|
251
251
|
return null;
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
|
+
/** Resolve an entity ref from the primary index, falling back to deferred atoms. */
|
|
255
|
+
function getRef(store, id) {
|
|
256
|
+
return store.entityIndex.byId.get(id) ?? store.deferredEntityIndex?.get(id);
|
|
257
|
+
}
|
|
258
|
+
/** Read an IfcMaterial's Name (attr 0) and Category (attr 2). */
|
|
259
|
+
function readMaterialNameCategory(store, extractor, materialId) {
|
|
260
|
+
const ref = getRef(store, materialId);
|
|
261
|
+
if (!ref)
|
|
262
|
+
return {};
|
|
263
|
+
const entity = extractor.extractEntity(ref);
|
|
264
|
+
const attrs = entity?.attributes ?? [];
|
|
265
|
+
return {
|
|
266
|
+
name: typeof attrs[0] === 'string' ? attrs[0] : undefined,
|
|
267
|
+
category: typeof attrs[2] === 'string' ? attrs[2] : undefined,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Resolve the material *definition* directly associated with an element
|
|
272
|
+
* (IfcMaterial / IfcMaterial*Set / *Usage). Mirrors the lookup at the top of
|
|
273
|
+
* {@link extractMaterialsOnDemand}: occurrence association first, then the
|
|
274
|
+
* element's type. Returns the definition express id, or undefined.
|
|
275
|
+
*/
|
|
276
|
+
export function resolveMaterialDefId(store, entityId) {
|
|
277
|
+
let materialId;
|
|
278
|
+
if (store.onDemandMaterialMap) {
|
|
279
|
+
materialId = store.onDemandMaterialMap.get(entityId);
|
|
280
|
+
}
|
|
281
|
+
else if (store.relationships) {
|
|
282
|
+
const related = store.relationships.getRelated(entityId, RelationshipType.AssociatesMaterial, 'inverse');
|
|
283
|
+
if (related.length > 0)
|
|
284
|
+
materialId = related[0];
|
|
285
|
+
}
|
|
286
|
+
if (materialId === undefined && store.relationships) {
|
|
287
|
+
const typeIds = store.relationships.getRelated(entityId, RelationshipType.DefinesByType, 'inverse');
|
|
288
|
+
for (const typeId of typeIds) {
|
|
289
|
+
if (store.onDemandMaterialMap) {
|
|
290
|
+
materialId = store.onDemandMaterialMap.get(typeId);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
const related = store.relationships.getRelated(typeId, RelationshipType.AssociatesMaterial, 'inverse');
|
|
294
|
+
if (related.length > 0)
|
|
295
|
+
materialId = related[0];
|
|
296
|
+
}
|
|
297
|
+
if (materialId !== undefined)
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return materialId;
|
|
302
|
+
}
|
|
303
|
+
const leavesCache = new WeakMap();
|
|
304
|
+
/**
|
|
305
|
+
* Resolve the base IfcMaterial(s) for a material definition, with a volume
|
|
306
|
+
* weight per material. Layer sets split by layer thickness, constituent sets by
|
|
307
|
+
* fraction, profile/list sets equally; a plain IfcMaterial yields a single
|
|
308
|
+
* leaf with weight 1. Results are memoised per (store, defId) — a type-shared
|
|
309
|
+
* layer set is resolved once for the whole model.
|
|
310
|
+
*/
|
|
311
|
+
export function collectMaterialLeaves(store, defId) {
|
|
312
|
+
let cache = leavesCache.get(store);
|
|
313
|
+
if (!cache) {
|
|
314
|
+
cache = new Map();
|
|
315
|
+
leavesCache.set(store, cache);
|
|
316
|
+
}
|
|
317
|
+
const cached = cache.get(defId);
|
|
318
|
+
if (cached)
|
|
319
|
+
return cached;
|
|
320
|
+
const extractor = store.source?.length ? new EntityExtractor(store.source) : null;
|
|
321
|
+
const result = extractor ? resolveLeaves(store, extractor, defId, new Set()) : [];
|
|
322
|
+
cache.set(defId, result);
|
|
323
|
+
return result;
|
|
324
|
+
}
|
|
325
|
+
/** Accumulate a leaf into the map, summing weights when the material repeats. */
|
|
326
|
+
function mergeLeaves(into, leaf) {
|
|
327
|
+
const existing = into.get(leaf.id);
|
|
328
|
+
if (existing) {
|
|
329
|
+
existing.weight += leaf.weight;
|
|
330
|
+
if (!existing.name && leaf.name)
|
|
331
|
+
existing.name = leaf.name;
|
|
332
|
+
if (!existing.category && leaf.category)
|
|
333
|
+
existing.category = leaf.category;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
into.set(leaf.id, { ...leaf });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/** Recursively resolve a material definition into weighted base-material leaves
|
|
340
|
+
* (cycle-guarded via `visited`). See {@link collectMaterialLeaves}. */
|
|
341
|
+
function resolveLeaves(store, extractor, defId, visited) {
|
|
342
|
+
if (visited.has(defId))
|
|
343
|
+
return [];
|
|
344
|
+
visited.add(defId);
|
|
345
|
+
const ref = getRef(store, defId);
|
|
346
|
+
if (!ref)
|
|
347
|
+
return [];
|
|
348
|
+
const entity = extractor.extractEntity(ref);
|
|
349
|
+
if (!entity)
|
|
350
|
+
return [];
|
|
351
|
+
const typeUpper = entity.type.toUpperCase();
|
|
352
|
+
const attrs = entity.attributes || [];
|
|
353
|
+
const merged = new Map();
|
|
354
|
+
const addMaterialLeaf = (matId, weight) => {
|
|
355
|
+
if (matId === undefined)
|
|
356
|
+
return;
|
|
357
|
+
const { name, category } = readMaterialNameCategory(store, extractor, matId);
|
|
358
|
+
mergeLeaves(merged, { id: matId, name, category, weight });
|
|
359
|
+
};
|
|
360
|
+
switch (typeUpper) {
|
|
361
|
+
case 'IFCMATERIAL':
|
|
362
|
+
return [{
|
|
363
|
+
id: defId,
|
|
364
|
+
name: typeof attrs[0] === 'string' ? attrs[0] : undefined,
|
|
365
|
+
category: typeof attrs[2] === 'string' ? attrs[2] : undefined,
|
|
366
|
+
weight: 1,
|
|
367
|
+
}];
|
|
368
|
+
case 'IFCMATERIALLAYERSET': {
|
|
369
|
+
// IfcMaterialLayerSet: [MaterialLayers, LayerSetName, Description]
|
|
370
|
+
const layerIds = Array.isArray(attrs[0]) ? attrs[0].filter((id) => typeof id === 'number') : [];
|
|
371
|
+
const layers = [];
|
|
372
|
+
for (const layerId of layerIds) {
|
|
373
|
+
const layerRef = getRef(store, layerId);
|
|
374
|
+
if (!layerRef)
|
|
375
|
+
continue;
|
|
376
|
+
const la = extractor.extractEntity(layerRef)?.attributes ?? [];
|
|
377
|
+
// IfcMaterialLayer: [Material, LayerThickness, IsVentilated, Name, Description, Category, Priority]
|
|
378
|
+
layers.push({
|
|
379
|
+
matId: typeof la[0] === 'number' ? la[0] : undefined,
|
|
380
|
+
thickness: typeof la[1] === 'number' && la[1] > 0 ? la[1] : 0,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
const totalThickness = layers.reduce((s, l) => s + l.thickness, 0);
|
|
384
|
+
for (const layer of layers) {
|
|
385
|
+
const weight = totalThickness > 0
|
|
386
|
+
? layer.thickness / totalThickness
|
|
387
|
+
: (layers.length > 0 ? 1 / layers.length : 0);
|
|
388
|
+
addMaterialLeaf(layer.matId, weight);
|
|
389
|
+
}
|
|
390
|
+
return [...merged.values()];
|
|
391
|
+
}
|
|
392
|
+
case 'IFCMATERIALPROFILESET': {
|
|
393
|
+
// IfcMaterialProfileSet: [Name, Description, MaterialProfiles, CompositeProfile]
|
|
394
|
+
const profileIds = Array.isArray(attrs[2]) ? attrs[2].filter((id) => typeof id === 'number') : [];
|
|
395
|
+
const n = profileIds.length;
|
|
396
|
+
for (const profId of profileIds) {
|
|
397
|
+
const profRef = getRef(store, profId);
|
|
398
|
+
if (!profRef)
|
|
399
|
+
continue;
|
|
400
|
+
const pa = extractor.extractEntity(profRef)?.attributes ?? [];
|
|
401
|
+
// IfcMaterialProfile: [Name, Description, Material, Profile, Priority, Category]
|
|
402
|
+
addMaterialLeaf(typeof pa[2] === 'number' ? pa[2] : undefined, n > 0 ? 1 / n : 0);
|
|
403
|
+
}
|
|
404
|
+
return [...merged.values()];
|
|
405
|
+
}
|
|
406
|
+
case 'IFCMATERIALCONSTITUENTSET': {
|
|
407
|
+
// IfcMaterialConstituentSet: [Name, Description, MaterialConstituents]
|
|
408
|
+
const constIds = Array.isArray(attrs[2]) ? attrs[2].filter((id) => typeof id === 'number') : [];
|
|
409
|
+
const constituents = [];
|
|
410
|
+
for (const constId of constIds) {
|
|
411
|
+
const constRef = getRef(store, constId);
|
|
412
|
+
if (!constRef)
|
|
413
|
+
continue;
|
|
414
|
+
const ca = extractor.extractEntity(constRef)?.attributes ?? [];
|
|
415
|
+
// IfcMaterialConstituent: [Name, Description, Material, Fraction, Category]
|
|
416
|
+
constituents.push({
|
|
417
|
+
matId: typeof ca[2] === 'number' ? ca[2] : undefined,
|
|
418
|
+
fraction: typeof ca[3] === 'number' && ca[3] > 0 ? ca[3] : undefined,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
const totalFraction = constituents.reduce((s, c) => s + (c.fraction ?? 0), 0);
|
|
422
|
+
for (const c of constituents) {
|
|
423
|
+
const weight = totalFraction > 0
|
|
424
|
+
? (c.fraction ?? 0) / totalFraction
|
|
425
|
+
: (constituents.length > 0 ? 1 / constituents.length : 0);
|
|
426
|
+
addMaterialLeaf(c.matId, weight);
|
|
427
|
+
}
|
|
428
|
+
return [...merged.values()];
|
|
429
|
+
}
|
|
430
|
+
case 'IFCMATERIALLIST': {
|
|
431
|
+
// IfcMaterialList: [Materials]
|
|
432
|
+
const matIds = Array.isArray(attrs[0]) ? attrs[0].filter((id) => typeof id === 'number') : [];
|
|
433
|
+
const n = matIds.length;
|
|
434
|
+
for (const matId of matIds)
|
|
435
|
+
addMaterialLeaf(matId, n > 0 ? 1 / n : 0);
|
|
436
|
+
return [...merged.values()];
|
|
437
|
+
}
|
|
438
|
+
case 'IFCMATERIALLAYERSETUSAGE': {
|
|
439
|
+
const layerSetId = typeof attrs[0] === 'number' ? attrs[0] : undefined;
|
|
440
|
+
return layerSetId ? resolveLeaves(store, extractor, layerSetId, visited) : [];
|
|
441
|
+
}
|
|
442
|
+
case 'IFCMATERIALPROFILESETUSAGE': {
|
|
443
|
+
const profileSetId = typeof attrs[0] === 'number' ? attrs[0] : undefined;
|
|
444
|
+
return profileSetId ? resolveLeaves(store, extractor, profileSetId, visited) : [];
|
|
445
|
+
}
|
|
446
|
+
default:
|
|
447
|
+
// Unknown definition — treat as a single opaque material so it still
|
|
448
|
+
// appears in the tab and carries the element's full volume.
|
|
449
|
+
return [{
|
|
450
|
+
id: defId,
|
|
451
|
+
name: typeof attrs[0] === 'string' ? attrs[0] : undefined,
|
|
452
|
+
weight: 1,
|
|
453
|
+
}];
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
const usageIndexCache = new WeakMap();
|
|
457
|
+
/**
|
|
458
|
+
* Build (and memoise) the model-wide index of base material → using elements,
|
|
459
|
+
* with per-element volume weights. Derived entirely from the forward
|
|
460
|
+
* `onDemandMaterialMap` (element → definition) that the parser already builds,
|
|
461
|
+
* so no extra parse work is required. Keyed by base IfcMaterial express id.
|
|
462
|
+
*/
|
|
463
|
+
export function buildMaterialUsageIndex(store) {
|
|
464
|
+
const cached = usageIndexCache.get(store);
|
|
465
|
+
if (cached)
|
|
466
|
+
return cached;
|
|
467
|
+
const usage = new Map();
|
|
468
|
+
const forward = store.onDemandMaterialMap;
|
|
469
|
+
if (forward && store.source?.length) {
|
|
470
|
+
for (const [entityId, defId] of forward) {
|
|
471
|
+
const leaves = collectMaterialLeaves(store, defId);
|
|
472
|
+
for (const leaf of leaves) {
|
|
473
|
+
let entry = usage.get(leaf.id);
|
|
474
|
+
if (!entry) {
|
|
475
|
+
const ref = getRef(store, leaf.id);
|
|
476
|
+
entry = {
|
|
477
|
+
id: leaf.id,
|
|
478
|
+
name: leaf.name || `Material #${leaf.id}`,
|
|
479
|
+
category: leaf.category,
|
|
480
|
+
ifcClass: ref?.type || 'IfcMaterial',
|
|
481
|
+
entries: [],
|
|
482
|
+
};
|
|
483
|
+
usage.set(leaf.id, entry);
|
|
484
|
+
}
|
|
485
|
+
entry.entries.push({ entityId, weight: leaf.weight });
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
usageIndexCache.set(store, usage);
|
|
490
|
+
return usage;
|
|
491
|
+
}
|
|
492
|
+
const displayCache = new WeakMap();
|
|
493
|
+
/** Resolve a material entity's display name + IFC class for headers/labels.
|
|
494
|
+
* Memoised per (store, materialId) — callers resolve many materials in a loop. */
|
|
495
|
+
export function getMaterialDisplay(store, materialId) {
|
|
496
|
+
let cache = displayCache.get(store);
|
|
497
|
+
if (!cache) {
|
|
498
|
+
cache = new Map();
|
|
499
|
+
displayCache.set(store, cache);
|
|
500
|
+
}
|
|
501
|
+
const hit = cache.get(materialId);
|
|
502
|
+
if (hit)
|
|
503
|
+
return hit;
|
|
504
|
+
const ref = getRef(store, materialId);
|
|
505
|
+
const type = ref?.type || 'IfcMaterial';
|
|
506
|
+
let result;
|
|
507
|
+
if (!ref || !store.source?.length) {
|
|
508
|
+
result = { name: `Material #${materialId}`, type };
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
const extractor = new EntityExtractor(store.source);
|
|
512
|
+
const attrs = extractor.extractEntity(ref)?.attributes ?? [];
|
|
513
|
+
const name = typeof attrs[0] === 'string' && attrs[0] ? attrs[0] : `Material #${materialId}`;
|
|
514
|
+
result = { name, type };
|
|
515
|
+
}
|
|
516
|
+
cache.set(materialId, result);
|
|
517
|
+
return result;
|
|
518
|
+
}
|
|
254
519
|
//# sourceMappingURL=material-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-resolver.js","sourceRoot":"","sources":["../src/material-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"material-resolver.js","sourceRoot":"","sources":["../src/material-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ export { extractClassificationsOnDemand } from './classification-resolver.js';
|
|
|
14
14
|
export type { ClassificationInfo } from './classification-resolver.js';
|
|
15
15
|
export { extractMaterialsOnDemand } from './material-resolver.js';
|
|
16
16
|
export type { MaterialInfo, MaterialLayerInfo, MaterialProfileInfo, MaterialConstituentInfo } from './material-resolver.js';
|
|
17
|
+
export { resolveMaterialDefId, collectMaterialLeaves, buildMaterialUsageIndex, getMaterialDisplay, } from './material-resolver.js';
|
|
18
|
+
export type { MaterialLeaf, MaterialUsage } from './material-resolver.js';
|
|
17
19
|
/**
|
|
18
20
|
* Result of type-level property extraction.
|
|
19
21
|
*/
|
|
@@ -70,6 +72,25 @@ export interface EntityRelationships {
|
|
|
70
72
|
}>;
|
|
71
73
|
}
|
|
72
74
|
export type { GeoreferenceInfo as GeorefInfo };
|
|
75
|
+
/**
|
|
76
|
+
* Property sets attached to a material via IfcMaterialProperties (e.g.
|
|
77
|
+
* Pset_MaterialConcrete). Grouped per underlying IfcMaterial so the UI can
|
|
78
|
+
* show which material each set belongs to. See {@link extractMaterialPropertiesOnDemand}.
|
|
79
|
+
*/
|
|
80
|
+
export interface MaterialPsetGroup {
|
|
81
|
+
materialId: number;
|
|
82
|
+
materialName: string;
|
|
83
|
+
psets: Array<{
|
|
84
|
+
name: string;
|
|
85
|
+
properties: Array<{
|
|
86
|
+
name: string;
|
|
87
|
+
type: number;
|
|
88
|
+
value: PropertyValue;
|
|
89
|
+
values?: string[];
|
|
90
|
+
dataType?: string;
|
|
91
|
+
}>;
|
|
92
|
+
}>;
|
|
93
|
+
}
|
|
73
94
|
/**
|
|
74
95
|
* Parse a property entity's value based on its IFC type.
|
|
75
96
|
* Handles all 6 IfcProperty subtypes:
|
|
@@ -145,4 +166,17 @@ export declare function extractRelationshipsOnDemand(store: IfcDataStore, entity
|
|
|
145
166
|
* Bridges to the entity-based georef extractor by resolving entities lazily.
|
|
146
167
|
*/
|
|
147
168
|
export declare function extractGeoreferencingOnDemand(store: IfcDataStore): GeoreferenceInfo | null;
|
|
169
|
+
/**
|
|
170
|
+
* Material property sets associated with a selected element, resolved through
|
|
171
|
+
* its material association. Fans out a layer/profile/constituent set to its
|
|
172
|
+
* member IfcMaterials (where Pset_Material* typically lives) and also checks
|
|
173
|
+
* the set definition itself. Returns one group per material that has psets.
|
|
174
|
+
*/
|
|
175
|
+
export declare function extractMaterialPropertiesOnDemand(store: IfcDataStore, entityId: number): MaterialPsetGroup[];
|
|
176
|
+
/**
|
|
177
|
+
* Material property sets for a directly-selected material entity (the Materials
|
|
178
|
+
* hierarchy tab). Includes the material's own psets plus, when it is a set
|
|
179
|
+
* definition, those of its member materials.
|
|
180
|
+
*/
|
|
181
|
+
export declare function extractMaterialPropertiesForMaterialId(store: IfcDataStore, materialId: number): MaterialPsetGroup[];
|
|
148
182
|
//# sourceMappingURL=on-demand-extractors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-demand-extractors.d.ts","sourceRoot":"","sources":["../src/on-demand-extractors.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAsD,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGlH,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"on-demand-extractors.d.ts","sourceRoot":"","sources":["../src/on-demand-extractors.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import { extractGeoreferencing as extractGeorefFromEntities } from './georef-ext
|
|
|
7
7
|
// Re-export classification and material resolvers
|
|
8
8
|
export { extractClassificationsOnDemand } from './classification-resolver.js';
|
|
9
9
|
export { extractMaterialsOnDemand } from './material-resolver.js';
|
|
10
|
+
export { resolveMaterialDefId, collectMaterialLeaves, buildMaterialUsageIndex, getMaterialDisplay, } from './material-resolver.js';
|
|
11
|
+
import { resolveMaterialDefId as resolveMaterialDefIdImpl, collectMaterialLeaves as collectMaterialLeavesImpl, getMaterialDisplay as getMaterialDisplayImpl, } from './material-resolver.js';
|
|
10
12
|
// ============================================================================
|
|
11
13
|
// Property Value Parsing Helpers
|
|
12
14
|
// ============================================================================
|
|
@@ -600,4 +602,155 @@ export function extractGeoreferencingOnDemand(store) {
|
|
|
600
602
|
// Cast to IfcEntity (they share the same shape)
|
|
601
603
|
return extractGeorefFromEntities(entityMap, typeMap);
|
|
602
604
|
}
|
|
605
|
+
const materialPropertyIndexCache = new WeakMap();
|
|
606
|
+
/** Resolve an entity ref from the primary index, falling back to deferred atoms. */
|
|
607
|
+
function refFromStore(store, id) {
|
|
608
|
+
return store.entityIndex.byId.get(id) ?? store.deferredEntityIndex?.get(id);
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* Resolve the (materialId, propsList, psetName) triple for a *MaterialProperties
|
|
612
|
+
* entity, dispatching on its concrete class rather than guessing attribute
|
|
613
|
+
* positions. The two generic forms that carry an IfcProperty list are handled:
|
|
614
|
+
* - IfcMaterialProperties (IFC4+): [Name, Description, Properties, Material]
|
|
615
|
+
* - IfcExtendedMaterialProperties (IFC2x3): [Material, ExtendedProperties, Description, Name]
|
|
616
|
+
* The typed IFC2x3 subtypes (IfcMechanicalMaterialProperties, IfcThermalMaterialProperties,
|
|
617
|
+
* …) expose domain-specific scalar fields instead of a generic property list and
|
|
618
|
+
* are not surfaced (returns null) — they are not the Pset_Material* this targets.
|
|
619
|
+
*/
|
|
620
|
+
function readMaterialPropsEntity(typeKey, attrs, entityType) {
|
|
621
|
+
let materialId;
|
|
622
|
+
let propsList;
|
|
623
|
+
let name;
|
|
624
|
+
if (typeKey === 'IFCMATERIALPROPERTIES') {
|
|
625
|
+
name = attrs[0];
|
|
626
|
+
propsList = attrs[2];
|
|
627
|
+
materialId = attrs[3];
|
|
628
|
+
}
|
|
629
|
+
else if (typeKey === 'IFCEXTENDEDMATERIALPROPERTIES') {
|
|
630
|
+
materialId = attrs[0];
|
|
631
|
+
propsList = attrs[1];
|
|
632
|
+
name = attrs[3];
|
|
633
|
+
}
|
|
634
|
+
else {
|
|
635
|
+
return null; // typed IFC2x3 scalar subtype — no generic property list
|
|
636
|
+
}
|
|
637
|
+
if (typeof materialId !== 'number' || !Array.isArray(propsList))
|
|
638
|
+
return null;
|
|
639
|
+
const psetName = typeof name === 'string' && name ? name : (entityType || 'Material Properties');
|
|
640
|
+
return { materialId, propsList, psetName };
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Build (and memoise) the model-wide map of materialId -> property sets defined
|
|
644
|
+
* via IfcMaterialProperties / IfcExtendedMaterialProperties. These reference the
|
|
645
|
+
* material directly (not through IfcRelDefinesByProperties), so they are found by
|
|
646
|
+
* scanning every *MaterialProperties entity once.
|
|
647
|
+
*/
|
|
648
|
+
function getMaterialPropertyIndex(store) {
|
|
649
|
+
const cached = materialPropertyIndexCache.get(store);
|
|
650
|
+
if (cached)
|
|
651
|
+
return cached;
|
|
652
|
+
const index = new Map();
|
|
653
|
+
if (!store.source?.length || !store.entityIndex?.byType) {
|
|
654
|
+
materialPropertyIndexCache.set(store, index);
|
|
655
|
+
return index;
|
|
656
|
+
}
|
|
657
|
+
const extractor = new EntityExtractor(store.source);
|
|
658
|
+
for (const [typeKey, ids] of store.entityIndex.byType) {
|
|
659
|
+
if (!typeKey.endsWith('MATERIALPROPERTIES'))
|
|
660
|
+
continue;
|
|
661
|
+
for (const matPropsId of ids) {
|
|
662
|
+
const ref = refFromStore(store, matPropsId);
|
|
663
|
+
if (!ref)
|
|
664
|
+
continue;
|
|
665
|
+
const entity = extractor.extractEntity(ref);
|
|
666
|
+
const attrs = entity?.attributes;
|
|
667
|
+
if (!attrs)
|
|
668
|
+
continue;
|
|
669
|
+
const parsed = readMaterialPropsEntity(typeKey, attrs, entity.type);
|
|
670
|
+
if (!parsed)
|
|
671
|
+
continue;
|
|
672
|
+
const properties = [];
|
|
673
|
+
for (const propRef of parsed.propsList) {
|
|
674
|
+
if (typeof propRef !== 'number')
|
|
675
|
+
continue;
|
|
676
|
+
const propEntityRef = refFromStore(store, propRef);
|
|
677
|
+
if (!propEntityRef)
|
|
678
|
+
continue;
|
|
679
|
+
const propEntity = extractor.extractEntity(propEntityRef);
|
|
680
|
+
if (!propEntity)
|
|
681
|
+
continue;
|
|
682
|
+
const propAttrs = propEntity.attributes || [];
|
|
683
|
+
const propName = typeof propAttrs[0] === 'string' ? propAttrs[0] : '';
|
|
684
|
+
if (!propName)
|
|
685
|
+
continue;
|
|
686
|
+
const pv = parsePropertyValue(propEntity);
|
|
687
|
+
const entry = {
|
|
688
|
+
name: propName,
|
|
689
|
+
type: pv.type,
|
|
690
|
+
value: pv.value,
|
|
691
|
+
};
|
|
692
|
+
if (pv.values)
|
|
693
|
+
entry.values = pv.values;
|
|
694
|
+
if (pv.dataType)
|
|
695
|
+
entry.dataType = pv.dataType;
|
|
696
|
+
properties.push(entry);
|
|
697
|
+
}
|
|
698
|
+
if (properties.length === 0)
|
|
699
|
+
continue;
|
|
700
|
+
let list = index.get(parsed.materialId);
|
|
701
|
+
if (!list) {
|
|
702
|
+
list = [];
|
|
703
|
+
index.set(parsed.materialId, list);
|
|
704
|
+
}
|
|
705
|
+
list.push({ name: parsed.psetName, properties });
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
materialPropertyIndexCache.set(store, index);
|
|
709
|
+
return index;
|
|
710
|
+
}
|
|
711
|
+
/** Build pset groups for a set of candidate material ids using the reverse index. */
|
|
712
|
+
function buildMaterialPsetGroups(store, materialIds) {
|
|
713
|
+
const index = getMaterialPropertyIndex(store);
|
|
714
|
+
if (index.size === 0)
|
|
715
|
+
return [];
|
|
716
|
+
const groups = [];
|
|
717
|
+
const seen = new Set();
|
|
718
|
+
for (const matId of materialIds) {
|
|
719
|
+
if (seen.has(matId))
|
|
720
|
+
continue;
|
|
721
|
+
seen.add(matId);
|
|
722
|
+
const entries = index.get(matId);
|
|
723
|
+
if (!entries || entries.length === 0)
|
|
724
|
+
continue;
|
|
725
|
+
const { name } = getMaterialDisplayImpl(store, matId);
|
|
726
|
+
groups.push({
|
|
727
|
+
materialId: matId,
|
|
728
|
+
materialName: name,
|
|
729
|
+
psets: entries.map((e) => ({ name: e.name, properties: e.properties })),
|
|
730
|
+
});
|
|
731
|
+
}
|
|
732
|
+
return groups;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* Material property sets associated with a selected element, resolved through
|
|
736
|
+
* its material association. Fans out a layer/profile/constituent set to its
|
|
737
|
+
* member IfcMaterials (where Pset_Material* typically lives) and also checks
|
|
738
|
+
* the set definition itself. Returns one group per material that has psets.
|
|
739
|
+
*/
|
|
740
|
+
export function extractMaterialPropertiesOnDemand(store, entityId) {
|
|
741
|
+
const defId = resolveMaterialDefIdImpl(store, entityId);
|
|
742
|
+
if (defId === undefined)
|
|
743
|
+
return [];
|
|
744
|
+
const leafIds = collectMaterialLeavesImpl(store, defId).map((l) => l.id);
|
|
745
|
+
return buildMaterialPsetGroups(store, [defId, ...leafIds]);
|
|
746
|
+
}
|
|
747
|
+
/**
|
|
748
|
+
* Material property sets for a directly-selected material entity (the Materials
|
|
749
|
+
* hierarchy tab). Includes the material's own psets plus, when it is a set
|
|
750
|
+
* definition, those of its member materials.
|
|
751
|
+
*/
|
|
752
|
+
export function extractMaterialPropertiesForMaterialId(store, materialId) {
|
|
753
|
+
const leafIds = collectMaterialLeavesImpl(store, materialId).map((l) => l.id);
|
|
754
|
+
return buildMaterialPsetGroups(store, [materialId, ...leafIds]);
|
|
755
|
+
}
|
|
603
756
|
//# sourceMappingURL=on-demand-extractors.js.map
|