@ifc-lite/parser 2.1.7 → 2.1.9
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/dist/classification-extractor.d.ts +1 -1
- package/dist/classification-extractor.d.ts.map +1 -1
- package/dist/classification-resolver.d.ts +18 -0
- package/dist/classification-resolver.d.ts.map +1 -0
- package/dist/classification-resolver.js +126 -0
- package/dist/classification-resolver.js.map +1 -0
- package/dist/columnar-parser-attributes.d.ts +39 -0
- package/dist/columnar-parser-attributes.d.ts.map +1 -0
- package/dist/columnar-parser-attributes.js +225 -0
- package/dist/columnar-parser-attributes.js.map +1 -0
- package/dist/columnar-parser-indexes.d.ts +42 -0
- package/dist/columnar-parser-indexes.d.ts.map +1 -0
- package/dist/columnar-parser-indexes.js +102 -0
- package/dist/columnar-parser-indexes.js.map +1 -0
- package/dist/columnar-parser-relationships.d.ts +17 -0
- package/dist/columnar-parser-relationships.d.ts.map +1 -0
- package/dist/columnar-parser-relationships.js +95 -0
- package/dist/columnar-parser-relationships.js.map +1 -0
- package/dist/columnar-parser.d.ts +6 -21
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +154 -445
- package/dist/columnar-parser.js.map +1 -1
- package/dist/compact-entity-index.d.ts +1 -0
- package/dist/compact-entity-index.d.ts.map +1 -1
- package/dist/compact-entity-index.js +52 -0
- package/dist/compact-entity-index.js.map +1 -1
- package/dist/georef-extractor.d.ts +7 -1
- package/dist/georef-extractor.d.ts.map +1 -1
- package/dist/georef-extractor.js +29 -5
- package/dist/georef-extractor.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -17
- package/dist/index.js.map +1 -1
- package/dist/material-extractor.d.ts +1 -1
- package/dist/material-extractor.d.ts.map +1 -1
- package/dist/material-resolver.d.ts +37 -0
- package/dist/material-resolver.d.ts.map +1 -0
- package/dist/material-resolver.js +230 -0
- package/dist/material-resolver.js.map +1 -0
- package/dist/on-demand-extractors.d.ts +4 -51
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +17 -341
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/style-extractor.js.map +1 -1
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +2 -4
- package/dist/worker-parser.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { IfcDataStore } from './columnar-parser.js';
|
|
2
|
+
export interface MaterialInfo {
|
|
3
|
+
type: 'Material' | 'MaterialLayerSet' | 'MaterialProfileSet' | 'MaterialConstituentSet' | 'MaterialList';
|
|
4
|
+
name?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
layers?: MaterialLayerInfo[];
|
|
7
|
+
profiles?: MaterialProfileInfo[];
|
|
8
|
+
constituents?: MaterialConstituentInfo[];
|
|
9
|
+
materials?: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface MaterialLayerInfo {
|
|
12
|
+
materialName?: string;
|
|
13
|
+
thickness?: number;
|
|
14
|
+
isVentilated?: boolean;
|
|
15
|
+
name?: string;
|
|
16
|
+
category?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface MaterialProfileInfo {
|
|
19
|
+
materialName?: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
category?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface MaterialConstituentInfo {
|
|
24
|
+
materialName?: string;
|
|
25
|
+
name?: string;
|
|
26
|
+
fraction?: number;
|
|
27
|
+
category?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract materials for a single entity ON-DEMAND.
|
|
31
|
+
* Uses the onDemandMaterialMap built during parsing.
|
|
32
|
+
* Falls back to relationship graph when on-demand map is not available (e.g., server-loaded models).
|
|
33
|
+
* Also checks type-level material assignments via IfcRelDefinesByType.
|
|
34
|
+
* Resolves the full material structure (layers, profiles, constituents, lists).
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractMaterialsOnDemand(store: IfcDataStore, entityId: number): MaterialInfo | null;
|
|
37
|
+
//# sourceMappingURL=material-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material-resolver.d.ts","sourceRoot":"","sources":["../src/material-resolver.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,UAAU,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,wBAAwB,GAAG,cAAc,CAAC;IACzG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACjB,YAAY,GAAG,IAAI,CA8BrB"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Material resolution — extracts and resolves IFC material assignments
|
|
6
|
+
* including layers, profiles, constituents, lists, and *Usage indirection.
|
|
7
|
+
* Includes cycle detection for recursive material references.
|
|
8
|
+
*/
|
|
9
|
+
import { EntityExtractor } from './entity-extractor.js';
|
|
10
|
+
import { RelationshipType } from '@ifc-lite/data';
|
|
11
|
+
/**
|
|
12
|
+
* Extract materials for a single entity ON-DEMAND.
|
|
13
|
+
* Uses the onDemandMaterialMap built during parsing.
|
|
14
|
+
* Falls back to relationship graph when on-demand map is not available (e.g., server-loaded models).
|
|
15
|
+
* Also checks type-level material assignments via IfcRelDefinesByType.
|
|
16
|
+
* Resolves the full material structure (layers, profiles, constituents, lists).
|
|
17
|
+
*/
|
|
18
|
+
export function extractMaterialsOnDemand(store, entityId) {
|
|
19
|
+
let materialId;
|
|
20
|
+
if (store.onDemandMaterialMap) {
|
|
21
|
+
materialId = store.onDemandMaterialMap.get(entityId);
|
|
22
|
+
}
|
|
23
|
+
else if (store.relationships) {
|
|
24
|
+
// Fallback: use relationship graph (server-loaded models)
|
|
25
|
+
const related = store.relationships.getRelated(entityId, RelationshipType.AssociatesMaterial, 'inverse');
|
|
26
|
+
if (related.length > 0)
|
|
27
|
+
materialId = related[0];
|
|
28
|
+
}
|
|
29
|
+
// Check type-level material if occurrence has none
|
|
30
|
+
if (materialId === undefined && store.relationships) {
|
|
31
|
+
const typeIds = store.relationships.getRelated(entityId, RelationshipType.DefinesByType, 'inverse');
|
|
32
|
+
for (const typeId of typeIds) {
|
|
33
|
+
if (store.onDemandMaterialMap) {
|
|
34
|
+
materialId = store.onDemandMaterialMap.get(typeId);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const related = store.relationships.getRelated(typeId, RelationshipType.AssociatesMaterial, 'inverse');
|
|
38
|
+
if (related.length > 0)
|
|
39
|
+
materialId = related[0];
|
|
40
|
+
}
|
|
41
|
+
if (materialId !== undefined)
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (materialId === undefined)
|
|
46
|
+
return null;
|
|
47
|
+
if (!store.source?.length)
|
|
48
|
+
return null;
|
|
49
|
+
const extractor = new EntityExtractor(store.source);
|
|
50
|
+
return resolveMaterial(store, extractor, materialId, new Set());
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve a material entity by ID, handling all IFC material types.
|
|
54
|
+
* Uses visited set to prevent infinite recursion on cyclic *Usage references.
|
|
55
|
+
*/
|
|
56
|
+
function resolveMaterial(store, extractor, materialId, visited = new Set()) {
|
|
57
|
+
if (visited.has(materialId))
|
|
58
|
+
return null;
|
|
59
|
+
visited.add(materialId);
|
|
60
|
+
const ref = store.entityIndex.byId.get(materialId);
|
|
61
|
+
if (!ref)
|
|
62
|
+
return null;
|
|
63
|
+
const entity = extractor.extractEntity(ref);
|
|
64
|
+
if (!entity)
|
|
65
|
+
return null;
|
|
66
|
+
const typeUpper = entity.type.toUpperCase();
|
|
67
|
+
const attrs = entity.attributes || [];
|
|
68
|
+
switch (typeUpper) {
|
|
69
|
+
case 'IFCMATERIAL': {
|
|
70
|
+
// IfcMaterial: [Name, Description, Category]
|
|
71
|
+
return {
|
|
72
|
+
type: 'Material',
|
|
73
|
+
name: typeof attrs[0] === 'string' ? attrs[0] : undefined,
|
|
74
|
+
description: typeof attrs[1] === 'string' ? attrs[1] : undefined,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
case 'IFCMATERIALLAYERSET': {
|
|
78
|
+
// IfcMaterialLayerSet: [MaterialLayers, LayerSetName, Description]
|
|
79
|
+
const layerIds = Array.isArray(attrs[0]) ? attrs[0].filter((id) => typeof id === 'number') : [];
|
|
80
|
+
const layers = [];
|
|
81
|
+
for (const layerId of layerIds) {
|
|
82
|
+
const layerRef = store.entityIndex.byId.get(layerId);
|
|
83
|
+
if (!layerRef)
|
|
84
|
+
continue;
|
|
85
|
+
const layerEntity = extractor.extractEntity(layerRef);
|
|
86
|
+
if (!layerEntity)
|
|
87
|
+
continue;
|
|
88
|
+
const la = layerEntity.attributes || [];
|
|
89
|
+
// IfcMaterialLayer: [Material, LayerThickness, IsVentilated, Name, Description, Category, Priority]
|
|
90
|
+
const matId = typeof la[0] === 'number' ? la[0] : undefined;
|
|
91
|
+
let materialName;
|
|
92
|
+
if (matId) {
|
|
93
|
+
const matRef = store.entityIndex.byId.get(matId);
|
|
94
|
+
if (matRef) {
|
|
95
|
+
const matEntity = extractor.extractEntity(matRef);
|
|
96
|
+
if (matEntity) {
|
|
97
|
+
materialName = typeof matEntity.attributes?.[0] === 'string' ? matEntity.attributes[0] : undefined;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
layers.push({
|
|
102
|
+
materialName,
|
|
103
|
+
thickness: typeof la[1] === 'number' ? la[1] : undefined,
|
|
104
|
+
isVentilated: la[2] === true || la[2] === '.T.',
|
|
105
|
+
name: typeof la[3] === 'string' ? la[3] : undefined,
|
|
106
|
+
category: typeof la[5] === 'string' ? la[5] : undefined,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
type: 'MaterialLayerSet',
|
|
111
|
+
name: typeof attrs[1] === 'string' ? attrs[1] : undefined,
|
|
112
|
+
description: typeof attrs[2] === 'string' ? attrs[2] : undefined,
|
|
113
|
+
layers,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
case 'IFCMATERIALPROFILESET': {
|
|
117
|
+
// IfcMaterialProfileSet: [Name, Description, MaterialProfiles, CompositeProfile]
|
|
118
|
+
const profileIds = Array.isArray(attrs[2]) ? attrs[2].filter((id) => typeof id === 'number') : [];
|
|
119
|
+
const profiles = [];
|
|
120
|
+
for (const profId of profileIds) {
|
|
121
|
+
const profRef = store.entityIndex.byId.get(profId);
|
|
122
|
+
if (!profRef)
|
|
123
|
+
continue;
|
|
124
|
+
const profEntity = extractor.extractEntity(profRef);
|
|
125
|
+
if (!profEntity)
|
|
126
|
+
continue;
|
|
127
|
+
const pa = profEntity.attributes || [];
|
|
128
|
+
// IfcMaterialProfile: [Name, Description, Material, Profile, Priority, Category]
|
|
129
|
+
const matId = typeof pa[2] === 'number' ? pa[2] : undefined;
|
|
130
|
+
let materialName;
|
|
131
|
+
if (matId) {
|
|
132
|
+
const matRef = store.entityIndex.byId.get(matId);
|
|
133
|
+
if (matRef) {
|
|
134
|
+
const matEntity = extractor.extractEntity(matRef);
|
|
135
|
+
if (matEntity) {
|
|
136
|
+
materialName = typeof matEntity.attributes?.[0] === 'string' ? matEntity.attributes[0] : undefined;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
profiles.push({
|
|
141
|
+
materialName,
|
|
142
|
+
name: typeof pa[0] === 'string' ? pa[0] : undefined,
|
|
143
|
+
category: typeof pa[5] === 'string' ? pa[5] : undefined,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
type: 'MaterialProfileSet',
|
|
148
|
+
name: typeof attrs[0] === 'string' ? attrs[0] : undefined,
|
|
149
|
+
description: typeof attrs[1] === 'string' ? attrs[1] : undefined,
|
|
150
|
+
profiles,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
case 'IFCMATERIALCONSTITUENTSET': {
|
|
154
|
+
// IfcMaterialConstituentSet: [Name, Description, MaterialConstituents]
|
|
155
|
+
const constituentIds = Array.isArray(attrs[2]) ? attrs[2].filter((id) => typeof id === 'number') : [];
|
|
156
|
+
const constituents = [];
|
|
157
|
+
for (const constId of constituentIds) {
|
|
158
|
+
const constRef = store.entityIndex.byId.get(constId);
|
|
159
|
+
if (!constRef)
|
|
160
|
+
continue;
|
|
161
|
+
const constEntity = extractor.extractEntity(constRef);
|
|
162
|
+
if (!constEntity)
|
|
163
|
+
continue;
|
|
164
|
+
const ca = constEntity.attributes || [];
|
|
165
|
+
// IfcMaterialConstituent: [Name, Description, Material, Fraction, Category]
|
|
166
|
+
const matId = typeof ca[2] === 'number' ? ca[2] : undefined;
|
|
167
|
+
let materialName;
|
|
168
|
+
if (matId) {
|
|
169
|
+
const matRef = store.entityIndex.byId.get(matId);
|
|
170
|
+
if (matRef) {
|
|
171
|
+
const matEntity = extractor.extractEntity(matRef);
|
|
172
|
+
if (matEntity) {
|
|
173
|
+
materialName = typeof matEntity.attributes?.[0] === 'string' ? matEntity.attributes[0] : undefined;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
constituents.push({
|
|
178
|
+
materialName,
|
|
179
|
+
name: typeof ca[0] === 'string' ? ca[0] : undefined,
|
|
180
|
+
fraction: typeof ca[3] === 'number' ? ca[3] : undefined,
|
|
181
|
+
category: typeof ca[4] === 'string' ? ca[4] : undefined,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
type: 'MaterialConstituentSet',
|
|
186
|
+
name: typeof attrs[0] === 'string' ? attrs[0] : undefined,
|
|
187
|
+
description: typeof attrs[1] === 'string' ? attrs[1] : undefined,
|
|
188
|
+
constituents,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
case 'IFCMATERIALLIST': {
|
|
192
|
+
// IfcMaterialList: [Materials]
|
|
193
|
+
const matIds = Array.isArray(attrs[0]) ? attrs[0].filter((id) => typeof id === 'number') : [];
|
|
194
|
+
const materials = [];
|
|
195
|
+
for (const matId of matIds) {
|
|
196
|
+
const matRef = store.entityIndex.byId.get(matId);
|
|
197
|
+
if (!matRef)
|
|
198
|
+
continue;
|
|
199
|
+
const matEntity = extractor.extractEntity(matRef);
|
|
200
|
+
if (matEntity) {
|
|
201
|
+
const name = typeof matEntity.attributes?.[0] === 'string' ? matEntity.attributes[0] : `Material #${matId}`;
|
|
202
|
+
materials.push(name);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
type: 'MaterialList',
|
|
207
|
+
materials,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
case 'IFCMATERIALLAYERSETUSAGE': {
|
|
211
|
+
// IfcMaterialLayerSetUsage: [ForLayerSet, LayerSetDirection, DirectionSense, OffsetFromReferenceLine, ...]
|
|
212
|
+
const layerSetId = typeof attrs[0] === 'number' ? attrs[0] : undefined;
|
|
213
|
+
if (layerSetId) {
|
|
214
|
+
return resolveMaterial(store, extractor, layerSetId, visited);
|
|
215
|
+
}
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
case 'IFCMATERIALPROFILESETUSAGE': {
|
|
219
|
+
// IfcMaterialProfileSetUsage: [ForProfileSet, ...]
|
|
220
|
+
const profileSetId = typeof attrs[0] === 'number' ? attrs[0] : undefined;
|
|
221
|
+
if (profileSetId) {
|
|
222
|
+
return resolveMaterial(store, extractor, profileSetId, visited);
|
|
223
|
+
}
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
default:
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=material-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material-resolver.js","sourceRoot":"","sources":["../src/material-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,41 +10,10 @@ import { EntityExtractor } from './entity-extractor.js';
|
|
|
10
10
|
import type { PropertyValue } from '@ifc-lite/data';
|
|
11
11
|
import type { IfcDataStore } from './columnar-parser.js';
|
|
12
12
|
import { type GeoreferenceInfo } from './georef-extractor.js';
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
location?: string;
|
|
18
|
-
description?: string;
|
|
19
|
-
path?: string[];
|
|
20
|
-
}
|
|
21
|
-
export interface MaterialInfo {
|
|
22
|
-
type: 'Material' | 'MaterialLayerSet' | 'MaterialProfileSet' | 'MaterialConstituentSet' | 'MaterialList';
|
|
23
|
-
name?: string;
|
|
24
|
-
description?: string;
|
|
25
|
-
layers?: MaterialLayerInfo[];
|
|
26
|
-
profiles?: MaterialProfileInfo[];
|
|
27
|
-
constituents?: MaterialConstituentInfo[];
|
|
28
|
-
materials?: string[];
|
|
29
|
-
}
|
|
30
|
-
export interface MaterialLayerInfo {
|
|
31
|
-
materialName?: string;
|
|
32
|
-
thickness?: number;
|
|
33
|
-
isVentilated?: boolean;
|
|
34
|
-
name?: string;
|
|
35
|
-
category?: string;
|
|
36
|
-
}
|
|
37
|
-
export interface MaterialProfileInfo {
|
|
38
|
-
materialName?: string;
|
|
39
|
-
name?: string;
|
|
40
|
-
category?: string;
|
|
41
|
-
}
|
|
42
|
-
export interface MaterialConstituentInfo {
|
|
43
|
-
materialName?: string;
|
|
44
|
-
name?: string;
|
|
45
|
-
fraction?: number;
|
|
46
|
-
category?: string;
|
|
47
|
-
}
|
|
13
|
+
export { extractClassificationsOnDemand } from './classification-resolver.js';
|
|
14
|
+
export type { ClassificationInfo } from './classification-resolver.js';
|
|
15
|
+
export { extractMaterialsOnDemand } from './material-resolver.js';
|
|
16
|
+
export type { MaterialInfo, MaterialLayerInfo, MaterialProfileInfo, MaterialConstituentInfo } from './material-resolver.js';
|
|
48
17
|
/**
|
|
49
18
|
* Result of type-level property extraction.
|
|
50
19
|
*/
|
|
@@ -115,22 +84,6 @@ export declare function parsePropertyValue(propEntity: IfcEntity): {
|
|
|
115
84
|
};
|
|
116
85
|
/** Extract a numeric value from a possibly typed STEP value. */
|
|
117
86
|
export declare function extractNumericValue(attr: unknown): number | null;
|
|
118
|
-
/**
|
|
119
|
-
* Extract classifications for a single entity ON-DEMAND.
|
|
120
|
-
* Uses the onDemandClassificationMap built during parsing.
|
|
121
|
-
* Falls back to relationship graph when on-demand map is not available (e.g., server-loaded models).
|
|
122
|
-
* Also checks type-level associations via IfcRelDefinesByType.
|
|
123
|
-
* Returns an array of classification references with system info.
|
|
124
|
-
*/
|
|
125
|
-
export declare function extractClassificationsOnDemand(store: IfcDataStore, entityId: number): ClassificationInfo[];
|
|
126
|
-
/**
|
|
127
|
-
* Extract materials for a single entity ON-DEMAND.
|
|
128
|
-
* Uses the onDemandMaterialMap built during parsing.
|
|
129
|
-
* Falls back to relationship graph when on-demand map is not available (e.g., server-loaded models).
|
|
130
|
-
* Also checks type-level material assignments via IfcRelDefinesByType.
|
|
131
|
-
* Resolves the full material structure (layers, profiles, constituents, lists).
|
|
132
|
-
*/
|
|
133
|
-
export declare function extractMaterialsOnDemand(store: IfcDataStore, entityId: number): MaterialInfo | null;
|
|
134
87
|
/**
|
|
135
88
|
* Extract property sets from a list of pset IDs using the entity index.
|
|
136
89
|
* Shared logic between instance-level and type-level property extraction.
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"on-demand-extractors.d.ts","sourceRoot":"","sources":["../src/on-demand-extractors.ts"],"names":[],"mappings":"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"}
|