@ifc-lite/parser 3.8.5 → 3.9.1

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.
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { EntityExtractor } from './entity-extractor.js';
10
10
  import { RelationshipType } from '@ifc-lite/data';
11
+ import { isIfcTypeLikeEntity } from './columnar-parser-indexes.js';
11
12
  /**
12
13
  * Extract materials for a single entity ON-DEMAND.
13
14
  * Uses the onDemandMaterialMap built during parsing.
@@ -17,8 +18,12 @@ import { RelationshipType } from '@ifc-lite/data';
17
18
  */
18
19
  export function extractMaterialsOnDemand(store, entityId) {
19
20
  let materialId;
21
+ // The map value is a list of associations (multiple IfcRelAssociatesMaterial
22
+ // on one element are valid in the wild); this single-material API resolves
23
+ // the primary (first) one. buildMaterialUsageIndex is where all associations
24
+ // are honoured.
20
25
  if (store.onDemandMaterialMap) {
21
- materialId = store.onDemandMaterialMap.get(entityId);
26
+ materialId = store.onDemandMaterialMap.get(entityId)?.[0];
22
27
  }
23
28
  else if (store.relationships) {
24
29
  // Fallback: use relationship graph (server-loaded models)
@@ -31,7 +36,7 @@ export function extractMaterialsOnDemand(store, entityId) {
31
36
  const typeIds = store.relationships.getRelated(entityId, RelationshipType.DefinesByType, 'inverse');
32
37
  for (const typeId of typeIds) {
33
38
  if (store.onDemandMaterialMap) {
34
- materialId = store.onDemandMaterialMap.get(typeId);
39
+ materialId = store.onDemandMaterialMap.get(typeId)?.[0];
35
40
  }
36
41
  else {
37
42
  const related = store.relationships.getRelated(typeId, RelationshipType.AssociatesMaterial, 'inverse');
@@ -276,7 +281,7 @@ function readMaterialNameCategory(store, extractor, materialId) {
276
281
  export function resolveMaterialDefId(store, entityId) {
277
282
  let materialId;
278
283
  if (store.onDemandMaterialMap) {
279
- materialId = store.onDemandMaterialMap.get(entityId);
284
+ materialId = store.onDemandMaterialMap.get(entityId)?.[0];
280
285
  }
281
286
  else if (store.relationships) {
282
287
  const related = store.relationships.getRelated(entityId, RelationshipType.AssociatesMaterial, 'inverse');
@@ -287,7 +292,7 @@ export function resolveMaterialDefId(store, entityId) {
287
292
  const typeIds = store.relationships.getRelated(entityId, RelationshipType.DefinesByType, 'inverse');
288
293
  for (const typeId of typeIds) {
289
294
  if (store.onDemandMaterialMap) {
290
- materialId = store.onDemandMaterialMap.get(typeId);
295
+ materialId = store.onDemandMaterialMap.get(typeId)?.[0];
291
296
  }
292
297
  else {
293
298
  const related = store.relationships.getRelated(typeId, RelationshipType.AssociatesMaterial, 'inverse');
@@ -318,7 +323,25 @@ export function collectMaterialLeaves(store, defId) {
318
323
  if (cached)
319
324
  return cached;
320
325
  const extractor = store.source?.length ? new EntityExtractor(store.source) : null;
321
- const result = extractor ? resolveLeaves(store, extractor, defId, new Set()) : [];
326
+ let result;
327
+ if (extractor) {
328
+ result = resolveLeaves(store, extractor, defId, new Set());
329
+ }
330
+ else {
331
+ // Source-less store (server-loaded models keep `source` as an EMPTY
332
+ // Uint8Array): a definition's internal structure (layers/profiles/
333
+ // constituents -> base materials) lives in attribute references that
334
+ // the server does not emit as relationship rows, so it cannot be
335
+ // fanned out here. Surface the definition itself as one opaque leaf
336
+ // carrying the element's full weight - the usage index then still
337
+ // groups elements by their material association instead of staying
338
+ // empty. Dangling definition refs resolve to nothing, mirroring
339
+ // resolveLeaves.
340
+ const ref = getRef(store, defId);
341
+ result = ref
342
+ ? [{ id: defId, name: store.entities?.getName(defId) || undefined, weight: 1 }]
343
+ : [];
344
+ }
322
345
  cache.set(defId, result);
323
346
  return result;
324
347
  }
@@ -377,7 +400,9 @@ function resolveLeaves(store, extractor, defId, visited) {
377
400
  // IfcMaterialLayer: [Material, LayerThickness, IsVentilated, Name, Description, Category, Priority]
378
401
  layers.push({
379
402
  matId: typeof la[0] === 'number' ? la[0] : undefined,
380
- thickness: typeof la[1] === 'number' && la[1] > 0 ? la[1] : 0,
403
+ // Non-finite thickness would turn every weight into NaN
404
+ // (Infinity/Infinity) - treat it as absent like <= 0.
405
+ thickness: typeof la[1] === 'number' && Number.isFinite(la[1]) && la[1] > 0 ? la[1] : 0,
381
406
  });
382
407
  }
383
408
  const totalThickness = layers.reduce((s, l) => s + l.thickness, 0);
@@ -415,15 +440,43 @@ function resolveLeaves(store, extractor, defId, visited) {
415
440
  // IfcMaterialConstituent: [Name, Description, Material, Fraction, Category]
416
441
  constituents.push({
417
442
  matId: typeof ca[2] === 'number' ? ca[2] : undefined,
418
- fraction: typeof ca[3] === 'number' && ca[3] > 0 ? ca[3] : undefined,
443
+ // Non-finite (NaN/Infinity), zero, and negative fractions are
444
+ // all malformed for an IfcNormalisedRatioMeasure - treat them
445
+ // as unset so they can't poison the weight arithmetic below.
446
+ fraction: typeof ca[3] === 'number' && Number.isFinite(ca[3]) && ca[3] > 0 ? ca[3] : undefined,
419
447
  });
420
448
  }
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);
449
+ // Constituent Fraction is optional per-constituent. When SOME
450
+ // constituents carry a fraction and others don't, the un-fractioned
451
+ // siblings must not collapse to weight 0 (the old `(f ?? 0)/total`
452
+ // did exactly that, dropping them from the totals). Instead the
453
+ // constituents WITHOUT an explicit fraction share whatever remains
454
+ // of the whole (1 - sum of explicit) evenly; when every constituent
455
+ // carries a fraction we normalise by their sum; with none we split
456
+ // equally. In every branch the weights sum to exactly 1, so the
457
+ // totals panel can never over-report an element's quantities.
458
+ const explicitTotal = constituents.reduce((s, c) => s + (c.fraction ?? 0), 0);
459
+ const implicitCount = constituents.reduce((n, c) => n + (c.fraction === undefined ? 1 : 0), 0);
460
+ if (explicitTotal <= 0) {
461
+ const n = constituents.length;
462
+ for (const c of constituents)
463
+ addMaterialLeaf(c.matId, n > 0 ? 1 / n : 0);
464
+ }
465
+ else if (implicitCount === 0) {
466
+ for (const c of constituents)
467
+ addMaterialLeaf(c.matId, (c.fraction ?? 0) / explicitTotal);
468
+ }
469
+ else {
470
+ // Mixed: implicit siblings share the remainder of the whole.
471
+ // When the explicit fractions already fill (or overflow) the
472
+ // whole, give each implicit sibling an even 1/n share instead
473
+ // so it still registers - then renormalise the set to sum to 1
474
+ // (e.g. {1.0, unset} would otherwise weigh 1.5x the element).
475
+ const remaining = 1 - explicitTotal;
476
+ const perImplicit = remaining > 0 ? remaining / implicitCount : 1 / constituents.length;
477
+ const total = explicitTotal + perImplicit * implicitCount;
478
+ for (const c of constituents)
479
+ addMaterialLeaf(c.matId, (c.fraction ?? perImplicit) / total);
427
480
  }
428
481
  return [...merged.values()];
429
482
  }
@@ -456,37 +509,112 @@ function resolveLeaves(store, extractor, defId, visited) {
456
509
  const usageIndexCache = new WeakMap();
457
510
  /**
458
511
  * 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.
512
+ * with per-element volume weights. Derived from the forward
513
+ * `onDemandMaterialMap` (element → definition) that the parser already builds
514
+ * when present, falling back to the relationship graph's AssociatesMaterial
515
+ * edges (server-loaded models). Keyed by base IfcMaterial express id.
462
516
  */
463
517
  export function buildMaterialUsageIndex(store) {
464
518
  const cached = usageIndexCache.get(store);
465
519
  if (cached)
466
520
  return cached;
467
521
  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);
522
+ // Element -> material-definition list. Prefer the parser's forward
523
+ // `onDemandMaterialMap`; when it's absent (server-loaded models) fall back
524
+ // to the relationship graph's AssociatesMaterial edges - the same fallback
525
+ // extractMaterialsOnDemand uses - so the model-wide index still populates
526
+ // instead of silently caching an empty map forever. Candidates are
527
+ // enumerated via entityIndex.byId (every server entity is indexed there):
528
+ // the server's facade graph exposes only getRelated/getEdges closures over
529
+ // private maps and keeps `inverse.offsets` as an EMPTY Map, so iterating
530
+ // the CSR columns is not an option for the exact store this fallback
531
+ // serves.
532
+ let forward = store.onDemandMaterialMap;
533
+ if (!forward && store.relationships) {
534
+ const rebuilt = new Map();
535
+ for (const entityId of store.entityIndex.byId.keys()) {
536
+ const defs = store.relationships.getRelated(entityId, RelationshipType.AssociatesMaterial, 'inverse');
537
+ if (defs.length > 0)
538
+ rebuilt.set(entityId, defs);
539
+ }
540
+ forward = rebuilt;
541
+ }
542
+ // No source requirement: server-loaded stores carry an EMPTY source buffer,
543
+ // and collectMaterialLeaves has a source-less path (the definition becomes
544
+ // one opaque full-weight leaf) precisely so this index works for them.
545
+ if (forward && forward.size > 0) {
546
+ // Guards against a malformed model double-typing one occurrence
547
+ // (two IfcRelDefinesByType rels → duplicate forward edges), which
548
+ // would otherwise double-count it in the totals panel.
549
+ const seenPerMaterial = new Map();
550
+ for (const [entityId, defIds] of forward) {
551
+ // IfcRelAssociatesMaterial commonly targets the TYPE entity
552
+ // (IfcDoorType etc.). The tab/totals need occurrences — a type
553
+ // has no geometry, so a type-keyed entry is invisible in the
554
+ // By Material tree (geom filter) and mis-attributes quantities
555
+ // (#1755). Expand type keys to their instances via forward
556
+ // DefinesByType edges; occurrences with their OWN association
557
+ // are skipped (IFC precedence: occurrence overrides type — they
558
+ // get their entry from their own map iteration). The type keeps
559
+ // no entry of its own: a zero-instance type would only produce
560
+ // dead rows. Stores without a relationship graph (minimal test
561
+ // stores) keep the old verbatim behavior.
562
+ const ref = getRef(store, entityId);
563
+ let targets;
564
+ if (ref && store.relationships && isIfcTypeLikeEntity(ref.type.toUpperCase())) {
565
+ targets = store.relationships
566
+ .getRelated(entityId, RelationshipType.DefinesByType, 'forward')
567
+ .filter((occId) => !forward.has(occId));
568
+ }
569
+ else {
570
+ targets = [entityId];
571
+ }
572
+ if (targets.length === 0)
573
+ continue;
574
+ // An element can carry more than one material association (valid in
575
+ // the wild); every definition contributes its leaves.
576
+ for (const defId of defIds) {
577
+ const leaves = collectMaterialLeaves(store, defId);
578
+ for (const leaf of leaves) {
579
+ let entry = usage.get(leaf.id);
580
+ if (!entry) {
581
+ const ref = getRef(store, leaf.id);
582
+ entry = {
583
+ id: leaf.id,
584
+ name: leaf.name || `Material #${leaf.id}`,
585
+ category: leaf.category,
586
+ ifcClass: ref?.type || 'IfcMaterial',
587
+ entries: [],
588
+ };
589
+ usage.set(leaf.id, entry);
590
+ }
591
+ let seen = seenPerMaterial.get(leaf.id);
592
+ if (!seen) {
593
+ seen = new Set();
594
+ seenPerMaterial.set(leaf.id, seen);
595
+ }
596
+ for (const target of targets) {
597
+ if (seen.has(target))
598
+ continue;
599
+ seen.add(target);
600
+ entry.entries.push({ entityId: target, weight: leaf.weight });
601
+ }
484
602
  }
485
- entry.entries.push({ entityId, weight: leaf.weight });
486
603
  }
487
604
  }
488
605
  }
489
- usageIndexCache.set(store, usage);
606
+ // Don't memoise an empty index built from a store that had NO material
607
+ // inputs at all (no forward map, no relationship graph, no source): such a
608
+ // store may be populated later (a load that wires onDemandMaterialMap /
609
+ // relationships after first render), and a cached empty result would mask
610
+ // it forever. Non-empty results, or empty ones from a store that did have
611
+ // inputs (a genuinely material-free model), are safe to cache.
612
+ const hadInputs = (store.onDemandMaterialMap?.size ?? 0) > 0
613
+ || !!store.relationships
614
+ || !!store.source?.length;
615
+ if (usage.size > 0 || hadInputs) {
616
+ usageIndexCache.set(store, usage);
617
+ }
490
618
  return usage;
491
619
  }
492
620
  const displayCache = new WeakMap();
@@ -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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"}
@@ -34,6 +34,23 @@ export interface TypePropertyInfo {
34
34
  }>;
35
35
  }>;
36
36
  }
37
+ /**
38
+ * Result of type-level quantity extraction (IfcElementQuantity sets on the
39
+ * element's IfcTypeProduct, e.g. Qto_WallBaseQuantities defined once on
40
+ * IfcWallType). Mirrors {@link TypePropertyInfo} for quantities.
41
+ */
42
+ export interface TypeQuantityInfo {
43
+ typeName: string;
44
+ typeId: number;
45
+ quantities: Array<{
46
+ name: string;
47
+ quantities: Array<{
48
+ name: string;
49
+ type: number;
50
+ value: number;
51
+ }>;
52
+ }>;
53
+ }
37
54
  /**
38
55
  * Structured document info from IFC document references.
39
56
  */
@@ -151,6 +168,32 @@ export declare function extractTypeEntityOwnProperties(store: IfcDataStore, type
151
168
  dataType?: string;
152
169
  }>;
153
170
  }>;
171
+ /**
172
+ * Extract quantity sets (IfcElementQuantity) from a list of set IDs using the
173
+ * entity index. The quantity counterpart of {@link extractPsetsFromIds}: it
174
+ * skips anything that is not an IFCELEMENTQUANTITY (e.g. property sets that
175
+ * share the HasPropertySets list on a type).
176
+ */
177
+ export declare function extractQsetsFromIds(store: IfcDataStore, extractor: EntityExtractor, qsetIds: number[]): Array<{
178
+ name: string;
179
+ quantities: Array<{
180
+ name: string;
181
+ type: number;
182
+ value: number;
183
+ }>;
184
+ }>;
185
+ /**
186
+ * Extract type-level quantities for a single entity ON-DEMAND.
187
+ * Finds the element's type via IfcRelDefinesByType, then extracts element
188
+ * quantities from:
189
+ * 1. The type entity's HasPropertySets attribute (index 5 on IfcTypeObject) —
190
+ * an IfcPropertySetDefinition list that may include IfcElementQuantity.
191
+ * 2. The onDemandQuantityMap for the type entity (IFC4 IfcRelDefinesByProperties
192
+ * with an IfcElementQuantity targeting the type).
193
+ * Returns null when the element has no type or the type carries no quantities.
194
+ * The quantity counterpart of {@link extractTypePropertiesOnDemand}.
195
+ */
196
+ export declare function extractTypeQuantitiesOnDemand(store: IfcDataStore, entityId: number): TypeQuantityInfo | null;
154
197
  /**
155
198
  * Extract documents for a single entity ON-DEMAND.
156
199
  * Uses the onDemandDocumentMap built during parsing.
@@ -1 +1 @@
1
- {"version":3,"file":"on-demand-extractors.d.ts","sourceRoot":"","sources":["../src/on-demand-extractors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"on-demand-extractors.d.ts","sourceRoot":"","sources":["../src/on-demand-extractors.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { EntityExtractor } from './entity-extractor.js';
5
- import { RelationshipType, PropertyValueType, } from '@ifc-lite/data';
5
+ import { RelationshipType, PropertyValueType, QuantityType, } from '@ifc-lite/data';
6
+ import { QUANTITY_TYPE_MAP } from './columnar-parser-indexes.js';
6
7
  import { extractGeoreferencing as extractGeorefFromEntities } from './georef-extractor.js';
7
8
  // Re-export classification and material resolvers
8
9
  export { extractClassificationsOnDemand } from './classification-resolver.js';
@@ -276,7 +277,11 @@ export function extractPsetsFromIds(store, extractor, psetIds) {
276
277
  properties.push(entry);
277
278
  }
278
279
  }
279
- if (properties.length > 0 || psetName) {
280
+ // Only surface sets that actually carry properties. An empty, named set
281
+ // contributes nothing and — because extractTypePropertiesOnDemand dedups
282
+ // by name — an empty set from one source could otherwise suppress a
283
+ // populated same-named set from another (symmetric with extractQsetsFromIds).
284
+ if (properties.length > 0) {
280
285
  result.push({ name: psetName, globalId: psetGlobalId, properties });
281
286
  }
282
287
  }
@@ -386,6 +391,117 @@ export function extractTypeEntityOwnProperties(store, typeEntityId) {
386
391
  return allPsets;
387
392
  }
388
393
  // ============================================================================
394
+ // Type Quantity Extraction
395
+ // ============================================================================
396
+ /**
397
+ * Extract quantity sets (IfcElementQuantity) from a list of set IDs using the
398
+ * entity index. The quantity counterpart of {@link extractPsetsFromIds}: it
399
+ * skips anything that is not an IFCELEMENTQUANTITY (e.g. property sets that
400
+ * share the HasPropertySets list on a type).
401
+ */
402
+ export function extractQsetsFromIds(store, extractor, qsetIds) {
403
+ const result = [];
404
+ for (const qsetId of qsetIds) {
405
+ const qsetRef = store.entityIndex.byId.get(qsetId);
406
+ if (!qsetRef)
407
+ continue;
408
+ // Only extract IFCELEMENTQUANTITY entities (skip property sets etc.)
409
+ if (qsetRef.type.toUpperCase() !== 'IFCELEMENTQUANTITY')
410
+ continue;
411
+ const qsetEntity = extractor.extractEntity(qsetRef);
412
+ if (!qsetEntity)
413
+ continue;
414
+ const qsetAttrs = qsetEntity.attributes || [];
415
+ const qsetName = typeof qsetAttrs[2] === 'string' ? qsetAttrs[2] : `QuantitySet #${qsetId}`;
416
+ const hasQuantities = qsetAttrs[5];
417
+ const quantities = [];
418
+ if (Array.isArray(hasQuantities)) {
419
+ for (const qtyRef of hasQuantities) {
420
+ if (typeof qtyRef !== 'number')
421
+ continue;
422
+ const qtyEntityRef = store.entityIndex.byId.get(qtyRef);
423
+ if (!qtyEntityRef)
424
+ continue;
425
+ const qtyEntity = extractor.extractEntity(qtyEntityRef);
426
+ if (!qtyEntity)
427
+ continue;
428
+ const qtyAttrs = qtyEntity.attributes || [];
429
+ const qtyName = typeof qtyAttrs[0] === 'string' ? qtyAttrs[0] : '';
430
+ if (!qtyName)
431
+ continue;
432
+ const qtyType = QUANTITY_TYPE_MAP[qtyEntity.type.toUpperCase()] ?? QuantityType.Count;
433
+ // Value is at index 3 for the simple IfcQuantity* subtypes.
434
+ const value = typeof qtyAttrs[3] === 'number' ? qtyAttrs[3] : 0;
435
+ quantities.push({ name: qtyName, type: qtyType, value });
436
+ }
437
+ }
438
+ // Only surface sets that actually carry quantities. An empty set would
439
+ // add nothing to a schedule, and (because `extractTypeQuantitiesOnDemand`
440
+ // dedups by name) an empty set from one source could otherwise suppress a
441
+ // populated same-named set from another.
442
+ if (quantities.length > 0) {
443
+ result.push({ name: qsetName, quantities });
444
+ }
445
+ }
446
+ return result;
447
+ }
448
+ /**
449
+ * Extract type-level quantities for a single entity ON-DEMAND.
450
+ * Finds the element's type via IfcRelDefinesByType, then extracts element
451
+ * quantities from:
452
+ * 1. The type entity's HasPropertySets attribute (index 5 on IfcTypeObject) —
453
+ * an IfcPropertySetDefinition list that may include IfcElementQuantity.
454
+ * 2. The onDemandQuantityMap for the type entity (IFC4 IfcRelDefinesByProperties
455
+ * with an IfcElementQuantity targeting the type).
456
+ * Returns null when the element has no type or the type carries no quantities.
457
+ * The quantity counterpart of {@link extractTypePropertiesOnDemand}.
458
+ */
459
+ export function extractTypeQuantitiesOnDemand(store, entityId) {
460
+ if (!store.relationships)
461
+ return null;
462
+ const typeIds = store.relationships.getRelated(entityId, RelationshipType.DefinesByType, 'inverse');
463
+ if (typeIds.length === 0)
464
+ return null;
465
+ const typeId = typeIds[0];
466
+ const typeRef = store.entityIndex.byId.get(typeId);
467
+ if (!typeRef)
468
+ return null;
469
+ if (!store.source?.length)
470
+ return null;
471
+ const extractor = new EntityExtractor(store.source);
472
+ const typeEntity = extractor.extractEntity(typeRef);
473
+ const typeName = typeEntity && typeof typeEntity.attributes?.[2] === 'string'
474
+ ? typeEntity.attributes[2]
475
+ : typeRef.type;
476
+ const allQsets = [];
477
+ const seenQsetNames = new Set();
478
+ // Source 1: HasPropertySets attribute on the type (index 5) — quantity sets
479
+ // live alongside property sets in this IfcPropertySetDefinition list.
480
+ if (typeEntity) {
481
+ const hasPropertySets = typeEntity.attributes?.[5];
482
+ if (Array.isArray(hasPropertySets)) {
483
+ const ids = hasPropertySets.filter((id) => typeof id === 'number');
484
+ for (const qset of extractQsetsFromIds(store, extractor, ids)) {
485
+ seenQsetNames.add(qset.name);
486
+ allQsets.push(qset);
487
+ }
488
+ }
489
+ }
490
+ // Source 2: onDemandQuantityMap for the type entity (IFC4 IfcRelDefinesByProperties).
491
+ if (store.onDemandQuantityMap) {
492
+ const typeQsetIds = store.onDemandQuantityMap.get(typeId);
493
+ if (typeQsetIds && typeQsetIds.length > 0) {
494
+ for (const qset of extractQsetsFromIds(store, extractor, typeQsetIds)) {
495
+ if (!seenQsetNames.has(qset.name))
496
+ allQsets.push(qset);
497
+ }
498
+ }
499
+ }
500
+ if (allQsets.length === 0)
501
+ return null;
502
+ return { typeName, typeId, quantities: allQsets };
503
+ }
504
+ // ============================================================================
389
505
  // Document Extraction
390
506
  // ============================================================================
391
507
  /**