@bldrs-ai/conway 1.453.1359 → 1.460.1363

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.
@@ -30,7 +30,7 @@ var import_node_process = require("node:process");
30
30
  var readline = __toESM(require("node:readline"), 1);
31
31
 
32
32
  // compiled/src/version/version.js
33
- var versionString = "Conway v1.453.1359";
33
+ var versionString = "Conway v1.460.1363";
34
34
 
35
35
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
36
36
  var wasmType = "";
@@ -14965,7 +14965,7 @@ ${t5.join("\n")}` : "";
14965
14965
  var import_process = require("process");
14966
14966
 
14967
14967
  // compiled/src/version/version.js
14968
- var versionString = "Conway v1.453.1359";
14968
+ var versionString = "Conway v1.460.1363";
14969
14969
 
14970
14970
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
14971
14971
  function pThreadsAllowed() {
@@ -15943,7 +15943,7 @@ var ParsingBuffer = class {
15943
15943
  };
15944
15944
 
15945
15945
  // compiled/src/version/version.js
15946
- var versionString = "Conway v1.453.1359";
15946
+ var versionString = "Conway v1.460.1363";
15947
15947
 
15948
15948
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
15949
15949
  function pThreadsAllowed() {
@@ -84108,6 +84108,37 @@ ${error.stack} - expressID: #${face_.expressID}`);
84108
84108
  result.setValues(v);
84109
84109
  return result;
84110
84110
  }
84111
+ /**
84112
+ * The root transform taking a shape representation's own length unit
84113
+ * into conway's world space.
84114
+ *
84115
+ * World space is METRES. That convention is set by the IFC path, which
84116
+ * folds `linearScalingFactor` — metres per file unit — into its
84117
+ * coordination matrix (`compat/web-ifc/coordination_f64.ts`). STEP
84118
+ * geometry is emitted in raw file coordinates instead, so the
84119
+ * whole-model unit conversion has to ride on this root transform.
84120
+ *
84121
+ * The factor is therefore metres-per-file-unit itself: a millimetre
84122
+ * file scales by 1e-3. It is NOT the reciprocal — using `1 / unitInM`
84123
+ * put every millimetre STEP model into world space 1e6x too large,
84124
+ * and 1e6x out of step with any IFC model federated beside it. That
84125
+ * went unseen because Share frames the camera from the model's own
84126
+ * bounds, which absorbs a uniform scale error, and because the
84127
+ * regression digests hash geometry in file coordinates, which this
84128
+ * transform never touches.
84129
+ * See https://github.com/bldrs-ai/conway/issues/458.
84130
+ *
84131
+ * @param shapeRepresentation The representation whose unit context to read.
84132
+ * @return The scale transform, or undefined if no length unit is declared.
84133
+ */
84134
+ rootUnitScaleTransform(shapeRepresentation) {
84135
+ const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
84136
+ if (sourceShapeContext === void 0) {
84137
+ return void 0;
84138
+ }
84139
+ const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
84140
+ return this.uniformScaleAffine(this.identity3DNativeMatrix, sourceUnitInM);
84141
+ }
84111
84142
  /**
84112
84143
  *
84113
84144
  */
@@ -84489,11 +84520,7 @@ ${error.stack} - expressID: #${face_.expressID}`);
84489
84520
  mappedTreeNode.processed = true;
84490
84521
  let scaleTransform = void 0;
84491
84522
  try {
84492
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
84493
- if (sourceShapeContext !== void 0) {
84494
- const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
84495
- scaleTransform = this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
84496
- }
84523
+ scaleTransform = this.rootUnitScaleTransform(shapeRepresentation);
84497
84524
  } catch {
84498
84525
  scaleTransform = void 0;
84499
84526
  }
@@ -84525,11 +84552,7 @@ ${error.stack} - expressID: #${face_.expressID}`);
84525
84552
  let scaleTransform = void 0;
84526
84553
  try {
84527
84554
  const shapeRepresentation = this.model.getTypedElementByLocalID(sourceID, shape_representation);
84528
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
84529
- if (sourceShapeContext !== void 0) {
84530
- const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
84531
- scaleTransform = this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
84532
- }
84555
+ scaleTransform = this.rootUnitScaleTransform(shapeRepresentation);
84533
84556
  } catch {
84534
84557
  scaleTransform = void 0;
84535
84558
  }
@@ -944,7 +944,7 @@ var EntityTypesIfcCount = 909;
944
944
  var entity_types_ifc_gen_default = EntityTypesIfc;
945
945
 
946
946
  // compiled/src/version/version.js
947
- var versionString = "Conway v1.453.1359";
947
+ var versionString = "Conway v1.460.1363";
948
948
 
949
949
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
950
950
  var wasmType = "";
@@ -751,6 +751,30 @@ export declare class AP214GeometryExtraction {
751
751
  * @return A freshly allocated 4x4 with the basis scaled.
752
752
  */
753
753
  private uniformScaleBasis;
754
+ /**
755
+ * The root transform taking a shape representation's own length unit
756
+ * into conway's world space.
757
+ *
758
+ * World space is METRES. That convention is set by the IFC path, which
759
+ * folds `linearScalingFactor` — metres per file unit — into its
760
+ * coordination matrix (`compat/web-ifc/coordination_f64.ts`). STEP
761
+ * geometry is emitted in raw file coordinates instead, so the
762
+ * whole-model unit conversion has to ride on this root transform.
763
+ *
764
+ * The factor is therefore metres-per-file-unit itself: a millimetre
765
+ * file scales by 1e-3. It is NOT the reciprocal — using `1 / unitInM`
766
+ * put every millimetre STEP model into world space 1e6x too large,
767
+ * and 1e6x out of step with any IFC model federated beside it. That
768
+ * went unseen because Share frames the camera from the model's own
769
+ * bounds, which absorbs a uniform scale error, and because the
770
+ * regression digests hash geometry in file coordinates, which this
771
+ * transform never touches.
772
+ * See https://github.com/bldrs-ai/conway/issues/458.
773
+ *
774
+ * @param shapeRepresentation The representation whose unit context to read.
775
+ * @return The scale transform, or undefined if no length unit is declared.
776
+ */
777
+ private rootUnitScaleTransform;
754
778
  /**
755
779
  *
756
780
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ap214_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/AP214E3_2010/ap214_geometry_extraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ap214_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/AP214E3_2010/ap214_geometry_extraction.ts"],"names":[],"mappings":"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"}
@@ -2927,6 +2927,38 @@ export class AP214GeometryExtraction {
2927
2927
  result.setValues(v);
2928
2928
  return result;
2929
2929
  }
2930
+ /**
2931
+ * The root transform taking a shape representation's own length unit
2932
+ * into conway's world space.
2933
+ *
2934
+ * World space is METRES. That convention is set by the IFC path, which
2935
+ * folds `linearScalingFactor` — metres per file unit — into its
2936
+ * coordination matrix (`compat/web-ifc/coordination_f64.ts`). STEP
2937
+ * geometry is emitted in raw file coordinates instead, so the
2938
+ * whole-model unit conversion has to ride on this root transform.
2939
+ *
2940
+ * The factor is therefore metres-per-file-unit itself: a millimetre
2941
+ * file scales by 1e-3. It is NOT the reciprocal — using `1 / unitInM`
2942
+ * put every millimetre STEP model into world space 1e6x too large,
2943
+ * and 1e6x out of step with any IFC model federated beside it. That
2944
+ * went unseen because Share frames the camera from the model's own
2945
+ * bounds, which absorbs a uniform scale error, and because the
2946
+ * regression digests hash geometry in file coordinates, which this
2947
+ * transform never touches.
2948
+ * See https://github.com/bldrs-ai/conway/issues/458.
2949
+ *
2950
+ * @param shapeRepresentation The representation whose unit context to read.
2951
+ * @return The scale transform, or undefined if no length unit is declared.
2952
+ */
2953
+ rootUnitScaleTransform(shapeRepresentation) {
2954
+ const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.
2955
+ find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
2956
+ if (sourceShapeContext === void 0) {
2957
+ return void 0;
2958
+ }
2959
+ const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
2960
+ return this.uniformScaleAffine(this.identity3DNativeMatrix, sourceUnitInM);
2961
+ }
2930
2962
  /**
2931
2963
  *
2932
2964
  */
@@ -3391,13 +3423,7 @@ export class AP214GeometryExtraction {
3391
3423
  mappedTreeNode.processed = true;
3392
3424
  let scaleTransform = void 0;
3393
3425
  try {
3394
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.
3395
- find(unit => unit.findVariant(length_unit))?.findVariant(length_unit);
3396
- if (sourceShapeContext !== void 0) {
3397
- const sourceUnitInM = (this.convertToMetres(sourceShapeContext) ?? 1);
3398
- scaleTransform =
3399
- this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
3400
- }
3426
+ scaleTransform = this.rootUnitScaleTransform(shapeRepresentation);
3401
3427
  }
3402
3428
  catch {
3403
3429
  // Malformed unit context (prefix truncation) — no unit scale.
@@ -3439,13 +3465,7 @@ export class AP214GeometryExtraction {
3439
3465
  let scaleTransform = void 0;
3440
3466
  try {
3441
3467
  const shapeRepresentation = this.model.getTypedElementByLocalID(sourceID, shape_representation);
3442
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.
3443
- find(unit => unit.findVariant(length_unit))?.findVariant(length_unit);
3444
- if (sourceShapeContext !== void 0) {
3445
- const sourceUnitInM = (this.convertToMetres(sourceShapeContext) ?? 1);
3446
- scaleTransform =
3447
- this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
3448
- }
3468
+ scaleTransform = this.rootUnitScaleTransform(shapeRepresentation);
3449
3469
  }
3450
3470
  catch {
3451
3471
  // Malformed unit context (prefix truncation) — no unit scale.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ap214_unit_scale.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ap214_unit_scale.test.d.ts","sourceRoot":"","sources":["../../../src/AP214E3_2010/ap214_unit_scale.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,111 @@
1
+ import fs from "fs";
2
+ import { describe, expect, test, beforeAll } from "@jest/globals";
3
+ import { AP214GeometryExtraction } from "./ap214_geometry_extraction.js";
4
+ import { ParseResult } from "../step/parsing/step_parser.js";
5
+ import AP214StepParser from "./ap214_step_parser.js";
6
+ import ParsingBuffer from "../parsing/parsing_buffer.js";
7
+ import { ConwayGeometry } from "../../dependencies/conway-geom/index.js";
8
+ import { ExtractResult } from "../core/shared_constants.js";
9
+ /* eslint-disable no-magic-numbers -- fixture dimensions, reified vertex
10
+ layout (6 floats) and 4x4 matrix element indices are all clearer as
11
+ literals here than as named constants. */
12
+ /**
13
+ * A millimetre-declared STEP part (`SI_UNIT(.MILLI.,.METRE.)`): a tube
14
+ * 50 x 50 x 100 mm. Any mm fixture would do — what matters is that the
15
+ * declared unit is not the world unit, so the root unit-scale transform
16
+ * has to do real work and its direction is observable.
17
+ */
18
+ const FIXTURE = "data/create-a-tube.step";
19
+ /** Metres per millimetre — the factor a `.MILLI.` file must scale by. */
20
+ const MM_IN_M = 0.001;
21
+ /** The fixture's size in its own (millimetre) file coordinates. */
22
+ const EXPECTED_FILE_SIZE_MM = [50, 50, 100];
23
+ /** Fractional slack, covering tessellation chord error on the tube's curves. */
24
+ const TOLERANCE = 0.02;
25
+ let scene;
26
+ let conwayGeometry;
27
+ beforeAll(async () => {
28
+ const parser = AP214StepParser.Instance;
29
+ const buffer = new ParsingBuffer(fs.readFileSync(FIXTURE));
30
+ expect(parser.parseHeader(buffer)[1]).toBe(ParseResult.COMPLETE);
31
+ const [, parsed] = parser.parseDataToModel(buffer);
32
+ expect(parsed).not.toBe(void 0);
33
+ conwayGeometry = new ConwayGeometry();
34
+ expect(await conwayGeometry.initialize()).toBe(true);
35
+ const [result, sceneBuilder] = new AP214GeometryExtraction(conwayGeometry, parsed).extractAP214GeometryData();
36
+ expect(result).toBe(ExtractResult.COMPLETE);
37
+ scene = sceneBuilder;
38
+ });
39
+ /**
40
+ * Axis-aligned bounds of the whole scene, with each mesh's absolute
41
+ * transform applied — i.e. the model as the renderer sees it, which is
42
+ * where the root unit scale actually lands (vertices stay in file
43
+ * coordinates).
44
+ *
45
+ * @return The size along x, y and z.
46
+ */
47
+ function worldSize() {
48
+ const mins = [Infinity, Infinity, Infinity];
49
+ const maxs = [-Infinity, -Infinity, -Infinity];
50
+ const wasm = conwayGeometry.wasmModule;
51
+ for (const [transform, , mesh] of scene.walk()) {
52
+ const geometry = mesh.geometry;
53
+ const vertexFloatCount = geometry.GetVertexDataSize();
54
+ // Reified layout: 6 floats per vertex, position xyz then normal xyz.
55
+ const vertexData = wasm.HEAPF32.subarray(geometry.GetVertexData() / 4, (geometry.GetVertexData() / 4) + vertexFloatCount);
56
+ for (let where = 0; where < vertexFloatCount; where += 6) {
57
+ const x = vertexData[where];
58
+ const y = vertexData[where + 1];
59
+ const z = vertexData[where + 2];
60
+ const point = transform !== void 0 ? [
61
+ (transform[0] * x) + (transform[4] * y) + (transform[8] * z) + transform[12],
62
+ (transform[1] * x) + (transform[5] * y) + (transform[9] * z) + transform[13],
63
+ (transform[2] * x) + (transform[6] * y) + (transform[10] * z) + transform[14],
64
+ ] : [x, y, z];
65
+ for (let axis = 0; axis < 3; ++axis) {
66
+ mins[axis] = Math.min(mins[axis], point[axis]);
67
+ maxs[axis] = Math.max(maxs[axis], point[axis]);
68
+ }
69
+ }
70
+ }
71
+ return maxs.map((max, axis) => max - mins[axis]);
72
+ }
73
+ describe("AP214 root unit scale", () => {
74
+ test("a millimetre model lands in world space in metres (issue #458)", () => {
75
+ const size = worldSize();
76
+ EXPECTED_FILE_SIZE_MM.forEach((millimetres, axis) => {
77
+ const expectedMetres = millimetres * MM_IN_M;
78
+ expect(size[axis]).toBeGreaterThan(expectedMetres * (1 - TOLERANCE));
79
+ expect(size[axis]).toBeLessThan(expectedMetres * (1 + TOLERANCE));
80
+ });
81
+ });
82
+ test("the scale is metres-per-file-unit, not its reciprocal (issue #458)", () => {
83
+ // The bug this pins was a sign-of-exponent error, not a missing
84
+ // conversion: the root transform scaled by 1/unitInM, so a millimetre
85
+ // model came out 1000x too LARGE rather than 1000x too small. Reading
86
+ // the scale straight off the absolute transform's basis keeps that
87
+ // direction pinned independently of how big the fixture happens to be.
88
+ //
89
+ // Measured per mesh from the basis rather than from a bounds ratio,
90
+ // because instance placements move parts around: a whole-scene bounds
91
+ // ratio starts failing on correct code the moment the fixture gains a
92
+ // second occurrence. Placements are rigid, so the column norm carries
93
+ // the unit scale alone.
94
+ //
95
+ // This expects ONE scale across the scene, which holds because the
96
+ // fixture is single-unit. A mixed-unit assembly is a different case —
97
+ // there `doTransforms` reconciles each child into its parent's unit,
98
+ // so a metre-declared sub-part legitimately ends up at basis norm 1.0
99
+ // — and swapping FIXTURE for one would need the expectation taken per
100
+ // representation's own declared unit rather than as a constant.
101
+ let meshCount = 0;
102
+ for (const [transform] of scene.walk()) {
103
+ expect(transform).toBeDefined();
104
+ const basisColumnLength = Math.hypot(transform[0], transform[1], transform[2]);
105
+ expect(basisColumnLength).toBeCloseTo(MM_IN_M, 6);
106
+ ++meshCount;
107
+ }
108
+ // A scene that walked nothing would pass the loop vacuously.
109
+ expect(meshCount).toBeGreaterThan(0);
110
+ });
111
+ });
@@ -5,5 +5,5 @@
5
5
  // only the first segment (major) is meaningful and is the one CI carries forward.
6
6
  // Must stay in `vN.N.N` shape: the CI stamp regex, scripts/updateVersion.mjs, and
7
7
  // statistics.ts all match `v\d+\.\d+\.\d+`.
8
- const versionString = 'Conway v1.453.1359';
8
+ const versionString = 'Conway v1.460.1363';
9
9
  export { versionString };