@ifc-lite/export 4.9.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/affected-set.d.ts +9 -0
- package/dist/affected-set.d.ts.map +1 -0
- package/dist/affected-set.js +72 -0
- package/dist/affected-set.js.map +1 -0
- package/dist/anonymize-placement.d.ts +0 -34
- package/dist/anonymize-placement.d.ts.map +1 -1
- package/dist/anonymize-placement.js +58 -27
- package/dist/anonymize-placement.js.map +1 -1
- package/dist/declared-property-type.d.ts +7 -0
- package/dist/declared-property-type.d.ts.map +1 -1
- package/dist/declared-property-type.js +29 -2
- package/dist/declared-property-type.js.map +1 -1
- package/dist/edit-ownership.d.ts +7 -0
- package/dist/edit-ownership.d.ts.map +1 -0
- package/dist/edit-ownership.js +95 -0
- package/dist/edit-ownership.js.map +1 -0
- package/dist/effective-index.d.ts.map +1 -1
- package/dist/effective-index.js +12 -5
- package/dist/effective-index.js.map +1 -1
- package/dist/entity-subgraph.d.ts +11 -3
- package/dist/entity-subgraph.d.ts.map +1 -1
- package/dist/entity-subgraph.js +54 -11
- package/dist/entity-subgraph.js.map +1 -1
- package/dist/grid-placement-dependents.d.ts +4 -0
- package/dist/grid-placement-dependents.d.ts.map +1 -0
- package/dist/grid-placement-dependents.js +71 -0
- package/dist/grid-placement-dependents.js.map +1 -0
- package/dist/grid-reference-context.d.ts +6 -0
- package/dist/grid-reference-context.d.ts.map +1 -0
- package/dist/grid-reference-context.js +68 -0
- package/dist/grid-reference-context.js.map +1 -0
- package/dist/ifc5-exporter.d.ts.map +1 -1
- package/dist/ifc5-exporter.js +5 -4
- package/dist/ifc5-exporter.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/lod-geometry-types.d.ts +5 -0
- package/dist/lod-geometry-types.d.ts.map +1 -1
- package/dist/lod0-generator.d.ts.map +1 -1
- package/dist/lod0-generator.js +52 -18
- package/dist/lod0-generator.js.map +1 -1
- package/dist/lod1-generator.d.ts.map +1 -1
- package/dist/lod1-generator.js +4 -1
- package/dist/lod1-generator.js.map +1 -1
- package/dist/merged-empty-containers-refs.d.ts.map +1 -1
- package/dist/merged-empty-containers-refs.js +5 -3
- package/dist/merged-empty-containers-refs.js.map +1 -1
- package/dist/merged-exporter.d.ts.map +1 -1
- package/dist/merged-exporter.js +31 -31
- package/dist/merged-exporter.js.map +1 -1
- package/dist/merged-remap.d.ts +0 -8
- package/dist/merged-remap.d.ts.map +1 -1
- package/dist/merged-remap.js +7 -17
- package/dist/merged-remap.js.map +1 -1
- package/dist/obj.d.ts +8 -8
- package/dist/obj.js +8 -8
- package/dist/parquet-exporter.d.ts.map +1 -1
- package/dist/parquet-exporter.js +14 -2
- package/dist/parquet-exporter.js.map +1 -1
- package/dist/property-value-serialization.d.ts.map +1 -1
- package/dist/property-value-serialization.js +7 -3
- package/dist/property-value-serialization.js.map +1 -1
- package/dist/reference-collector.d.ts.map +1 -1
- package/dist/reference-collector.js +17 -16
- package/dist/reference-collector.js.map +1 -1
- package/dist/retype.d.ts.map +1 -1
- package/dist/retype.js +12 -11
- package/dist/retype.js.map +1 -1
- package/dist/schema-conversion-loss-report.d.ts +2 -1
- package/dist/schema-conversion-loss-report.d.ts.map +1 -1
- package/dist/schema-conversion-loss-report.js +20 -11
- package/dist/schema-conversion-loss-report.js.map +1 -1
- package/dist/schema-converter-mep.d.ts +2 -0
- package/dist/schema-converter-mep.d.ts.map +1 -0
- package/dist/schema-converter-mep.js +9 -0
- package/dist/schema-converter-mep.js.map +1 -0
- package/dist/schema-converter-mep.json +96 -0
- package/dist/schema-converter-product-proxy.d.ts +25 -0
- package/dist/schema-converter-product-proxy.d.ts.map +1 -0
- package/dist/schema-converter-product-proxy.js +33 -0
- package/dist/schema-converter-product-proxy.js.map +1 -0
- package/dist/schema-converter-renames.d.ts +32 -0
- package/dist/schema-converter-renames.d.ts.map +1 -0
- package/dist/schema-converter-renames.js +60 -0
- package/dist/schema-converter-renames.js.map +1 -0
- package/dist/schema-converter.d.ts +8 -16
- package/dist/schema-converter.d.ts.map +1 -1
- package/dist/schema-converter.js +44 -71
- package/dist/schema-converter.js.map +1 -1
- package/dist/schema-style-flatten.d.ts +82 -0
- package/dist/schema-style-flatten.d.ts.map +1 -0
- package/dist/schema-style-flatten.js +245 -0
- package/dist/schema-style-flatten.js.map +1 -0
- package/dist/step-argument-parser.d.ts +7 -2
- package/dist/step-argument-parser.d.ts.map +1 -1
- package/dist/step-argument-parser.js +69 -62
- package/dist/step-argument-parser.js.map +1 -1
- package/dist/step-attribute-mutations.d.ts.map +1 -1
- package/dist/step-attribute-mutations.js +21 -22
- package/dist/step-attribute-mutations.js.map +1 -1
- package/dist/step-coordinate-options.d.ts +8 -0
- package/dist/step-coordinate-options.d.ts.map +1 -1
- package/dist/step-export-contexts.d.ts +1 -1
- package/dist/step-export-contexts.d.ts.map +1 -1
- package/dist/step-export-contexts.js +4 -1
- package/dist/step-export-contexts.js.map +1 -1
- package/dist/step-export-types.d.ts +6 -0
- package/dist/step-export-types.d.ts.map +1 -1
- package/dist/step-export-types.js.map +1 -1
- package/dist/step-exporter.d.ts.map +1 -1
- package/dist/step-exporter.js +19 -19
- package/dist/step-exporter.js.map +1 -1
- package/dist/step-map-unit-normalization.d.ts +3 -5
- package/dist/step-map-unit-normalization.d.ts.map +1 -1
- package/dist/step-map-unit-normalization.js +12 -8
- package/dist/step-map-unit-normalization.js.map +1 -1
- package/dist/step-map-unit.d.ts +3 -78
- package/dist/step-map-unit.d.ts.map +1 -1
- package/dist/step-map-unit.js +33 -195
- package/dist/step-map-unit.js.map +1 -1
- package/dist/step-native-set-record.d.ts +6 -0
- package/dist/step-native-set-record.d.ts.map +1 -0
- package/dist/step-native-set-record.js +30 -0
- package/dist/step-native-set-record.js.map +1 -0
- package/dist/step-outer-args.d.ts +10 -0
- package/dist/step-outer-args.d.ts.map +1 -1
- package/dist/step-outer-args.js +29 -12
- package/dist/step-outer-args.js.map +1 -1
- package/dist/step-overlay-entities.d.ts +2 -0
- package/dist/step-overlay-entities.d.ts.map +1 -1
- package/dist/step-overlay-entities.js +43 -11
- 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 +4 -0
- package/dist/step-pass-builder.js.map +1 -1
- package/dist/step-property-set-collection.d.ts.map +1 -1
- package/dist/step-property-set-collection.js +24 -8
- package/dist/step-property-set-collection.js.map +1 -1
- package/dist/step-property-set-generators.d.ts +8 -2
- package/dist/step-property-set-generators.d.ts.map +1 -1
- package/dist/step-property-set-generators.js +26 -10
- package/dist/step-property-set-generators.js.map +1 -1
- package/dist/step-property-set-index.d.ts.map +1 -1
- package/dist/step-property-set-index.js +8 -3
- package/dist/step-property-set-index.js.map +1 -1
- package/dist/step-property-set-readers.d.ts +6 -0
- package/dist/step-property-set-readers.d.ts.map +1 -1
- package/dist/step-property-set-readers.js +68 -14
- package/dist/step-property-set-readers.js.map +1 -1
- package/dist/step-property-sets.d.ts +17 -4
- package/dist/step-property-sets.d.ts.map +1 -1
- package/dist/step-property-sets.js +79 -20
- package/dist/step-property-sets.js.map +1 -1
- package/dist/step-record-frame.d.ts +69 -0
- package/dist/step-record-frame.d.ts.map +1 -0
- package/dist/step-record-frame.js +136 -0
- package/dist/step-record-frame.js.map +1 -0
- package/dist/step-ref-scan.d.ts +8 -0
- package/dist/step-ref-scan.d.ts.map +1 -1
- package/dist/step-ref-scan.js +29 -8
- package/dist/step-ref-scan.js.map +1 -1
- package/dist/step-serialization.d.ts +16 -4
- package/dist/step-serialization.d.ts.map +1 -1
- package/dist/step-serialization.js +39 -13
- package/dist/step-serialization.js.map +1 -1
- package/dist/step-slot-grammar.d.ts +21 -18
- package/dist/step-slot-grammar.d.ts.map +1 -1
- package/dist/step-slot-grammar.js +210 -177
- package/dist/step-slot-grammar.js.map +1 -1
- 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 +27 -3
- package/dist/step-source-iteration.js.map +1 -1
- package/dist/step-type-owned-quantities.d.ts +34 -0
- package/dist/step-type-owned-quantities.d.ts.map +1 -0
- package/dist/step-type-owned-quantities.js +222 -0
- package/dist/step-type-owned-quantities.js.map +1 -0
- package/dist/step-vertical-datum-normalization.d.ts +17 -0
- package/dist/step-vertical-datum-normalization.d.ts.map +1 -0
- package/dist/step-vertical-datum-normalization.js +52 -0
- package/dist/step-vertical-datum-normalization.js.map +1 -0
- package/dist/unit-normalize.d.ts.map +1 -1
- package/dist/unit-normalize.js +13 -20
- package/dist/unit-normalize.js.map +1 -1
- package/dist/zero-content.d.ts +21 -3
- package/dist/zero-content.d.ts.map +1 -1
- package/dist/zero-content.js +35 -3
- package/dist/zero-content.js.map +1 -1
- package/package.json +11 -11
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
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
|
-
import { extractQuantitiesOnDemand } from '@ifc-lite/parser';
|
|
4
|
+
import { extractQuantitiesOnDemand, extractTypeEntityOwnQuantities } from '@ifc-lite/parser';
|
|
5
5
|
import { isTypeClass } from './type-owned-psets.js';
|
|
6
6
|
import { getPropertySetName, getTypeOwnedHasPropertySetIds, getElementQuantityName, } from './step-property-set-readers.js';
|
|
7
7
|
import { SharedSetDetachments, retainReusedSourceMembers, unmodifiedSourceMembers, } from './step-pset-copy-on-write.js';
|
|
8
|
+
import { collectTypeQuantitySources, projectTypeQuantityEdits } from './step-type-owned-quantities.js';
|
|
8
9
|
/**
|
|
9
10
|
* The store the extractor THIS class installed on a view currently reads
|
|
10
11
|
* (#2487). The extractor is installed once per view and closes over this box
|
|
@@ -209,7 +210,9 @@ export function collectPropertyAndQuantitySetMutations(pass, options, groups, ct
|
|
|
209
210
|
else if (!quantityView.hasQuantityBase()) {
|
|
210
211
|
const box = { store: ctx.dataStore };
|
|
211
212
|
exporterQuantityBase.set(quantityView, box);
|
|
212
|
-
|
|
213
|
+
// @raw-entity-enumeration-ok immutable SOURCE quantity-base dispatch; current Type ownership is resolved separately with the mutation view below
|
|
214
|
+
quantityView.setQuantityExtractor((id) => isTypeClass(box.store.entityIndex.byId.get(id)?.type)
|
|
215
|
+
? extractTypeEntityOwnQuantities(box.store, id) : extractQuantitiesOnDemand(box.store, id));
|
|
213
216
|
}
|
|
214
217
|
}
|
|
215
218
|
for (const [entityId, qsetNames] of entityQuantMutations) {
|
|
@@ -235,11 +238,17 @@ export function collectPropertyAndQuantitySetMutations(pass, options, groups, ct
|
|
|
235
238
|
if (!pass.isOverlayCreated(entityId) && pass.hasEmittableHostBytes(entityId)) {
|
|
236
239
|
pass.modifications.nominate(entityId, 'quantity-set');
|
|
237
240
|
}
|
|
238
|
-
const
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
const typeOwned = isTypeClass(pass.effective.typeOf(entityId));
|
|
242
|
+
const typeProjection = typeOwned
|
|
243
|
+
? projectTypeQuantityEdits(pass, ctx, entityId, qsetNames, relDefinesByEntity.get(entityId) ?? []) : undefined;
|
|
244
|
+
const allQsets = typeProjection?.qsets ?? mutationView.getQuantitiesForEntity(entityId);
|
|
245
|
+
let relevantQsets = allQsets.filter((qset) => qsetNames.has(qset.name));
|
|
246
|
+
const typeCopy = typeOwned
|
|
247
|
+
? collectTypeQuantitySources(pass, ctx, entityId, relevantQsets, qsetNames, detachments) : undefined;
|
|
248
|
+
if (typeCopy)
|
|
249
|
+
relevantQsets = typeCopy.qsets;
|
|
250
|
+
if (relevantQsets.length > 0)
|
|
251
|
+
pass.newQuantitySets.push({ entityId, qsets: relevantQsets, sourceSets: typeCopy?.sourceSets });
|
|
243
252
|
// The names this export is actually WRITING a replacement for. The
|
|
244
253
|
// affected-name set is not the same thing: it comes from the session's
|
|
245
254
|
// append-only mutation history, which keeps naming a quantity set after
|
|
@@ -256,7 +265,7 @@ export function collectPropertyAndQuantitySetMutations(pass, options, groups, ct
|
|
|
256
265
|
// Skip original quantity set entities (IfcElementQuantity).
|
|
257
266
|
// Same per-entity index lookup as the property branch above.
|
|
258
267
|
const rels = relDefinesByEntity.get(entityId);
|
|
259
|
-
if (rels) {
|
|
268
|
+
if (rels && !typeOwned) {
|
|
260
269
|
for (const { relId, psetId: relatedPsetId } of rels) {
|
|
261
270
|
const qsetName = getElementQuantityName(ctx, relatedPsetId);
|
|
262
271
|
const deleted = qsetName !== null
|
|
@@ -303,5 +312,12 @@ export function collectPropertyAndQuantitySetMutations(pass, options, groups, ct
|
|
|
303
312
|
// known which of them still relate somebody else.
|
|
304
313
|
detachments.settle(pass, ctx, { relatedByRel, relDefinesByEntity });
|
|
305
314
|
retainReusedSourceMembers(pass);
|
|
315
|
+
// The native type copy may retain opaque members absent from the numeric projection.
|
|
316
|
+
for (const { sourceSets } of pass.newQuantitySets) {
|
|
317
|
+
for (const source of sourceSets ?? []) {
|
|
318
|
+
for (const id of source?.members ?? [])
|
|
319
|
+
pass.skipPropertySetIds.delete(id);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
306
322
|
}
|
|
307
323
|
//# sourceMappingURL=step-property-set-collection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-set-collection.js","sourceRoot":"","sources":["../src/step-property-set-collection.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAY/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"step-property-set-collection.js","sourceRoot":"","sources":["../src/step-property-set-collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PropertySet, QuantitySet } from '@ifc-lite/data';
|
|
1
|
+
import type { PropertySet, QuantitySet, Quantity } from '@ifc-lite/data';
|
|
2
2
|
import type { RandomSource } from '@ifc-lite/encoding';
|
|
3
3
|
import type { EffectiveEntityIndex } from './effective-index.js';
|
|
4
4
|
import { type PropertySetContext } from './step-property-set-readers.js';
|
|
@@ -10,11 +10,17 @@ export declare function generatePropertySetEntities(ctx: PropertySetContext, ent
|
|
|
10
10
|
count: number;
|
|
11
11
|
generatedTypeOwnedPsetIds: Map<string, number>;
|
|
12
12
|
};
|
|
13
|
+
/** Canonical scalar quantity serialization shared by ordinary and type-owned writers. */
|
|
14
|
+
export declare function generateQuantityAtom(ctx: PropertySetContext, q: Quantity, effective: EffectiveEntityIndex, requireExplicitUnitReference?: boolean): {
|
|
15
|
+
id: number;
|
|
16
|
+
line: string;
|
|
17
|
+
};
|
|
13
18
|
/**
|
|
14
19
|
* Generate STEP entities for quantity sets (IfcElementQuantity)
|
|
15
20
|
*/
|
|
16
|
-
export declare function generateQuantitySetEntities(ctx: PropertySetContext, entityId: number, qsets: QuantitySet[], willBeEmitted: (id: number) => boolean, effective: EffectiveEntityIndex, random?: RandomSource): {
|
|
21
|
+
export declare function generateQuantitySetEntities(ctx: PropertySetContext, entityId: number, qsets: QuantitySet[], willBeEmitted: (id: number) => boolean, effective: EffectiveEntityIndex, random?: RandomSource, typeOwned?: boolean): {
|
|
17
22
|
lines: string[];
|
|
18
23
|
count: number;
|
|
24
|
+
generatedSetIds: number[];
|
|
19
25
|
};
|
|
20
26
|
//# sourceMappingURL=step-property-set-generators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-set-generators.d.ts","sourceRoot":"","sources":["../src/step-property-set-generators.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"step-property-set-generators.d.ts","sourceRoot":"","sources":["../src/step-property-set-generators.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAAE,EACpB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EACtC,SAAS,EAAE,oBAAoB,EAC/B,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAChC,MAAM,CAAC,EAAE,YAAY,EACrB,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAChE,wBAAwB,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAuB,GAChE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAoFpF;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,EACrE,4BAA4B,UAAQ,GACnC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAc9B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAAE,EACpB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EACtC,SAAS,EAAE,oBAAoB,EAC/B,MAAM,CAAC,EAAE,YAAY,EACrB,SAAS,UAAQ,GAChB;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,CAyC/D"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* (`pass.newPropertySets` / `pass.newQuantitySets`) is fed through. Split
|
|
8
8
|
* out of `step-property-sets.ts` (#3184).
|
|
9
9
|
*/
|
|
10
|
-
import { serializeValue, ref } from '@ifc-lite/parser';
|
|
10
|
+
import { serializeValue, ref, getAttributeNamesForSchema } from '@ifc-lite/parser';
|
|
11
11
|
import { escapeStepString, toStepReal, quantityTypeToIfcType } from './step-serialization.js';
|
|
12
12
|
import { serializeNominalValue } from './declared-property-type.js';
|
|
13
13
|
import { findUnitId, generateGlobalId, resolveOwnerHistoryRef, } from './step-property-set-readers.js';
|
|
@@ -91,11 +91,28 @@ export function generatePropertySetEntities(ctx, entityId, psets, willBeEmitted,
|
|
|
91
91
|
}
|
|
92
92
|
return { lines, count, generatedTypeOwnedPsetIds };
|
|
93
93
|
}
|
|
94
|
+
/** Canonical scalar quantity serialization shared by ordinary and type-owned writers. */
|
|
95
|
+
export function generateQuantityAtom(ctx, q, effective, requireExplicitUnitReference = false) {
|
|
96
|
+
const ifcType = quantityTypeToIfcType(q.type);
|
|
97
|
+
// Type-owned writer admission must not silently reinterpret explicit intent (#7355).
|
|
98
|
+
// Ordinary occurrence serialization keeps its existing API contract.
|
|
99
|
+
const unitId = q.unit !== undefined && ifcType === 'IFCQUANTITYLENGTH'
|
|
100
|
+
? findUnitId(ctx, q.unit, effective) : null;
|
|
101
|
+
if (requireExplicitUnitReference && q.unit !== undefined && unitId === null) {
|
|
102
|
+
throw new Error(`Quantity ${q.name} explicit unit cannot resolve a native reference`);
|
|
103
|
+
}
|
|
104
|
+
const id = ctx.allocateExpressId();
|
|
105
|
+
const unit = unitId !== null ? serializeValue(ref(unitId)) : '$';
|
|
106
|
+
const formula = getAttributeNamesForSchema(ifcType, ctx.dataStore.schemaVersion).includes('Formula') ? ',$' : '';
|
|
107
|
+
const line = `#${id}=${ifcType}('${escapeStepString(q.name)}',$,${unit},${toStepReal(q.value)}${formula});`;
|
|
108
|
+
return { id, line };
|
|
109
|
+
}
|
|
94
110
|
/**
|
|
95
111
|
* Generate STEP entities for quantity sets (IfcElementQuantity)
|
|
96
112
|
*/
|
|
97
|
-
export function generateQuantitySetEntities(ctx, entityId, qsets, willBeEmitted, effective, random) {
|
|
113
|
+
export function generateQuantitySetEntities(ctx, entityId, qsets, willBeEmitted, effective, random, typeOwned = false) {
|
|
98
114
|
const lines = [];
|
|
115
|
+
const generatedSetIds = [];
|
|
99
116
|
let count = 0;
|
|
100
117
|
const ownerHistoryRef = resolveOwnerHistoryRef(ctx, entityId, willBeEmitted, effective);
|
|
101
118
|
for (const qset of qsets) {
|
|
@@ -105,14 +122,10 @@ export function generateQuantitySetEntities(ctx, entityId, qsets, willBeEmitted,
|
|
|
105
122
|
continue;
|
|
106
123
|
const quantityIds = [];
|
|
107
124
|
for (const q of qset.quantities) {
|
|
108
|
-
const
|
|
125
|
+
const atom = generateQuantityAtom(ctx, q, effective, typeOwned);
|
|
126
|
+
lines.push(atom.line);
|
|
127
|
+
quantityIds.push(atom.id);
|
|
109
128
|
count++;
|
|
110
|
-
const ifcType = quantityTypeToIfcType(q.type);
|
|
111
|
-
// #ID=IFCQUANTITYLENGTH('Name',$,$,Value,$);
|
|
112
|
-
const val = toStepReal(q.value);
|
|
113
|
-
const line = `#${qId}=${ifcType}('${escapeStepString(q.name)}',$,$,${val},$);`;
|
|
114
|
-
lines.push(line);
|
|
115
|
-
quantityIds.push(qId);
|
|
116
129
|
}
|
|
117
130
|
// Create IfcElementQuantity
|
|
118
131
|
const qsetId = ctx.allocateExpressId();
|
|
@@ -122,6 +135,9 @@ export function generateQuantitySetEntities(ctx, entityId, qsets, willBeEmitted,
|
|
|
122
135
|
// #ID=IFCELEMENTQUANTITY('GlobalId',#ownerHistory,'Name',$,$,(#quants));
|
|
123
136
|
const qsetLine = `#${qsetId}=IFCELEMENTQUANTITY('${globalId}',${ownerHistoryRef},'${escapeStepString(qset.name)}',$,$,(${quantRefs}));`;
|
|
124
137
|
lines.push(qsetLine);
|
|
138
|
+
generatedSetIds.push(qsetId);
|
|
139
|
+
if (typeOwned)
|
|
140
|
+
continue;
|
|
125
141
|
// Create IfcRelDefinesByProperties to link qset to entity
|
|
126
142
|
const relId = ctx.allocateExpressId();
|
|
127
143
|
count++;
|
|
@@ -129,6 +145,6 @@ export function generateQuantitySetEntities(ctx, entityId, qsets, willBeEmitted,
|
|
|
129
145
|
const relLine = `#${relId}=IFCRELDEFINESBYPROPERTIES('${relGlobalId}',${ownerHistoryRef},$,$,(#${entityId}),#${qsetId});`;
|
|
130
146
|
lines.push(relLine);
|
|
131
147
|
}
|
|
132
|
-
return { lines, count };
|
|
148
|
+
return { lines, count, generatedSetIds };
|
|
133
149
|
}
|
|
134
150
|
//# sourceMappingURL=step-property-set-generators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-set-generators.js","sourceRoot":"","sources":["../src/step-property-set-generators.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"step-property-set-generators.js","sourceRoot":"","sources":["../src/step-property-set-generators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-set-index.d.ts","sourceRoot":"","sources":["../src/step-property-set-index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"step-property-set-index.d.ts","sourceRoot":"","sources":["../src/step-property-set-index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,oBAAoB,GAAG;IAC1G,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAChE,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACrC,CAoBA"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { resolveEffectiveEntityRecord } from '@ifc-lite/parser';
|
|
12
12
|
import { authoredEntityRefs } from './effective-index.js';
|
|
13
13
|
import { entityLineText } from './step-property-set-readers.js';
|
|
14
|
+
import { frameArgs, stepRecordFrame } from './step-record-frame.js';
|
|
14
15
|
/**
|
|
15
16
|
* Build a one-shot reverse index of every effective IfcRelDefinesByProperties:
|
|
16
17
|
* for each related entity, list the rels and property/quantity
|
|
@@ -89,7 +90,10 @@ function getRelatedEntities(ctx, relId) {
|
|
|
89
90
|
// `[^)]`: the list must not open inside the match, or it starts at the
|
|
90
91
|
// record's own `(` and a set OwnerHistory (`#5`) is read as a related
|
|
91
92
|
// object, which kept an unshared set alive as an orphan (#5794).
|
|
92
|
-
|
|
93
|
+
// Anchored at the record's own close (`stepRecordFrame`, #7682), so trivia
|
|
94
|
+
// between its `)` and `;` does not hide the relation.
|
|
95
|
+
const frame = stepRecordFrame(entityText);
|
|
96
|
+
const match = frame === null ? null : frameArgs(entityText, frame).match(/\(([^()]+)\)\s*,\s*#(\d+)\s*$/);
|
|
93
97
|
if (!match)
|
|
94
98
|
return [];
|
|
95
99
|
const objectsList = match[1];
|
|
@@ -107,8 +111,9 @@ function getRelatedPropertySet(ctx, relId) {
|
|
|
107
111
|
const entityText = entityLineText(ctx, relId);
|
|
108
112
|
if (entityText === null)
|
|
109
113
|
return null;
|
|
110
|
-
// Last #ID before the
|
|
111
|
-
const
|
|
114
|
+
// Last #ID before the record's own close (`stepRecordFrame`, #7682).
|
|
115
|
+
const frame = stepRecordFrame(entityText);
|
|
116
|
+
const match = frame === null ? null : frameArgs(entityText, frame).match(/,\s*#(\d+)\s*$/);
|
|
112
117
|
if (!match)
|
|
113
118
|
return null;
|
|
114
119
|
return parseInt(match[1], 10);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-set-index.js","sourceRoot":"","sources":["../src/step-property-set-index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;GAMG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAA6B,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"step-property-set-index.js","sourceRoot":"","sources":["../src/step-property-set-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,12 @@ import type { SourceLineMutations } from './step-exporter.js';
|
|
|
28
28
|
* neither of which has a pass in hand. Both readers are built by
|
|
29
29
|
* `createSourceRefReader` over the same `dataStore.source`.
|
|
30
30
|
*/
|
|
31
|
+
/**
|
|
32
|
+
* `allocateExpressId`'s bound (#7682, EXPORT-STEP-9): an id past `u32::MAX` is
|
|
33
|
+
* one no ifc-lite reader can hold, so allocating it refuses the export, as the
|
|
34
|
+
* Rust writer does, rather than write a record that cannot be read back.
|
|
35
|
+
*/
|
|
36
|
+
export declare function allocatedExpressId(id: number): number;
|
|
31
37
|
export interface PropertySetContext {
|
|
32
38
|
readonly dataStore: IfcDataStore;
|
|
33
39
|
readonly entityExtractor: EntityExtractor | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-set-readers.d.ts","sourceRoot":"","sources":["../src/step-property-set-readers.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAqB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"step-property-set-readers.d.ts","sourceRoot":"","sources":["../src/step-property-set-readers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
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
|
-
import { generateIfcGuid } from '@ifc-lite/encoding';
|
|
4
|
+
import { generateIfcGuid, stepStringLiteralEnd } from '@ifc-lite/encoding';
|
|
5
5
|
import { decodeRange } from './source-ref-bounds.js';
|
|
6
6
|
import { findLengthUnitReference, normalizeMapUnitName } from './step-map-unit.js';
|
|
7
7
|
import { authoredEntityRefs } from './effective-index.js';
|
|
8
8
|
import { HAS_PROPERTY_SETS_SLOT } from './type-owned-psets.js';
|
|
9
9
|
import { firstWrittenOwnerHistoryRef } from './schema-converter-owner-history.js';
|
|
10
|
+
import { nativeSetLine, decodeNativeSetLine } from './step-native-set-record.js';
|
|
11
|
+
import { frameArgs, stepRecordFrame, stepRecordHead } from './step-record-frame.js';
|
|
12
|
+
/**
|
|
13
|
+
* The exporter state these phases cannot read off the {@link ExportPass}.
|
|
14
|
+
*
|
|
15
|
+
* `isReadableSourceRef` is the exporter's OWN reader rather than the pass's:
|
|
16
|
+
* the byte readers below are also reached from
|
|
17
|
+
* {@link buildRelDefinesByPropertiesIndex} and from `retainSharedAtoms`,
|
|
18
|
+
* neither of which has a pass in hand. Both readers are built by
|
|
19
|
+
* `createSourceRefReader` over the same `dataStore.source`.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* `allocateExpressId`'s bound (#7682, EXPORT-STEP-9): an id past `u32::MAX` is
|
|
23
|
+
* one no ifc-lite reader can hold, so allocating it refuses the export, as the
|
|
24
|
+
* Rust writer does, rather than write a record that cannot be read back.
|
|
25
|
+
*/
|
|
26
|
+
export function allocatedExpressId(id) {
|
|
27
|
+
if (id > 0xffffffff)
|
|
28
|
+
throw new RangeError(`express id ${id} cannot be allocated: the file has spent the id space`);
|
|
29
|
+
return id;
|
|
30
|
+
}
|
|
10
31
|
/** `OwnerHistory` is slot 1 on every `IfcRoot` subtype, all schemas. */
|
|
11
32
|
const OWNER_HISTORY_SLOT = 1;
|
|
12
33
|
/**
|
|
@@ -79,10 +100,22 @@ export function getPropertySetName(ctx, psetId) {
|
|
|
79
100
|
if (entityText === null)
|
|
80
101
|
return null;
|
|
81
102
|
// Parse: IFCPROPERTYSET('guid',$,'Name',$,...) - Name is 3rd argument
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
return rawThirdLiteral(entityText, /IFCPROPERTYSET\s*\([^,]*,[^,]*,'/gi);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The raw text of the literal opening where `prefix` (global, ending at the
|
|
107
|
+
* opening `'`) first matches with a literal that closes. Read whole by the
|
|
108
|
+
* shared rule, so `''` and a `\S\'` PAGE operand do not cut the name short
|
|
109
|
+
* (#7589).
|
|
110
|
+
*/
|
|
111
|
+
function rawThirdLiteral(entityText, prefix) {
|
|
112
|
+
for (const match of entityText.matchAll(prefix)) {
|
|
113
|
+
const open = match.index + match[0].length - 1;
|
|
114
|
+
const end = stepStringLiteralEnd(entityText, open);
|
|
115
|
+
if (end !== -1)
|
|
116
|
+
return entityText.slice(open + 1, end - 1);
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
86
119
|
}
|
|
87
120
|
/**
|
|
88
121
|
* Get the name of an element quantity set by parsing the entity
|
|
@@ -92,10 +125,7 @@ export function getElementQuantityName(ctx, entityId) {
|
|
|
92
125
|
if (entityText === null)
|
|
93
126
|
return null;
|
|
94
127
|
// Parse: IFCELEMENTQUANTITY('guid',$,'Name',...) - Name is 3rd argument
|
|
95
|
-
|
|
96
|
-
if (!match)
|
|
97
|
-
return null;
|
|
98
|
-
return match[1];
|
|
128
|
+
return rawThirdLiteral(entityText, /IFCELEMENTQUANTITY\s*\([^,]*,[^,]*,'/gi);
|
|
99
129
|
}
|
|
100
130
|
/**
|
|
101
131
|
* Get IDs of properties in a property set
|
|
@@ -104,8 +134,10 @@ export function getPropertyIdsInSet(ctx, psetId) {
|
|
|
104
134
|
const entityText = entityLineText(ctx, psetId);
|
|
105
135
|
if (entityText === null)
|
|
106
136
|
return [];
|
|
107
|
-
// Parse: IFCPROPERTYSET(...,(#prop1,#prop2,...)); - Last argument is properties
|
|
108
|
-
|
|
137
|
+
// Parse: IFCPROPERTYSET(...,(#prop1,#prop2,...)); - Last argument is properties
|
|
138
|
+
// list, read up to the record's own close (`stepRecordFrame`, #7682).
|
|
139
|
+
const frame = stepRecordFrame(entityText);
|
|
140
|
+
const match = frame === null ? null : frameArgs(entityText, frame).match(/\(\s*(#[^)]+)\s*\)\s*$/);
|
|
109
141
|
if (!match)
|
|
110
142
|
return [];
|
|
111
143
|
const propsList = match[1];
|
|
@@ -128,6 +160,20 @@ export function getPropertyIdsInSet(ctx, psetId) {
|
|
|
128
160
|
* relation instead (#2012).
|
|
129
161
|
*/
|
|
130
162
|
export function getTypeOwnedHasPropertySetIds(ctx, entityId, effective) {
|
|
163
|
+
const named = ctx.mutationView?.getAttributeMutationsForEntity?.(entityId) ?? [];
|
|
164
|
+
const positional = ctx.mutationView?.getPositionalMutationsForEntity?.(entityId);
|
|
165
|
+
if (named.some(mutation => mutation.name === 'HasPropertySets') || positional?.has(HAS_PROPERTY_SETS_SLOT)) {
|
|
166
|
+
const schema = ctx.dataStore.schemaVersion;
|
|
167
|
+
const sourceSchema = schema === 'IFC2X3' || schema === 'IFC4X3' || schema === 'IFC5' ? schema : 'IFC4';
|
|
168
|
+
const line = nativeSetLine(ctx, entityId, sourceSchema, new Map(named.map(mutation => [mutation.name, mutation.value])));
|
|
169
|
+
const ids = decodeNativeSetLine(line, entityId).attributes[HAS_PROPERTY_SETS_SLOT];
|
|
170
|
+
if (ids === null)
|
|
171
|
+
return [];
|
|
172
|
+
if (!Array.isArray(ids) || ids.some(id => typeof id !== 'number' || !Number.isSafeInteger(id) || id <= 0)) {
|
|
173
|
+
throw new Error('Current native HasPropertySets references are unreadable');
|
|
174
|
+
}
|
|
175
|
+
return ids.filter((id) => typeof id === 'number');
|
|
176
|
+
}
|
|
131
177
|
if (effective.isOverlayCreated(entityId)) {
|
|
132
178
|
const authored = ctx.mutationView?.getNewEntity(entityId)?.attributes?.[HAS_PROPERTY_SETS_SLOT];
|
|
133
179
|
return authoredEntityRefs(overlaySlotValue(ctx, entityId, HAS_PROPERTY_SETS_SLOT, authored));
|
|
@@ -194,9 +240,17 @@ function getOwnerHistoryRefOfEntity(ctx, entityId) {
|
|
|
194
240
|
// but the gates in this file agree on one predicate now.
|
|
195
241
|
if (entityRef && ctx.isReadableSourceRef(entityRef)) {
|
|
196
242
|
const entityText = decodeRange(ctx.dataStore.source, entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength);
|
|
197
|
-
// #ID=IFCWALL('GlobalId',#owner,...): GlobalId is a quoted STEP string
|
|
198
|
-
//
|
|
199
|
-
|
|
243
|
+
// #ID=IFCWALL('GlobalId',#owner,...): GlobalId is a quoted STEP string,
|
|
244
|
+
// read to its end by the shared rule (#7589); OwnerHistory follows it.
|
|
245
|
+
// The record's head (`stepRecordHead`, #7682), an `IFC\w+` type, then the literal.
|
|
246
|
+
const head = stepRecordHead(entityText);
|
|
247
|
+
const quote = head !== null && /^IFC\w+$/i.test(entityText.slice(head.typeStart, head.typeEnd))
|
|
248
|
+
? /^\s*'/.exec(entityText.slice(head.open + 1))
|
|
249
|
+
: null;
|
|
250
|
+
const end = head !== null && quote !== null
|
|
251
|
+
? stepStringLiteralEnd(entityText, head.open + quote[0].length)
|
|
252
|
+
: -1;
|
|
253
|
+
const match = end === -1 ? null : /^\s*,\s*#(\d+)/.exec(entityText.slice(end));
|
|
200
254
|
if (match)
|
|
201
255
|
result = `#${match[1]}`;
|
|
202
256
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-set-readers.js","sourceRoot":"","sources":["../src/step-property-set-readers.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmB/D,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"step-property-set-readers.js","sourceRoot":"","sources":["../src/step-property-set-readers.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmB/D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAyB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAA6B,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGpF;;;;;;;;GAQG;AACH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,IAAI,EAAE,GAAG,UAAU;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,uDAAuD,CAAC,CAAC;IACnH,OAAO,EAAE,CAAC;AACZ,CAAC;AAqCD,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAuB,EAAE,QAAgB;IACtE,4IAA4I;IAC5I,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,WAAW,CAChB,GAAG,CAAC,SAAS,CAAC,MAAM,EACpB,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAuB,EAAE,MAAc;IACxE,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAErC,sEAAsE;IACtE,OAAO,eAAe,CAAC,UAAU,EAAE,oCAAoC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,UAAkB,EAAE,MAAc;IACzD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAuB,EAAE,QAAgB;IAC9E,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAErC,wEAAwE;IACxE,OAAO,eAAe,CAAC,UAAU,EAAE,wCAAwC,CAAC,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAuB,EAAE,MAAc;IACzE,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEnC,gFAAgF;IAChF,sEAAsE;IACtE,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACnG,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,6BAA6B,CAAC,GAAuB,EAAE,QAAgB,EAAE,SAA+B;IACtH,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,8BAA8B,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjF,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,EAAE,+BAA+B,EAAE,CAAC,QAAQ,CAAC,CAAC;IACjF,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,UAAU,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC3G,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACvG,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzH,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QACnF,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1G,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAChG,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IACpC,2HAA2H;IAC3H,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC,sBAAsB,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/C,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CACvB,GAAuB,EACvB,QAAgB,EAChB,IAAY,EACZ,QAAuC;IAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,0EAA0E;IAC1E,+DAA+D;IAC/D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAS,0BAA0B,CAAC,GAAuB,EAAE,QAAgB;IAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,+CAA+C;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,kBAAkB,CAC7B,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAC5F,CAAC;QACF,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,uIAAuI;IACvI,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/D,0EAA0E;IAC1E,2EAA2E;IAC3E,yDAAyD;IACzD,IAAI,SAAS,IAAI,GAAG,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,WAAW,CAC5B,GAAG,CAAC,SAAS,CAAC,MAAM,EACpB,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAC5C,CAAC;QACF,wEAAwE;QACxE,uEAAuE;QACvE,mFAAmF;QACnF,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7F,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;YACzC,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/D,CAAC,CAAC,CAAC,CAAC,CAAC;QACP,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/E,IAAI,KAAK;YAAE,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAuB,EAAE,YAAoB,EAAE,aAAsC,EAAE,SAA+B;IAC3J,MAAM,GAAG,GAAG,0BAA0B,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,GAAG,KAAK,IAAI,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC;QAAE,OAAO,GAAG,CAAC;IAC5G,OAAO,8BAA8B,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC;AAC9E,CAAC;AAED;oEACoE;AACpE,SAAS,qBAAqB,CAAC,EAAU,EAAE,aAAsC,EAAE,SAA+B;IAChH,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,iBAAiB,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,GAAuB,EAAE,aAAsC,EAAE,SAA+B;IAC7I,IAAI,GAAG,CAAC,YAAY,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/C,0EAA0E;QAC1E,yEAAyE;QACzE,0BAA0B;QAC1B,+IAA+I;QAC/I,GAAG,CAAC,YAAY,CAAC,WAAW,GAAG,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACtL,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAuB,EAAE,QAAgB,EAAE,SAA+B;IACnG,OAAO,uBAAuB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;AAChJ,CAAC"}
|
|
@@ -5,10 +5,23 @@ import type { ExportPass, StepExportOptions } from './step-exporter.js';
|
|
|
5
5
|
* `pass.entities`, and point every affected type object's `HasPropertySets` at
|
|
6
6
|
* the property sets this export just generated.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* the
|
|
10
|
-
*
|
|
11
|
-
* only after the quantity-set loop has run.
|
|
8
|
+
* Property and quantity generation both precede the shared type-object rewrite:
|
|
9
|
+
* HasPropertySets must name the replacement IDs from both generators (#7355).
|
|
10
|
+
* The caller flushes rewrittenEntityLines only after this function returns.
|
|
12
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* The one emit path for every record this export APPENDS after the source
|
|
14
|
+
* pass: generated property and quantity sets, the type-object lines whose
|
|
15
|
+
* `HasPropertySets` is repointed, and the georeferencing records (#7682,
|
|
16
|
+
* EXPORT-STEP-3). Each is written in the SOURCE schema's layout, so when the
|
|
17
|
+
* export converts it goes through `convertStepLine` exactly as a source
|
|
18
|
+
* record does: renamed (`IFCDOORTYPE` to `IFCDOORSTYLE`), re-laid-out (a
|
|
19
|
+
* quantity's `Formula` trimmed for IFC2X3, #7378), and through the IFC2X3
|
|
20
|
+
* slot fill and its counters. It used to run for generated quantities only,
|
|
21
|
+
* so the others reached an IFC2X3 file in IFC4 shape. The Rust writer's
|
|
22
|
+
* `write_line` is the twin. A record the target cannot represent is a refusal
|
|
23
|
+
* here, never an omission: other appended records name it.
|
|
24
|
+
*/
|
|
25
|
+
export declare function convertAppendedLines(pass: ExportPass, options: StepExportOptions, lines: readonly string[]): string[];
|
|
13
26
|
export declare function generatePropertyAndQuantitySetEntities(pass: ExportPass, options: StepExportOptions, ctx: PropertySetContext): void;
|
|
14
27
|
//# sourceMappingURL=step-property-sets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-property-sets.d.ts","sourceRoot":"","sources":["../src/step-property-sets.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,UAAU,EAAuB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"step-property-sets.d.ts","sourceRoot":"","sources":["../src/step-property-sets.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,UAAU,EAAuB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAM7F;;;;;;;;GAQG;AACH;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQrH;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,kBAAkB,GACtB,IAAI,CAsNN"}
|