@ifc-lite/parser 9.0.0 → 9.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/dist/columnar-parser.d.ts +1 -0
- package/dist/columnar-parser.d.ts.map +1 -1
- 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 +6 -0
- package/dist/data-store-transport.js.map +1 -1
- package/dist/effective-spatial-members.d.ts +11 -0
- package/dist/effective-spatial-members.d.ts.map +1 -0
- package/dist/effective-spatial-members.js +32 -0
- package/dist/effective-spatial-members.js.map +1 -0
- package/dist/effective-storey.d.ts +5 -0
- package/dist/effective-storey.d.ts.map +1 -0
- package/dist/effective-storey.js +64 -0
- package/dist/effective-storey.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/material-associations.d.ts +24 -0
- package/dist/material-associations.d.ts.map +1 -0
- package/dist/material-associations.js +67 -0
- package/dist/material-associations.js.map +1 -0
- package/dist/material-properties-extractor.d.ts +37 -0
- package/dist/material-properties-extractor.d.ts.map +1 -0
- package/dist/material-properties-extractor.js +217 -0
- package/dist/material-properties-extractor.js.map +1 -0
- package/dist/material-resolver.d.ts +1 -9
- package/dist/material-resolver.d.ts.map +1 -1
- package/dist/material-resolver.js +23 -67
- package/dist/material-resolver.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +2 -26
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +15 -168
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/owning-project.d.ts.map +1 -1
- package/dist/owning-project.js +1 -0
- package/dist/owning-project.js.map +1 -1
- package/dist/property-complex-value.d.ts +34 -0
- package/dist/property-complex-value.d.ts.map +1 -0
- package/dist/property-complex-value.js +111 -0
- package/dist/property-complex-value.js.map +1 -0
- package/dist/property-reference-value.d.ts +15 -0
- package/dist/property-reference-value.d.ts.map +1 -0
- package/dist/property-reference-value.js +34 -0
- package/dist/property-reference-value.js.map +1 -0
- package/dist/property-value-parser.d.ts +7 -21
- package/dist/property-value-parser.d.ts.map +1 -1
- package/dist/property-value-parser.js +28 -96
- package/dist/property-value-parser.js.map +1 -1
- package/dist/structural-extractor-values.d.ts +18 -0
- package/dist/structural-extractor-values.d.ts.map +1 -0
- package/dist/structural-extractor-values.js +50 -0
- package/dist/structural-extractor-values.js.map +1 -0
- package/dist/structural-extractor.d.ts +16 -1
- package/dist/structural-extractor.d.ts.map +1 -1
- package/dist/structural-extractor.js +70 -74
- package/dist/structural-extractor.js.map +1 -1
- package/package.json +6 -6
|
@@ -11,6 +11,8 @@ import type { IfcEntity } from './types.js';
|
|
|
11
11
|
import type { EntityExtractor } from './entity-extractor.js';
|
|
12
12
|
import type { PropertyValue } from '@ifc-lite/data';
|
|
13
13
|
import type { IfcDataStore } from './columnar-parser.js';
|
|
14
|
+
import { resolveComplexPropertyValue } from './property-complex-value.js';
|
|
15
|
+
export { resolveComplexPropertyValue };
|
|
14
16
|
/** One decoded `IfcProperty`. `dataType` is the IFC type of the value (for a
|
|
15
17
|
* list or enumeration, the one type all members share). `dataTypeMixed`
|
|
16
18
|
* marks an `IfcPropertyTableValue`, whose columns carry different types by
|
|
@@ -27,6 +29,8 @@ export interface ParsedIfcPropertyValue {
|
|
|
27
29
|
* an enumerated or list value, every cell of a table (#5475).
|
|
28
30
|
*/
|
|
29
31
|
structure?: 'enumerated' | 'bounded' | 'list' | 'table' | 'reference' | 'complex';
|
|
32
|
+
/** `IfcComplexProperty` only: each nested property, by its own `Name`, decoded the same way (#5475). */
|
|
33
|
+
members?: ExtractedProperty[];
|
|
30
34
|
}
|
|
31
35
|
/** One property as the on-demand extractors return it: the parsed value
|
|
32
36
|
* plus its name and, when the file declares one, its explicit unit. */
|
|
@@ -43,31 +47,13 @@ export interface ExtractedProperty extends ParsedIfcPropertyValue {
|
|
|
43
47
|
* - IfcPropertyBoundedValue: upper/lower bounds → "value [min – max]"
|
|
44
48
|
* - IfcPropertyListValue: list of values → joined string
|
|
45
49
|
* - IfcPropertyTableValue: defining/defined value pairs → "Table(N rows)"
|
|
46
|
-
* - IfcPropertyReferenceValue:
|
|
50
|
+
* - IfcPropertyReferenceValue: `#<id>` of the reference (slot 3); `parsePropertyValueWithComplex` reads the referenced Name instead
|
|
47
51
|
*/
|
|
48
52
|
export declare function parsePropertyValue(propEntity: IfcEntity): ParsedIfcPropertyValue;
|
|
49
53
|
/** Extract a numeric value from a possibly typed STEP value. */
|
|
50
54
|
export declare function extractNumericValue(attr: unknown): number | null;
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
* `[Name, Description, UsageName, HasProperties]`, index 3) into a display
|
|
54
|
-
* value plus a flat `values` candidate list, recursing into any further
|
|
55
|
-
* nested `IfcComplexProperty`. Without this, {@link parsePropertyValue}'s
|
|
56
|
-
* default branch reads attribute index 2 as if it were a `NominalValue`,
|
|
57
|
-
* which for `IfcComplexProperty` is `UsageName` — a label, not a value — and
|
|
58
|
-
* every nested property silently vanishes from the panel/query output.
|
|
59
|
-
*
|
|
60
|
-
* Hitting {@link MAX_COMPLEX_PROPERTY_DEPTH} with a non-empty `HasProperties`
|
|
61
|
-
* still unread appends {@link complexPropertyTruncationMarker}; a bare
|
|
62
|
-
* `UsageName` there is a plausible, well-formed value indistinguishable from
|
|
63
|
-
* a complex property that genuinely has no nested content (issue #3972). The
|
|
64
|
-
* empty-`UsageName` case matters most — before #3972 it produced an empty
|
|
65
|
-
* display, the caller loop `continue`d past it, and the whole nested member
|
|
66
|
-
* vanished while its parent fell back to showing its OWN `UsageName`, so the
|
|
67
|
-
* reader saw a real value attributed to the wrong nesting level. An absent or
|
|
68
|
-
* empty `HasProperties` is NOT a truncation and keeps the bare `UsageName`.
|
|
69
|
-
*/
|
|
70
|
-
export declare function resolveComplexPropertyValue(store: IfcDataStore, extractor: EntityExtractor, propEntity: IfcEntity, depth?: number): ParsedIfcPropertyValue;
|
|
55
|
+
/** Copy the optional parts of a decoded value onto an extracted property. */
|
|
56
|
+
export declare function copyParsedExtras(entry: ExtractedProperty, parsed: ParsedIfcPropertyValue): void;
|
|
71
57
|
/** Dispatch a pset member to {@link resolveComplexPropertyValue} for
|
|
72
58
|
* `IfcComplexProperty`, else the single-entity {@link parsePropertyValue}. */
|
|
73
59
|
export declare function parsePropertyValueWithComplex(store: IfcDataStore, extractor: EntityExtractor, propEntity: IfcEntity): ParsedIfcPropertyValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-value-parser.d.ts","sourceRoot":"","sources":["../src/property-value-parser.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"property-value-parser.d.ts","sourceRoot":"","sources":["../src/property-value-parser.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAMvC;;;sDAGsD;AACtD,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAClF,wGAAwG;IACxG,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED;wEACwE;AACxE,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,GAAG,sBAAsB,CAkMhF;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIhE;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAM/F;AAED;+EAC+E;AAC/E,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,SAAS,GACtB,sBAAsB,CASxB"}
|
|
@@ -2,6 +2,9 @@
|
|
|
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 { PropertyValueType } from '@ifc-lite/data';
|
|
5
|
+
import { resolvePropertyReferenceValue } from './property-reference-value.js';
|
|
6
|
+
import { resolveComplexPropertyValue } from './property-complex-value.js';
|
|
7
|
+
export { resolveComplexPropertyValue };
|
|
5
8
|
/** The IFC type every typed member of a list shares, or `undefined` when a
|
|
6
9
|
* member is untyped or the types differ. */
|
|
7
10
|
function sharedMemberType(members) {
|
|
@@ -24,7 +27,7 @@ function sharedMemberType(members) {
|
|
|
24
27
|
* - IfcPropertyBoundedValue: upper/lower bounds → "value [min – max]"
|
|
25
28
|
* - IfcPropertyListValue: list of values → joined string
|
|
26
29
|
* - IfcPropertyTableValue: defining/defined value pairs → "Table(N rows)"
|
|
27
|
-
* - IfcPropertyReferenceValue:
|
|
30
|
+
* - IfcPropertyReferenceValue: `#<id>` of the reference (slot 3); `parsePropertyValueWithComplex` reads the referenced Name instead
|
|
28
31
|
*/
|
|
29
32
|
export function parsePropertyValue(propEntity) {
|
|
30
33
|
const attrs = propEntity.attributes || [];
|
|
@@ -137,12 +140,13 @@ export function parsePropertyValue(propEntity) {
|
|
|
137
140
|
return { type: 0, value: null };
|
|
138
141
|
}
|
|
139
142
|
case 'IFCPROPERTYREFERENCEVALUE': {
|
|
140
|
-
// [Name, Description, PropertyReference]
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
// [Name, Description, UsageName, PropertyReference]. Without a
|
|
144
|
+
// store the referenced object cannot be read, so only its id is
|
|
145
|
+
// known; `parsePropertyValueWithComplex` reads its Name (#5475).
|
|
146
|
+
const refValue = attrs[3];
|
|
147
|
+
return typeof refValue === 'number'
|
|
148
|
+
? { type: 0, value: `#${refValue}`, structure: 'reference' }
|
|
149
|
+
: { type: 0, value: null, structure: 'reference' };
|
|
146
150
|
}
|
|
147
151
|
default: {
|
|
148
152
|
// IfcPropertySingleValue and fallback: [Name, Description, NominalValue, Unit]
|
|
@@ -234,101 +238,29 @@ export function extractNumericValue(attr) {
|
|
|
234
238
|
return attr[1];
|
|
235
239
|
return null;
|
|
236
240
|
}
|
|
237
|
-
/**
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
*
|
|
250
|
-
* A suffix rather than a `truncated` flag on `Property`: a flag would have to
|
|
251
|
-
* be carried through the `Property` type, the `serverDataModel` adapter, the
|
|
252
|
-
* Rust struct + serde, the per-field parquet columns and the panel renderer,
|
|
253
|
-
* and is silently lost at any one of them — the same "a signal that never
|
|
254
|
-
* fires" shape this issue is about. The value string reaches every reader by
|
|
255
|
-
* construction.
|
|
256
|
-
*/
|
|
257
|
-
function complexPropertyTruncationMarker() {
|
|
258
|
-
return `(truncated: nesting deeper than ${MAX_COMPLEX_PROPERTY_DEPTH} levels)`;
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Resolve an `IfcComplexProperty`'s nested `HasProperties` (EXPRESS:
|
|
262
|
-
* `[Name, Description, UsageName, HasProperties]`, index 3) into a display
|
|
263
|
-
* value plus a flat `values` candidate list, recursing into any further
|
|
264
|
-
* nested `IfcComplexProperty`. Without this, {@link parsePropertyValue}'s
|
|
265
|
-
* default branch reads attribute index 2 as if it were a `NominalValue`,
|
|
266
|
-
* which for `IfcComplexProperty` is `UsageName` — a label, not a value — and
|
|
267
|
-
* every nested property silently vanishes from the panel/query output.
|
|
268
|
-
*
|
|
269
|
-
* Hitting {@link MAX_COMPLEX_PROPERTY_DEPTH} with a non-empty `HasProperties`
|
|
270
|
-
* still unread appends {@link complexPropertyTruncationMarker}; a bare
|
|
271
|
-
* `UsageName` there is a plausible, well-formed value indistinguishable from
|
|
272
|
-
* a complex property that genuinely has no nested content (issue #3972). The
|
|
273
|
-
* empty-`UsageName` case matters most — before #3972 it produced an empty
|
|
274
|
-
* display, the caller loop `continue`d past it, and the whole nested member
|
|
275
|
-
* vanished while its parent fell back to showing its OWN `UsageName`, so the
|
|
276
|
-
* reader saw a real value attributed to the wrong nesting level. An absent or
|
|
277
|
-
* empty `HasProperties` is NOT a truncation and keeps the bare `UsageName`.
|
|
278
|
-
*/
|
|
279
|
-
export function resolveComplexPropertyValue(store, extractor, propEntity, depth = 0) {
|
|
280
|
-
const attrs = propEntity.attributes || [];
|
|
281
|
-
const usageName = typeof attrs[2] === 'string' ? attrs[2] : '';
|
|
282
|
-
const hasProperties = attrs[3];
|
|
283
|
-
if (!Array.isArray(hasProperties) || hasProperties.length === 0) {
|
|
284
|
-
// Nothing nested exists, so stopping here loses nothing and must NOT
|
|
285
|
-
// be marked as a truncation.
|
|
286
|
-
return { type: PropertyValueType.String, value: usageName || null };
|
|
287
|
-
}
|
|
288
|
-
if (depth >= MAX_COMPLEX_PROPERTY_DEPTH) {
|
|
289
|
-
// Members were present and we declined to read them. Say so.
|
|
290
|
-
const marker = complexPropertyTruncationMarker();
|
|
291
|
-
return {
|
|
292
|
-
type: PropertyValueType.String,
|
|
293
|
-
value: usageName ? `${usageName} ${marker}` : marker,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
const parts = [];
|
|
297
|
-
const values = [];
|
|
298
|
-
for (const ref of hasProperties) {
|
|
299
|
-
if (typeof ref !== 'number')
|
|
300
|
-
continue;
|
|
301
|
-
// @raw-entity-enumeration-ok complex-property parsing follows this source member reference, not an entity set
|
|
302
|
-
const nestedRef = store.entityIndex.byId.get(ref) ?? store.deferredEntityIndex?.get(ref);
|
|
303
|
-
if (!nestedRef)
|
|
304
|
-
continue;
|
|
305
|
-
const nestedEntity = extractor.extractEntity(nestedRef);
|
|
306
|
-
if (!nestedEntity)
|
|
307
|
-
continue;
|
|
308
|
-
const nestedAttrs = nestedEntity.attributes || [];
|
|
309
|
-
const nestedName = typeof nestedAttrs[0] === 'string' ? nestedAttrs[0] : '';
|
|
310
|
-
const nestedParsed = nestedEntity.type.toUpperCase() === 'IFCCOMPLEXPROPERTY'
|
|
311
|
-
? resolveComplexPropertyValue(store, extractor, nestedEntity, depth + 1)
|
|
312
|
-
: parsePropertyValue(nestedEntity);
|
|
313
|
-
const display = nestedParsed.value != null ? String(nestedParsed.value) : '';
|
|
314
|
-
if (!display)
|
|
315
|
-
continue;
|
|
316
|
-
parts.push(nestedName ? `${nestedName}: ${display}` : display);
|
|
317
|
-
values.push(display);
|
|
318
|
-
}
|
|
319
|
-
return {
|
|
320
|
-
type: PropertyValueType.String,
|
|
321
|
-
value: parts.length > 0 ? parts.join(', ') : (usageName || null),
|
|
322
|
-
structure: 'complex',
|
|
323
|
-
...(values.length > 0 ? { values } : {}),
|
|
324
|
-
};
|
|
241
|
+
/** Copy the optional parts of a decoded value onto an extracted property. */
|
|
242
|
+
export function copyParsedExtras(entry, parsed) {
|
|
243
|
+
if (parsed.values)
|
|
244
|
+
entry.values = parsed.values;
|
|
245
|
+
if (parsed.dataType)
|
|
246
|
+
entry.dataType = parsed.dataType;
|
|
247
|
+
if (parsed.dataTypeMixed)
|
|
248
|
+
entry.dataTypeMixed = true;
|
|
249
|
+
if (parsed.structure)
|
|
250
|
+
entry.structure = parsed.structure;
|
|
251
|
+
if (parsed.members)
|
|
252
|
+
entry.members = parsed.members;
|
|
325
253
|
}
|
|
326
254
|
/** Dispatch a pset member to {@link resolveComplexPropertyValue} for
|
|
327
255
|
* `IfcComplexProperty`, else the single-entity {@link parsePropertyValue}. */
|
|
328
256
|
export function parsePropertyValueWithComplex(store, extractor, propEntity) {
|
|
329
|
-
|
|
257
|
+
const type = propEntity.type.toUpperCase();
|
|
258
|
+
if (type === 'IFCCOMPLEXPROPERTY') {
|
|
330
259
|
return resolveComplexPropertyValue(store, extractor, propEntity);
|
|
331
260
|
}
|
|
261
|
+
if (type === 'IFCPROPERTYREFERENCEVALUE') {
|
|
262
|
+
return resolvePropertyReferenceValue(store, extractor, propEntity);
|
|
263
|
+
}
|
|
332
264
|
return parsePropertyValue(propEntity);
|
|
333
265
|
}
|
|
334
266
|
//# sourceMappingURL=property-value-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-value-parser.js","sourceRoot":"","sources":["../src/property-value-parser.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAkCnD;6CAC6C;AAC7C,SAAS,gBAAgB,CAAC,OAAkB;IACxC,IAAI,MAA0B,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3D,MAAM,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAqB;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAEhD,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,4BAA4B,CAAC,CAAC,CAAC;YAChC,sEAAsE;YACtE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;oBAC3E,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC;gBAClD,qDAAqD;gBACrD,sDAAsD;gBACtD,oDAAoD;gBACpD,8CAA8C;gBAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC9C,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7H,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC7B,6EAA6E;YAC7E,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,YAAY,GAAG,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC;YAChD,IAAI,OAAO,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACjC,OAAO,IAAI,KAAK,KAAK,MAAM,KAAK,GAAG,CAAC;YACxC,CAAC;YACD,yDAAyD;YACzD,wDAAwD;YACxD,2DAA2D;YAC3D,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,KAAK,IAAI,IAAI;gBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK;gBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC/D,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,0DAA0D;YAC1D,iDAAiD;YACjD,MAAM,aAAa,GAAG,CAAC,IAAa,EAAsB,EAAE;gBACxD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,SAAS,CAAC;YACrB,CAAC,CAAC;YACF,MAAM,QAAQ,GACV,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvB,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvB,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO;gBACH,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,KAAK,EAAE,OAAO,IAAI,IAAI;gBACtB,SAAS,EAAE,SAAS;gBACpB,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpC,CAAC;QACN,CAAC;QAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC1B,+CAA+C;YAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC;gBAClD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC9C,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACvH,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC3B,0DAA0D;YAC1D,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAChF,wDAAwD;gBACxD,uDAAuD;gBACvD,mDAAmD;gBACnD,MAAM,SAAS,GAAG,CAAC,CAAU,EAAU,EAAE;oBACrC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC;gBACF,MAAM,MAAM,GAAG;oBACX,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;oBAChC,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;iBAClC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC;gBACjD,uDAAuD;gBACvD,yDAAyD;gBACzD,qDAAqD;gBACrD,yDAAyD;gBACzD,0DAA0D;gBAC1D,wBAAwB;gBACxB,OAAO;oBACH,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,UAAU,QAAQ,QAAQ;oBACjC,MAAM;oBACN,aAAa,EAAE,IAAI;oBACnB,SAAS,EAAE,OAAO;iBACrB,CAAC;YACN,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,KAAK,2BAA2B,CAAC,CAAC,CAAC;YAC/B,yCAAyC;YACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;YACtE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACN,+EAA+E;YAC/E,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,GAAW,iBAAiB,CAAC,MAAM,CAAC;YAC5C,IAAI,KAAK,GAAkB,YAA6B,CAAC;YACzD,IAAI,QAA4B,CAAC;YAEjC,yDAAyD;YACzD,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3D,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBACvD,QAAQ,GAAG,QAAQ,CAAC;gBAEpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/B,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBACjC,KAAK,GAAG,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;gBACxD,CAAC;qBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtC,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBACjC,qDAAqD;oBACrD,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;wBAC/C,KAAK,GAAG,IAAI,CAAC;oBACjB,CAAC;yBAAM,CAAC;wBACJ,KAAK,GAAG,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;oBACxD,CAAC;gBACL,CAAC;qBAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACxC,sDAAsD;oBACtD,qDAAqD;oBACrD,mDAAmD;oBACnD,4CAA4C;oBAC5C,+CAA+C;oBAC/C,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;wBAC9D,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBACrC,CAAC;yBAAM,IACH,QAAQ,KAAK,SAAS;wBACtB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;wBAC5B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC5B,CAAC;wBACC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;oBAClC,CAAC;yBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtC,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBACrC,CAAC;yBAAM,CAAC;wBACJ,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;oBAClC,CAAC;oBACD,KAAK,GAAG,UAAU,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC;oBAChC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC1C,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC/F,CAAC;iBAAM,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;YACrC,CAAC;iBAAM,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7D,mEAAmE;gBACnE,kEAAkE;gBAClE,gEAAgE;gBAChE,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;oBACzB,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBACjC,KAAK,GAAG,IAAI,CAAC;gBACjB,CAAC;qBAAM,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;oBAChC,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBACjC,KAAK,GAAG,KAAK,CAAC;gBAClB,CAAC;qBAAM,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;oBAC1D,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBACjC,KAAK,GAAG,IAAI,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACJ,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;gBACjC,CAAC;YACL,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9D,CAAC;IACL,CAAC;AACL,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;gDAEgD;AAChD,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AACH,SAAS,+BAA+B;IACpC,OAAO,mCAAmC,0BAA0B,UAAU,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,2BAA2B,CACvC,KAAmB,EACnB,SAA0B,EAC1B,UAAqB,EACrB,KAAK,GAAG,CAAC;IAET,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,qEAAqE;QACrE,6BAA6B;QAC7B,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,KAAK,IAAI,0BAA0B,EAAE,CAAC;QACtC,6DAA6D;QAC7D,MAAM,MAAM,GAAG,+BAA+B,EAAE,CAAC;QACjD,OAAO;YACH,IAAI,EAAE,iBAAiB,CAAC,MAAM;YAC9B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM;SACvD,CAAC;IACN,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,SAAS;QACtC,8GAA8G;QAC9G,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACzF,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,oBAAoB;YACzE,CAAC,CAAC,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC;YACxE,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,OAAO;QACH,IAAI,EAAE,iBAAiB,CAAC,MAAM;QAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;QAChE,SAAS,EAAE,SAAS;QACpB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC;AACN,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,6BAA6B,CACzC,KAAmB,EACnB,SAA0B,EAC1B,UAAqB;IAErB,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,oBAAoB,EAAE,CAAC;QACzD,OAAO,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"property-value-parser.js","sourceRoot":"","sources":["../src/property-value-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type RawEntity } from './structural-step-values.js';
|
|
2
|
+
import type { StructuralExtraction } from './structural-types.js';
|
|
3
|
+
export type StructuralRole = 'member' | 'connection' | 'activity' | 'loadGroup' | 'resultGroup' | 'analysisModel';
|
|
4
|
+
/** Empty result shared by the parsed and live-overlay extractor paths. */
|
|
5
|
+
export declare function emptyStructuralExtraction(): StructuralExtraction;
|
|
6
|
+
/**
|
|
7
|
+
* Classify by inheritance, not by name. Unrelated `IFCSTRUCTURAL*` entities
|
|
8
|
+
* such as load leaves and profile properties are intentionally skipped.
|
|
9
|
+
*/
|
|
10
|
+
export declare function structuralRoleOf(type: string): StructuralRole | undefined;
|
|
11
|
+
export declare function structuralActivityKind(type: string): 'Action' | 'Reaction' | 'Unknown';
|
|
12
|
+
/** IfcRoot attribute 2 is Name, 3 Description; IfcObject adds ObjectType at 4. */
|
|
13
|
+
export declare function structuralRootFields(e: RawEntity): {
|
|
14
|
+
name?: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
objectType?: string;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=structural-extractor-values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-extractor-values.d.ts","sourceRoot":"","sources":["../src/structural-extractor-values.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,WAAW,GACX,aAAa,GACb,eAAe,CAAC;AAEpB,0EAA0E;AAC1E,wBAAgB,yBAAyB,IAAI,oBAAoB,CAKhE;AAYD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAMzE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAKtF;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,GAAG;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAMA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
import { asString } from './structural-step-values.js';
|
|
5
|
+
import { getInheritanceChain } from './ifc-schema.js';
|
|
6
|
+
/** Empty result shared by the parsed and live-overlay extractor paths. */
|
|
7
|
+
export function emptyStructuralExtraction() {
|
|
8
|
+
return {
|
|
9
|
+
analysisModels: [], members: [], connections: [], activities: [],
|
|
10
|
+
loadGroups: [], resultGroups: [], hasStructural: false, loadsTruncated: false,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** Chain marker → role. Every marker is disjoint, so match order is not load-bearing. */
|
|
14
|
+
const ROLE_BY_SUPERTYPE = [
|
|
15
|
+
['IFCSTRUCTURALANALYSISMODEL', 'analysisModel'],
|
|
16
|
+
['IFCSTRUCTURALRESULTGROUP', 'resultGroup'],
|
|
17
|
+
['IFCSTRUCTURALLOADGROUP', 'loadGroup'],
|
|
18
|
+
['IFCSTRUCTURALMEMBER', 'member'],
|
|
19
|
+
['IFCSTRUCTURALCONNECTION', 'connection'],
|
|
20
|
+
['IFCSTRUCTURALACTIVITY', 'activity'],
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Classify by inheritance, not by name. Unrelated `IFCSTRUCTURAL*` entities
|
|
24
|
+
* such as load leaves and profile properties are intentionally skipped.
|
|
25
|
+
*/
|
|
26
|
+
export function structuralRoleOf(type) {
|
|
27
|
+
const chain = getInheritanceChain(type).map((c) => c.toUpperCase());
|
|
28
|
+
for (const [marker, role] of ROLE_BY_SUPERTYPE) {
|
|
29
|
+
if (chain.includes(marker))
|
|
30
|
+
return role;
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
export function structuralActivityKind(type) {
|
|
35
|
+
const chain = getInheritanceChain(type).map((c) => c.toUpperCase());
|
|
36
|
+
if (chain.includes('IFCSTRUCTURALACTION'))
|
|
37
|
+
return 'Action';
|
|
38
|
+
if (chain.includes('IFCSTRUCTURALREACTION'))
|
|
39
|
+
return 'Reaction';
|
|
40
|
+
return 'Unknown';
|
|
41
|
+
}
|
|
42
|
+
/** IfcRoot attribute 2 is Name, 3 Description; IfcObject adds ObjectType at 4. */
|
|
43
|
+
export function structuralRootFields(e) {
|
|
44
|
+
return {
|
|
45
|
+
name: asString(e.attrs[2]),
|
|
46
|
+
description: asString(e.attrs[3]),
|
|
47
|
+
objectType: asString(e.attrs[4]),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=structural-extractor-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-extractor-values.js","sourceRoot":"","sources":["../src/structural-extractor-values.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,QAAQ,EAAkB,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAWtD,0EAA0E;AAC1E,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;QAChE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK;KAC9E,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,iBAAiB,GAAqD;IAC1E,CAAC,4BAA4B,EAAE,eAAe,CAAC;IAC/C,CAAC,0BAA0B,EAAE,aAAa,CAAC;IAC3C,CAAC,wBAAwB,EAAE,WAAW,CAAC;IACvC,CAAC,qBAAqB,EAAE,QAAQ,CAAC;IACjC,CAAC,yBAAyB,EAAE,YAAY,CAAC;IACzC,CAAC,uBAAuB,EAAE,UAAU,CAAC;CACtC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3D,IAAI,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,CAAY;IAK/C,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjC,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
import { type EffectiveEntityOverlay } from '@ifc-lite/data';
|
|
1
2
|
import type { IfcDataStore } from './columnar-parser.js';
|
|
2
3
|
import { type BoundaryConditionInfo, type StructuralLoadConfigurationEntry, type StructuralLoadConfigurationInfo, type StructuralLoadDropReason, type StructuralLoadInfo } from './structural-load-extractor.js';
|
|
4
|
+
import { type RawEntity } from './structural-step-values.js';
|
|
3
5
|
import type { StructuralActivityInfo, StructuralAnalysisModelInfo, StructuralConnectionInfo, StructuralExtraction, StructuralLoadGroupInfo, StructuralMemberInfo, StructuralResultGroupInfo } from './structural-types.js';
|
|
4
6
|
export type { BoundaryConditionInfo, StructuralActivityInfo, StructuralAnalysisModelInfo, StructuralConnectionInfo, StructuralExtraction, StructuralLoadConfigurationEntry, StructuralLoadConfigurationInfo, StructuralLoadDropReason, StructuralLoadGroupInfo, StructuralLoadInfo, StructuralMemberInfo, StructuralResultGroupInfo, };
|
|
7
|
+
/** Optional live-session view used when structural data is queried in the viewer. */
|
|
8
|
+
export interface StructuralExtractionView extends EffectiveEntityOverlay {
|
|
9
|
+
getNewEntity?(expressId: number): {
|
|
10
|
+
readonly type: string;
|
|
11
|
+
readonly attributes?: readonly unknown[];
|
|
12
|
+
} | null;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the attributes for an effective entity. `source` is absent for a
|
|
15
|
+
* session-created entity. Callers can merge positional/named edits without
|
|
16
|
+
* making parser depend on the mutations package.
|
|
17
|
+
*/
|
|
18
|
+
readEntity?: (expressId: number, effectiveType: string, source?: RawEntity) => RawEntity | undefined;
|
|
19
|
+
}
|
|
5
20
|
/**
|
|
6
21
|
* Extract all structural analysis data from a parsed IFC store.
|
|
7
22
|
*/
|
|
8
|
-
export declare function extractStructuralOnDemand(store: IfcDataStore): StructuralExtraction;
|
|
23
|
+
export declare function extractStructuralOnDemand(store: IfcDataStore, view?: StructuralExtractionView | null): StructuralExtraction;
|
|
9
24
|
//# sourceMappingURL=structural-extractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural-extractor.d.ts","sourceRoot":"","sources":["../src/structural-extractor.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"structural-extractor.d.ts","sourceRoot":"","sources":["../src/structural-extractor.ts"],"names":[],"mappings":"AAyCA,OAAO,EAA4B,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAS/B,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EAChC,+BAA+B,EAC/B,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,CAAC;AAEF,qFAAqF;AACrF,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,YAAY,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7G;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,SAAS,GAAG,SAAS,CAAC;CACtG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,EACnB,IAAI,CAAC,EAAE,wBAAwB,GAAG,IAAI,GACrC,oBAAoB,CA0QtB"}
|
|
@@ -37,92 +37,88 @@
|
|
|
37
37
|
* here; a 2X3-only attribute reads as absent rather than as the wrong slot.
|
|
38
38
|
*/
|
|
39
39
|
import { EntityExtractor } from './entity-extractor.js';
|
|
40
|
-
import {
|
|
40
|
+
import { iterateEffectiveEntities } from '@ifc-lite/data';
|
|
41
|
+
import { normalizeIfcTypeName } from './ifc-schema.js';
|
|
41
42
|
import { extractBoundaryCondition, extractStructuralLoad, } from './structural-load-extractor.js';
|
|
42
|
-
import { addUnique, asBoolean, asEnum, asNumber, asNumberList, asRef, asRefList, asString, readAttr,
|
|
43
|
-
|
|
44
|
-
return {
|
|
45
|
-
analysisModels: [],
|
|
46
|
-
members: [],
|
|
47
|
-
connections: [],
|
|
48
|
-
activities: [],
|
|
49
|
-
loadGroups: [],
|
|
50
|
-
resultGroups: [],
|
|
51
|
-
hasStructural: false,
|
|
52
|
-
loadsTruncated: false,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
/** Chain marker → role. Every marker is disjoint, so match order is not load-bearing. */
|
|
56
|
-
const ROLE_BY_SUPERTYPE = [
|
|
57
|
-
['IFCSTRUCTURALANALYSISMODEL', 'analysisModel'],
|
|
58
|
-
['IFCSTRUCTURALRESULTGROUP', 'resultGroup'],
|
|
59
|
-
['IFCSTRUCTURALLOADGROUP', 'loadGroup'],
|
|
60
|
-
['IFCSTRUCTURALMEMBER', 'member'],
|
|
61
|
-
['IFCSTRUCTURALCONNECTION', 'connection'],
|
|
62
|
-
['IFCSTRUCTURALACTIVITY', 'activity'],
|
|
63
|
-
];
|
|
64
|
-
/**
|
|
65
|
-
* Classify a concrete type by inheritance, not by name. Returns undefined for
|
|
66
|
-
* an `IFCSTRUCTURAL*` type that is none of the six roles — `IfcStructuralLoad`
|
|
67
|
-
* leaves and `IfcStructuralProfileProperties` reach here and are read through
|
|
68
|
-
* their owners instead.
|
|
69
|
-
*/
|
|
70
|
-
function roleOf(type) {
|
|
71
|
-
const chain = getInheritanceChain(type).map((c) => c.toUpperCase());
|
|
72
|
-
for (const [marker, role] of ROLE_BY_SUPERTYPE) {
|
|
73
|
-
if (chain.includes(marker))
|
|
74
|
-
return role;
|
|
75
|
-
}
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
function activityKind(type) {
|
|
79
|
-
const chain = getInheritanceChain(type).map((c) => c.toUpperCase());
|
|
80
|
-
if (chain.includes('IFCSTRUCTURALACTION'))
|
|
81
|
-
return 'Action';
|
|
82
|
-
if (chain.includes('IFCSTRUCTURALREACTION'))
|
|
83
|
-
return 'Reaction';
|
|
84
|
-
return 'Unknown';
|
|
85
|
-
}
|
|
86
|
-
/** IfcRoot attribute 2 is Name, 3 Description; IfcObject adds ObjectType at 4. */
|
|
87
|
-
function rootFields(e) {
|
|
88
|
-
return {
|
|
89
|
-
name: asString(e.attrs[2]),
|
|
90
|
-
description: asString(e.attrs[3]),
|
|
91
|
-
objectType: asString(e.attrs[4]),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
43
|
+
import { addUnique, asBoolean, asEnum, asNumber, asNumberList, asRef, asRefList, asString, readAttr, } from './structural-step-values.js';
|
|
44
|
+
import { emptyStructuralExtraction as emptyExtraction, structuralActivityKind as activityKind, structuralRoleOf as roleOf, structuralRootFields as rootFields, } from './structural-extractor-values.js';
|
|
94
45
|
/**
|
|
95
46
|
* Extract all structural analysis data from a parsed IFC store.
|
|
96
47
|
*/
|
|
97
|
-
export function extractStructuralOnDemand(store) {
|
|
98
|
-
if (!store.source?.length)
|
|
48
|
+
export function extractStructuralOnDemand(store, view) {
|
|
49
|
+
if (!store.source?.length && !view)
|
|
99
50
|
return emptyExtraction();
|
|
51
|
+
// @raw-entity-enumeration-ok source buckets define the candidate domain; iterateEffectiveEntities below applies tombstones, creations and retypes
|
|
100
52
|
const byType = store.entityIndex.byType;
|
|
101
|
-
//
|
|
102
|
-
|
|
53
|
+
// Candidate source ids are the structural classes plus the three relation
|
|
54
|
+
// classes below. The effective iterator removes tombstones and folds in
|
|
55
|
+
// created and retyped records before the extractor reads their attributes.
|
|
56
|
+
const sourceIds = new Set();
|
|
103
57
|
for (const [typeKey, ids] of byType) {
|
|
104
58
|
if (!typeKey.startsWith('IFCSTRUCTURAL'))
|
|
105
59
|
continue;
|
|
106
60
|
const role = roleOf(typeKey);
|
|
107
61
|
if (!role)
|
|
108
62
|
continue;
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
63
|
+
for (const id of ids)
|
|
64
|
+
sourceIds.add(id);
|
|
65
|
+
}
|
|
66
|
+
const relationIds = new Set([
|
|
67
|
+
...(byType.get('IFCRELCONNECTSSTRUCTURALMEMBER') ?? []),
|
|
68
|
+
...(byType.get('IFCRELCONNECTSSTRUCTURALACTIVITY') ?? []),
|
|
69
|
+
...(byType.get('IFCRELASSIGNSTOGROUP') ?? []),
|
|
70
|
+
]);
|
|
71
|
+
for (const id of relationIds)
|
|
72
|
+
sourceIds.add(id);
|
|
73
|
+
for (const [id, mutation] of view?.getTypeMutations?.() ?? []) {
|
|
74
|
+
if (roleOf(mutation.newType) || mutation.newType.toUpperCase().startsWith('IFCRELCONNECTSSTRUCTURAL') || mutation.newType.toUpperCase() === 'IFCRELASSIGNSTOGROUP') {
|
|
75
|
+
sourceIds.add(id);
|
|
76
|
+
}
|
|
114
77
|
}
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
// passes below already produce an empty extraction. It exists so the common
|
|
120
|
-
// case — a model with no structural analysis at all — never constructs an
|
|
121
|
-
// EntityExtractor over the whole source buffer.
|
|
122
|
-
if (idsByRole.size === 0)
|
|
78
|
+
const effectiveRows = [...iterateEffectiveEntities(store, view, undefined, sourceIds)];
|
|
79
|
+
// Preserve the common no-structural-data path without setting up a source
|
|
80
|
+
// extractor. Created/retyped structural entities are already in this set.
|
|
81
|
+
if (!effectiveRows.some((row) => roleOf(row.type)))
|
|
123
82
|
return emptyExtraction();
|
|
124
83
|
const extractor = new EntityExtractor(store.source);
|
|
125
|
-
const
|
|
84
|
+
const effectiveTypeById = new Map(effectiveRows.map((row) => [row.expressId, row.type]));
|
|
85
|
+
const readRaw = (id, effectiveType) => {
|
|
86
|
+
// @raw-entity-enumeration-ok the effective iterator chose this one record; source bytes supply its baseline attributes
|
|
87
|
+
const ref = store.entityIndex.byId.get(id) ?? store.deferredEntityIndex?.get(id);
|
|
88
|
+
const entity = ref ? extractor.extractEntity(ref) : undefined;
|
|
89
|
+
const created = !entity ? view?.getNewEntity?.(id) : null;
|
|
90
|
+
const source = entity ? {
|
|
91
|
+
expressId: id,
|
|
92
|
+
type: normalizeIfcTypeName(effectiveType),
|
|
93
|
+
attrs: entity.attributes ?? [],
|
|
94
|
+
globalId: asString(entity.attributes?.[0]) ?? '',
|
|
95
|
+
} : created ? {
|
|
96
|
+
expressId: id,
|
|
97
|
+
type: normalizeIfcTypeName(effectiveType),
|
|
98
|
+
attrs: [...(created.attributes ?? [])],
|
|
99
|
+
globalId: asString(created.attributes?.[0]) ?? '',
|
|
100
|
+
} : undefined;
|
|
101
|
+
return view?.readEntity?.(id, effectiveType, source) ?? source;
|
|
102
|
+
};
|
|
103
|
+
const activeByRole = new Map();
|
|
104
|
+
const relMemberIds = [];
|
|
105
|
+
const relActivityIds = [];
|
|
106
|
+
const relGroupIds = [];
|
|
107
|
+
for (const row of effectiveRows) {
|
|
108
|
+
const role = roleOf(row.type);
|
|
109
|
+
if (role) {
|
|
110
|
+
const ids = activeByRole.get(role) ?? [];
|
|
111
|
+
ids.push(row.expressId);
|
|
112
|
+
activeByRole.set(role, ids);
|
|
113
|
+
}
|
|
114
|
+
if (row.type === 'IFCRELCONNECTSSTRUCTURALMEMBER')
|
|
115
|
+
relMemberIds.push(row.expressId);
|
|
116
|
+
if (row.type === 'IFCRELCONNECTSSTRUCTURALACTIVITY')
|
|
117
|
+
relActivityIds.push(row.expressId);
|
|
118
|
+
if (row.type === 'IFCRELASSIGNSTOGROUP')
|
|
119
|
+
relGroupIds.push(row.expressId);
|
|
120
|
+
}
|
|
121
|
+
const read = (role) => (activeByRole.get(role) ?? []).map((id) => readRaw(id, effectiveTypeById.get(id))).filter((row) => !!row);
|
|
126
122
|
const memberRaw = read('member');
|
|
127
123
|
const connectionRaw = read('connection');
|
|
128
124
|
const activityRaw = read('activity');
|
|
@@ -146,7 +142,7 @@ export function extractStructuralOnDemand(store) {
|
|
|
146
142
|
// ── Relationship passes ────────────────────────────────────────────────
|
|
147
143
|
const connectionsOfMember = new Map();
|
|
148
144
|
const membersOfConnection = new Map();
|
|
149
|
-
for (const rel of
|
|
145
|
+
for (const rel of relMemberIds.map((id) => readRaw(id, 'IFCRELCONNECTSSTRUCTURALMEMBER')).filter((row) => !!row)) {
|
|
150
146
|
const memberId = asRef(readAttr(rel.type, rel.attrs, 'RelatingStructuralMember'));
|
|
151
147
|
const connectionId = asRef(readAttr(rel.type, rel.attrs, 'RelatedStructuralConnection'));
|
|
152
148
|
if (memberId === undefined || connectionId === undefined)
|
|
@@ -161,7 +157,7 @@ export function extractStructuralOnDemand(store) {
|
|
|
161
157
|
const activitiesOfItem = new Map();
|
|
162
158
|
/** activity expressId → the item globalId it applies to. */
|
|
163
159
|
const itemOfActivity = new Map();
|
|
164
|
-
for (const rel of
|
|
160
|
+
for (const rel of relActivityIds.map((id) => readRaw(id, 'IFCRELCONNECTSSTRUCTURALACTIVITY')).filter((row) => !!row)) {
|
|
165
161
|
const itemId = asRef(readAttr(rel.type, rel.attrs, 'RelatingElement'));
|
|
166
162
|
const activityId = asRef(readAttr(rel.type, rel.attrs, 'RelatedStructuralActivity'));
|
|
167
163
|
if (itemId === undefined || activityId === undefined)
|
|
@@ -177,7 +173,7 @@ export function extractStructuralOnDemand(store) {
|
|
|
177
173
|
// only the rows whose RelatingGroup is a structural group are read.
|
|
178
174
|
const groupsOfObject = new Map();
|
|
179
175
|
const objectsOfGroup = new Map();
|
|
180
|
-
for (const rel of
|
|
176
|
+
for (const rel of relGroupIds.map((id) => readRaw(id, 'IFCRELASSIGNSTOGROUP')).filter((row) => !!row)) {
|
|
181
177
|
const groupId = asRef(readAttr(rel.type, rel.attrs, 'RelatingGroup'));
|
|
182
178
|
if (groupId === undefined)
|
|
183
179
|
continue;
|