@ifc-lite/export 4.7.2 → 4.8.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/entity-subgraph.d.ts +56 -0
- package/dist/entity-subgraph.d.ts.map +1 -0
- package/dist/entity-subgraph.js +138 -0
- package/dist/entity-subgraph.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/lod0-generator.d.ts.map +1 -1
- package/dist/lod0-generator.js +4 -1
- package/dist/lod0-generator.js.map +1 -1
- package/dist/merged-empty-containers-refs.d.ts +24 -0
- package/dist/merged-empty-containers-refs.d.ts.map +1 -0
- package/dist/merged-empty-containers-refs.js +126 -0
- package/dist/merged-empty-containers-refs.js.map +1 -0
- package/dist/merged-empty-containers.d.ts +36 -1
- package/dist/merged-empty-containers.d.ts.map +1 -1
- package/dist/merged-empty-containers.js +21 -126
- package/dist/merged-empty-containers.js.map +1 -1
- package/dist/merged-exporter.d.ts +4 -1
- package/dist/merged-exporter.d.ts.map +1 -1
- package/dist/merged-exporter.js +42 -39
- package/dist/merged-exporter.js.map +1 -1
- package/dist/merged-guid.d.ts +4 -0
- package/dist/merged-guid.d.ts.map +1 -1
- package/dist/merged-guid.js +14 -0
- package/dist/merged-guid.js.map +1 -1
- package/dist/merged-inverse-claims.d.ts +154 -0
- package/dist/merged-inverse-claims.d.ts.map +1 -0
- package/dist/merged-inverse-claims.js +306 -0
- package/dist/merged-inverse-claims.js.map +1 -0
- package/dist/merged-planner-guids.d.ts +32 -0
- package/dist/merged-planner-guids.d.ts.map +1 -0
- package/dist/merged-planner-guids.js +79 -0
- package/dist/merged-planner-guids.js.map +1 -0
- package/dist/merged-subcontext.d.ts.map +1 -1
- package/dist/merged-subcontext.js +1 -0
- package/dist/merged-subcontext.js.map +1 -1
- package/dist/parquet-exporter.d.ts.map +1 -1
- package/dist/parquet-exporter.js +25 -23
- package/dist/parquet-exporter.js.map +1 -1
- package/dist/parquet-spatial-rows.d.ts +14 -0
- package/dist/parquet-spatial-rows.d.ts.map +1 -0
- package/dist/parquet-spatial-rows.js +57 -0
- package/dist/parquet-spatial-rows.js.map +1 -0
- package/dist/property-value-serialization.d.ts.map +1 -1
- package/dist/property-value-serialization.js +2 -1
- package/dist/property-value-serialization.js.map +1 -1
- package/dist/reference-collector.js +3 -0
- package/dist/reference-collector.js.map +1 -1
- package/dist/related-entities.d.ts.map +1 -1
- package/dist/related-entities.js +6 -0
- package/dist/related-entities.js.map +1 -1
- package/dist/remesh-context-roots.d.ts +36 -0
- package/dist/remesh-context-roots.d.ts.map +1 -0
- package/dist/remesh-context-roots.js +126 -0
- package/dist/remesh-context-roots.js.map +1 -0
- package/dist/step-collection.js +1 -1
- package/dist/step-collection.js.map +1 -1
- package/dist/step-export-types.d.ts +2 -0
- package/dist/step-export-types.d.ts.map +1 -1
- package/dist/step-omission-predicates.d.ts +8 -0
- package/dist/step-omission-predicates.d.ts.map +1 -1
- package/dist/step-omission-predicates.js +11 -1
- package/dist/step-omission-predicates.js.map +1 -1
- package/dist/step-overlay-entities.d.ts.map +1 -1
- package/dist/step-overlay-entities.js +23 -1
- package/dist/step-overlay-entities.js.map +1 -1
- package/dist/step-pass-builder.d.ts.map +1 -1
- package/dist/step-pass-builder.js +1 -0
- package/dist/step-pass-builder.js.map +1 -1
- package/dist/step-property-set-collection.d.ts +2 -0
- package/dist/step-property-set-collection.d.ts.map +1 -1
- package/dist/step-property-set-collection.js +42 -21
- package/dist/step-property-set-collection.js.map +1 -1
- package/dist/step-property-set-generators.d.ts +1 -1
- package/dist/step-property-set-generators.d.ts.map +1 -1
- package/dist/step-property-set-generators.js +19 -2
- package/dist/step-property-set-generators.js.map +1 -1
- package/dist/step-property-set-index.js +5 -2
- package/dist/step-property-set-index.js.map +1 -1
- package/dist/step-property-sets.d.ts.map +1 -1
- package/dist/step-property-sets.js +5 -2
- package/dist/step-property-sets.js.map +1 -1
- package/dist/step-pset-copy-on-write.d.ts +75 -0
- package/dist/step-pset-copy-on-write.d.ts.map +1 -0
- package/dist/step-pset-copy-on-write.js +146 -0
- package/dist/step-pset-copy-on-write.js.map +1 -0
- package/dist/step-source-iteration.d.ts.map +1 -1
- package/dist/step-source-iteration.js +7 -0
- package/dist/step-source-iteration.js.map +1 -1
- package/package.json +11 -10
- package/dist/merged-rel-aggregates.d.ts +0 -63
- package/dist/merged-rel-aggregates.d.ts.map +0 -1
- package/dist/merged-rel-aggregates.js +0 -122
- package/dist/merged-rel-aggregates.js.map +0 -1
|
@@ -2,25 +2,20 @@
|
|
|
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 { asSourceBytes } from '@ifc-lite/parser';
|
|
5
|
-
import {
|
|
6
|
-
import { BARE_REF_RE } from './reference-collector.js';
|
|
5
|
+
import { argRefs, classifyRefs, leadingGuid, refList, singleRef, topLevelAttrs } from './merged-empty-containers-refs.js';
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* a
|
|
12
|
-
* `null`), which the caller treats as "can't safely rewrite" and blocks the
|
|
13
|
-
* empty-container drop for that entity.
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* Spatial container types dropped when they end up empty. `IfcProject` is
|
|
17
|
-
* deliberately absent: it is the file's root, never a candidate.
|
|
7
|
+
* Spatial container types dropped when they end up empty: every instantiable
|
|
8
|
+
* IfcSpatialStructureElement, including the IFC4X3 facilities and facility
|
|
9
|
+
* parts (#5937). `IfcProject` is deliberately absent: it is the file's root,
|
|
10
|
+
* never a candidate. Twin of `CONTAINER_TYPES` in `rust/export/src/merged/empty.rs`.
|
|
18
11
|
*/
|
|
19
12
|
const CONTAINER_TYPES = new Set([
|
|
20
13
|
'IFCSITE',
|
|
21
14
|
'IFCBUILDING',
|
|
22
15
|
'IFCBUILDINGSTOREY',
|
|
23
16
|
'IFCSPACE',
|
|
17
|
+
'IFCFACILITY', 'IFCBRIDGE', 'IFCMARINEFACILITY', 'IFCRAILWAY', 'IFCROAD',
|
|
18
|
+
'IFCBRIDGEPART', 'IFCFACILITYPARTCOMMON', 'IFCMARINEPART', 'IFCRAILWAYPART', 'IFCROADPART',
|
|
24
19
|
]);
|
|
25
20
|
/**
|
|
26
21
|
* Relationships that express spatial structure, as
|
|
@@ -32,8 +27,12 @@ const STRUCTURE_RELATIONS = {
|
|
|
32
27
|
IFCRELCONTAINEDINSPATIALSTRUCTURE: [5, 4],
|
|
33
28
|
IFCRELREFERENCEDINSPATIALSTRUCTURE: [5, 4],
|
|
34
29
|
};
|
|
30
|
+
/** True when `typeUpper` is a relationship the analysis counts as spatial structure. */
|
|
31
|
+
export function isStructureRelation(typeUpper) {
|
|
32
|
+
return typeUpper in STRUCTURE_RELATIONS;
|
|
33
|
+
}
|
|
35
34
|
/** True when `typeUpper` is a droppable spatial container type. */
|
|
36
|
-
function isSpatialContainerType(typeUpper) {
|
|
35
|
+
export function isSpatialContainerType(typeUpper) {
|
|
37
36
|
return CONTAINER_TYPES.has(typeUpper);
|
|
38
37
|
}
|
|
39
38
|
/**
|
|
@@ -70,7 +69,7 @@ export function planEmptyContainerDrops(models) {
|
|
|
70
69
|
containersByModel.push(canon);
|
|
71
70
|
for (const node of canon.values())
|
|
72
71
|
nodes.add(node);
|
|
73
|
-
recordEdges(view, canon, hasContent, parents);
|
|
72
|
+
recordEdges(view, canon, hasContent, parents, view.claimParents?.());
|
|
74
73
|
recordBlocks(view, canon, blocked);
|
|
75
74
|
}
|
|
76
75
|
// A container is non-empty when it holds something, is blocked, or has a
|
|
@@ -138,14 +137,17 @@ function canonicalContainers(view, guidNode) {
|
|
|
138
137
|
/**
|
|
139
138
|
* Record what this model contributes to each container: contained elements and
|
|
140
139
|
* aggregated objects become content; aggregated spatial children become upward
|
|
141
|
-
* edges, so a non-empty storey keeps its building and its site.
|
|
140
|
+
* edges, so a non-empty storey keeps its building and its site. An aggregation
|
|
141
|
+
* edge the one-parent pass withholds is never written, so it counts for nothing.
|
|
142
142
|
*/
|
|
143
|
-
function recordEdges(view, canon, hasContent, parents) {
|
|
143
|
+
function recordEdges(view, canon, hasContent, parents, withheld) {
|
|
144
144
|
if (canon.size === 0)
|
|
145
145
|
return;
|
|
146
146
|
for (const [localId, ref] of view.entities) {
|
|
147
147
|
if (view.included !== null && !view.included.has(localId))
|
|
148
148
|
continue;
|
|
149
|
+
if (withheld?.skipEntityIds.has(localId))
|
|
150
|
+
continue;
|
|
149
151
|
const slots = STRUCTURE_RELATIONS[ref.type.toUpperCase()];
|
|
150
152
|
if (slots === undefined)
|
|
151
153
|
continue;
|
|
@@ -161,9 +163,12 @@ function recordEdges(view, canon, hasContent, parents) {
|
|
|
161
163
|
const parent = canon.get(relating);
|
|
162
164
|
if (parent === undefined)
|
|
163
165
|
continue;
|
|
166
|
+
const stripped = withheld?.relMemberStrip.get(localId);
|
|
164
167
|
for (const child of refList(attrs[relatedIndex] ?? '')) {
|
|
165
168
|
if (view.included !== null && !view.included.has(child))
|
|
166
169
|
continue;
|
|
170
|
+
if (stripped?.has(child))
|
|
171
|
+
continue;
|
|
167
172
|
const childNode = canon.get(child);
|
|
168
173
|
if (childNode === undefined) {
|
|
169
174
|
hasContent.add(parent);
|
|
@@ -239,114 +244,4 @@ function lineOf(view, localId) {
|
|
|
239
244
|
return '';
|
|
240
245
|
return view.source.decodeUtf8(ref.byteOffset, ref.byteOffset + ref.byteLength);
|
|
241
246
|
}
|
|
242
|
-
/** Top-level arguments of a `#id=TYPE(…);` line, or `null` when unparseable. */
|
|
243
|
-
function topLevelAttrs(line) {
|
|
244
|
-
const record = readStepSlots(line);
|
|
245
|
-
return record === null ? null : record.slots.map(arg => arg.trim());
|
|
246
|
-
}
|
|
247
|
-
/** `"#7"` → `7` via shared, trivia-tolerant {@link BARE_REF_RE} (#4227 — a narrower regex misclassified a comment-wrapped `RelatingObject`). */
|
|
248
|
-
function singleRef(arg) {
|
|
249
|
-
const match = BARE_REF_RE.exec(arg);
|
|
250
|
-
return match ? Number(match[1]) : null;
|
|
251
|
-
}
|
|
252
|
-
/** Parse a `(#a,#b,…)` list argument into ids. */
|
|
253
|
-
function refList(arg) {
|
|
254
|
-
const trimmed = arg.trim();
|
|
255
|
-
if (!trimmed.startsWith('(') || !trimmed.endsWith(')'))
|
|
256
|
-
return [];
|
|
257
|
-
const inner = trimmed.slice(1, -1).trim();
|
|
258
|
-
if (inner === '')
|
|
259
|
-
return [];
|
|
260
|
-
const ids = [];
|
|
261
|
-
for (const item of splitTopLevelListItems(inner)) {
|
|
262
|
-
const id = singleRef(item);
|
|
263
|
-
if (id !== null)
|
|
264
|
-
ids.push(id);
|
|
265
|
-
}
|
|
266
|
-
return ids;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Every reference in a line's argument list, paired with whether it sits
|
|
270
|
-
* somewhere neither `filterHiddenRefsFromRelationshipLine` can strip (a direct
|
|
271
|
-
* list element) nor withhold the line for (a whole single-valued attribute) —
|
|
272
|
-
* i.e. nested inside a list of lists or a typed value. `null` when the line's
|
|
273
|
-
* argument list cannot be parsed at all: a line no rewrite can narrow, which the
|
|
274
|
-
* analysis must treat as a blocker rather than as "names nothing".
|
|
275
|
-
*/
|
|
276
|
-
function classifyRefs(line) {
|
|
277
|
-
const attrs = topLevelAttrs(line);
|
|
278
|
-
if (attrs === null)
|
|
279
|
-
return null;
|
|
280
|
-
const out = [];
|
|
281
|
-
for (const attr of attrs) {
|
|
282
|
-
const direct = singleRef(attr);
|
|
283
|
-
if (direct !== null) {
|
|
284
|
-
out.push([direct, false]);
|
|
285
|
-
continue;
|
|
286
|
-
}
|
|
287
|
-
if (attr.startsWith('(') && attr.endsWith(')')) {
|
|
288
|
-
const inner = attr.slice(1, -1).trim();
|
|
289
|
-
if (inner === '')
|
|
290
|
-
continue;
|
|
291
|
-
for (const item of splitTopLevelListItems(inner)) {
|
|
292
|
-
const id = singleRef(item);
|
|
293
|
-
if (id !== null)
|
|
294
|
-
out.push([id, false]);
|
|
295
|
-
else
|
|
296
|
-
for (const nested of argRefs(item))
|
|
297
|
-
out.push([nested, true]);
|
|
298
|
-
}
|
|
299
|
-
continue;
|
|
300
|
-
}
|
|
301
|
-
for (const nested of argRefs(attr))
|
|
302
|
-
out.push([nested, true]);
|
|
303
|
-
}
|
|
304
|
-
return out;
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Every `#N` reference in a chunk of STEP text, skipping quoted strings (where a
|
|
308
|
-
* `#` is literal) and any leading `#id=` (the line's own id). Reads bytes rather
|
|
309
|
-
* than decoded text so the reverse-reference scan never decodes a whole model.
|
|
310
|
-
*/
|
|
311
|
-
function argRefs(text) {
|
|
312
|
-
const bytes = typeof text === 'string' ? new TextEncoder().encode(text) : text;
|
|
313
|
-
const eq = bytes.indexOf(0x3d /* = */);
|
|
314
|
-
const from = eq === -1 ? 0 : eq + 1;
|
|
315
|
-
const out = [];
|
|
316
|
-
let inString = false;
|
|
317
|
-
for (let i = from; i < bytes.length; i++) {
|
|
318
|
-
const byte = bytes[i];
|
|
319
|
-
if (byte === 0x27 /* ' */) {
|
|
320
|
-
inString = !inString;
|
|
321
|
-
continue;
|
|
322
|
-
}
|
|
323
|
-
if (inString || byte !== 0x23 /* # */)
|
|
324
|
-
continue;
|
|
325
|
-
let j = i + 1;
|
|
326
|
-
let value = 0;
|
|
327
|
-
while (j < bytes.length && bytes[j] >= 0x30 && bytes[j] <= 0x39) {
|
|
328
|
-
value = value * 10 + (bytes[j] - 0x30);
|
|
329
|
-
j++;
|
|
330
|
-
}
|
|
331
|
-
if (j > i + 1) {
|
|
332
|
-
out.push(value);
|
|
333
|
-
i = j - 1;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
return out;
|
|
337
|
-
}
|
|
338
|
-
/** The GlobalId (first quoted attribute) of a rooted entity's line. */
|
|
339
|
-
function leadingGuid(line) {
|
|
340
|
-
const open = line.indexOf('(');
|
|
341
|
-
if (open === -1)
|
|
342
|
-
return null;
|
|
343
|
-
const first = line.indexOf("'", open + 1);
|
|
344
|
-
if (first === -1)
|
|
345
|
-
return null;
|
|
346
|
-
const second = line.indexOf("'", first + 1);
|
|
347
|
-
if (second === -1)
|
|
348
|
-
return null;
|
|
349
|
-
const raw = line.slice(first + 1, second);
|
|
350
|
-
return /^[0-9A-Za-z_$]{22}$/.test(raw) ? raw : null;
|
|
351
|
-
}
|
|
352
247
|
//# sourceMappingURL=merged-empty-containers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merged-empty-containers.js","sourceRoot":"","sources":["../src/merged-empty-containers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merged-empty-containers.js","sourceRoot":"","sources":["../src/merged-empty-containers.ts"],"names":[],"mappings":"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"}
|
|
@@ -292,9 +292,12 @@ export declare class MergedExporter {
|
|
|
292
292
|
* Plan the empty spatial containers of the whole merge (#3643), or `null` when
|
|
293
293
|
* the caller did not ask for the drop. Reproduces the same spatial unification
|
|
294
294
|
* {@link planModel} will, so emptiness is judged on the containers the merge
|
|
295
|
-
* actually keeps rather than on each file in isolation.
|
|
295
|
+
* actually keeps rather than on each file in isolation. It runs its own
|
|
296
|
+
* {@link claimParents} pass first (#5725, see `EmptyContainerModelView.claimParents`).
|
|
296
297
|
*/
|
|
297
298
|
private planContainerDrops;
|
|
299
|
+
/** One written rel per single-valued inverse (#5471, #5726, #5774): record this model's claims, stripping or folding ones already made. */
|
|
300
|
+
private claimParents;
|
|
298
301
|
/** Fold a model's dropped containers into its plan: the container lines are
|
|
299
302
|
* skipped outright, and {@link renderEntity} narrows every line naming one. */
|
|
300
303
|
private applyContainerDrops;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merged-exporter.d.ts","sourceRoot":"","sources":["../src/merged-exporter.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAOrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"merged-exporter.d.ts","sourceRoot":"","sources":["../src/merged-exporter.ts"],"names":[],"mappings":"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"}
|
package/dist/merged-exporter.js
CHANGED
|
@@ -17,9 +17,10 @@ import { StepExporter } from './step-exporter.js';
|
|
|
17
17
|
import { rescaleEntityLengths, computeNormalizeFactor } from './unit-normalize.js';
|
|
18
18
|
import { planInfrastructureUnify, resolvePrimaryContextState } from './merged-context.js';
|
|
19
19
|
import { remapEntityText } from './merged-remap.js';
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
20
|
+
import { PlannerGuids } from './merged-planner-guids.js';
|
|
21
|
+
import { isRelationshipType, mintUniqueGuid, readLeadingGuid, replaceGlobalId, readLocalGuids, } from './merged-guid.js';
|
|
22
|
+
import { planEmptyContainerDrops, EMPTY_MODEL_VIEW, isSpatialContainerType, isStructureRelation, } from './merged-empty-containers.js';
|
|
23
|
+
import { InverseClaims, claimInverses, applyRelMemberStrip, applyInverseFolds } from './merged-inverse-claims.js';
|
|
23
24
|
/**
|
|
24
25
|
* UTF-8 decode of `[start, end)` of a model's source, accepting either the raw
|
|
25
26
|
* bytes or the {@link IfcSourceBytes} accessor (#2183). Replaces the direct
|
|
@@ -36,10 +37,6 @@ const SHARED_INFRASTRUCTURE_TYPES = new Set([
|
|
|
36
37
|
'IFCGEOMETRICREPRESENTATIONCONTEXT',
|
|
37
38
|
'IFCGEOMETRICREPRESENTATIONSUBCONTEXT',
|
|
38
39
|
]);
|
|
39
|
-
/** True for IfcRelationship subtypes (objectified relationships). */
|
|
40
|
-
function isRelationshipType(typeUpper) {
|
|
41
|
-
return typeUpper.startsWith('IFCREL');
|
|
42
|
-
}
|
|
43
40
|
/** Relative tolerance for comparing two length unit scale factors. */
|
|
44
41
|
const UNIT_SCALE_TOLERANCE = 1e-6;
|
|
45
42
|
/** SI prefix multipliers, for resolving prefixed area/volume units (rarely used). */
|
|
@@ -170,6 +167,7 @@ export class MergedExporter {
|
|
|
170
167
|
}
|
|
171
168
|
const plan = this.planModel(model, completeIndex, isFirstModel, mode.compatible, mode.lengthFactor, setup, guidToFinalId);
|
|
172
169
|
this.applyContainerDrops(plan, containerDrops?.byModel.get(model.id));
|
|
170
|
+
this.claimParents(model, plan, visibility, completeIndex, !isFirstModel && mode.compatible, setup);
|
|
173
171
|
const written = (id) => (visibility === null || visibility.included.has(id)) && !plan.skipEntityIds.has(id);
|
|
174
172
|
if (schema === 'IFC2X3') {
|
|
175
173
|
// @raw-entity-enumeration-ok sync merge rejects overlays, so this is an unedited source index
|
|
@@ -185,8 +183,8 @@ export class MergedExporter {
|
|
|
185
183
|
}
|
|
186
184
|
isFirstModel = false;
|
|
187
185
|
}
|
|
188
|
-
for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings()])
|
|
189
|
-
normalizeWarnings.add(warning);
|
|
186
|
+
for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings(), ...applyInverseFolds(allEntityLines, setup.parentClaims)])
|
|
187
|
+
normalizeWarnings.add(warning); // #5774 folds
|
|
190
188
|
// Assemble final file as Uint8Array chunks to avoid V8 string length limit
|
|
191
189
|
if (onProgress)
|
|
192
190
|
onProgress({ phase: 'assembling', percent: 0.9, entitiesProcessed: allEntityLines.length, entitiesTotal: allEntityLines.length });
|
|
@@ -295,6 +293,7 @@ export class MergedExporter {
|
|
|
295
293
|
}
|
|
296
294
|
const plan = this.planModel(model, completeIndex, isFirstModel, mode.compatible, mode.lengthFactor, setup, guidToFinalId);
|
|
297
295
|
this.applyContainerDrops(plan, containerDrops?.byModel.get(model.id));
|
|
296
|
+
this.claimParents(model, plan, visibility, completeIndex, !isFirstModel && mode.compatible, setup);
|
|
298
297
|
const written = (id) => (visibility === null || visibility.included.has(id)) && !plan.skipEntityIds.has(id);
|
|
299
298
|
if (schema === 'IFC2X3') {
|
|
300
299
|
// @raw-entity-enumeration-ok async merge first bakes and reparses edited models into source snapshots
|
|
@@ -326,8 +325,8 @@ export class MergedExporter {
|
|
|
326
325
|
}
|
|
327
326
|
isFirstModel = false;
|
|
328
327
|
}
|
|
329
|
-
for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings()])
|
|
330
|
-
normalizeWarnings.add(warning);
|
|
328
|
+
for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings(), ...applyInverseFolds(allEntityLines, setup.parentClaims)])
|
|
329
|
+
normalizeWarnings.add(warning); // #5774 folds
|
|
331
330
|
// Assembly phase
|
|
332
331
|
if (onProgress) {
|
|
333
332
|
onProgress({ phase: 'assembling', percent: 0.9, entitiesProcessed: totalEntities, entitiesTotal: totalEntities });
|
|
@@ -398,11 +397,14 @@ export class MergedExporter {
|
|
|
398
397
|
* Plan the empty spatial containers of the whole merge (#3643), or `null` when
|
|
399
398
|
* the caller did not ask for the drop. Reproduces the same spatial unification
|
|
400
399
|
* {@link planModel} will, so emptiness is judged on the containers the merge
|
|
401
|
-
* actually keeps rather than on each file in isolation.
|
|
400
|
+
* actually keeps rather than on each file in isolation. It runs its own
|
|
401
|
+
* {@link claimParents} pass first (#5725, see `EmptyContainerModelView.claimParents`).
|
|
402
402
|
*/
|
|
403
403
|
planContainerDrops(options, models, setup) {
|
|
404
404
|
if (!options.dropEmptyContainers)
|
|
405
405
|
return null;
|
|
406
|
+
const claims = new InverseClaims(options.schema || 'IFC4', isStructureRelation);
|
|
407
|
+
const guids = new PlannerGuids(scale => this.unitsCompatible(scale, setup.primaryScale), isSpatialContainerType);
|
|
406
408
|
const views = models.map((model, index) => {
|
|
407
409
|
const source = model.dataStore.source;
|
|
408
410
|
if (!source || source.length === 0)
|
|
@@ -413,14 +415,17 @@ export class MergedExporter {
|
|
|
413
415
|
if (index > 0 && mode.compatible) {
|
|
414
416
|
this.unifySpatialEntities(model.dataStore, setup.spatialLookup, setup.firstModelOffset, mode.lengthFactor, sharedRemap, new Set(), setup);
|
|
415
417
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
418
|
+
const visibility = this.computeIncludedEntityIds(model, options, entities, source);
|
|
419
|
+
const claimParents = () => {
|
|
420
|
+
const typeOf = (id) => entities.get(id).type.toUpperCase(); // GlobalId unification the emit pass is sure to repeat (#5937)
|
|
421
|
+
const unified = guids.plan({ guids: readLocalGuids(entities, source), typeOf, isFirst: index === 0, compatible: mode.compatible, offset: setup.modelOffsets.get(model.id),
|
|
422
|
+
effectiveScale: mode.effectiveScale, isIncluded: id => visibility === null || visibility.included.has(id), keepsGuids: !needsConversion(model.dataStore.schemaVersion || 'IFC4', options.schema || 'IFC4'),
|
|
423
|
+
unifiedEarlier: id => sharedRemap.has(id) || (index > 0 && mode.compatible && setup.firstProjectIds.length > 0 && typeOf(id) === 'IFCPROJECT') });
|
|
424
|
+
const withheld = { sharedRemap: new Map([...sharedRemap, ...unified]), skipEntityIds: new Set(), relMemberStrip: new Map() };
|
|
425
|
+
this.claimParents(model, withheld, visibility, entities, index > 0 && mode.compatible, setup, claims);
|
|
426
|
+
return withheld;
|
|
423
427
|
};
|
|
428
|
+
return { entities, source: asSourceBytes(source), included: visibility?.included ?? null, sharedRemap, offset: setup.modelOffsets.get(model.id), compatible: mode.compatible, claimParents };
|
|
424
429
|
});
|
|
425
430
|
const plan = planEmptyContainerDrops(views);
|
|
426
431
|
return {
|
|
@@ -428,6 +433,15 @@ export class MergedExporter {
|
|
|
428
433
|
count: plan.droppedCount,
|
|
429
434
|
};
|
|
430
435
|
}
|
|
436
|
+
/** One written rel per single-valued inverse (#5471, #5726, #5774): record this model's claims, stripping or folding ones already made. */
|
|
437
|
+
claimParents(model, plan, visibility, completeIndex, dedupe, setup, claims = setup.parentClaims) {
|
|
438
|
+
const hidden = visibility?.hiddenProductIds;
|
|
439
|
+
claimInverses({
|
|
440
|
+
...plan, dataStore: model.dataStore, idOffset: setup.modelOffsets.get(model.id), dedupe,
|
|
441
|
+
isIncluded: id => visibility === null || visibility.included.has(id),
|
|
442
|
+
isEmitted: id => !plan.droppedContainerIds?.has(id) && (hidden === undefined || (!hidden.has(id) && completeIndex.has(id))),
|
|
443
|
+
}, claims, this.findEntitiesByType.bind(this), this.extractStepAttribute.bind(this));
|
|
444
|
+
}
|
|
431
445
|
/** Fold a model's dropped containers into its plan: the container lines are
|
|
432
446
|
* skipped outright, and {@link renderEntity} narrows every line naming one. */
|
|
433
447
|
applyContainerDrops(plan, dropped) {
|
|
@@ -482,7 +496,7 @@ export class MergedExporter {
|
|
|
482
496
|
firstModelContext: resolvePrimaryContextState(firstModel.dataStore, firstModelInfraMap.get('IFCGEOMETRICREPRESENTATIONSUBCONTEXT') ?? [], primaryScale),
|
|
483
497
|
firstProjectIds: this.findEntitiesByType(firstModel.dataStore, 'IFCPROJECT'),
|
|
484
498
|
spatialLookup: this.buildSpatialLookup(firstModel.dataStore),
|
|
485
|
-
|
|
499
|
+
parentClaims: new InverseClaims(options.schema || 'IFC4'),
|
|
486
500
|
primaryScale,
|
|
487
501
|
primaryAreaScale: this.resolveDerivedUnitScale(firstModel.dataStore, 'AREAUNIT', primaryScale, 2),
|
|
488
502
|
primaryVolumeScale: this.resolveDerivedUnitScale(firstModel.dataStore, 'VOLUMEUNIT', primaryScale, 3),
|
|
@@ -670,14 +684,9 @@ export class MergedExporter {
|
|
|
670
684
|
const sharedRemap = new Map();
|
|
671
685
|
const skipEntityIds = new Set();
|
|
672
686
|
const guidRewrite = new Map();
|
|
673
|
-
const
|
|
687
|
+
const relMemberStrip = new Map();
|
|
674
688
|
// One cheap pass to read each rooted entity's GlobalId (first attribute).
|
|
675
|
-
const localGuids =
|
|
676
|
-
for (const [id, ref] of completeIndex) {
|
|
677
|
-
const guid = extractGlobalIdFast(ref, source);
|
|
678
|
-
if (guid !== null)
|
|
679
|
-
localGuids.set(id, guid);
|
|
680
|
-
}
|
|
689
|
+
const localGuids = readLocalGuids(completeIndex, source);
|
|
681
690
|
if (!isFirstModel && compatible) {
|
|
682
691
|
// Remap this model's IfcProject references → first model's IfcProject.
|
|
683
692
|
const projectIds = this.findEntitiesByType(model.dataStore, 'IFCPROJECT');
|
|
@@ -693,9 +702,6 @@ export class MergedExporter {
|
|
|
693
702
|
// Under normalize, this model's raw elevations are in its own unit, so the
|
|
694
703
|
// elevation match is done in the primary unit (rawElevation * lengthFactor).
|
|
695
704
|
this.unifySpatialEntities(model.dataStore, setup.spatialLookup, setup.firstModelOffset, lengthFactor, sharedRemap, skipEntityIds, setup);
|
|
696
|
-
// Skip IfcRelAggregates that become fully redundant after unification,
|
|
697
|
-
// and strip individually-duplicated members from ones only partially so.
|
|
698
|
-
skipRedundantRelAggregates(model.dataStore, sharedRemap, skipEntityIds, relAggregateStrip, setup.primaryAggregatePairs, this.findEntitiesByType.bind(this), this.extractStepAttribute.bind(this));
|
|
699
705
|
}
|
|
700
706
|
if (!isFirstModel) {
|
|
701
707
|
// GlobalId reconciliation against everything emitted by earlier models.
|
|
@@ -727,7 +733,7 @@ export class MergedExporter {
|
|
|
727
733
|
}
|
|
728
734
|
}
|
|
729
735
|
}
|
|
730
|
-
return { sharedRemap, skipEntityIds, guidRewrite, localGuids,
|
|
736
|
+
return { sharedRemap, skipEntityIds, guidRewrite, localGuids, relMemberStrip };
|
|
731
737
|
}
|
|
732
738
|
/**
|
|
733
739
|
* Render one source entity into its final STEP line: apply id offset + shared
|
|
@@ -782,14 +788,11 @@ export class MergedExporter {
|
|
|
782
788
|
return null;
|
|
783
789
|
entityText = kept;
|
|
784
790
|
}
|
|
785
|
-
// Drop
|
|
786
|
-
//
|
|
787
|
-
//
|
|
788
|
-
//
|
|
789
|
-
|
|
790
|
-
// whole line) propagates like the two passes above: every edge the line
|
|
791
|
-
// declared already exists in the primary model.
|
|
792
|
-
const stripped = applyRelAggregateStrip(entityText, localId, plan.relAggregateStrip);
|
|
791
|
+
// Drop the claimed members of a partially redundant rel that already fill
|
|
792
|
+
// that single-valued inverse in the output (#5471, #5726) — see
|
|
793
|
+
// claimInverses / applyRelMemberStrip. Runs in LOCAL id
|
|
794
|
+
// space, before the remap below. `null` propagates like the passes above.
|
|
795
|
+
const stripped = applyRelMemberStrip(entityText, localId, plan.relMemberStrip);
|
|
793
796
|
if (stripped === null)
|
|
794
797
|
return null;
|
|
795
798
|
entityText = stripped;
|