@bldrs-ai/conway 1.502.1421 → 1.509.1435
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/compiled/Dist/ConwayGeomWasmNode.js +0 -0
- package/compiled/Dist/ConwayGeomWasmNodeMT.js +0 -0
- package/compiled/Dist/ConwayGeomWasmWeb.js +0 -0
- package/compiled/Dist/ConwayGeomWasmWebMT.js +1 -1
- package/compiled/Dist/ConwayGeomWasmWebMT.wasm +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNode.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNodeMT.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWeb.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.js +1 -1
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.wasm +0 -0
- package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts +19 -0
- package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts.map +1 -1
- package/compiled/dependencies/conway-geom/interface/conway_geometry.js +17 -0
- package/compiled/examples/browser-bundled.cjs +132 -21
- package/compiled/examples/cli-bundled.cjs +189 -57
- package/compiled/examples/cli-step-bundled.cjs +156 -28
- package/compiled/examples/validator-bundled.cjs +132 -21
- package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/coordination_export_order.test.js +110 -0
- package/compiled/src/compat/web-ifc/coordination_f64.d.ts +60 -1
- package/compiled/src/compat/web-ifc/coordination_f64.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/coordination_f64.js +103 -8
- package/compiled/src/compat/web-ifc/coordination_f64.test.js +115 -30
- package/compiled/src/ifc/ifc_geometry_extraction.d.ts +0 -1
- package/compiled/src/ifc/ifc_geometry_extraction.d.ts.map +1 -1
- package/compiled/src/ifc/ifc_geometry_extraction.js +34 -44
- package/compiled/src/step/parsing/uint32_sink.d.ts +20 -0
- package/compiled/src/step/parsing/uint32_sink.d.ts.map +1 -1
- package/compiled/src/step/parsing/uint32_sink.js +95 -0
- package/compiled/src/step/parsing/uint32_sink.test.js +41 -1
- package/compiled/src/step/step_model_base.d.ts +32 -13
- package/compiled/src/step/step_model_base.d.ts.map +1 -1
- package/compiled/src/step/step_model_base.js +64 -24
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-magic-numbers */
|
|
2
2
|
import { describe, expect, test } from "@jest/globals";
|
|
3
3
|
import * as glmatrix from "gl-matrix";
|
|
4
|
-
import { composeTransformF64, deriveCoordinationF64, mat4MultiplyF64, } from "./coordination_f64.js";
|
|
4
|
+
import { COORDINATION_SNAP_M, LARGE_COORDINATE_BUDGET_M, TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z, composeTransformF64, deriveCoordinationF64, mat4MultiplyF64, } from "./coordination_f64.js";
|
|
5
5
|
// The Z-up -> Y-up normalize matrix the proxies pass in (column-major).
|
|
6
6
|
const NORMALIZE_MAT = [
|
|
7
7
|
1,
|
|
@@ -51,36 +51,121 @@ describe("coordination_f64", () => {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
-
test("
|
|
55
|
-
// The
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
54
|
+
test("below the budget every anchor derives model-zero (export-order independence)", () => {
|
|
55
|
+
// The Share#1749 shape: two exports of one object disagree about
|
|
56
|
+
// which element comes first, so the walk anchors on points 76m
|
|
57
|
+
// apart. Both must derive the same frame, or the two files render
|
|
58
|
+
// 76m apart and no camera permalink spans them.
|
|
59
|
+
const identity = glmatrix.mat4.create();
|
|
60
|
+
const first = deriveCoordinationF64(identity, { x: 76, y: -11.4504049888, z: 0 }, NORMALIZE_MAT, 1);
|
|
61
|
+
const second = deriveCoordinationF64(identity, { x: 0, y: -11.4504049888, z: 0 }, NORMALIZE_MAT, 1);
|
|
62
|
+
expect(second).toEqual(first);
|
|
63
|
+
// Model-zero (conway#87): the frame is the bare Y-up normalize and
|
|
64
|
+
// the model keeps the coordinates its file authored.
|
|
65
|
+
expect(first[TRANSLATION_X]).toBe(0);
|
|
66
|
+
expect(first[TRANSLATION_Y]).toBe(0);
|
|
67
|
+
expect(first[TRANSLATION_Z]).toBe(0);
|
|
68
|
+
});
|
|
69
|
+
test("anchors either side of a grid line below the budget still agree", () => {
|
|
70
|
+
// Why the recentre is staged rather than snapped everywhere: a
|
|
71
|
+
// straight snap turns a small anchor disagreement into a full-cell
|
|
72
|
+
// one. A site-grid model at x ~ 500m whose preview channel anchors
|
|
73
|
+
// at 480 and whose durable walk anchors at 520 would derive frames
|
|
74
|
+
// 1km apart — and the adopted-frame gate only re-derives past
|
|
75
|
+
// LARGE_COORDINATE_BUDGET_M, so it would keep the wrong one and
|
|
76
|
+
// render 1km off a classic open. Below the budget both are zero.
|
|
77
|
+
const identity = glmatrix.mat4.create();
|
|
78
|
+
const below = deriveCoordinationF64(identity, { x: 480, y: 0, z: 0 }, NORMALIZE_MAT, 1);
|
|
79
|
+
const above = deriveCoordinationF64(identity, { x: 520, y: 0, z: 0 }, NORMALIZE_MAT, 1);
|
|
80
|
+
expect(above).toEqual(below);
|
|
81
|
+
expect(below[TRANSLATION_X]).toBe(0);
|
|
82
|
+
});
|
|
83
|
+
test("recentres only once past the budget, on the same metre grid whatever the source unit", () => {
|
|
84
|
+
// Same object, one file in metres and one in millimetres: the
|
|
85
|
+
// millimetre file's anchor is 1000x larger and its scaleFactor
|
|
86
|
+
// 1000x smaller, so both must land on the same metre frame.
|
|
87
|
+
const identity = glmatrix.mat4.create();
|
|
88
|
+
const metres = deriveCoordinationF64(identity, { x: 2600076, y: 412, z: 0 }, NORMALIZE_MAT, 1);
|
|
89
|
+
const millimetres = deriveCoordinationF64(identity, { x: 2600076000, y: 412000, z: 0 }, NORMALIZE_MAT, 0.001);
|
|
90
|
+
for (const i of [TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z]) {
|
|
91
|
+
expect(millimetres[i]).toBeCloseTo(metres[i], 6);
|
|
92
|
+
}
|
|
93
|
+
expect(metres[TRANSLATION_X]).toBe(-2600000);
|
|
94
|
+
});
|
|
95
|
+
test("keeps a georeferenced model inside the recentre budget", () => {
|
|
96
|
+
// Above the budget the recentre engages and snapping trades
|
|
97
|
+
// exactness for order-independence. Once engaged every component is
|
|
98
|
+
// snapped, so each keeps at most half a cell and the anchor lands
|
|
99
|
+
// within half a cell in each axis — measured as a distance so the
|
|
100
|
+
// bound is a property of the anchor, like the stage decision itself.
|
|
101
|
+
// The outer bound that matters is LARGE_COORDINATE_BUDGET_M, the
|
|
102
|
+
// threshold above which a frame counts as not having recentred.
|
|
103
|
+
const identity = glmatrix.mat4.create();
|
|
104
|
+
const ref = { x: 2600000.31, y: 1200000.17, z: 412.5 };
|
|
105
|
+
const coord = deriveCoordinationF64(identity, ref, NORMALIZE_MAT, 1);
|
|
106
|
+
// NORMALIZE_MAT is Z-up -> Y-up, so the source y/z components land in
|
|
107
|
+
// the frame's z/y translation slots.
|
|
108
|
+
const residual = Math.hypot(ref.x + coord[TRANSLATION_X], ref.z + coord[TRANSLATION_Y], ref.y - coord[TRANSLATION_Z]);
|
|
109
|
+
// sqrt(3) half-cells is the true worst case; assert both it and the
|
|
110
|
+
// budget so a future edit that widens either is caught.
|
|
111
|
+
expect(residual).toBeLessThanOrEqual(COORDINATION_SNAP_M);
|
|
112
|
+
expect(residual).toBeLessThan(LARGE_COORDINATE_BUDGET_M);
|
|
113
|
+
});
|
|
114
|
+
test("recentres a model whose offset is spread across axes", () => {
|
|
115
|
+
// The stage decision is the anchor's distance from the origin, not
|
|
116
|
+
// any one component: (9km, 9km, 9km) is 15.6km out — past the budget
|
|
117
|
+
// — while no single component crosses it. Deciding per component
|
|
118
|
+
// would leave this model in file coordinates and quietly undo the
|
|
119
|
+
// float32 jitter fix the budget exists to enforce.
|
|
120
|
+
const identity = glmatrix.mat4.create();
|
|
121
|
+
const coord = deriveCoordinationF64(identity, { x: 9000, y: 9000, z: 9000 }, NORMALIZE_MAT, 1);
|
|
122
|
+
const residual = Math.hypot(9000 + coord[TRANSLATION_X], 9000 + coord[TRANSLATION_Y], 9000 - coord[TRANSLATION_Z]);
|
|
123
|
+
expect(coord[TRANSLATION_X]).not.toBe(0);
|
|
124
|
+
expect(residual).toBeLessThan(LARGE_COORDINATE_BUDGET_M);
|
|
125
|
+
});
|
|
126
|
+
test("places a LV95-magnitude element exactly where float32 mis-lands it", () => {
|
|
127
|
+
// The georeferencing jitter mechanism (Share#1631): an element placed
|
|
128
|
+
// at Swiss LV95 magnitude (~2.6M easting) is composed against the
|
|
129
|
+
// recentre frame, and float32 ULP at 2.6M is ~0.31m. Run through
|
|
130
|
+
// gl-matrix's Float32Array that composition quantizes, and the
|
|
131
|
+
// element lands cm-to-dm from where the frame says — a positional
|
|
132
|
+
// error baked into every emitted transform. The float64 path lands it
|
|
133
|
+
// exactly.
|
|
134
|
+
//
|
|
135
|
+
// Note the frame's own translation is now snapped to whole kilometres
|
|
136
|
+
// (COORDINATION_SNAP_M), which happens to be exactly representable in
|
|
137
|
+
// float32 — so the loss this pins is in the composition against the
|
|
138
|
+
// element's full-precision placement, which is where it always
|
|
139
|
+
// mattered: that product is what becomes the FlatMesh transform.
|
|
62
140
|
const ref = { x: 2600000.31, y: 1200000.17, z: 412.5 };
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
141
|
+
const frame = deriveCoordinationF64(glmatrix.mat4.create(), ref, NORMALIZE_MAT, 1);
|
|
142
|
+
// An element sitting on that reference point.
|
|
143
|
+
const placement = glmatrix.mat4.create();
|
|
144
|
+
glmatrix.mat4.identity(placement);
|
|
145
|
+
const placementF64 = Array.from(placement);
|
|
146
|
+
placementF64[TRANSLATION_X] = ref.x;
|
|
147
|
+
placementF64[TRANSLATION_Y] = ref.y;
|
|
148
|
+
placementF64[TRANSLATION_Z] = ref.z;
|
|
149
|
+
// Where it must land: the within-cell remainder of every component.
|
|
150
|
+
// The stage decision is made once on the whole anchor, and this one
|
|
151
|
+
// is far past the budget, so all three components snap — including
|
|
152
|
+
// z=412.5, whose nearest grid multiple is 0 and which therefore
|
|
153
|
+
// keeps its full value. (A per-component budget test would leave z
|
|
154
|
+
// untouched for a different reason and agree here by coincidence;
|
|
155
|
+
// this mirrors what quantizeRecentre actually does.)
|
|
156
|
+
const rem = (v) => v - Math.round(v / COORDINATION_SNAP_M) * COORDINATION_SNAP_M;
|
|
157
|
+
const expected = [rem(ref.x), rem(ref.z), -rem(ref.y)];
|
|
158
|
+
const f64 = composeTransformF64(frame, placementF64);
|
|
159
|
+
// The old path's loss: the placement crosses the wasm boundary as a
|
|
160
|
+
// glm::dmat4 but was rebuilt with gl-matrix `mat4.fromValues`, i.e.
|
|
161
|
+
// stored in a Float32Array — quantizing its 2.6M component to the
|
|
162
|
+
// ~0.31m float32 grid before anything is composed. Snapping the frame
|
|
163
|
+
// does not rescue that; only keeping the placement in float64 does.
|
|
164
|
+
const f32 = composeTransformF64(frame, new Float32Array(placementF64));
|
|
165
|
+
const errF64 = Math.max(Math.abs(f64[TRANSLATION_X] - expected[0]), Math.abs(f64[TRANSLATION_Y] - expected[1]), Math.abs(f64[TRANSLATION_Z] - expected[2]));
|
|
166
|
+
const errF32 = Math.max(Math.abs(f32[TRANSLATION_X] - expected[0]), Math.abs(f32[TRANSLATION_Y] - expected[1]), Math.abs(f32[TRANSLATION_Z] - expected[2]));
|
|
167
|
+
expect(errF64).toBeLessThan(0.000001);
|
|
168
|
+
expect(errF32).toBeGreaterThan(0.01);
|
|
84
169
|
});
|
|
85
170
|
test("near origin float64 and float32 agree (fixtures unaffected)", () => {
|
|
86
171
|
const placement = pseudoMat(99);
|
|
@@ -315,7 +315,6 @@ export declare class IfcGeometryExtraction {
|
|
|
315
315
|
* @param entity The faceset.
|
|
316
316
|
* @param temporary Is this a temporary (preview//operand) extraction?
|
|
317
317
|
* @param isRelVoid Is this geometry a rel-void operand?
|
|
318
|
-
* @param indicesPerFace Index count of the last face processed.
|
|
319
318
|
* @param allIndices Face indices, concatenated.
|
|
320
319
|
* @param allStartIndices Per-face start indices.
|
|
321
320
|
* @param polygonalFaceBufferOffsets Per-face offsets into allIndices.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_geometry_extraction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ifc_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_geometry_extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -566,14 +566,13 @@ export class IfcGeometryExtraction {
|
|
|
566
566
|
* @param entity The faceset.
|
|
567
567
|
* @param temporary Is this a temporary (preview//operand) extraction?
|
|
568
568
|
* @param isRelVoid Is this geometry a rel-void operand?
|
|
569
|
-
* @param indicesPerFace Index count of the last face processed.
|
|
570
569
|
* @param allIndices Face indices, concatenated.
|
|
571
570
|
* @param allStartIndices Per-face start indices.
|
|
572
571
|
* @param polygonalFaceBufferOffsets Per-face offsets into allIndices.
|
|
573
572
|
* @param startIndicesBufferOffsets Per-face offsets into allStartIndices.
|
|
574
573
|
* @return {ExtractResult} The extraction result.
|
|
575
574
|
*/
|
|
576
|
-
finishPolygonalFaceSet_(entity, temporary, isRelVoid,
|
|
575
|
+
finishPolygonalFaceSet_(entity, temporary, isRelVoid, allIndices, allStartIndices, polygonalFaceBufferOffsets, startIndicesBufferOffsets) {
|
|
577
576
|
// Add the final entry
|
|
578
577
|
polygonalFaceBufferOffsets.push(allIndices.length);
|
|
579
578
|
startIndicesBufferOffsets.push(allStartIndices.length);
|
|
@@ -591,41 +590,29 @@ export class IfcGeometryExtraction {
|
|
|
591
590
|
polygonalFaceBufferOffsetsArray,
|
|
592
591
|
startIndicesBufferOffsetsArray,
|
|
593
592
|
]);
|
|
594
|
-
//
|
|
595
|
-
//
|
|
596
|
-
//
|
|
597
|
-
//
|
|
598
|
-
//
|
|
599
|
-
//
|
|
600
|
-
// 15,777 facesets, a leak large enough to cause the exhaustion it would
|
|
601
|
-
// then be blamed on.
|
|
602
|
-
//
|
|
603
|
-
// Suppressing during unwinding matters as much as the release itself:
|
|
604
|
-
// every one of these re-enters the wasm runtime, and if that runtime is
|
|
605
|
-
// what failed, a throw here would REPLACE the in-flight error and the
|
|
606
|
-
// catch upstream would log a generic teardown failure instead of the heap
|
|
607
|
-
// diagnostic this change exists to produce.
|
|
593
|
+
// A throw here used to strand all four heap pointers plus the pooled
|
|
594
|
+
// parse buffer, once per faceset (15,777 on PSB — a leak large enough
|
|
595
|
+
// to cause the exhaustion it would then be blamed on). withRelease
|
|
596
|
+
// reclaims them; it suppresses a release failure only while something
|
|
597
|
+
// is already unwinding, so a wasm-runtime fault is not replaced by a
|
|
598
|
+
// generic teardown error in the per-record catch upstream.
|
|
608
599
|
const geometry = withRelease(() => {
|
|
609
|
-
const
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
points: pointsArrayNative,
|
|
623
|
-
faces: polygonalFaceVector,
|
|
624
|
-
}), () => pointsArrayNative.delete());
|
|
625
|
-
}, () => polygonalFaceVector.delete());
|
|
600
|
+
const pointsParseBuffer = this.conwayModel.nativeParseBuffer();
|
|
601
|
+
// Packed triangulation: the four heap buffers are already the
|
|
602
|
+
// face index layout. Unpacking them into 9.1M IndexedPolygonalFace
|
|
603
|
+
// std::vectors was the rest of the PSB pump after #448, and is
|
|
604
|
+
// why feeding the ThreadPool lost (the pool was paying to copy
|
|
605
|
+
// those vectors).
|
|
606
|
+
const pointsArrayNative = withRelease(() => {
|
|
607
|
+
if (!entity.Coordinates.extractParseBuffer(0, 0, 0, pointsParseBuffer, this.wasmModule, true)) {
|
|
608
|
+
pointsParseBuffer.resize(0);
|
|
609
|
+
}
|
|
610
|
+
return this.wasmModule.parseVertexVector(pointsParseBuffer);
|
|
611
|
+
}, () => this.conwayModel.freeParseBuffer(pointsParseBuffer));
|
|
612
|
+
return withRelease(() => this.conwayModel.getPolygonalFaceSetGeometryPacked(pointsArrayNative, indicesArrayPtr, polygonalFaceBufferOffsetsArrayPtr, polygonalFaceBufferOffsetsArray.length, startIndicesArrayPtr, startIndicesBufferOffsetsArrayPtr), () => pointsArrayNative.delete());
|
|
626
613
|
},
|
|
627
|
-
// freeAll, not four statements in one closure: there the first
|
|
628
|
-
// would abandon the other three.
|
|
614
|
+
// freeAll, not four statements in one closure: there the first
|
|
615
|
+
// failure would abandon the other three.
|
|
629
616
|
() => freeAll(this.wasmModule, [
|
|
630
617
|
indicesArrayPtr,
|
|
631
618
|
startIndicesArrayPtr,
|
|
@@ -639,7 +626,6 @@ export class IfcGeometryExtraction {
|
|
|
639
626
|
model: this.model,
|
|
640
627
|
temporary: temporary,
|
|
641
628
|
};
|
|
642
|
-
// add mesh to the list of mesh objects
|
|
643
629
|
if (!isRelVoid) {
|
|
644
630
|
this.model.geometry.add(canonicalMesh);
|
|
645
631
|
}
|
|
@@ -699,7 +685,6 @@ export class IfcGeometryExtraction {
|
|
|
699
685
|
allStartIndices.reset();
|
|
700
686
|
polygonalFaceBufferOffsets.reset();
|
|
701
687
|
startIndicesBufferOffsets.reset();
|
|
702
|
-
let indicesPerFace = -1;
|
|
703
688
|
// Fast path: read each face's CoordIndex straight from its record,
|
|
704
689
|
// never constructing the 9M+ IfcIndexedPolygonalFace entities a
|
|
705
690
|
// large tessellated model would otherwise materialise (and retain,
|
|
@@ -709,24 +694,30 @@ export class IfcGeometryExtraction {
|
|
|
709
694
|
// abandons the whole faceset back to the getter path below, so
|
|
710
695
|
// correctness never depends on the fast path's coverage.
|
|
711
696
|
let fastPathOk = true;
|
|
697
|
+
let hintLocalID;
|
|
712
698
|
const facesWalked = entity.forEachReferenceInField(FACES_FIELD_OFFSET, FACES_FIELD_BASE_OFFSET, FACES_FIELD_DEPTH, (expressID) => {
|
|
713
699
|
if (expressID === void 0) {
|
|
714
700
|
fastPathOk = false;
|
|
715
701
|
return false;
|
|
716
702
|
}
|
|
717
|
-
const
|
|
703
|
+
const localID = this.model.resolveExpressID(expressID, hintLocalID);
|
|
704
|
+
if (localID === void 0) {
|
|
705
|
+
fastPathOk = false;
|
|
706
|
+
return false;
|
|
707
|
+
}
|
|
708
|
+
const count = this.model.extractIntegerArrayByLocalIDInto(localID, COORD_INDEX_FIELD_OFFSET, EntityTypesIfc.IFCINDEXEDPOLYGONALFACE, allIndices);
|
|
718
709
|
if (count === void 0) {
|
|
719
710
|
fastPathOk = false;
|
|
720
711
|
return false;
|
|
721
712
|
}
|
|
713
|
+
hintLocalID = localID;
|
|
722
714
|
polygonalFaceBufferOffsets.push(allIndices.length - count);
|
|
723
715
|
startIndicesBufferOffsets.push(allStartIndices.length);
|
|
724
716
|
allStartIndices.push(0);
|
|
725
|
-
indicesPerFace = count;
|
|
726
717
|
return true;
|
|
727
718
|
});
|
|
728
719
|
if (fastPathOk && facesWalked) {
|
|
729
|
-
this.finishPolygonalFaceSet_(entity, temporary, isRelVoid,
|
|
720
|
+
this.finishPolygonalFaceSet_(entity, temporary, isRelVoid, allIndices, allStartIndices, polygonalFaceBufferOffsets, startIndicesBufferOffsets);
|
|
730
721
|
return result;
|
|
731
722
|
}
|
|
732
723
|
// Fallback: something in this faceset needs the generated getters.
|
|
@@ -734,7 +725,6 @@ export class IfcGeometryExtraction {
|
|
|
734
725
|
allStartIndices.reset();
|
|
735
726
|
polygonalFaceBufferOffsets.reset();
|
|
736
727
|
startIndicesBufferOffsets.reset();
|
|
737
|
-
indicesPerFace = -1;
|
|
738
728
|
// Prepare indices and start indices for all faces
|
|
739
729
|
entity.Faces.forEach((polygonalFace) => {
|
|
740
730
|
// set the offets for the memory buffers so we can rebuild the
|
|
@@ -744,7 +734,7 @@ export class IfcGeometryExtraction {
|
|
|
744
734
|
let coordIndex = 0;
|
|
745
735
|
if (polygonalFace instanceof IfcIndexedPolygonalFaceWithVoids) {
|
|
746
736
|
// Voided faces are rare; keep the straightforward getter path.
|
|
747
|
-
indicesPerFace = polygonalFace.CoordIndex.length;
|
|
737
|
+
const indicesPerFace = polygonalFace.CoordIndex.length;
|
|
748
738
|
allStartIndices.push(0);
|
|
749
739
|
coordIndex += indicesPerFace;
|
|
750
740
|
for (const index of polygonalFace.CoordIndex) {
|
|
@@ -761,11 +751,11 @@ export class IfcGeometryExtraction {
|
|
|
761
751
|
else {
|
|
762
752
|
// CoordIndex is vtable offset 0 on IfcIndexedPolygonalFace (see
|
|
763
753
|
// its generated getter) — parsed in place, never allocated or cached.
|
|
764
|
-
|
|
754
|
+
polygonalFace.extractIntegerArrayInto(0, 0, 3, allIndices);
|
|
765
755
|
allStartIndices.push(0);
|
|
766
756
|
}
|
|
767
757
|
});
|
|
768
|
-
this.finishPolygonalFaceSet_(entity, temporary, isRelVoid,
|
|
758
|
+
this.finishPolygonalFaceSet_(entity, temporary, isRelVoid, allIndices, allStartIndices, polygonalFaceBufferOffsets, startIndicesBufferOffsets);
|
|
769
759
|
return result;
|
|
770
760
|
}
|
|
771
761
|
/**
|
|
@@ -27,6 +27,12 @@ export declare class Uint32Sink {
|
|
|
27
27
|
get view(): Uint32Array;
|
|
28
28
|
/** Drop all appended elements, keeping the allocated capacity. */
|
|
29
29
|
reset(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Keep the first `length` elements. Used to unwind a failed fast path.
|
|
32
|
+
*
|
|
33
|
+
* @param length New length, ≤ current length.
|
|
34
|
+
*/
|
|
35
|
+
truncate(length: number): void;
|
|
30
36
|
/**
|
|
31
37
|
* Append one value, growing geometrically when full.
|
|
32
38
|
*
|
|
@@ -49,4 +55,18 @@ export declare class Uint32Sink {
|
|
|
49
55
|
* @return {number} How many values were appended (0 when unset/optional-null).
|
|
50
56
|
*/
|
|
51
57
|
export declare function extractIntegerArrayAt(buffer: Uint8Array, cursor: number, endCursor: number, sink: Uint32Sink): number;
|
|
58
|
+
/**
|
|
59
|
+
* Fast path for `(1,2,3,4)` / `(1, 2, 3, 4)` — the CoordIndex shape.
|
|
60
|
+
* Digits only, no comments, no reals. Returns undefined when the field
|
|
61
|
+
* is not that shape so the caller can use the general parser. A failed
|
|
62
|
+
* parse does not leave partial values in `sink`.
|
|
63
|
+
*
|
|
64
|
+
* @param buffer Record window.
|
|
65
|
+
* @param cursor Start of the field.
|
|
66
|
+
* @param endCursor End bound.
|
|
67
|
+
* @param sink Receives values.
|
|
68
|
+
* @return {number | undefined} Count appended, or undefined if this
|
|
69
|
+
* is not an unsigned-integer list.
|
|
70
|
+
*/
|
|
71
|
+
export declare function extractUnsignedIntegerListAt(buffer: Uint8Array, cursor: number, endCursor: number, sink: Uint32Sink): number | undefined;
|
|
52
72
|
//# sourceMappingURL=uint32_sink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint32_sink.d.ts","sourceRoot":"","sources":["../../../../src/step/parsing/uint32_sink.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uint32_sink.d.ts","sourceRoot":"","sources":["../../../../src/step/parsing/uint32_sink.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;GAUG;AACH,qBAAa,UAAU;IAErB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAY;IAE3B;;OAEG;gBACU,eAAe,GAAE,MAAa;IAI3C,oEAAoE;IACpE,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACH,IAAW,IAAI,IAAI,WAAW,CAE7B;IAED,kEAAkE;IAC3D,KAAK,IAAI,IAAI;IAIpB;;;;OAIG;IACI,QAAQ,CAAE,MAAM,EAAE,MAAM,GAAI,IAAI;IAIvC;;;;OAIG;IACI,IAAI,CAAE,KAAK,EAAE,MAAM,GAAI,IAAI;CAanC;AAGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,GAAI,MAAM,CAqC7B;AAGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CACxC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,UAAU,GAAI,MAAM,GAAG,SAAS,CAsFzC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { skipValue, stepExtractArrayBegin, stepExtractArrayToken, stepExtractNumber, stepExtractOptional, } from "./step_deserialization_functions.js";
|
|
2
|
+
import ParsingConstants from "../../parsing/parsing_constants.js";
|
|
3
|
+
const OPEN_PAREN = ParsingConstants.OPEN_PAREN;
|
|
4
|
+
const CLOSE_PAREN = ParsingConstants.CLOSE_PAREN;
|
|
5
|
+
const COMMA = ParsingConstants.COMMA;
|
|
6
|
+
const ZERO = ParsingConstants.ZERO;
|
|
7
|
+
const WHITESPACE = ParsingConstants.WHITE_SPACE_SET;
|
|
2
8
|
/**
|
|
3
9
|
* Growable Uint32Array append sink.
|
|
4
10
|
*
|
|
@@ -35,6 +41,14 @@ export class Uint32Sink {
|
|
|
35
41
|
reset() {
|
|
36
42
|
this.length_ = 0;
|
|
37
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Keep the first `length` elements. Used to unwind a failed fast path.
|
|
46
|
+
*
|
|
47
|
+
* @param length New length, ≤ current length.
|
|
48
|
+
*/
|
|
49
|
+
truncate(length) {
|
|
50
|
+
this.length_ = length;
|
|
51
|
+
}
|
|
38
52
|
/**
|
|
39
53
|
* Append one value, growing geometrically when full.
|
|
40
54
|
*
|
|
@@ -64,6 +78,12 @@ export class Uint32Sink {
|
|
|
64
78
|
* @return {number} How many values were appended (0 when unset/optional-null).
|
|
65
79
|
*/
|
|
66
80
|
export function extractIntegerArrayAt(buffer, cursor, endCursor, sink) {
|
|
81
|
+
const marked = sink.length;
|
|
82
|
+
const fast = extractUnsignedIntegerListAt(buffer, cursor, endCursor, sink);
|
|
83
|
+
if (fast !== void 0) {
|
|
84
|
+
return fast;
|
|
85
|
+
}
|
|
86
|
+
sink.truncate(marked);
|
|
67
87
|
if (stepExtractOptional(buffer, cursor, endCursor) === null) {
|
|
68
88
|
return 0;
|
|
69
89
|
}
|
|
@@ -83,3 +103,78 @@ export function extractIntegerArrayAt(buffer, cursor, endCursor, sink) {
|
|
|
83
103
|
}
|
|
84
104
|
return count;
|
|
85
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Fast path for `(1,2,3,4)` / `(1, 2, 3, 4)` — the CoordIndex shape.
|
|
108
|
+
* Digits only, no comments, no reals. Returns undefined when the field
|
|
109
|
+
* is not that shape so the caller can use the general parser. A failed
|
|
110
|
+
* parse does not leave partial values in `sink`.
|
|
111
|
+
*
|
|
112
|
+
* @param buffer Record window.
|
|
113
|
+
* @param cursor Start of the field.
|
|
114
|
+
* @param endCursor End bound.
|
|
115
|
+
* @param sink Receives values.
|
|
116
|
+
* @return {number | undefined} Count appended, or undefined if this
|
|
117
|
+
* is not an unsigned-integer list.
|
|
118
|
+
*/
|
|
119
|
+
export function extractUnsignedIntegerListAt(buffer, cursor, endCursor, sink) {
|
|
120
|
+
const marked = sink.length;
|
|
121
|
+
while (cursor < endCursor && WHITESPACE.has(buffer[cursor])) {
|
|
122
|
+
++cursor;
|
|
123
|
+
}
|
|
124
|
+
if (cursor >= endCursor) {
|
|
125
|
+
return void 0;
|
|
126
|
+
}
|
|
127
|
+
if (buffer[cursor] === ParsingConstants.DOLLAR) {
|
|
128
|
+
return 0;
|
|
129
|
+
}
|
|
130
|
+
if (buffer[cursor] !== OPEN_PAREN) {
|
|
131
|
+
return void 0;
|
|
132
|
+
}
|
|
133
|
+
++cursor;
|
|
134
|
+
let count = 0;
|
|
135
|
+
while (cursor < endCursor) {
|
|
136
|
+
while (cursor < endCursor && WHITESPACE.has(buffer[cursor])) {
|
|
137
|
+
++cursor;
|
|
138
|
+
}
|
|
139
|
+
if (cursor >= endCursor) {
|
|
140
|
+
sink.truncate(marked);
|
|
141
|
+
return void 0;
|
|
142
|
+
}
|
|
143
|
+
if (buffer[cursor] === CLOSE_PAREN) {
|
|
144
|
+
return count;
|
|
145
|
+
}
|
|
146
|
+
if (count > 0) {
|
|
147
|
+
if (buffer[cursor] !== COMMA) {
|
|
148
|
+
sink.truncate(marked);
|
|
149
|
+
return void 0;
|
|
150
|
+
}
|
|
151
|
+
++cursor;
|
|
152
|
+
while (cursor < endCursor && WHITESPACE.has(buffer[cursor])) {
|
|
153
|
+
++cursor;
|
|
154
|
+
}
|
|
155
|
+
if (cursor >= endCursor) {
|
|
156
|
+
sink.truncate(marked);
|
|
157
|
+
return void 0;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const digit = buffer[cursor] - ZERO;
|
|
161
|
+
if (digit < 0 || digit > 9) {
|
|
162
|
+
sink.truncate(marked);
|
|
163
|
+
return void 0;
|
|
164
|
+
}
|
|
165
|
+
let value = digit;
|
|
166
|
+
++cursor;
|
|
167
|
+
while (cursor < endCursor) {
|
|
168
|
+
const next = buffer[cursor] - ZERO;
|
|
169
|
+
if (next < 0 || next > 9) {
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
value = value * 10 + next;
|
|
173
|
+
++cursor;
|
|
174
|
+
}
|
|
175
|
+
sink.push(value);
|
|
176
|
+
++count;
|
|
177
|
+
}
|
|
178
|
+
sink.truncate(marked);
|
|
179
|
+
return void 0;
|
|
180
|
+
}
|
|
@@ -7,7 +7,7 @@ import { beforeAll, describe, expect, test } from "@jest/globals";
|
|
|
7
7
|
import { IfcAPI } from "../../compat/web-ifc/ifc_api.js";
|
|
8
8
|
import EntityTypesIfc from "../../ifc/ifc4_gen/entity_types_ifc.gen.js";
|
|
9
9
|
import { IfcIndexedPolygonalFace, IfcIndexedPolygonalFaceWithVoids, IfcPolygonalFaceSet, } from "../../ifc/ifc4_gen/index.js";
|
|
10
|
-
import { Uint32Sink } from "./uint32_sink.js";
|
|
10
|
+
import { Uint32Sink, extractUnsignedIntegerListAt } from "./uint32_sink.js";
|
|
11
11
|
describe("Uint32Sink", () => {
|
|
12
12
|
test("appends, grows past its initial capacity, and views exactly its length", () => {
|
|
13
13
|
const sink = new Uint32Sink(2);
|
|
@@ -19,6 +19,20 @@ describe("Uint32Sink", () => {
|
|
|
19
19
|
expect(sink.length).toBe(10);
|
|
20
20
|
expect(Array.from(sink.view)).toEqual([0, 3, 6, 9, 12, 15, 18, 21, 24, 27]);
|
|
21
21
|
});
|
|
22
|
+
test("extractUnsignedIntegerListAt parses a plain CoordIndex list", () => {
|
|
23
|
+
const sink = new Uint32Sink(4);
|
|
24
|
+
const bytes = new TextEncoder().encode("(1,2,3,4)");
|
|
25
|
+
expect(extractUnsignedIntegerListAt(bytes, 0, bytes.length, sink)).toBe(4);
|
|
26
|
+
expect(Array.from(sink.view)).toEqual([1, 2, 3, 4]);
|
|
27
|
+
});
|
|
28
|
+
test("extractUnsignedIntegerListAt refuses a real and leaves the sink clean", () => {
|
|
29
|
+
const sink = new Uint32Sink(4);
|
|
30
|
+
const bytes = new TextEncoder().encode("(1,2.5,3)");
|
|
31
|
+
sink.push(9);
|
|
32
|
+
expect(extractUnsignedIntegerListAt(bytes, 0, bytes.length, sink))
|
|
33
|
+
.toBeUndefined();
|
|
34
|
+
expect(Array.from(sink.view)).toEqual([9]);
|
|
35
|
+
});
|
|
22
36
|
test("reset drops elements but keeps capacity for reuse", () => {
|
|
23
37
|
const sink = new Uint32Sink(4);
|
|
24
38
|
sink.push(11);
|
|
@@ -144,6 +158,32 @@ describe("reference-level faceset fast path", () => {
|
|
|
144
158
|
}
|
|
145
159
|
}
|
|
146
160
|
}, 120000);
|
|
161
|
+
test("column path matches CoordIndex without materialising the face first", () => {
|
|
162
|
+
const model = stepModel();
|
|
163
|
+
const sink = new Uint32Sink(4);
|
|
164
|
+
for (const faceSet of faceSets()) {
|
|
165
|
+
const expressIDs = [];
|
|
166
|
+
faceSet.forEachReferenceInField(FACES_OFFSET, FACES_BASE_OFFSET, FACES_DEPTH, (expressID) => {
|
|
167
|
+
if (expressID !== void 0) {
|
|
168
|
+
expressIDs.push(expressID);
|
|
169
|
+
}
|
|
170
|
+
return true;
|
|
171
|
+
});
|
|
172
|
+
const fromColumns = [];
|
|
173
|
+
for (const expressID of expressIDs) {
|
|
174
|
+
sink.reset();
|
|
175
|
+
const count = model.extractIntegerArrayByExpressIDInto(expressID, COORD_INDEX_OFFSET, EntityTypesIfc.IFCINDEXEDPOLYGONALFACE, sink);
|
|
176
|
+
if (count === void 0) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
fromColumns.push(Array.from(sink.view));
|
|
180
|
+
}
|
|
181
|
+
const fromGetter = faceSet.Faces
|
|
182
|
+
.filter((face) => !(face instanceof IfcIndexedPolygonalFaceWithVoids))
|
|
183
|
+
.map((face) => face.CoordIndex);
|
|
184
|
+
expect(fromColumns).toEqual(fromGetter);
|
|
185
|
+
}
|
|
186
|
+
}, 120000);
|
|
147
187
|
test("reports failure for an unknown express ID and for a type mismatch", () => {
|
|
148
188
|
const model = stepModel();
|
|
149
189
|
const sink = new Uint32Sink(4);
|