@ifc-lite/export 4.2.0 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/anonymize-export.d.ts.map +1 -1
- package/dist/anonymize-export.js +10 -4
- package/dist/anonymize-export.js.map +1 -1
- package/dist/anonymize-placement.js +2 -2
- package/dist/anonymize-placement.js.map +1 -1
- package/dist/appearance-dependencies.d.ts.map +1 -1
- package/dist/appearance-dependencies.js +9 -5
- package/dist/appearance-dependencies.js.map +1 -1
- package/dist/csv-table.d.ts +10 -0
- package/dist/csv-table.d.ts.map +1 -0
- package/dist/csv-table.js +39 -0
- package/dist/csv-table.js.map +1 -0
- package/dist/effective-appearance-record.d.ts.map +1 -1
- package/dist/effective-appearance-record.js +11 -7
- package/dist/effective-appearance-record.js.map +1 -1
- package/dist/ifc5-export-helpers.d.ts +19 -0
- package/dist/ifc5-export-helpers.d.ts.map +1 -1
- package/dist/ifc5-export-helpers.js +41 -0
- package/dist/ifc5-export-helpers.js.map +1 -1
- package/dist/ifc5-exporter.d.ts +9 -10
- package/dist/ifc5-exporter.d.ts.map +1 -1
- package/dist/ifc5-exporter.js +5 -32
- package/dist/ifc5-exporter.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/merged-empty-containers.d.ts.map +1 -1
- package/dist/merged-empty-containers.js +6 -9
- package/dist/merged-empty-containers.js.map +1 -1
- package/dist/reference-collector.d.ts +20 -8
- package/dist/reference-collector.d.ts.map +1 -1
- package/dist/reference-collector.js +33 -41
- package/dist/reference-collector.js.map +1 -1
- package/dist/schema-converter-attr-remap.d.ts +11 -22
- package/dist/schema-converter-attr-remap.d.ts.map +1 -1
- package/dist/schema-converter-attr-remap.js +35 -23
- package/dist/schema-converter-attr-remap.js.map +1 -1
- package/dist/schema-converter.d.ts.map +1 -1
- package/dist/schema-converter.js +16 -78
- package/dist/schema-converter.js.map +1 -1
- package/dist/step-argument-parser.d.ts +13 -3
- package/dist/step-argument-parser.d.ts.map +1 -1
- package/dist/step-argument-parser.js +21 -11
- package/dist/step-argument-parser.js.map +1 -1
- package/dist/step-comment-skip.d.ts +1 -1
- package/dist/step-comment-skip.js +1 -1
- package/dist/step-overlay-attribute-overrides.d.ts.map +1 -1
- package/dist/step-overlay-attribute-overrides.js +6 -2
- package/dist/step-overlay-attribute-overrides.js.map +1 -1
- package/dist/step-serialization.d.ts +1 -1
- package/dist/step-serialization.js +1 -1
- package/dist/subset-entity-reader.d.ts +12 -4
- package/dist/subset-entity-reader.d.ts.map +1 -1
- package/dist/subset-entity-reader.js +4 -16
- package/dist/subset-entity-reader.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymize-export.d.ts","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAcrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"anonymize-export.d.ts","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAcrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAyJ9E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAoGjB"}
|
package/dist/anonymize-export.js
CHANGED
|
@@ -65,15 +65,20 @@ function excludePropertySetsUnlessKept(index, includedIds, keepPropertySets) {
|
|
|
65
65
|
* Null `PropertyReference` when an emitted `IfcPropertyReferenceValue` names
|
|
66
66
|
* an entity the subset excludes. The value can be reached by the forward
|
|
67
67
|
* closure rather than appearing in the caller's seed set, hence `closureIds`.
|
|
68
|
+
* Unreadable records are returned as warnings rather than counted as dropped.
|
|
68
69
|
*/
|
|
69
70
|
function dropExcludedPropertyReferences(store, index, closureIds, excludedIds, view, schema) {
|
|
70
71
|
const droppedIds = [];
|
|
72
|
+
const warnings = [];
|
|
71
73
|
for (const id of closureIds) {
|
|
72
74
|
if ((index.typeOf(id) ?? '') !== 'IFCPROPERTYREFERENCEVALUE')
|
|
73
75
|
continue;
|
|
74
76
|
const record = readEntityArgs(store, index, id);
|
|
75
|
-
if (!record)
|
|
77
|
+
if (!record) {
|
|
78
|
+
warnings.push(`IfcPropertyReferenceValue #${id}: its source record could not be read, `
|
|
79
|
+
+ 'so PropertyReference was not changed or reported as dropped.');
|
|
76
80
|
continue;
|
|
81
|
+
}
|
|
77
82
|
const idx = attrIndex('IFCPROPERTYREFERENCEVALUE', 'PropertyReference', schema);
|
|
78
83
|
if (idx === -1 || idx >= record.args.length)
|
|
79
84
|
continue;
|
|
@@ -83,7 +88,7 @@ function dropExcludedPropertyReferences(store, index, closureIds, excludedIds, v
|
|
|
83
88
|
view.setPositionalAttribute(id, idx, null);
|
|
84
89
|
droppedIds.push(id);
|
|
85
90
|
}
|
|
86
|
-
return droppedIds;
|
|
91
|
+
return { droppedIds, warnings };
|
|
87
92
|
}
|
|
88
93
|
/**
|
|
89
94
|
* Every id in `includedIds` whose EXPRESS type is an `IfcRel*` (an
|
|
@@ -164,7 +169,7 @@ export function exportAnonymizedSubset(store, includedIds, options = {}) {
|
|
|
164
169
|
const subsetIdentifyingTypes = identifyingTypesFor(options?.removeGeoreferencing !== false);
|
|
165
170
|
const subset = getSubsetEntityIds(index, finalIncludedIds, subsetIdentifyingTypes);
|
|
166
171
|
const exportClosure = collectReferencedEntityIds(subset.roots, store.source, index, subset.excludedIds);
|
|
167
|
-
const
|
|
172
|
+
const propertyReferenceResult = dropExcludedPropertyReferences(store, index, exportClosure, subset.excludedIds, view, stepSourceSchema(store.schemaVersion));
|
|
168
173
|
const placementResult = applyPlacementAnonymization(store, index, finalIncludedIds, editor, view, options);
|
|
169
174
|
const scrubResult = applyScrub(store, index, finalIncludedIds, view, options);
|
|
170
175
|
const exportResult = new StepExporter(store, view).export({
|
|
@@ -204,11 +209,12 @@ export function exportAnonymizedSubset(store, includedIds, options = {}) {
|
|
|
204
209
|
includedRootEntityCount,
|
|
205
210
|
prunedRelationshipIds,
|
|
206
211
|
droppedPropertySetIds,
|
|
207
|
-
droppedPropertyReferenceIds,
|
|
212
|
+
droppedPropertyReferenceIds: propertyReferenceResult.droppedIds,
|
|
208
213
|
zeroedPlacements: placementResult.zeroedPlacements,
|
|
209
214
|
warnings: [
|
|
210
215
|
...placementResult.warnings,
|
|
211
216
|
...scrubResult.warnings,
|
|
217
|
+
...propertyReferenceResult.warnings,
|
|
212
218
|
...exportResult.stats.warnings,
|
|
213
219
|
],
|
|
214
220
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymize-export.js","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA8C/D,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAA6B,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAS,6BAA6B,CACpC,KAA2B,EAC3B,WAAgC,EAChC,gBAAyB;IAEzB,IAAI,gBAAgB;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC;IAE9F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAC3C,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,IAAI,4BAA4B,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACnD,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;AACtD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"anonymize-export.js","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
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 { attrIndex, readEntityArgs } from './subset-entity-reader.js';
|
|
5
|
-
import {
|
|
5
|
+
import { splitTopLevelListItems } from './step-argument-parser.js';
|
|
6
6
|
import { entityRef, stepReal } from './step-serialization.js';
|
|
7
7
|
import { BARE_REF_RE } from './reference-collector.js';
|
|
8
8
|
const IFC_SITE_ADDRESS_ATTRIBUTES = [
|
|
@@ -259,7 +259,7 @@ function parseCoordinateList(token) {
|
|
|
259
259
|
const trimmed = token.trim();
|
|
260
260
|
if (!trimmed.startsWith('(') || !trimmed.endsWith(')'))
|
|
261
261
|
return null;
|
|
262
|
-
const numbers =
|
|
262
|
+
const numbers = splitTopLevelListItems(trimmed.slice(1, -1)).map((part) => Number(part.trim()));
|
|
263
263
|
return numbers.every((n) => Number.isFinite(n)) ? numbers : null;
|
|
264
264
|
}
|
|
265
265
|
//# sourceMappingURL=anonymize-placement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymize-placement.js","sourceRoot":"","sources":["../src/anonymize-placement.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA0C/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAA6B,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"anonymize-placement.js","sourceRoot":"","sources":["../src/anonymize-placement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance-dependencies.d.ts","sourceRoot":"","sources":["../src/appearance-dependencies.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAgBlF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzE;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"appearance-dependencies.d.ts","sourceRoot":"","sources":["../src/appearance-dependencies.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAgBlF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzE;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,CA4HlD"}
|
|
@@ -8,7 +8,7 @@ import { asSourceBytes, getAttributeNamesAcrossSchemas } from '@ifc-lite/parser'
|
|
|
8
8
|
import { getEffectiveEntityIndex } from './effective-index.js';
|
|
9
9
|
import { effectiveAppearanceRecord } from './effective-appearance-record.js';
|
|
10
10
|
import { collectRefsInByteRange, refGroupFromArg } from './reference-collector.js';
|
|
11
|
-
import {
|
|
11
|
+
import { readStepSlots } from './step-argument-parser.js';
|
|
12
12
|
const RELATING = new Map([['IFCRELASSOCIATESMATERIAL', 'RelatingMaterial'], ['IFCRELDEFINESBYTYPE', 'RelatingType']]);
|
|
13
13
|
const BINDINGS = new Map([
|
|
14
14
|
['IFCRELASSOCIATESMATERIAL', 'RelatedObjects'], ['IFCRELDEFINESBYTYPE', 'RelatedObjects'],
|
|
@@ -127,8 +127,10 @@ export function captureAppearanceDependencies(store, view, roots) {
|
|
|
127
127
|
const slot = getAttributeNamesAcrossSchemas(type).indexOf(relating);
|
|
128
128
|
if (slot < 0)
|
|
129
129
|
refuse();
|
|
130
|
-
const
|
|
131
|
-
|
|
130
|
+
const recordSlots = readStepSlots(line);
|
|
131
|
+
if (recordSlots === null)
|
|
132
|
+
throw new Error('Invalid STEP record during appearance validation.');
|
|
133
|
+
const ref = recordSlots.slots[slot] === undefined ? undefined : refGroupFromArg(recordSlots.slots[slot]);
|
|
132
134
|
forward = typeof ref === 'number' ? [ref] : ref ?? [];
|
|
133
135
|
}
|
|
134
136
|
result = { line, refs: forward };
|
|
@@ -144,8 +146,10 @@ export function captureAppearanceDependencies(store, view, roots) {
|
|
|
144
146
|
throw new Error(`Cannot resolve ${type}.${attribute} for appearance validation.`);
|
|
145
147
|
for (const id of index.byType.get(type) ?? []) {
|
|
146
148
|
const line = row(id).line;
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
+
const recordSlots = readStepSlots(line);
|
|
150
|
+
if (recordSlots === null)
|
|
151
|
+
throw new Error('Invalid STEP record during appearance validation.');
|
|
152
|
+
const target = recordSlots.slots[slot] === undefined ? null : refGroupFromArg(recordSlots.slots[slot]);
|
|
149
153
|
for (const targetId of typeof target === 'number' ? [target] : target ?? []) {
|
|
150
154
|
if (!Number.isSafeInteger(targetId))
|
|
151
155
|
refuse();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance-dependencies.js","sourceRoot":"","sources":["../src/appearance-dependencies.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;+DAE+D;AAC/D,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAqB,MAAM,kBAAkB,CAAC;AAEpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"appearance-dependencies.js","sourceRoot":"","sources":["../src/appearance-dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface TableToCsvOptions {
|
|
2
|
+
/** Column delimiter; defaults to `,`. */
|
|
3
|
+
delimiter?: string;
|
|
4
|
+
}
|
|
5
|
+
/** A column key naming a property of every row. */
|
|
6
|
+
export type TableColumn<Row> = Extract<keyof Row, string>;
|
|
7
|
+
/** Serialise one cell value under the rules documented on {@link tableToCsv}. */
|
|
8
|
+
export declare function csvCellOf(value: unknown, delimiter?: string): string;
|
|
9
|
+
export declare function tableToCsv<Row extends object>(columns: readonly TableColumn<Row>[], rows: readonly Row[], options?: TableToCsvOptions): string;
|
|
10
|
+
//# sourceMappingURL=csv-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-table.d.ts","sourceRoot":"","sources":["../src/csv-table.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mDAAmD;AACnD,MAAM,MAAM,WAAW,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,CAAC;AAE1D,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAM,GAAG,MAAM,CAIjE;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAS,MAAM,EAC3C,OAAO,EAAE,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,EACpC,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAOR"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
* RFC 4180 CSV for a table of row OBJECTS — one header row from `columns`, then
|
|
6
|
+
* one line per row reading exactly those keys, in that order.
|
|
7
|
+
*
|
|
8
|
+
* Every table export in this repo (zones, clashes, …) had grown its own copy of
|
|
9
|
+
* the same 15-line loop around `escapeCsvCell`. The loop is not where the
|
|
10
|
+
* security lives — that is the escaper — but three copies of "null → empty,
|
|
11
|
+
* boolean → `true`/`false`, trailing newline" still drift (one forgot the
|
|
12
|
+
* trailing newline, so `cat a.csv b.csv` joined two rows). One writer, one set
|
|
13
|
+
* of rules:
|
|
14
|
+
*
|
|
15
|
+
* - `null` / `undefined` → empty cell (a spreadsheet reads `null` as text).
|
|
16
|
+
* - booleans → `true` / `false` (not `1`/`0`, which sum).
|
|
17
|
+
* - every other value → `String(value)` through {@link escapeCsvCell}, which
|
|
18
|
+
* applies RFC 4180 quoting and the CWE-1236 formula-injection guard. A cell
|
|
19
|
+
* whose first or last character is whitespace is quoted so an importer cannot
|
|
20
|
+
* trim the padding away (`quoteWhitespacePadded`).
|
|
21
|
+
* - lines end with `\n` and the file ends with one.
|
|
22
|
+
*/
|
|
23
|
+
import { escapeCsvCell } from './csv-cell.js';
|
|
24
|
+
/** Serialise one cell value under the rules documented on {@link tableToCsv}. */
|
|
25
|
+
export function csvCellOf(value, delimiter = ',') {
|
|
26
|
+
if (value === null || value === undefined)
|
|
27
|
+
return '';
|
|
28
|
+
const raw = typeof value === 'boolean' ? (value ? 'true' : 'false') : String(value);
|
|
29
|
+
return escapeCsvCell(raw, { delimiter, quoteWhitespacePadded: true });
|
|
30
|
+
}
|
|
31
|
+
export function tableToCsv(columns, rows, options = {}) {
|
|
32
|
+
const delimiter = options.delimiter ?? ',';
|
|
33
|
+
const lines = [columns.map((column) => csvCellOf(column, delimiter)).join(delimiter)];
|
|
34
|
+
for (const row of rows) {
|
|
35
|
+
lines.push(columns.map((column) => csvCellOf(row[column], delimiter)).join(delimiter));
|
|
36
|
+
}
|
|
37
|
+
return `${lines.join('\n')}\n`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=csv-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-table.js","sourceRoot":"","sources":["../src/csv-table.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAU9C,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,SAAS,GAAG,GAAG;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpF,OAAO,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,OAAoC,EACpC,IAAoB,EACpB,UAA6B,EAAE;IAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACtF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-appearance-record.d.ts","sourceRoot":"","sources":["../src/effective-appearance-record.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAQjE,gFAAgF;AAChF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,GACtF,MAAM,
|
|
1
|
+
{"version":3,"file":"effective-appearance-record.d.ts","sourceRoot":"","sources":["../src/effective-appearance-record.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAQjE,gFAAgF;AAChF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,GACtF,MAAM,CAuBR;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOlE"}
|
|
@@ -5,7 +5,7 @@ import { asSourceBytes, parseStepValue } from '@ifc-lite/parser';
|
|
|
5
5
|
import { serializeEntityArgs } from './attribute-real-slots.js';
|
|
6
6
|
import { applyOverlayEntityOverrides } from './step-overlay-attribute-overrides.js';
|
|
7
7
|
import { applySourceLineMutations } from './step-attribute-mutations.js';
|
|
8
|
-
import {
|
|
8
|
+
import { readStepSlots, splitTopLevelStepArguments } from './step-argument-parser.js';
|
|
9
9
|
import { retypeArgTokens } from './retype.js';
|
|
10
10
|
/** Compose the existing STEP writers; never invent a second override policy. */
|
|
11
11
|
export function effectiveAppearanceRecord(store, view, index, id) {
|
|
@@ -19,8 +19,12 @@ export function effectiveAppearanceRecord(store, view, index, id) {
|
|
|
19
19
|
const retype = view.getEntityTypeMutation(id);
|
|
20
20
|
const type = retype?.newType ?? created.type;
|
|
21
21
|
let args = serializeEntityArgs(created.type, created.attributes, schema);
|
|
22
|
-
if (retype)
|
|
23
|
-
|
|
22
|
+
if (retype) {
|
|
23
|
+
const slots = splitTopLevelStepArguments(args);
|
|
24
|
+
if (slots === null)
|
|
25
|
+
throw new Error('Invalid authored IFC entity during appearance cleanup; resources were retained.');
|
|
26
|
+
args = retypeArgTokens(slots, created.type, type, retype.predefinedType, schema).tokens.join(',');
|
|
27
|
+
}
|
|
24
28
|
args = applyOverlayEntityOverrides(args, type, named, view.getPositionalMutationsForEntity(id), schema);
|
|
25
29
|
return `#${id}=${type.toUpperCase()}(${args});`;
|
|
26
30
|
}
|
|
@@ -33,13 +37,13 @@ export function effectiveAppearanceRecord(store, view, index, id) {
|
|
|
33
37
|
}
|
|
34
38
|
/** URLReference occupies slot 5 after the inherited IfcSurfaceTexture fields. */
|
|
35
39
|
export function effectiveImageUri(line) {
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
40
|
+
const record = readStepSlots(line);
|
|
41
|
+
if (record === null)
|
|
38
42
|
throw new Error('Unreadable IFC image during appearance cleanup; resources were retained.');
|
|
39
|
-
const argument =
|
|
43
|
+
const argument = record.slots[5];
|
|
40
44
|
if (argument === undefined)
|
|
41
45
|
return undefined;
|
|
42
|
-
const value = parseStepValue(argument);
|
|
46
|
+
const value = parseStepValue(argument.trim());
|
|
43
47
|
return typeof value === 'string' ? value : undefined;
|
|
44
48
|
}
|
|
45
49
|
//# sourceMappingURL=effective-appearance-record.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-appearance-record.js","sourceRoot":"","sources":["../src/effective-appearance-record.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAC/D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAqB,MAAM,kBAAkB,CAAC;AAGpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"effective-appearance-record.js","sourceRoot":"","sources":["../src/effective-appearance-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property names that have official IFC5 schema definitions in prop@v5a.ifcx.
|
|
3
|
+
* Source: https://github.com/buildingSMART/ifcx.dev/blob/main/@standards.buildingsmart.org/ifc/core/prop@v5a.ifcx
|
|
4
|
+
*
|
|
5
|
+
* IFC4 properties NOT in this set (e.g. Reference, LoadBearing, ExtendToStructure)
|
|
6
|
+
* must be omitted from IFC5 export — the viewer reports "Missing schema" errors for them.
|
|
7
|
+
*
|
|
8
|
+
* Name and Description are handled separately (always exported), so they're excluded here.
|
|
9
|
+
*/
|
|
10
|
+
export declare const IFC5_KNOWN_PROP_NAMES: Set<string>;
|
|
1
11
|
/** IFCX node in output, matching the shape `collectRequiredImports` scans. */
|
|
2
12
|
interface IfcxNodeOutputLike {
|
|
3
13
|
attributes?: Record<string, unknown>;
|
|
@@ -28,5 +38,14 @@ export declare function generateUuid(id: number): string;
|
|
|
28
38
|
* Uses the IFC type enum lookup for canonical casing (e.g. "IfcRelAggregates", not "Ifcrelaggregates").
|
|
29
39
|
*/
|
|
30
40
|
export declare function stepTypeToClassName(stepType: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* The exported node path of an entity whose GlobalId is a namespaced path
|
|
43
|
+
* (#4444): a store reconstructed from a shared room keys its entities by room
|
|
44
|
+
* path, `/<slotId>/<GlobalId>`, and an exported file must not carry the
|
|
45
|
+
* room-internal slot. Removes `prefix` when the GlobalId is under it
|
|
46
|
+
* (`/m1/<GlobalId>` → `/<GlobalId>`); any other GlobalId is returned verbatim,
|
|
47
|
+
* so an owner's own STEP-parsed store (bare GlobalIds) is unaffected.
|
|
48
|
+
*/
|
|
49
|
+
export declare function stripNodePathPrefix(globalId: string, prefix: string | undefined): string;
|
|
31
50
|
export {};
|
|
32
51
|
//# sourceMappingURL=ifc5-export-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc5-export-helpers.d.ts","sourceRoot":"","sources":["../src/ifc5-export-helpers.ts"],"names":[],"mappings":"AAWA,8EAA8E;AAC9E,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB;IAC9B,wGAAwG;;IAExG,wCAAwC;;IAExC,mFAAmF;;CAE3E,CAAC;AAEX;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAmCrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU5D"}
|
|
1
|
+
{"version":3,"file":"ifc5-export-helpers.d.ts","sourceRoot":"","sources":["../src/ifc5-export-helpers.ts"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,aAkBhC,CAAC;AAEH,8EAA8E;AAC9E,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB;IAC9B,wGAAwG;;IAExG,wCAAwC;;IAExC,mFAAmF;;CAE3E,CAAC;AAEX;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAmCrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGxF"}
|
|
@@ -6,6 +6,34 @@
|
|
|
6
6
|
* keep ifc5-exporter.ts under its module-size budget; no behavior change.
|
|
7
7
|
*/
|
|
8
8
|
import { IfcTypeEnumToString, IfcTypeEnumFromString } from '@ifc-lite/data';
|
|
9
|
+
/**
|
|
10
|
+
* Property names that have official IFC5 schema definitions in prop@v5a.ifcx.
|
|
11
|
+
* Source: https://github.com/buildingSMART/ifcx.dev/blob/main/@standards.buildingsmart.org/ifc/core/prop@v5a.ifcx
|
|
12
|
+
*
|
|
13
|
+
* IFC4 properties NOT in this set (e.g. Reference, LoadBearing, ExtendToStructure)
|
|
14
|
+
* must be omitted from IFC5 export — the viewer reports "Missing schema" errors for them.
|
|
15
|
+
*
|
|
16
|
+
* Name and Description are handled separately (always exported), so they're excluded here.
|
|
17
|
+
*/
|
|
18
|
+
export const IFC5_KNOWN_PROP_NAMES = new Set([
|
|
19
|
+
'UsageType',
|
|
20
|
+
'TypeName',
|
|
21
|
+
'IsExternal',
|
|
22
|
+
'RefElevation',
|
|
23
|
+
'ElevationOfRefHeight',
|
|
24
|
+
'ElevationOfTerrain',
|
|
25
|
+
'NumberOfStoreys',
|
|
26
|
+
'Height',
|
|
27
|
+
'Width',
|
|
28
|
+
'Length',
|
|
29
|
+
'Depth',
|
|
30
|
+
'Volume',
|
|
31
|
+
'NetVolume',
|
|
32
|
+
'NetArea',
|
|
33
|
+
'NetSideArea',
|
|
34
|
+
'CrossSectionArea',
|
|
35
|
+
'Station',
|
|
36
|
+
]);
|
|
9
37
|
/** Standard IFC5 schema package URIs, keyed by the attribute prefix they provide. */
|
|
10
38
|
export const IFCX_SCHEMA_IMPORTS = {
|
|
11
39
|
/** Core IFC: bsi::ifc::class, bsi::ifc::presentation::*, bsi::ifc::material, bsi::ifc::spaceBoundary */
|
|
@@ -81,4 +109,17 @@ export function stepTypeToClassName(stepType) {
|
|
|
81
109
|
}
|
|
82
110
|
return stepType;
|
|
83
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* The exported node path of an entity whose GlobalId is a namespaced path
|
|
114
|
+
* (#4444): a store reconstructed from a shared room keys its entities by room
|
|
115
|
+
* path, `/<slotId>/<GlobalId>`, and an exported file must not carry the
|
|
116
|
+
* room-internal slot. Removes `prefix` when the GlobalId is under it
|
|
117
|
+
* (`/m1/<GlobalId>` → `/<GlobalId>`); any other GlobalId is returned verbatim,
|
|
118
|
+
* so an owner's own STEP-parsed store (bare GlobalIds) is unaffected.
|
|
119
|
+
*/
|
|
120
|
+
export function stripNodePathPrefix(globalId, prefix) {
|
|
121
|
+
if (!prefix || !globalId.startsWith(`${prefix}/`))
|
|
122
|
+
return globalId;
|
|
123
|
+
return globalId.slice(prefix.length);
|
|
124
|
+
}
|
|
84
125
|
//# sourceMappingURL=ifc5-export-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc5-export-helpers.js","sourceRoot":"","sources":["../src/ifc5-export-helpers.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ifc5-export-helpers.js","sourceRoot":"","sources":["../src/ifc5-export-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/ifc5-exporter.d.ts
CHANGED
|
@@ -14,16 +14,6 @@ import type { IfcDataStore } from '@ifc-lite/parser';
|
|
|
14
14
|
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
15
15
|
import type { GeometryResult } from '@ifc-lite/geometry';
|
|
16
16
|
import { type IfcxEncodedImage } from '@ifc-lite/ifcx';
|
|
17
|
-
/**
|
|
18
|
-
* Property names that have official IFC5 schema definitions in prop@v5a.ifcx.
|
|
19
|
-
* Source: https://github.com/buildingSMART/ifcx.dev/blob/main/@standards.buildingsmart.org/ifc/core/prop@v5a.ifcx
|
|
20
|
-
*
|
|
21
|
-
* IFC4 properties NOT in this set (e.g. Reference, LoadBearing, ExtendToStructure)
|
|
22
|
-
* must be omitted from IFC5 export — the viewer reports "Missing schema" errors for them.
|
|
23
|
-
*
|
|
24
|
-
* Name and Description are handled separately (always exported), so they're excluded here.
|
|
25
|
-
*/
|
|
26
|
-
export declare const IFC5_KNOWN_PROP_NAMES: Set<string>;
|
|
27
17
|
/** Options for IFC5 export */
|
|
28
18
|
export interface Ifc5ExportOptions {
|
|
29
19
|
/** Original image bytes keyed by exact MeshTextureRef.url; retained in IFCX without recompression. */
|
|
@@ -54,6 +44,14 @@ export interface Ifc5ExportOptions {
|
|
|
54
44
|
* When true, relationship entities (IfcRel*), type objects, materials,
|
|
55
45
|
* and other non-spatial entities are excluded from the output. */
|
|
56
46
|
onlyTreeEntities?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* A namespace prefix to remove from GlobalId-derived node paths (#4444). A
|
|
49
|
+
* store reconstructed from a shared room keys its entities by room path,
|
|
50
|
+
* `/<slotId>/<GlobalId>`; the slot is the room's namespace, not the
|
|
51
|
+
* model's, so the exported file carries `/<GlobalId>` — the same paths a
|
|
52
|
+
* single-model room exports. GlobalIds outside the prefix are untouched.
|
|
53
|
+
*/
|
|
54
|
+
stripPathPrefix?: string;
|
|
57
55
|
}
|
|
58
56
|
/** Result of IFC5 export */
|
|
59
57
|
export interface Ifc5ExportResult {
|
|
@@ -124,6 +122,7 @@ export declare class Ifc5Exporter {
|
|
|
124
122
|
* will NOT be emitted as a node (deleted, hidden, or outside the exported
|
|
125
123
|
* tree). Every step below is driven by it rather than by the deletion
|
|
126
124
|
* check alone, so the maps can never describe a node `export` never wrote.
|
|
125
|
+
* @param stripPathPrefix see {@link Ifc5ExportOptions.stripPathPrefix}.
|
|
127
126
|
*/
|
|
128
127
|
private buildEntityMaps;
|
|
129
128
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc5-exporter.d.ts","sourceRoot":"","sources":["../src/ifc5-exporter.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAY,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUnE,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ifc5-exporter.d.ts","sourceRoot":"","sources":["../src/ifc5-exporter.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAY,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUnE,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAsBhF,8BAA8B;AAC9B,MAAM,WAAW,iBAAiB;IAChC,sGAAsG;IACtG,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACvD,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC;;yEAEqE;IACrE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;uEAEmE;IACnE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,4BAA4B;AAC5B,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA4BD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAS;IACzB,6EAA6E;IAC7E,OAAO,CAAC,UAAU,CAA6B;IAC/C,yEAAyE;IACzE,OAAO,CAAC,gBAAgB,CAA6B;IACrD,0CAA0C;IAC1C,OAAO,CAAC,WAAW,CAA6B;IAChD;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAA2C;IAC7D;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,iBAAiB,CAAqB;gBAG5C,SAAS,EAAE,YAAY,EACvB,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,mBAAmB,EAClC,QAAQ,CAAC,EAAE,MAAM;IAQnB;;OAEG;IACH,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB;IAmOzD,yDAAyD;IACzD,OAAO,CAAC,eAAe;IAYvB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,eAAe;IAqJvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiC5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,OAAO,CAAC,eAAe;CAsBxB"}
|
package/dist/ifc5-exporter.js
CHANGED
|
@@ -7,36 +7,8 @@ import { getEffectiveEntityIndex } from './effective-index.js';
|
|
|
7
7
|
import { Ifc5AppearanceWriter } from './ifc5-appearance.js';
|
|
8
8
|
import { IFCX_APPEARANCE_SCHEMAS } from '@ifc-lite/ifcx';
|
|
9
9
|
import { buildMaterialAttribute } from './ifc5-material.js';
|
|
10
|
-
import { collectRequiredImports, generateUuid, stepTypeToClassName } from './ifc5-export-helpers.js';
|
|
10
|
+
import { collectRequiredImports, generateUuid, IFC5_KNOWN_PROP_NAMES, stepTypeToClassName, stripNodePathPrefix, } from './ifc5-export-helpers.js';
|
|
11
11
|
import { addClassificationAttribute } from './ifc5-classification.js';
|
|
12
|
-
/**
|
|
13
|
-
* Property names that have official IFC5 schema definitions in prop@v5a.ifcx.
|
|
14
|
-
* Source: https://github.com/buildingSMART/ifcx.dev/blob/main/@standards.buildingsmart.org/ifc/core/prop@v5a.ifcx
|
|
15
|
-
*
|
|
16
|
-
* IFC4 properties NOT in this set (e.g. Reference, LoadBearing, ExtendToStructure)
|
|
17
|
-
* must be omitted from IFC5 export — the viewer reports "Missing schema" errors for them.
|
|
18
|
-
*
|
|
19
|
-
* Name and Description are handled separately (always exported), so they're excluded here.
|
|
20
|
-
*/
|
|
21
|
-
export const IFC5_KNOWN_PROP_NAMES = new Set([
|
|
22
|
-
'UsageType',
|
|
23
|
-
'TypeName',
|
|
24
|
-
'IsExternal',
|
|
25
|
-
'RefElevation',
|
|
26
|
-
'ElevationOfRefHeight',
|
|
27
|
-
'ElevationOfTerrain',
|
|
28
|
-
'NumberOfStoreys',
|
|
29
|
-
'Height',
|
|
30
|
-
'Width',
|
|
31
|
-
'Length',
|
|
32
|
-
'Depth',
|
|
33
|
-
'Volume',
|
|
34
|
-
'NetVolume',
|
|
35
|
-
'NetArea',
|
|
36
|
-
'NetSideArea',
|
|
37
|
-
'CrossSectionArea',
|
|
38
|
-
'Station',
|
|
39
|
-
]);
|
|
40
12
|
// ============================================================================
|
|
41
13
|
// Exporter
|
|
42
14
|
// ============================================================================
|
|
@@ -113,7 +85,7 @@ export class Ifc5Exporter {
|
|
|
113
85
|
|| (visibleIds !== null && !visibleIds.has(id))
|
|
114
86
|
|| (treeIds !== null && !treeIds.has(id));
|
|
115
87
|
// Build UUID paths and child-name maps from spatial hierarchy
|
|
116
|
-
this.buildEntityMaps(isOmitted);
|
|
88
|
+
this.buildEntityMaps(isOmitted, options.stripPathPrefix);
|
|
117
89
|
// Build mesh lookup by expressId
|
|
118
90
|
const meshByEntity = this.buildMeshLookup(options);
|
|
119
91
|
const appearance = new Ifc5AppearanceWriter(new Set(this.entityUuids.values()), options.textureSources);
|
|
@@ -301,8 +273,9 @@ export class Ifc5Exporter {
|
|
|
301
273
|
* will NOT be emitted as a node (deleted, hidden, or outside the exported
|
|
302
274
|
* tree). Every step below is driven by it rather than by the deletion
|
|
303
275
|
* check alone, so the maps can never describe a node `export` never wrote.
|
|
276
|
+
* @param stripPathPrefix see {@link Ifc5ExportOptions.stripPathPrefix}.
|
|
304
277
|
*/
|
|
305
|
-
buildEntityMaps(isOmitted) {
|
|
278
|
+
buildEntityMaps(isOmitted, stripPathPrefix) {
|
|
306
279
|
const { spatialHierarchy, entities, strings } = this.dataStore;
|
|
307
280
|
// --- 1. Assign UUID paths ---
|
|
308
281
|
// An omitted entity gets no UUID entry. `getChildrenForEntity`'s `addChild`
|
|
@@ -318,7 +291,7 @@ export class Ifc5Exporter {
|
|
|
318
291
|
continue;
|
|
319
292
|
// Use IFC GlobalId if available, otherwise generate a deterministic UUID
|
|
320
293
|
const globalId = strings.get(entities.globalId[i]);
|
|
321
|
-
this.entityUuids.set(id, globalId
|
|
294
|
+
this.entityUuids.set(id, globalId ? stripNodePathPrefix(globalId, stripPathPrefix) : generateUuid(id));
|
|
322
295
|
}
|
|
323
296
|
// --- 2. Build parent→children and spatial maps ---
|
|
324
297
|
const parentOf = new Map();
|