@ifc-lite/ifcx 4.2.1 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/writer-spatial.d.ts +8 -0
- package/dist/writer-spatial.d.ts.map +1 -0
- package/dist/writer-spatial.js +59 -0
- package/dist/writer-spatial.js.map +1 -0
- package/dist/writer.d.ts +11 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +22 -7
- package/dist/writer.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -79,6 +79,14 @@ const ifcx = exporter.export({ includeGeometry: true });
|
|
|
79
79
|
// ifcx.content → IFCX JSON string, save as .ifcx
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
+
For the low-level `IfcxWriter`, `spatialHierarchy` is a parsed snapshot. If a
|
|
83
|
+
`mutationView` changes an `IfcRelAggregates`, `IfcRelNests`, or
|
|
84
|
+
`IfcRelContainedInSpatialStructure` record, supply `effectiveSpatialEdges`
|
|
85
|
+
containing the **complete** current spatial edge set (`sourceId`, `targetId`,
|
|
86
|
+
`relationshipType`). The writer uses those edges to build `children` and raises
|
|
87
|
+
an error if it detects such an edit without them. `applyMutations: false` uses
|
|
88
|
+
the parsed hierarchy.
|
|
89
|
+
|
|
82
90
|
## API
|
|
83
91
|
|
|
84
92
|
See the [Parsing Guide](https://ifclite.dev/docs/guide/parsing/) and [API Reference](https://ifclite.dev/docs/api/typescript/#ifc-liteifcx).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type EntityTable } from '@ifc-lite/data';
|
|
2
|
+
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
3
|
+
import type { IfcxExportData } from './writer.js';
|
|
4
|
+
export declare function indexSpatialEdges(edges: NonNullable<IfcxExportData['effectiveSpatialEdges']>): Map<number, number[]>;
|
|
5
|
+
/** Parsed hierarchy has no relationship ids or editable endpoints. Fail
|
|
6
|
+
* visibly when it cannot describe the effective session. */
|
|
7
|
+
export declare function hasSpatialRelationshipEdits(entities: EntityTable, view: MutablePropertyView): boolean;
|
|
8
|
+
//# sourceMappingURL=writer-spatial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer-spatial.d.ts","sourceRoot":"","sources":["../src/writer-spatial.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,GAC1D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASvB;AAED;6DAC6D;AAC7D,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CA4BrG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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 { IfcTypeEnumToString } from '@ifc-lite/data';
|
|
5
|
+
function isSpatialRelationship(type) {
|
|
6
|
+
const upper = type?.toUpperCase();
|
|
7
|
+
return upper === 'IFCRELAGGREGATES' || upper === 'IFCRELNESTS'
|
|
8
|
+
|| upper === 'IFCRELCONTAINEDINSPATIALSTRUCTURE';
|
|
9
|
+
}
|
|
10
|
+
export function indexSpatialEdges(edges) {
|
|
11
|
+
const children = new Map();
|
|
12
|
+
for (const edge of edges) {
|
|
13
|
+
if (!isSpatialRelationship(edge.relationshipType))
|
|
14
|
+
continue;
|
|
15
|
+
const targets = children.get(edge.sourceId) ?? [];
|
|
16
|
+
targets.push(edge.targetId);
|
|
17
|
+
children.set(edge.sourceId, targets);
|
|
18
|
+
}
|
|
19
|
+
return children;
|
|
20
|
+
}
|
|
21
|
+
/** Parsed hierarchy has no relationship ids or editable endpoints. Fail
|
|
22
|
+
* visibly when it cannot describe the effective session. */
|
|
23
|
+
export function hasSpatialRelationshipEdits(entities, view) {
|
|
24
|
+
// The public input also accepts older property-only view adapters; they
|
|
25
|
+
// have no structural edits to inspect (writerEntities uses the same gate).
|
|
26
|
+
if (typeof view.getNewEntities !== 'function' || typeof view.getTombstones !== 'function')
|
|
27
|
+
return false;
|
|
28
|
+
const sourceSpatialTypes = new Map();
|
|
29
|
+
// @raw-entity-enumeration-ok source class lookup detects edited source relationships before writing effective rows
|
|
30
|
+
for (let row = 0; row < entities.count; row++) {
|
|
31
|
+
const id = entities.expressId[row];
|
|
32
|
+
const type = entities.getTypeName?.(id)
|
|
33
|
+
?? IfcTypeEnumToString(entities.typeEnum[row]);
|
|
34
|
+
if (isSpatialRelationship(type))
|
|
35
|
+
sourceSpatialTypes.set(id, type);
|
|
36
|
+
}
|
|
37
|
+
for (const entity of view.getNewEntities()) {
|
|
38
|
+
if (isSpatialRelationship(entity.type))
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
for (const id of view.getTombstones()) {
|
|
42
|
+
if (sourceSpatialTypes.has(id))
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
for (const [id, change] of view.getTypeMutations()) {
|
|
46
|
+
if (sourceSpatialTypes.has(id) || isSpatialRelationship(change.newType))
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
for (const id of view.getAttributeMutationsByEntity().keys()) {
|
|
50
|
+
if (sourceSpatialTypes.has(id))
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
for (const id of sourceSpatialTypes.keys()) {
|
|
54
|
+
if (view.getPositionalMutationsForEntity(id)?.size)
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=writer-spatial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer-spatial.js","sourceRoot":"","sources":["../src/writer-spatial.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,mBAAmB,EAAsC,MAAM,gBAAgB,CAAC;AAIzF,SAAS,qBAAqB,CAAC,IAAwB;IACrD,MAAM,KAAK,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC;IAClC,OAAO,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,aAAa;WACzD,KAAK,KAAK,mCAAmC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAA2D;IAE3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,SAAS;QAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;6DAC6D;AAC7D,MAAM,UAAU,2BAA2B,CAAC,QAAqB,EAAE,IAAyB;IAC1F,wEAAwE;IACxE,2EAA2E;IAC3E,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACxG,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,mHAAmH;IACnH,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;eAClC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAgB,CAAC,CAAC;QAChE,IAAI,qBAAqB,CAAC,IAAI,CAAC;YAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3C,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACtC,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACnD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7D,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,EAAE,IAAI;YAAE,OAAO,IAAI,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/writer.d.ts
CHANGED
|
@@ -27,6 +27,17 @@ export interface IfcxExportData {
|
|
|
27
27
|
properties?: PropertyTable;
|
|
28
28
|
/** Spatial hierarchy */
|
|
29
29
|
spatialHierarchy?: SpatialHierarchy;
|
|
30
|
+
/**
|
|
31
|
+
* Complete effective spatial relationship edges for an edited session.
|
|
32
|
+
* A caller with source STEP records can derive these from the parser's
|
|
33
|
+
* effective relationship overlay. This replaces the parsed hierarchy when
|
|
34
|
+
* applyMutations is true; pass the entire spatial edge set, not only edits.
|
|
35
|
+
*/
|
|
36
|
+
effectiveSpatialEdges?: ReadonlyArray<{
|
|
37
|
+
sourceId: number;
|
|
38
|
+
targetId: number;
|
|
39
|
+
relationshipType: string;
|
|
40
|
+
}>;
|
|
30
41
|
/** String table for lookups */
|
|
31
42
|
strings?: {
|
|
32
43
|
get(idx: number): string;
|
package/dist/writer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM/D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,uDAAuD;IACvD,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,aAAa,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC,CAAC;IACH,+BAA+B;IAC/B,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvC,kDAAkD;IAClD,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAiB;gBAEjB,IAAI,EAAE,cAAc;IAIhC;;OAEG;IACH,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB;IAgCzD;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8FpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyC5B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAIR"}
|
package/dist/writer.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { IFCX_VERSION } from '@ifc-lite/data';
|
|
5
5
|
import { collectRequiredImports } from './writer-imports.js';
|
|
6
6
|
import { writerEntities } from './writer-entities.js';
|
|
7
|
+
import { hasSpatialRelationshipEdits, indexSpatialEdges } from './writer-spatial.js';
|
|
7
8
|
/**
|
|
8
9
|
* IFCX file writer
|
|
9
10
|
*/
|
|
@@ -61,6 +62,13 @@ export class IfcxWriter {
|
|
|
61
62
|
const nodes = [];
|
|
62
63
|
const { spatialHierarchy, mutationView, idToPath } = this.data;
|
|
63
64
|
const rows = writerEntities(this.data, options.applyMutations !== false);
|
|
65
|
+
const effectiveSpatial = options.applyMutations !== false
|
|
66
|
+
? this.data.effectiveSpatialEdges : undefined;
|
|
67
|
+
if (mutationView && options.applyMutations !== false
|
|
68
|
+
&& !effectiveSpatial && hasSpatialRelationshipEdits(this.data.entities, mutationView)) {
|
|
69
|
+
throw new Error('IFCX export needs effectiveSpatialEdges for edited spatial relationships');
|
|
70
|
+
}
|
|
71
|
+
const effectiveChildren = effectiveSpatial && indexSpatialEdges(effectiveSpatial);
|
|
64
72
|
// Single source of truth for expressId -> path, built once up front so that
|
|
65
73
|
// an entity's own path and any *reference* to that entity as a child
|
|
66
74
|
// (see getChildrenForEntity) can never diverge. Previously the child-ref
|
|
@@ -122,7 +130,7 @@ export class IfcxWriter {
|
|
|
122
130
|
attributes: Object.keys(attributes).length > 0 ? attributes : undefined,
|
|
123
131
|
};
|
|
124
132
|
// Add children based on spatial hierarchy
|
|
125
|
-
const children = this.getChildrenForEntity(expressId, spatialHierarchy, resolvedPaths);
|
|
133
|
+
const children = this.getChildrenForEntity(expressId, spatialHierarchy, resolvedPaths, effectiveChildren);
|
|
126
134
|
if (Object.keys(children).length > 0) {
|
|
127
135
|
node.children = children;
|
|
128
136
|
}
|
|
@@ -161,15 +169,22 @@ export class IfcxWriter {
|
|
|
161
169
|
/**
|
|
162
170
|
* Get children relationships for an entity
|
|
163
171
|
*/
|
|
164
|
-
getChildrenForEntity(entityId, spatialHierarchy, resolvedPaths) {
|
|
172
|
+
getChildrenForEntity(entityId, spatialHierarchy, resolvedPaths, effectiveChildren) {
|
|
165
173
|
const children = {};
|
|
166
|
-
if (!spatialHierarchy)
|
|
174
|
+
if (!spatialHierarchy && !effectiveChildren)
|
|
167
175
|
return children;
|
|
168
176
|
// Check if this entity has contained elements
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
spatialHierarchy.
|
|
172
|
-
|
|
177
|
+
// @raw-entity-enumeration-ok parsed hierarchy is the source-only/default path; effectiveSpatialEdges replaces it for live relationships
|
|
178
|
+
const sourceChildren = effectiveChildren ? [] : [
|
|
179
|
+
...(spatialHierarchy?.byStorey.get(entityId) ?? []),
|
|
180
|
+
// @raw-entity-enumeration-ok source hierarchy only when complete effective edges are absent
|
|
181
|
+
...(spatialHierarchy?.byBuilding.get(entityId) ?? []),
|
|
182
|
+
// @raw-entity-enumeration-ok source hierarchy only when complete effective edges are absent
|
|
183
|
+
...(spatialHierarchy?.bySite.get(entityId) ?? []),
|
|
184
|
+
// @raw-entity-enumeration-ok source hierarchy only when complete effective edges are absent
|
|
185
|
+
...(spatialHierarchy?.bySpace.get(entityId) ?? []),
|
|
186
|
+
];
|
|
187
|
+
const containedElements = effectiveChildren ? effectiveChildren.get(entityId) ?? [] : sourceChildren;
|
|
173
188
|
if (containedElements) {
|
|
174
189
|
for (const childId of containedElements) {
|
|
175
190
|
// Resolve from the same expressId -> path map used to assign the
|
package/dist/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAW/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/ifcx",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"description": "IFC5 (IFCX) parser for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@noble/hashes": "^2.4.0",
|
|
17
|
-
"@ifc-lite/mutations": "^
|
|
18
|
-
"@ifc-lite/
|
|
19
|
-
"@ifc-lite/
|
|
17
|
+
"@ifc-lite/mutations": "^3.0.0",
|
|
18
|
+
"@ifc-lite/data": "^6.1.0",
|
|
19
|
+
"@ifc-lite/pointcloud": "^0.11.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"tsx": "^4.23.
|
|
22
|
+
"tsx": "^4.23.15",
|
|
23
23
|
"typescript": "^6.0.3"
|
|
24
24
|
},
|
|
25
25
|
"license": "MPL-2.0",
|