@bldrs-ai/conway 1.352.1113 → 1.353.1118
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/examples/browser-bundled.cjs +1 -1
- package/compiled/examples/cli-bundled.cjs +1 -1
- package/compiled/examples/cli-step-bundled.cjs +81 -3
- package/compiled/examples/validator-bundled.cjs +1 -1
- package/compiled/src/AP214E3_2010/ap214_geometry_extraction.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/ap214_geometry_extraction.js +28 -1
- package/compiled/src/AP214E3_2010/ap214_occurrence_geometry.test.d.ts +2 -0
- package/compiled/src/AP214E3_2010/ap214_occurrence_geometry.test.d.ts.map +1 -0
- package/compiled/src/AP214E3_2010/ap214_occurrence_geometry.test.js +106 -0
- package/compiled/src/AP214E3_2010/ap214_scene_builder.d.ts +45 -1
- package/compiled/src/AP214E3_2010/ap214_scene_builder.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/ap214_scene_builder.js +83 -2
- package/compiled/src/compat/web-ifc/ifc_api.d.ts +1 -0
- package/compiled/src/compat/web-ifc/ifc_api.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.smoke.test.js +33 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.js +6 -2
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -66,6 +66,39 @@ describe("web-ifc compat IfcAPI", () => {
|
|
|
66
66
|
});
|
|
67
67
|
expect(placedGeometryCount).toBeGreaterThan(0);
|
|
68
68
|
}, 120000);
|
|
69
|
+
test("STEP: each PlacedGeometry carries its occurrence path, matching the tree", async () => {
|
|
70
|
+
// The Share-facing contract for per-occurrence selection: a reused part
|
|
71
|
+
// (the nut, placed under every l-bracket-assembly) streams one
|
|
72
|
+
// PlacedGeometry per occurrence, each tagged with the unique occurrence
|
|
73
|
+
// path — even though they share a geometryExpressID (the part type).
|
|
74
|
+
const buffer = new Uint8Array(fs.readFileSync("data/as1-oc-214.stp"));
|
|
75
|
+
const modelID = api.OpenModel(buffer, SETTINGS);
|
|
76
|
+
expect(modelID).toBeGreaterThanOrEqual(0);
|
|
77
|
+
const meshPaths = [];
|
|
78
|
+
api.StreamAllMeshes(modelID, (mesh) => {
|
|
79
|
+
for (let i = 0; i < mesh.geometries.size(); i++) {
|
|
80
|
+
const placed = mesh.geometries.get(i);
|
|
81
|
+
meshPaths.push(JSON.stringify(placed.occurrencePath ?? []));
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// Every instance has a non-empty, unique occurrence path -> a pick resolves
|
|
85
|
+
// to one occurrence, not the shared part type.
|
|
86
|
+
expect(meshPaths.length).toBeGreaterThan(0);
|
|
87
|
+
expect(meshPaths.every((p) => p !== "[]")).toBe(true);
|
|
88
|
+
expect(new Set(meshPaths).size).toBe(meshPaths.length);
|
|
89
|
+
// ...and the streamed paths are exactly the product-structure leaf paths.
|
|
90
|
+
const tree = await api.properties.getSpatialStructure(modelID);
|
|
91
|
+
const leafPaths = [];
|
|
92
|
+
const walk = (node) => {
|
|
93
|
+
const children = node.children ?? [];
|
|
94
|
+
if (children.length === 0)
|
|
95
|
+
leafPaths.push(JSON.stringify(node.occurrencePath));
|
|
96
|
+
for (const child of children)
|
|
97
|
+
walk(child);
|
|
98
|
+
};
|
|
99
|
+
walk(tree);
|
|
100
|
+
expect(meshPaths.slice().sort()).toEqual(leafPaths.slice().sort());
|
|
101
|
+
}, 120000);
|
|
69
102
|
test("routes an AP203 (CONFIG_CONTROL_DESIGN) model through the AP214 loader", () => {
|
|
70
103
|
// Validates the AP203→AP214 fall-through added to the passthrough
|
|
71
104
|
// factory (the standalone adapter had no AP203 case and errored).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_proxy_ap214.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ap214.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ifc_api_proxy_ap214.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ap214.ts"],"names":[],"mappings":"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"}
|
|
@@ -515,7 +515,7 @@ export class IfcApiProxyAP214 {
|
|
|
515
515
|
const [model, scene, meshMap, geometryMaterialTransformMap, vectorFlatMesh] = this.model;
|
|
516
516
|
let coordinationMatrix = this.model[5];
|
|
517
517
|
// eslint-disable-next-line no-unused-vars
|
|
518
|
-
for (const [_, nativeTransform, geometry, material, entity] of scene.
|
|
518
|
+
for (const [_, nativeTransform, geometry, material, entity, occurrencePath] of scene.walkWithOccurrence()) {
|
|
519
519
|
if (geometry.type === CanonicalMeshType.BUFFER_GEOMETRY && !geometry.temporary) {
|
|
520
520
|
let material_;
|
|
521
521
|
if (material === void 0) {
|
|
@@ -606,6 +606,7 @@ export class IfcApiProxyAP214 {
|
|
|
606
606
|
color: color,
|
|
607
607
|
geometryExpressID: expressID,
|
|
608
608
|
flatTransformation: newTransformArr,
|
|
609
|
+
occurrencePath,
|
|
609
610
|
};
|
|
610
611
|
mesh[0].push(singlePlacedGeometry);
|
|
611
612
|
mesh[1].geometries = mesh[0];
|
|
@@ -624,6 +625,7 @@ export class IfcApiProxyAP214 {
|
|
|
624
625
|
color: color,
|
|
625
626
|
geometryExpressID: expressID,
|
|
626
627
|
flatTransformation: newTransformArr,
|
|
628
|
+
occurrencePath,
|
|
627
629
|
};
|
|
628
630
|
// eslint-disable-next-line no-array-constructor
|
|
629
631
|
const placedGeometryArray_ = new Array();
|
|
@@ -676,7 +678,7 @@ export class IfcApiProxyAP214 {
|
|
|
676
678
|
const [model, scene, meshMap, geometryMaterialTransformMap, vectorFlatMesh] = this.model;
|
|
677
679
|
let coordinationMatrix = this.model[5];
|
|
678
680
|
// eslint-disable-next-line no-unused-vars
|
|
679
|
-
for (const [_, nativeTransform, geometry, material, entity] of scene.
|
|
681
|
+
for (const [_, nativeTransform, geometry, material, entity, occurrencePath] of scene.walkWithOccurrence()) {
|
|
680
682
|
if (geometry.type === CanonicalMeshType.BUFFER_GEOMETRY && !geometry.temporary) {
|
|
681
683
|
let material_;
|
|
682
684
|
if (material === void 0) {
|
|
@@ -766,6 +768,7 @@ export class IfcApiProxyAP214 {
|
|
|
766
768
|
color: color,
|
|
767
769
|
geometryExpressID: expressID,
|
|
768
770
|
flatTransformation: newTransformArr,
|
|
771
|
+
occurrencePath,
|
|
769
772
|
};
|
|
770
773
|
mesh[0].push(singlePlacedGeometry);
|
|
771
774
|
mesh[1].geometries = mesh[0];
|
|
@@ -784,6 +787,7 @@ export class IfcApiProxyAP214 {
|
|
|
784
787
|
color: color,
|
|
785
788
|
geometryExpressID: expressID,
|
|
786
789
|
flatTransformation: newTransformArr,
|
|
790
|
+
occurrencePath,
|
|
787
791
|
};
|
|
788
792
|
// eslint-disable-next-line no-array-constructor
|
|
789
793
|
const placedGeometryArray_ = new Array();
|
|
@@ -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 Web-Ifc Shim v1.
|
|
8
|
+
const versionString = 'Conway Web-Ifc Shim v1.353.1118';
|
|
9
9
|
export { versionString };
|