@ifc-lite/export 4.4.0 → 4.7.2
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 +5 -5
- package/dist/appearance-dependencies.d.ts.map +1 -1
- package/dist/appearance-dependencies.js +1 -0
- package/dist/appearance-dependencies.js.map +1 -1
- package/dist/attribute-real-slots.d.ts.map +1 -1
- package/dist/attribute-real-slots.js +7 -1
- package/dist/attribute-real-slots.js.map +1 -1
- package/dist/attribute-slot-types.d.ts +8 -2
- package/dist/attribute-slot-types.d.ts.map +1 -1
- package/dist/attribute-slot-types.js +12 -8
- package/dist/attribute-slot-types.js.map +1 -1
- package/dist/demesh-prune.d.ts.map +1 -1
- package/dist/demesh-prune.js +1 -0
- package/dist/demesh-prune.js.map +1 -1
- package/dist/demesh-writer.d.ts.map +1 -1
- package/dist/demesh-writer.js +1 -0
- package/dist/demesh-writer.js.map +1 -1
- package/dist/effective-appearance-record.d.ts.map +1 -1
- package/dist/effective-appearance-record.js +10 -17
- package/dist/effective-appearance-record.js.map +1 -1
- package/dist/effective-index.d.ts.map +1 -1
- package/dist/effective-index.js +2 -0
- package/dist/effective-index.js.map +1 -1
- package/dist/effective-source-record.d.ts +25 -0
- package/dist/effective-source-record.d.ts.map +1 -1
- package/dist/effective-source-record.js +45 -0
- package/dist/effective-source-record.js.map +1 -1
- package/dist/entity-iteration.d.ts.map +1 -1
- package/dist/entity-iteration.js +1 -0
- package/dist/entity-iteration.js.map +1 -1
- package/dist/entity-type-sets.js +2 -2
- package/dist/entity-type-sets.js.map +1 -1
- package/dist/generated/ifc4-required-slots.d.ts +17 -0
- package/dist/generated/ifc4-required-slots.d.ts.map +1 -0
- package/dist/generated/ifc4-required-slots.js +619 -0
- package/dist/generated/ifc4-required-slots.js.map +1 -0
- package/dist/georef-closure.d.ts.map +1 -1
- package/dist/georef-closure.js +5 -0
- package/dist/georef-closure.js.map +1 -1
- package/dist/ifc5-effective-rows.d.ts +16 -0
- package/dist/ifc5-effective-rows.d.ts.map +1 -0
- package/dist/ifc5-effective-rows.js +90 -0
- package/dist/ifc5-effective-rows.js.map +1 -0
- 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 +16 -0
- package/dist/ifc5-export-helpers.js.map +1 -1
- package/dist/ifc5-exporter.d.ts +9 -11
- package/dist/ifc5-exporter.d.ts.map +1 -1
- package/dist/ifc5-exporter.js +38 -95
- package/dist/ifc5-exporter.js.map +1 -1
- package/dist/ifc5-pset-properties.d.ts +61 -0
- package/dist/ifc5-pset-properties.d.ts.map +1 -0
- package/dist/ifc5-pset-properties.js +100 -0
- package/dist/ifc5-pset-properties.js.map +1 -0
- package/dist/ifc5-tree-scope.js +3 -0
- package/dist/ifc5-tree-scope.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lod0-generator.d.ts.map +1 -1
- package/dist/lod0-generator.js +2 -0
- package/dist/lod0-generator.js.map +1 -1
- package/dist/merged-context.d.ts.map +1 -1
- package/dist/merged-context.js +3 -0
- package/dist/merged-context.js.map +1 -1
- package/dist/merged-exporter.d.ts +3 -17
- package/dist/merged-exporter.d.ts.map +1 -1
- package/dist/merged-exporter.js +50 -46
- package/dist/merged-exporter.js.map +1 -1
- package/dist/merged-header.d.ts +11 -0
- package/dist/merged-header.d.ts.map +1 -0
- package/dist/merged-header.js +23 -0
- package/dist/merged-header.js.map +1 -0
- package/dist/nonrel-positional-ref-narrowing.d.ts +3 -0
- package/dist/nonrel-positional-ref-narrowing.d.ts.map +1 -0
- package/dist/nonrel-positional-ref-narrowing.js +194 -0
- package/dist/nonrel-positional-ref-narrowing.js.map +1 -0
- package/dist/nonrel-ref-list-types.d.ts +13 -0
- package/dist/nonrel-ref-list-types.d.ts.map +1 -0
- package/dist/nonrel-ref-list-types.js +162 -0
- package/dist/nonrel-ref-list-types.js.map +1 -0
- package/dist/parquet-created-entity-rows.d.ts +20 -0
- package/dist/parquet-created-entity-rows.d.ts.map +1 -0
- package/dist/parquet-created-entity-rows.js +40 -0
- package/dist/parquet-created-entity-rows.js.map +1 -0
- package/dist/parquet-exporter-ondemand.d.ts +3 -2
- package/dist/parquet-exporter-ondemand.d.ts.map +1 -1
- package/dist/parquet-exporter-ondemand.js +15 -6
- package/dist/parquet-exporter-ondemand.js.map +1 -1
- package/dist/parquet-exporter.d.ts +5 -12
- package/dist/parquet-exporter.d.ts.map +1 -1
- package/dist/parquet-exporter.js +35 -62
- package/dist/parquet-exporter.js.map +1 -1
- package/dist/parquet-relationship-rows.d.ts +11 -0
- package/dist/parquet-relationship-rows.d.ts.map +1 -0
- package/dist/parquet-relationship-rows.js +57 -0
- package/dist/parquet-relationship-rows.js.map +1 -0
- package/dist/reference-collector.d.ts +17 -1
- package/dist/reference-collector.d.ts.map +1 -1
- package/dist/reference-collector.js +30 -1
- package/dist/reference-collector.js.map +1 -1
- package/dist/registry-entity-names.d.ts +3 -0
- package/dist/registry-entity-names.d.ts.map +1 -0
- package/dist/registry-entity-names.js +38 -0
- package/dist/registry-entity-names.js.map +1 -0
- package/dist/relationship-slot-bounds.d.ts +14 -0
- package/dist/relationship-slot-bounds.d.ts.map +1 -0
- package/dist/relationship-slot-bounds.js +64 -0
- package/dist/relationship-slot-bounds.js.map +1 -0
- package/dist/retype.d.ts.map +1 -1
- package/dist/retype.js +5 -2
- package/dist/retype.js.map +1 -1
- package/dist/schema-conversion-loss-report.d.ts +97 -0
- package/dist/schema-conversion-loss-report.d.ts.map +1 -0
- package/dist/schema-conversion-loss-report.js +116 -0
- package/dist/schema-conversion-loss-report.js.map +1 -0
- package/dist/schema-converter-attr-remap.d.ts +8 -0
- package/dist/schema-converter-attr-remap.d.ts.map +1 -1
- package/dist/schema-converter-attr-remap.js +14 -1
- package/dist/schema-converter-attr-remap.js.map +1 -1
- package/dist/schema-converter-enums.d.ts +27 -0
- package/dist/schema-converter-enums.d.ts.map +1 -0
- package/dist/schema-converter-enums.js +117 -0
- package/dist/schema-converter-enums.js.map +1 -0
- package/dist/schema-converter-ifc4-slots.d.ts +36 -0
- package/dist/schema-converter-ifc4-slots.d.ts.map +1 -0
- package/dist/schema-converter-ifc4-slots.js +70 -0
- package/dist/schema-converter-ifc4-slots.js.map +1 -0
- package/dist/schema-converter.d.ts +41 -19
- package/dist/schema-converter.d.ts.map +1 -1
- package/dist/schema-converter.js +73 -42
- package/dist/schema-converter.js.map +1 -1
- package/dist/schema-enum-policy.d.ts +48 -0
- package/dist/schema-enum-policy.d.ts.map +1 -0
- package/dist/schema-enum-policy.js +26 -0
- package/dist/schema-enum-policy.js.map +1 -0
- package/dist/schema-untranslatable.d.ts +84 -2
- package/dist/schema-untranslatable.d.ts.map +1 -1
- package/dist/schema-untranslatable.js +98 -3
- package/dist/schema-untranslatable.js.map +1 -1
- package/dist/step-collection.js +1 -1
- package/dist/step-collection.js.map +1 -1
- package/dist/step-export-types.d.ts +13 -3
- package/dist/step-export-types.d.ts.map +1 -1
- package/dist/step-exporter.d.ts.map +1 -1
- package/dist/step-exporter.js +4 -2
- package/dist/step-exporter.js.map +1 -1
- package/dist/step-georeferencing.js +2 -0
- package/dist/step-georeferencing.js.map +1 -1
- package/dist/step-header.d.ts.map +1 -1
- package/dist/step-header.js +1 -0
- package/dist/step-header.js.map +1 -1
- package/dist/step-map-unit.d.ts.map +1 -1
- package/dist/step-map-unit.js +4 -0
- package/dist/step-map-unit.js.map +1 -1
- package/dist/step-overlay-entities.d.ts.map +1 -1
- package/dist/step-overlay-entities.js +5 -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 +8 -1
- package/dist/step-pass-builder.js.map +1 -1
- package/dist/step-property-set-generators.d.ts.map +1 -1
- package/dist/step-property-set-generators.js +17 -0
- package/dist/step-property-set-generators.js.map +1 -1
- package/dist/step-property-set-index.d.ts +4 -10
- package/dist/step-property-set-index.d.ts.map +1 -1
- package/dist/step-property-set-index.js +52 -8
- package/dist/step-property-set-index.js.map +1 -1
- package/dist/step-property-set-readers.d.ts.map +1 -1
- package/dist/step-property-set-readers.js +4 -0
- package/dist/step-property-set-readers.js.map +1 -1
- package/dist/step-ref-scan.d.ts +6 -0
- package/dist/step-ref-scan.d.ts.map +1 -0
- package/dist/step-ref-scan.js +52 -0
- package/dist/step-ref-scan.js.map +1 -0
- package/dist/step-serialization.d.ts.map +1 -1
- package/dist/step-serialization.js +18 -2
- package/dist/step-serialization.js.map +1 -1
- package/dist/step-shared-atom-retention.d.ts +5 -0
- package/dist/step-shared-atom-retention.d.ts.map +1 -0
- package/dist/step-shared-atom-retention.js +60 -0
- package/dist/step-shared-atom-retention.js.map +1 -0
- package/dist/step-source-iteration.d.ts +1 -1
- package/dist/step-source-iteration.d.ts.map +1 -1
- package/dist/step-source-iteration.js +50 -45
- package/dist/step-source-iteration.js.map +1 -1
- package/dist/style-closure.d.ts.map +1 -1
- package/dist/style-closure.js +11 -0
- package/dist/style-closure.js.map +1 -1
- package/dist/subset-entity-reader.d.ts.map +1 -1
- package/dist/subset-entity-reader.js +3 -2
- package/dist/subset-entity-reader.js.map +1 -1
- package/dist/subset-roots.js +2 -2
- package/dist/subset-roots.js.map +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enum-member reconciliation on schema conversion (#5365).
|
|
3
|
+
*
|
|
4
|
+
* `convertStepLine` renames entities and reconciles attribute counts, but no
|
|
5
|
+
* pass read an enum VALUE: `.TURNSTILE.` (IFC4X3 `IfcDoorTypeEnum`) rode into
|
|
6
|
+
* an IFC4 file and `.LOUVRE.` (IFC4 `IfcAirTerminalTypeEnum`) into IFC2X3,
|
|
7
|
+
* invalid against each file's own header, with no report. This pass reads
|
|
8
|
+
* every enum-typed slot of an already-converted record against the TARGET
|
|
9
|
+
* schema's registry and resolves a member the target does not define by the
|
|
10
|
+
* policy in `schema-enum-policy.ts`. It counts every resolution that loses
|
|
11
|
+
* information, and every refusal.
|
|
12
|
+
*
|
|
13
|
+
* Runs on the converted record, so the target's attribute list applies; a
|
|
14
|
+
* record whose arity is not the target's is left alone, the same guard the
|
|
15
|
+
* required-slot passes use (position `i` need not be attribute `i`).
|
|
16
|
+
*/
|
|
17
|
+
import { type SchemaVersionWithRegistry } from '@ifc-lite/parser';
|
|
18
|
+
/** Enum reconciliation for one export: rewrites, and counts what it lost. */
|
|
19
|
+
export declare class EnumReconciliation {
|
|
20
|
+
private readonly losses;
|
|
21
|
+
/** Reconcile `line`, already converted to `toSchema`. */
|
|
22
|
+
apply(line: string, toSchema: SchemaVersionWithRegistry): string;
|
|
23
|
+
/** One warning per loss kind, naming what it happened to (#5365). */
|
|
24
|
+
warnings(): string[];
|
|
25
|
+
private record;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=schema-converter-enums.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-converter-enums.d.ts","sourceRoot":"","sources":["../src/schema-converter-enums.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAA+B,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AA2C/F,6EAA6E;AAC7E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,yDAAyD;IACzD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,yBAAyB,GAAG,MAAM;IAyChE,qEAAqE;IACrE,QAAQ,IAAI,MAAM,EAAE;IAUpB,OAAO,CAAC,MAAM;CAKf"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
+
* Enum-member reconciliation on schema conversion (#5365).
|
|
6
|
+
*
|
|
7
|
+
* `convertStepLine` renames entities and reconciles attribute counts, but no
|
|
8
|
+
* pass read an enum VALUE: `.TURNSTILE.` (IFC4X3 `IfcDoorTypeEnum`) rode into
|
|
9
|
+
* an IFC4 file and `.LOUVRE.` (IFC4 `IfcAirTerminalTypeEnum`) into IFC2X3,
|
|
10
|
+
* invalid against each file's own header, with no report. This pass reads
|
|
11
|
+
* every enum-typed slot of an already-converted record against the TARGET
|
|
12
|
+
* schema's registry and resolves a member the target does not define by the
|
|
13
|
+
* policy in `schema-enum-policy.ts`. It counts every resolution that loses
|
|
14
|
+
* information, and every refusal.
|
|
15
|
+
*
|
|
16
|
+
* Runs on the converted record, so the target's attribute list applies; a
|
|
17
|
+
* record whose arity is not the target's is left alone, the same guard the
|
|
18
|
+
* required-slot passes use (position `i` need not be attribute `i`).
|
|
19
|
+
*/
|
|
20
|
+
import { getSchemaRegistryForVersion } from '@ifc-lite/parser';
|
|
21
|
+
import { escapeStepString } from './step-serialization.js';
|
|
22
|
+
import { splitTopLevelStepArguments } from './step-argument-parser.js';
|
|
23
|
+
import { resolveMissingEnumMember } from './schema-enum-policy.js';
|
|
24
|
+
const TARGETS = new Map();
|
|
25
|
+
function targetEntities(schema) {
|
|
26
|
+
let table = TARGETS.get(schema);
|
|
27
|
+
if (table)
|
|
28
|
+
return table;
|
|
29
|
+
const registry = getSchemaRegistryForVersion(schema);
|
|
30
|
+
const built = new Map();
|
|
31
|
+
for (const [name, meta] of Object.entries(registry.entities)) {
|
|
32
|
+
const attributes = meta.allAttributes ?? meta.attributes;
|
|
33
|
+
const enumSlots = attributes.flatMap((a, index) => {
|
|
34
|
+
const members = Object.hasOwn(registry.enums, a.type) ? registry.enums[a.type] : undefined;
|
|
35
|
+
return members ? [{ index, members }] : [];
|
|
36
|
+
});
|
|
37
|
+
if (enumSlots.length > 0)
|
|
38
|
+
built.set(name.toUpperCase(), { attributes, enumSlots });
|
|
39
|
+
}
|
|
40
|
+
table = built;
|
|
41
|
+
TARGETS.set(schema, table);
|
|
42
|
+
return table;
|
|
43
|
+
}
|
|
44
|
+
const ENUM_TOKEN = /^\s*\.([A-Z0-9_]+)\.\s*$/i;
|
|
45
|
+
const LOSS_TEXT = {
|
|
46
|
+
'userdefined-label-occupied': 'written as .USERDEFINED. but the label slot already held a value, so the member name was not kept',
|
|
47
|
+
notdefined: 'written as .NOTDEFINED.',
|
|
48
|
+
omit: 'written as $ (the attribute is optional in the target)',
|
|
49
|
+
refuse: 'KEPT as written, so the file is not valid against its header; the target schema offers no value for it',
|
|
50
|
+
};
|
|
51
|
+
/** Enum reconciliation for one export: rewrites, and counts what it lost. */
|
|
52
|
+
export class EnumReconciliation {
|
|
53
|
+
losses = new Map();
|
|
54
|
+
/** Reconcile `line`, already converted to `toSchema`. */
|
|
55
|
+
apply(line, toSchema) {
|
|
56
|
+
const open = line.indexOf('(');
|
|
57
|
+
const close = line.lastIndexOf(')');
|
|
58
|
+
const eq = line.indexOf('=');
|
|
59
|
+
if (eq < 0 || open <= eq || close <= open)
|
|
60
|
+
return line;
|
|
61
|
+
const type = line.slice(eq + 1, open).trim().toUpperCase();
|
|
62
|
+
const entity = targetEntities(toSchema).get(type);
|
|
63
|
+
if (!entity)
|
|
64
|
+
return line;
|
|
65
|
+
const values = splitTopLevelStepArguments(line.slice(open + 1, close));
|
|
66
|
+
if (values === null || values.length !== entity.attributes.length)
|
|
67
|
+
return line;
|
|
68
|
+
let changed = false;
|
|
69
|
+
for (const { index, members } of entity.enumSlots) {
|
|
70
|
+
const member = ENUM_TOKEN.exec(values[index])?.[1]?.toUpperCase();
|
|
71
|
+
if (member === undefined || members.includes(member))
|
|
72
|
+
continue;
|
|
73
|
+
const resolution = resolveMissingEnumMember(entity.attributes, index, members);
|
|
74
|
+
const where = `${type}.${entity.attributes[index].name} .${member}.`;
|
|
75
|
+
switch (resolution.kind) {
|
|
76
|
+
case 'userdefined':
|
|
77
|
+
values[index] = '.USERDEFINED.';
|
|
78
|
+
if (values[resolution.labelIndex].trim() === '$')
|
|
79
|
+
values[resolution.labelIndex] = `'${escapeStepString(member)}'`;
|
|
80
|
+
else
|
|
81
|
+
this.record('userdefined-label-occupied', where);
|
|
82
|
+
changed = true;
|
|
83
|
+
break;
|
|
84
|
+
case 'notdefined':
|
|
85
|
+
values[index] = '.NOTDEFINED.';
|
|
86
|
+
this.record('notdefined', where);
|
|
87
|
+
changed = true;
|
|
88
|
+
break;
|
|
89
|
+
case 'omit':
|
|
90
|
+
values[index] = '$';
|
|
91
|
+
this.record('omit', where);
|
|
92
|
+
changed = true;
|
|
93
|
+
break;
|
|
94
|
+
case 'refuse':
|
|
95
|
+
this.record('refuse', where);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return changed ? `${line.slice(0, open + 1)}${values.join(',')}${line.slice(close)}` : line;
|
|
100
|
+
}
|
|
101
|
+
/** One warning per loss kind, naming what it happened to (#5365). */
|
|
102
|
+
warnings() {
|
|
103
|
+
const out = [];
|
|
104
|
+
for (const [loss, where] of this.losses) {
|
|
105
|
+
// Every site is named: distinct sites are bounded by the ledger, so none is elided.
|
|
106
|
+
const total = [...where.values()].reduce((a, b) => a + b, 0);
|
|
107
|
+
out.push(`${total} enum value(s) the target schema does not define were ${LOSS_TEXT[loss]}: ${[...where.keys()].join(', ')} (#5365).`);
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
record(loss, where) {
|
|
112
|
+
const bucket = this.losses.get(loss) ?? new Map();
|
|
113
|
+
bucket.set(where, (bucket.get(where) ?? 0) + 1);
|
|
114
|
+
this.losses.set(loss, bucket);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=schema-converter-enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-converter-enums.js","sourceRoot":"","sources":["../src/schema-converter-enums.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Counts slots IFC4 requires a value in that a downgrade from IFC4X3 or IFC5
|
|
3
|
+
* leaves `$` (#5202).
|
|
4
|
+
*
|
|
5
|
+
* `schema-converter.ts` only guarded cardinality for `toSchema === 'IFC2X3'`
|
|
6
|
+
* (`Ifc2x3SlotFill`, #4714). IFC4X3 made some attributes optional that IFC4
|
|
7
|
+
* declares mandatory, e.g. `IfcProjectedCRS.Name` at position 0, so a valid
|
|
8
|
+
* IFC4X3 (or IFC5) record legitimately carries `$` where IFC4 requires a value.
|
|
9
|
+
*
|
|
10
|
+
* Unlike {@link Ifc2x3SlotFill} this never writes a value. None of these
|
|
11
|
+
* slots has an honest default: the only candidates were BOOLEANs, and every
|
|
12
|
+
* BOOLEAN slot IFC4 requires is required in IFC4X3 too (`SameSense`,
|
|
13
|
+
* `Orientation`, …), where `.F.` would flip geometry rather than claim
|
|
14
|
+
* nothing. Enums stay unfilled because enum reconciliation is a separate
|
|
15
|
+
* problem (#5202 finding 1). The count surfaces as one warning, so the caller
|
|
16
|
+
* learns the file is not valid IFC4 instead of receiving an invented value.
|
|
17
|
+
*
|
|
18
|
+
* `convertStepLine` only consults this for `fromSchema` `'IFC4X3'`/`'IFC5'`.
|
|
19
|
+
* IFC2X3 → IFC4 is a separately audited upgrade path, pinned byte-for-byte by
|
|
20
|
+
* `schema-converter-door-window-type.test.ts`.
|
|
21
|
+
*/
|
|
22
|
+
export declare class Ifc4SlotCheck {
|
|
23
|
+
/** Required slots left `$`. Counted per SLOT: one record can leave several. */
|
|
24
|
+
private requiredUnfilled;
|
|
25
|
+
/** One warning when any slot was left `$`, in the exporters' warning channel. */
|
|
26
|
+
warnings(): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Count every required slot of an already-converted `line` that holds `$`,
|
|
29
|
+
* and return the line unchanged. A line that does not parse, whose type IFC4
|
|
30
|
+
* gives no required slot, or whose ARITY is not IFC4's is not counted: its
|
|
31
|
+
* position `i` need not be attribute `i` (the same guard
|
|
32
|
+
* {@link Ifc2x3SlotFill} uses).
|
|
33
|
+
*/
|
|
34
|
+
apply(line: string): string;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=schema-converter-ifc4-slots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-converter-ifc4-slots.d.ts","sourceRoot":"","sources":["../src/schema-converter-ifc4-slots.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IACxB,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB,CAAK;IAE7B,iFAAiF;IACjF,QAAQ,IAAI,MAAM,EAAE;IASpB;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAc5B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 { splitTopLevelStepArguments } from './step-argument-parser.js';
|
|
5
|
+
import { IFC4_REQUIRED_SLOTS } from './generated/ifc4-required-slots.js';
|
|
6
|
+
/** The generated rows keyed by UPPERCASE entity type, built once. */
|
|
7
|
+
const BY_TYPE = new Map(IFC4_REQUIRED_SLOTS.map(([type, arity, slots]) => [type, { arity, slots }]));
|
|
8
|
+
/** `$`, possibly wrapped in whitespace and STEP block comments. */
|
|
9
|
+
const NULL_TOKEN = /^(?:\s|\/\*[\s\S]*?\*\/)*\$(?:\s|\/\*[\s\S]*?\*\/)*$/;
|
|
10
|
+
/**
|
|
11
|
+
* Counts slots IFC4 requires a value in that a downgrade from IFC4X3 or IFC5
|
|
12
|
+
* leaves `$` (#5202).
|
|
13
|
+
*
|
|
14
|
+
* `schema-converter.ts` only guarded cardinality for `toSchema === 'IFC2X3'`
|
|
15
|
+
* (`Ifc2x3SlotFill`, #4714). IFC4X3 made some attributes optional that IFC4
|
|
16
|
+
* declares mandatory, e.g. `IfcProjectedCRS.Name` at position 0, so a valid
|
|
17
|
+
* IFC4X3 (or IFC5) record legitimately carries `$` where IFC4 requires a value.
|
|
18
|
+
*
|
|
19
|
+
* Unlike {@link Ifc2x3SlotFill} this never writes a value. None of these
|
|
20
|
+
* slots has an honest default: the only candidates were BOOLEANs, and every
|
|
21
|
+
* BOOLEAN slot IFC4 requires is required in IFC4X3 too (`SameSense`,
|
|
22
|
+
* `Orientation`, …), where `.F.` would flip geometry rather than claim
|
|
23
|
+
* nothing. Enums stay unfilled because enum reconciliation is a separate
|
|
24
|
+
* problem (#5202 finding 1). The count surfaces as one warning, so the caller
|
|
25
|
+
* learns the file is not valid IFC4 instead of receiving an invented value.
|
|
26
|
+
*
|
|
27
|
+
* `convertStepLine` only consults this for `fromSchema` `'IFC4X3'`/`'IFC5'`.
|
|
28
|
+
* IFC2X3 → IFC4 is a separately audited upgrade path, pinned byte-for-byte by
|
|
29
|
+
* `schema-converter-door-window-type.test.ts`.
|
|
30
|
+
*/
|
|
31
|
+
export class Ifc4SlotCheck {
|
|
32
|
+
/** Required slots left `$`. Counted per SLOT: one record can leave several. */
|
|
33
|
+
requiredUnfilled = 0;
|
|
34
|
+
/** One warning when any slot was left `$`, in the exporters' warning channel. */
|
|
35
|
+
warnings() {
|
|
36
|
+
if (this.requiredUnfilled === 0)
|
|
37
|
+
return [];
|
|
38
|
+
return [
|
|
39
|
+
`${this.requiredUnfilled} slot(s) keep $ where IFC4 requires a value and the source offers none ` +
|
|
40
|
+
'(the converter does not invent measures, labels, identifiers, references, flags or enums); ' +
|
|
41
|
+
'the file is not valid IFC4 (#5202).',
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Count every required slot of an already-converted `line` that holds `$`,
|
|
46
|
+
* and return the line unchanged. A line that does not parse, whose type IFC4
|
|
47
|
+
* gives no required slot, or whose ARITY is not IFC4's is not counted: its
|
|
48
|
+
* position `i` need not be attribute `i` (the same guard
|
|
49
|
+
* {@link Ifc2x3SlotFill} uses).
|
|
50
|
+
*/
|
|
51
|
+
apply(line) {
|
|
52
|
+
const open = line.indexOf('(');
|
|
53
|
+
const close = line.lastIndexOf(')');
|
|
54
|
+
const eq = line.indexOf('=');
|
|
55
|
+
if (eq < 0 || open <= eq || close <= open)
|
|
56
|
+
return line;
|
|
57
|
+
const row = BY_TYPE.get(line.slice(eq + 1, open).trim().toUpperCase());
|
|
58
|
+
if (row === undefined)
|
|
59
|
+
return line;
|
|
60
|
+
const values = splitTopLevelStepArguments(line.slice(open + 1, close));
|
|
61
|
+
if (values === null || values.length !== row.arity)
|
|
62
|
+
return line;
|
|
63
|
+
for (const [index] of row.slots) {
|
|
64
|
+
if (NULL_TOKEN.test(values[index]))
|
|
65
|
+
this.requiredUnfilled++;
|
|
66
|
+
}
|
|
67
|
+
return line;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=schema-converter-ifc4-slots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-converter-ifc4-slots.js","sourceRoot":"","sources":["../src/schema-converter-ifc4-slots.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oCAAoC,CAAC;AAEhG,qEAAqE;AACrE,MAAM,OAAO,GACX,IAAI,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvF,mEAAmE;AACnE,MAAM,UAAU,GAAG,sDAAsD,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,aAAa;IACxB,+EAA+E;IACvE,gBAAgB,GAAG,CAAC,CAAC;IAE7B,iFAAiF;IACjF,QAAQ;QACN,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3C,OAAO;YACL,GAAG,IAAI,CAAC,gBAAgB,yEAAyE;gBACjG,6FAA6F;gBAC7F,qCAAqC;SACtC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAY;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAChE,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -4,19 +4,14 @@
|
|
|
4
4
|
* Handles entity type renaming and attribute rewriting when converting
|
|
5
5
|
* between IFC schema versions (IFC2X3, IFC4, IFC4X3, IFC5).
|
|
6
6
|
*
|
|
7
|
-
* Key differences between schemas:
|
|
8
|
-
* - IFC2X3 → IFC4: IfcWallStandardCase → IfcWall (with PredefinedType),
|
|
9
|
-
* spatial hierarchy changes, removed/renamed entity types
|
|
10
|
-
* - IFC4 → IFC4X3: New facility types (bridge, road, railway, marine),
|
|
11
|
-
* IfcBuiltElement replaces IfcBuildingElement in some cases
|
|
12
|
-
* - IFC5: Alpha spec — STEP-based with different attribute ordering,
|
|
13
|
-
* entity names largely aligned with IFC4X3 but schema header is 'IFC5'
|
|
14
|
-
*
|
|
15
7
|
* This module works at the STEP text level: it rewrites entity type names
|
|
16
8
|
* and adjusts attribute counts via regex replacement on raw STEP lines.
|
|
17
9
|
*/
|
|
18
10
|
import { type RandomSource } from '@ifc-lite/encoding';
|
|
19
11
|
import { Ifc2x3SlotFill } from './schema-converter-ifc2x3-slots.js';
|
|
12
|
+
import type { Ifc4SlotCheck } from './schema-converter-ifc4-slots.js';
|
|
13
|
+
import type { EnumReconciliation } from './schema-converter-enums.js';
|
|
14
|
+
export { computeWithheldRefIds } from './schema-untranslatable.js';
|
|
20
15
|
export type IfcSchemaVersion = 'IFC2X3' | 'IFC4' | 'IFC4X3' | 'IFC5';
|
|
21
16
|
/**
|
|
22
17
|
* Convert an entity type name from one IFC schema version to another.
|
|
@@ -27,29 +22,56 @@ export type IfcSchemaVersion = 'IFC2X3' | 'IFC4' | 'IFC4X3' | 'IFC5';
|
|
|
27
22
|
* @returns The mapped entity type name, or the original if no mapping needed
|
|
28
23
|
*/
|
|
29
24
|
export declare function convertEntityType(entityType: string, fromSchema: IfcSchemaVersion, toSchema: IfcSchemaVersion): string;
|
|
25
|
+
export declare function attrNameTable(schema: IfcSchemaVersion): Map<string, readonly string[]> | null;
|
|
26
|
+
/**
|
|
27
|
+
* True when `shorter` is a STRICT prefix of `longer` by attribute name — i.e.
|
|
28
|
+
* the longer form only *appended* attributes to the shorter one. Both the
|
|
29
|
+
* trailing-`$` padding (upgrade) and the tail trim (downgrade) are only safe
|
|
30
|
+
* then; many entities insert/reorder attributes mid-list (e.g.
|
|
31
|
+
* IfcMaterialProperties, IfcApproval, IfcTask), where padding or trimming would
|
|
32
|
+
* shift values into the wrong slots.
|
|
33
|
+
*
|
|
34
|
+
* Callers pass the shorter schema's list first, whichever direction they run in.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isStrictAttrPrefix(shorter: readonly string[], longer: readonly string[]): boolean;
|
|
30
37
|
/**
|
|
31
38
|
* Convert a raw STEP entity line from one schema version to another.
|
|
32
39
|
*
|
|
33
|
-
* Handles:
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* PredefinedType IFC4 introduced on IfcWall/IfcBeam/IfcOpeningElement/…).
|
|
38
|
-
* 3. Skipping entities that have no valid representation in the target schema
|
|
40
|
+
* Handles: 1. entity type names; 2. attribute counts (trim for older schemas,
|
|
41
|
+
* pad trailing `$` for attributes a newer schema APPENDED, e.g. IFC4's
|
|
42
|
+
* PredefinedType on IfcWall); 3. entities with no target representation;
|
|
43
|
+
* 4. enum members the target lacks (`enums`, #5365).
|
|
39
44
|
*
|
|
40
45
|
* @param line - Raw STEP entity line (e.g., "#1=IFCWALL('guid',...);")
|
|
41
46
|
* @param fromSchema - Source schema version
|
|
42
47
|
* @param toSchema - Target schema version
|
|
43
|
-
* @param random - Optional seeded `RandomSource` for the GlobalId of any
|
|
44
|
-
*
|
|
45
|
-
* a seeded source when the caller needs byte-reproducible output.
|
|
48
|
+
* @param random - Optional seeded `RandomSource` for the GlobalId of any IFCPROXY
|
|
49
|
+
* placeholder minted here; pass one when output must be byte-reproducible.
|
|
46
50
|
* @param slots - This package's exporters pass one; it carries the owner
|
|
47
51
|
* history they reuse (#4686) and collects what they could not settle.
|
|
48
52
|
* Omitted, a throwaway stands in, so the generated table's own defaults are
|
|
49
53
|
* still written but the OwnerHistory reuse and both counts are lost.
|
|
50
|
-
* @
|
|
54
|
+
* @param ifc4Slots - Counts IFC4-required slots left `$` (IFC4X3/IFC5 → IFC4 only, #5202).
|
|
55
|
+
* @param enums - Resolves enum members the target lacks and reports losses (#5365).
|
|
56
|
+
* @param withheldRefIds - Express ids this export is OMITTING outright
|
|
57
|
+
* ({@link computeWithheldRefIds}, #4206) — a record whose attributes name
|
|
58
|
+
* one is redirected to the same "no representation" resolution as its own
|
|
59
|
+
* unmapped type would get, so it cannot ship a now-dangling `#N`.
|
|
60
|
+
* @returns Converted line (entities without valid target representation become
|
|
61
|
+
* IFCPROXY placeholders), or `null` when this record itself is one of the
|
|
62
|
+
* narrow set `resolveUnrepresentedEntity` can safely OMIT rather than throw
|
|
63
|
+
* for — the caller must not write a `null` result.
|
|
64
|
+
*/
|
|
65
|
+
export declare function convertStepLine(line: string, fromSchema: IfcSchemaVersion, toSchema: IfcSchemaVersion, random?: RandomSource, slots?: Ifc2x3SlotFill, withheldRefIds?: ReadonlySet<number>, ifc4Slots?: Ifc4SlotCheck, enums?: EnumReconciliation): string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Check if an entity type should be skipped for the target schema.
|
|
68
|
+
* Some IFC4X3 types (alignment, positioning) have no valid STEP representation
|
|
69
|
+
* in older schemas even as proxies.
|
|
70
|
+
*
|
|
71
|
+
* Alignment entities are valid in IFC4X3 and IFC5, so they are only skipped
|
|
72
|
+
* when targeting older schemas (IFC2X3, IFC4).
|
|
51
73
|
*/
|
|
52
|
-
export declare function
|
|
74
|
+
export declare function shouldSkipEntity(entityType: string, toSchema: IfcSchemaVersion): boolean;
|
|
53
75
|
/**
|
|
54
76
|
* Check if a conversion between two schema versions requires entity type changes.
|
|
55
77
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKxE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAgIrE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CAQR;AAiED,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAU7F;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAMjG;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,CAAC,EAAE,YAAY,EACrB,KAAK,CAAC,EAAE,cAAc,EACtB,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EACpC,SAAS,CAAC,EAAE,aAAa,EACzB,KAAK,CAAC,EAAE,kBAAkB,GACzB,MAAM,GAAG,IAAI,CAQf;AA4HD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAexF;AAkBD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CAqBR"}
|
package/dist/schema-converter.js
CHANGED
|
@@ -7,24 +7,17 @@
|
|
|
7
7
|
* Handles entity type renaming and attribute rewriting when converting
|
|
8
8
|
* between IFC schema versions (IFC2X3, IFC4, IFC4X3, IFC5).
|
|
9
9
|
*
|
|
10
|
-
* Key differences between schemas:
|
|
11
|
-
* - IFC2X3 → IFC4: IfcWallStandardCase → IfcWall (with PredefinedType),
|
|
12
|
-
* spatial hierarchy changes, removed/renamed entity types
|
|
13
|
-
* - IFC4 → IFC4X3: New facility types (bridge, road, railway, marine),
|
|
14
|
-
* IfcBuiltElement replaces IfcBuildingElement in some cases
|
|
15
|
-
* - IFC5: Alpha spec — STEP-based with different attribute ordering,
|
|
16
|
-
* entity names largely aligned with IFC4X3 but schema header is 'IFC5'
|
|
17
|
-
*
|
|
18
10
|
* This module works at the STEP text level: it rewrites entity type names
|
|
19
11
|
* and adjusts attribute counts via regex replacement on raw STEP lines.
|
|
20
12
|
*/
|
|
21
13
|
import { generateIfcGuid } from '@ifc-lite/encoding';
|
|
22
|
-
import { deterministicGlobalId } from '@ifc-lite/parser';
|
|
23
|
-
import { ENTITIES_IFC2X3, ENTITIES_IFC4, ENTITIES_IFC4X3 } from '@ifc-lite/data';
|
|
14
|
+
import { deterministicGlobalId, getSchemaRegistryForVersion } from '@ifc-lite/parser';
|
|
24
15
|
import { resolveUnrepresentedEntity } from './schema-untranslatable.js';
|
|
25
16
|
import { BY_NAME_ATTR_REMAP_TYPES, remapRenamedAttributesByName } from './schema-converter-attr-remap.js';
|
|
26
17
|
import { splitTopLevelStepArguments } from './step-argument-parser.js';
|
|
27
18
|
import { Ifc2x3SlotFill } from './schema-converter-ifc2x3-slots.js';
|
|
19
|
+
import { referencesAnyExpressId } from './step-ref-scan.js';
|
|
20
|
+
export { computeWithheldRefIds } from './schema-untranslatable.js';
|
|
28
21
|
/**
|
|
29
22
|
* Entity type name mappings between schema versions.
|
|
30
23
|
*
|
|
@@ -66,6 +59,26 @@ const IFC4_TO_IFC2X3 = new Map([
|
|
|
66
59
|
// (schema-converter-attr-remap.ts) also reconciles them by name.
|
|
67
60
|
['IFCDOORTYPE', 'IFCDOORSTYLE'],
|
|
68
61
|
['IFCWINDOWTYPE', 'IFCWINDOWSTYLE'],
|
|
62
|
+
// Structural analysis domain (#4206): IfcStructuralLoadCase, IfcStructuralCurveAction
|
|
63
|
+
// and IfcStructuralSurfaceAction are all IfcRoot subtypes with a real IFC2X3
|
|
64
|
+
// target under a DIFFERENT name. Left unmapped, `resolveUnrepresentedEntity`
|
|
65
|
+
// silently replaced every one with an IFCPROXY — losing the GlobalId, the
|
|
66
|
+
// applied load reference and the load/action classification even though
|
|
67
|
+
// IFC2X3 has a real (if differently shaped) target for each.
|
|
68
|
+
// IfcStructuralLoadCase(IFC4) has no IFC2X3 counterpart of its own name;
|
|
69
|
+
// IFC2X3 folds load cases into `IfcStructuralLoadGroup` with
|
|
70
|
+
// `PredefinedType=.LOAD_CASE.` and no `SelfWeightCoefficients` slot — a
|
|
71
|
+
// strict attribute-name prefix, so the trim path below reconciles it
|
|
72
|
+
// without help from `BY_NAME_ATTR_REMAP_TYPES`.
|
|
73
|
+
['IFCSTRUCTURALLOADCASE', 'IFCSTRUCTURALLOADGROUP'],
|
|
74
|
+
// IfcStructuralCurveAction/SurfaceAction(IFC4) rename to
|
|
75
|
+
// IfcStructuralLinearAction/PlanarAction(IFC2X3): both carry the same
|
|
76
|
+
// attributes through `GlobalOrLocal`/`DestabilizingLoad`, but IFC2X3 then
|
|
77
|
+
// inserts an optional `CausedBy` before `ProjectedOrTrue` where IFC4
|
|
78
|
+
// appends `PredefinedType` instead, so neither list is a positional prefix
|
|
79
|
+
// of the other — `BY_NAME_ATTR_REMAP_TYPES` reconciles both by name.
|
|
80
|
+
['IFCSTRUCTURALCURVEACTION', 'IFCSTRUCTURALLINEARACTION'],
|
|
81
|
+
['IFCSTRUCTURALSURFACEACTION', 'IFCSTRUCTURALPLANARACTION'],
|
|
69
82
|
// IFC4X3 spatial structure → IFC2X3 equivalents
|
|
70
83
|
['IFCFACILITY', 'IFCBUILDING'],
|
|
71
84
|
['IFCFACILITYPART', 'IFCBUILDINGSTOREY'],
|
|
@@ -193,26 +206,21 @@ function chainMaps(map1, map2) {
|
|
|
193
206
|
return result;
|
|
194
207
|
}
|
|
195
208
|
// Lazily-built UPPERCASE entity name → ordered positional attribute NAMES, per
|
|
196
|
-
// schema, from the
|
|
197
|
-
//
|
|
198
|
-
//
|
|
209
|
+
// schema, from the EXPRESS-derived registries: present iff the schema declares
|
|
210
|
+
// it. `@ifc-lite/data`'s C# tables put 24 IFC4X3-only entities (and `TagList`)
|
|
211
|
+
// under IFC4, which kept both the `IFCPROXY` route and the trim from firing
|
|
212
|
+
// (#5204). IFC5 has no EXPRESS registry: `null` skips count adjustment.
|
|
199
213
|
const ATTR_NAME_TABLES = new Map();
|
|
200
|
-
function attrNameTable(schema) {
|
|
214
|
+
export function attrNameTable(schema) {
|
|
201
215
|
let table = ATTR_NAME_TABLES.get(schema);
|
|
202
216
|
if (table)
|
|
203
217
|
return table;
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
entities = ENTITIES_IFC2X3;
|
|
207
|
-
else if (schema === 'IFC4')
|
|
208
|
-
entities = ENTITIES_IFC4;
|
|
209
|
-
else if (schema === 'IFC4X3')
|
|
210
|
-
entities = ENTITIES_IFC4X3;
|
|
211
|
-
else
|
|
212
|
-
return null; // IFC5 has no generated table — skip count adjustment
|
|
218
|
+
if (schema !== 'IFC2X3' && schema !== 'IFC4' && schema !== 'IFC4X3')
|
|
219
|
+
return null;
|
|
213
220
|
table = new Map();
|
|
214
|
-
for (const
|
|
215
|
-
table.set(
|
|
221
|
+
for (const [name, meta] of Object.entries(getSchemaRegistryForVersion(schema).entities)) {
|
|
222
|
+
table.set(name.toUpperCase(), (meta.allAttributes ?? meta.attributes).map((a) => a.name));
|
|
223
|
+
}
|
|
216
224
|
ATTR_NAME_TABLES.set(schema, table);
|
|
217
225
|
return table;
|
|
218
226
|
}
|
|
@@ -226,7 +234,7 @@ function attrNameTable(schema) {
|
|
|
226
234
|
*
|
|
227
235
|
* Callers pass the shorter schema's list first, whichever direction they run in.
|
|
228
236
|
*/
|
|
229
|
-
function isStrictAttrPrefix(shorter, longer) {
|
|
237
|
+
export function isStrictAttrPrefix(shorter, longer) {
|
|
230
238
|
if (shorter.length >= longer.length)
|
|
231
239
|
return false;
|
|
232
240
|
for (let i = 0; i < shorter.length; i++) {
|
|
@@ -246,34 +254,48 @@ function requireTopLevelAttributes(attrsRaw) {
|
|
|
246
254
|
/**
|
|
247
255
|
* Convert a raw STEP entity line from one schema version to another.
|
|
248
256
|
*
|
|
249
|
-
* Handles:
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
* PredefinedType IFC4 introduced on IfcWall/IfcBeam/IfcOpeningElement/…).
|
|
254
|
-
* 3. Skipping entities that have no valid representation in the target schema
|
|
257
|
+
* Handles: 1. entity type names; 2. attribute counts (trim for older schemas,
|
|
258
|
+
* pad trailing `$` for attributes a newer schema APPENDED, e.g. IFC4's
|
|
259
|
+
* PredefinedType on IfcWall); 3. entities with no target representation;
|
|
260
|
+
* 4. enum members the target lacks (`enums`, #5365).
|
|
255
261
|
*
|
|
256
262
|
* @param line - Raw STEP entity line (e.g., "#1=IFCWALL('guid',...);")
|
|
257
263
|
* @param fromSchema - Source schema version
|
|
258
264
|
* @param toSchema - Target schema version
|
|
259
|
-
* @param random - Optional seeded `RandomSource` for the GlobalId of any
|
|
260
|
-
*
|
|
261
|
-
* a seeded source when the caller needs byte-reproducible output.
|
|
265
|
+
* @param random - Optional seeded `RandomSource` for the GlobalId of any IFCPROXY
|
|
266
|
+
* placeholder minted here; pass one when output must be byte-reproducible.
|
|
262
267
|
* @param slots - This package's exporters pass one; it carries the owner
|
|
263
268
|
* history they reuse (#4686) and collects what they could not settle.
|
|
264
269
|
* Omitted, a throwaway stands in, so the generated table's own defaults are
|
|
265
270
|
* still written but the OwnerHistory reuse and both counts are lost.
|
|
266
|
-
* @
|
|
271
|
+
* @param ifc4Slots - Counts IFC4-required slots left `$` (IFC4X3/IFC5 → IFC4 only, #5202).
|
|
272
|
+
* @param enums - Resolves enum members the target lacks and reports losses (#5365).
|
|
273
|
+
* @param withheldRefIds - Express ids this export is OMITTING outright
|
|
274
|
+
* ({@link computeWithheldRefIds}, #4206) — a record whose attributes name
|
|
275
|
+
* one is redirected to the same "no representation" resolution as its own
|
|
276
|
+
* unmapped type would get, so it cannot ship a now-dangling `#N`.
|
|
277
|
+
* @returns Converted line (entities without valid target representation become
|
|
278
|
+
* IFCPROXY placeholders), or `null` when this record itself is one of the
|
|
279
|
+
* narrow set `resolveUnrepresentedEntity` can safely OMIT rather than throw
|
|
280
|
+
* for — the caller must not write a `null` result.
|
|
267
281
|
*/
|
|
268
|
-
export function convertStepLine(line, fromSchema, toSchema, random, slots) {
|
|
282
|
+
export function convertStepLine(line, fromSchema, toSchema, random, slots, withheldRefIds, ifc4Slots, enums) {
|
|
269
283
|
if (fromSchema === toSchema)
|
|
270
284
|
return line;
|
|
271
|
-
|
|
272
|
-
|
|
285
|
+
let converted = convertRecord(line, fromSchema, toSchema, random, withheldRefIds);
|
|
286
|
+
if (converted === null)
|
|
287
|
+
return null;
|
|
288
|
+
if (enums && toSchema !== 'IFC5')
|
|
289
|
+
converted = enums.apply(converted, toSchema);
|
|
290
|
+
if (toSchema === 'IFC2X3')
|
|
291
|
+
return (slots ?? new Ifc2x3SlotFill()).apply(converted);
|
|
292
|
+
if (toSchema === 'IFC4' && (fromSchema === 'IFC4X3' || fromSchema === 'IFC5'))
|
|
293
|
+
ifc4Slots?.apply(converted);
|
|
294
|
+
return converted;
|
|
273
295
|
}
|
|
274
296
|
/** {@link convertStepLine} before the IFC2X3 required-slot fills, between two
|
|
275
297
|
* different schemas. */
|
|
276
|
-
function convertRecord(line, fromSchema, toSchema, random) {
|
|
298
|
+
function convertRecord(line, fromSchema, toSchema, random, withheldRefIds) {
|
|
277
299
|
// Parse: #ID=TYPE(attrs); — tolerate whitespace around `=` and before the
|
|
278
300
|
// type (some exporters, e.g. Tekla, write `#34498= IFCOPENINGELEMENT(...)`).
|
|
279
301
|
// Without this those lines passed through unconverted, so neither type renames
|
|
@@ -290,6 +312,15 @@ function convertRecord(line, fromSchema, toSchema, random) {
|
|
|
290
312
|
requireTopLevelAttributes(attrsRaw);
|
|
291
313
|
// Convert entity type
|
|
292
314
|
const newType = convertEntityType(entityType, fromSchema, toSchema);
|
|
315
|
+
// A record whose attribute list references an id this export is OMITTING
|
|
316
|
+
// (`withheldRefIds`, #4206) cannot carry that reference forward, no matter
|
|
317
|
+
// how cleanly this record's OWN type would otherwise convert — a renamed
|
|
318
|
+
// record left pointing at a `#N` with no line is worse than an honest
|
|
319
|
+
// proxy. Checked before `shouldSkipEntity` and the attribute-table lookup
|
|
320
|
+
// below so it wins over both.
|
|
321
|
+
if (withheldRefIds && withheldRefIds.size > 0 && referencesAnyExpressId(attrsRaw, withheldRefIds)) {
|
|
322
|
+
return resolveUnrepresentedEntity(prefix, entityType, attrsRaw, toSchema, random, withheldRefIds !== undefined);
|
|
323
|
+
}
|
|
293
324
|
// Replace entities that have no valid representation in the target schema
|
|
294
325
|
// with IFCPROXY placeholders to preserve EXPRESS IDs and prevent dangling references
|
|
295
326
|
if (shouldSkipEntity(newType, toSchema)) {
|
|
@@ -352,7 +383,7 @@ function convertRecord(line, fromSchema, toSchema, random) {
|
|
|
352
383
|
// attribute mismatch, handled below) has no representation in `toSchema` at
|
|
353
384
|
// all — see `resolveUnrepresentedEntity` for why it can't just pass through.
|
|
354
385
|
if (srcAttrs && targetTable && !tgtAttrs) {
|
|
355
|
-
return resolveUnrepresentedEntity(prefix, entityType, attrsRaw, toSchema, random);
|
|
386
|
+
return resolveUnrepresentedEntity(prefix, entityType, attrsRaw, toSchema, random, withheldRefIds !== undefined);
|
|
356
387
|
}
|
|
357
388
|
if (srcAttrs && tgtAttrs) {
|
|
358
389
|
if (isStrictAttrPrefix(tgtAttrs, srcAttrs)) {
|
|
@@ -382,7 +413,7 @@ function convertRecord(line, fromSchema, toSchema, random) {
|
|
|
382
413
|
* Alignment entities are valid in IFC4X3 and IFC5, so they are only skipped
|
|
383
414
|
* when targeting older schemas (IFC2X3, IFC4).
|
|
384
415
|
*/
|
|
385
|
-
function shouldSkipEntity(entityType, toSchema) {
|
|
416
|
+
export function shouldSkipEntity(entityType, toSchema) {
|
|
386
417
|
// Alignment entities are native to IFC4X3 and IFC5 — preserve them
|
|
387
418
|
if (toSchema === 'IFC4X3' || toSchema === 'IFC5') {
|
|
388
419
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"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"}
|