@constructorfleet/sketchforge-engine 1.24.1 → 1.26.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.
Files changed (44) hide show
  1. package/dist/cadFaceMesh.d.ts +31 -0
  2. package/dist/cadFaceMesh.d.ts.map +1 -0
  3. package/dist/cadFaceMesh.js +50 -0
  4. package/dist/cadFaceMesh.js.map +1 -0
  5. package/dist/cadSolids.d.ts +32 -0
  6. package/dist/cadSolids.d.ts.map +1 -1
  7. package/dist/cadSolids.js +45 -12
  8. package/dist/cadSolids.js.map +1 -1
  9. package/dist/engine.d.ts.map +1 -1
  10. package/dist/engine.js +16 -67
  11. package/dist/engine.js.map +1 -1
  12. package/dist/faceDraftSegmentLineage.d.ts +2 -37
  13. package/dist/faceDraftSegmentLineage.d.ts.map +1 -1
  14. package/dist/faceDraftSegmentLineage.js +6 -190
  15. package/dist/faceDraftSegmentLineage.js.map +1 -1
  16. package/dist/serverCadMeasure.d.ts.map +1 -1
  17. package/dist/serverCadMeasure.js +33 -2
  18. package/dist/serverCadMeasure.js.map +1 -1
  19. package/dist/serverCadOperations.d.ts +14 -43
  20. package/dist/serverCadOperations.d.ts.map +1 -1
  21. package/dist/serverCadOperations.js +44 -142
  22. package/dist/serverCadOperations.js.map +1 -1
  23. package/dist/serverShapeBooleans.js +1 -1
  24. package/dist/serverShapeBooleans.js.map +1 -1
  25. package/dist/sketchExtrusionRequest.d.ts.map +1 -1
  26. package/dist/sketchExtrusionRequest.js +2 -25
  27. package/dist/sketchExtrusionRequest.js.map +1 -1
  28. package/dist/sketchExtrusionSolid.d.ts +4 -0
  29. package/dist/sketchExtrusionSolid.d.ts.map +1 -0
  30. package/dist/sketchExtrusionSolid.js +36 -0
  31. package/dist/sketchExtrusionSolid.js.map +1 -0
  32. package/dist/sketchFaceDraftKernel.d.ts +248 -0
  33. package/dist/sketchFaceDraftKernel.d.ts.map +1 -0
  34. package/dist/sketchFaceDraftKernel.js +573 -0
  35. package/dist/sketchFaceDraftKernel.js.map +1 -0
  36. package/dist/support/cadModifierTypes.d.ts +45 -0
  37. package/dist/support/cadModifierTypes.d.ts.map +1 -1
  38. package/dist/support/i18n/locales/en/messages.json +3 -1
  39. package/dist/support/lib/operator-configuration.json +11 -0
  40. package/dist/workplaneShapes.d.ts +6 -0
  41. package/dist/workplaneShapes.d.ts.map +1 -1
  42. package/dist/workplaneShapes.js +25 -70
  43. package/dist/workplaneShapes.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ import type { OcctKernel, ShapeHandle, TessellateOptions } from "occt-wasm";
2
+ export type CadFaceMesh = {
3
+ positions: Float32Array;
4
+ normals: Float32Array;
5
+ indices: Uint32Array;
6
+ triangleCount: number;
7
+ /**
8
+ * Triangle start, triangle count and B-rep face index triples, where the face
9
+ * index is the position of the face in `getSubShapes(shape, "face")` -- the
10
+ * numbering the inspector, `GET /faces` and `faceColors` use.
11
+ */
12
+ faceGroups: number[];
13
+ };
14
+ /**
15
+ * Mesh an exact shape and say which triangles belong to which B-rep face.
16
+ *
17
+ * `tessellate` gives triangles only, so a face colour stored on the shape had
18
+ * nothing to paint in the viewport. `meshShape` reports each face as a range of
19
+ * index-buffer entries and a face hash; this converts the range to triangles
20
+ * and the hash to the face's index. A hash that maps to no face, or
21
+ * to more than one, is dropped rather than guessed, and that face simply
22
+ * previews in the shape's base colour.
23
+ */
24
+ export declare function meshShapeWithFaceGroups(cad: OcctKernel, shape: ShapeHandle, options?: TessellateOptions): CadFaceMesh;
25
+ /**
26
+ * Convert the kernel's face groups -- index-buffer ranges, three entries per
27
+ * triangle, each naming its face by hash -- to triangle ranges naming the face
28
+ * by its index. A group whose hash is unknown or ambiguous (`null`) is dropped.
29
+ */
30
+ export declare function triangleFaceGroups(raw: ArrayLike<number> | undefined, faceIndexByHash: ReadonlyMap<number, number | null>): number[];
31
+ //# sourceMappingURL=cadFaceMesh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cadFaceMesh.d.ts","sourceRoot":"","sources":["../src/cadFaceMesh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAK5E,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAoBrH;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,YAQzH"}
@@ -0,0 +1,50 @@
1
+ /** The upper bound `meshShape` uses when it hashes a face into a face group. */
2
+ const FACE_HASH_UPPER_BOUND = 2_147_483_647;
3
+ /**
4
+ * Mesh an exact shape and say which triangles belong to which B-rep face.
5
+ *
6
+ * `tessellate` gives triangles only, so a face colour stored on the shape had
7
+ * nothing to paint in the viewport. `meshShape` reports each face as a range of
8
+ * index-buffer entries and a face hash; this converts the range to triangles
9
+ * and the hash to the face's index. A hash that maps to no face, or
10
+ * to more than one, is dropped rather than guessed, and that face simply
11
+ * previews in the shape's base colour.
12
+ */
13
+ export function meshShapeWithFaceGroups(cad, shape, options) {
14
+ const mesh = cad.meshShape(shape, options);
15
+ const faces = cad.getSubShapes(shape, "face");
16
+ try {
17
+ const indexByHash = new Map();
18
+ faces.forEach((face, index) => {
19
+ const hash = cad.hashCode(face, FACE_HASH_UPPER_BOUND);
20
+ indexByHash.set(hash, indexByHash.has(hash) ? null : index);
21
+ });
22
+ const faceGroups = triangleFaceGroups(mesh.faceGroups, indexByHash);
23
+ return {
24
+ positions: new Float32Array(mesh.positions),
25
+ normals: new Float32Array(mesh.normals),
26
+ indices: new Uint32Array(mesh.indices),
27
+ triangleCount: mesh.triangleCount,
28
+ faceGroups,
29
+ };
30
+ }
31
+ finally {
32
+ faces.forEach((face) => cad.release(face));
33
+ }
34
+ }
35
+ /**
36
+ * Convert the kernel's face groups -- index-buffer ranges, three entries per
37
+ * triangle, each naming its face by hash -- to triangle ranges naming the face
38
+ * by its index. A group whose hash is unknown or ambiguous (`null`) is dropped.
39
+ */
40
+ export function triangleFaceGroups(raw, faceIndexByHash) {
41
+ const faceGroups = [];
42
+ for (let group = 0; raw && group + 2 < raw.length; group += 3) {
43
+ const index = faceIndexByHash.get(raw[group + 2]);
44
+ if (index === undefined || index === null)
45
+ continue;
46
+ faceGroups.push(raw[group] / 3, raw[group + 1] / 3, index);
47
+ }
48
+ return faceGroups;
49
+ }
50
+ //# sourceMappingURL=cadFaceMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cadFaceMesh.js","sourceRoot":"","sources":["../src/cadFaceMesh.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAe5C;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAe,EAAE,KAAkB,EAAE,OAA2B;IACtG,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;YACvD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACpE,OAAO;YACL,SAAS,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,OAAO,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;YACvC,OAAO,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YACtC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU;SACX,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAkC,EAAE,eAAmD;IACxH,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QACpD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -35,8 +35,40 @@ export declare class UnbuildableShapeError extends Error {
35
35
  * fields zeroed reads as a trick rather than as an intent.
36
36
  */
37
37
  export declare function unrotatedSolidForShape(cad: OcctKernel, shape: WorkplaneShape): ShapeHandle;
38
+ /**
39
+ * Apply a shape's `mirrorX/Y/Z` flags to a solid in the shape's own frame.
40
+ *
41
+ * The editor draws a shape as translate * rotate * mirror about the centre of
42
+ * its frame -- X and Z through its axis, Y through mid-height -- so the mirror
43
+ * comes first, before any rotation. Mirroring after a rotation reflects across
44
+ * the wrong plane: a wedge yawed 30 degrees lands its material 5mm away.
45
+ *
46
+ * `center` is that frame's centre in the solid's coordinates: (0, height/2, 0)
47
+ * for a solid a builder made, the solid's own bounds centre for one stored on
48
+ * the shape, whose rotation stays on the shape and is applied when drawn.
49
+ */
50
+ export declare function mirroredInShapeFrame(cad: OcctKernel, solid: ShapeHandle, shape: WorkplaneShape, center: {
51
+ x: number;
52
+ y: number;
53
+ z: number;
54
+ }): ShapeHandle;
38
55
  /** The kinds `exactSolidForShape` can build, for an error message to name. */
39
56
  export declare const EXACT_SOLID_KINDS: readonly ["box", "cylinder", "cone", "sphere", "halfSphere", "loft", "polygon", "tube", "ring", "roof", "roundRoof", "wedge", "pyramid", "torus"];
57
+ /**
58
+ * The shape as an exact solid, mirrored and turned the way it sits in the project.
59
+ *
60
+ * Rotation has to be baked in: the treated result is stored as a mesh with no
61
+ * rotation of its own, so a shape filleted while turned would otherwise come
62
+ * back straightened. So does any mirror, applied first as the editor does,
63
+ * because the result clears the shape's mirror flags (#413).
64
+ *
65
+ * Turned about the shape's centre, `height / 2` above its base, which is where
66
+ * the viewport and `transformMesh` turn it. It used to turn about the base
67
+ * (the origin), which yaw cannot tell apart -- the vertical axis passes through
68
+ * both -- but a pitch or roll can: a 30 x 10 x 6 box pitched 20 degrees landed
69
+ * 0.18 mm low and 1.03 mm forward of where it was drawn, and an exact cut with
70
+ * a tilted cutter was off by that much (#420).
71
+ */
40
72
  export declare function exactSolidForShape(cad: OcctKernel, shape: WorkplaneShape): ShapeHandle;
41
73
  /** Whether a shape's rotation turns it at all, which decides if baking is needed. */
42
74
  export declare function shapeIsTurned(shape: WorkplaneShape): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cadSolids.d.ts","sourceRoot":"","sources":["../src/cadSolids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAiBzD,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAMhF,2EAA2E;AAC3E,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAmSD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,eAoD5E;AAED,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,mJAGpB,CAAC;AAWX,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,eAqBxE;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,WAElD"}
1
+ {"version":3,"file":"cadSolids.d.ts","sourceRoot":"","sources":["../src/cadSolids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAiBzD,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAMhF,2EAA2E;AAC3E,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAqSD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,eAoD5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,eAO5C;AAED,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,mJAGpB,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,eAwBxE;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,WAElD"}
package/dist/cadSolids.js CHANGED
@@ -255,8 +255,8 @@ function pyramidSolid(cad, shape) {
255
255
  *
256
256
  * Its tube radius comes from the height and its major radius from the smaller
257
257
  * of width and depth, and it is then stretched so the outer diameter matches
258
- * width and depth separately. Unlike every other kind here it is centred on
259
- * the workplane rather than sitting on it, which is what the editor draws.
258
+ * width and depth separately. The kernel's torus is centred on its axis, so it
259
+ * is raised by half its height to sit on the workplane like the viewport mesh.
260
260
  */
261
261
  function torusSolid(cad, shape) {
262
262
  const width = shapeWidth(shape);
@@ -267,9 +267,10 @@ function torusSolid(cad, shape) {
267
267
  const outerDiameter = (majorRadius + tubeRadius) * 2;
268
268
  const scaleX = width / Math.max(0.001, outerDiameter);
269
269
  const scaleZ = depth / Math.max(0.001, outerDiameter);
270
- if (Math.abs(scaleX - 1) < 1e-9 && Math.abs(scaleZ - 1) < 1e-9)
271
- return ring;
272
- return cad.generalTransform(ring, [scaleX, 0, 0, 0, 0, 1, 0, 0, 0, 0, scaleZ, 0]);
270
+ const sized = Math.abs(scaleX - 1) < 1e-9 && Math.abs(scaleZ - 1) < 1e-9
271
+ ? ring
272
+ : cad.generalTransform(ring, [scaleX, 0, 0, 0, 0, 1, 0, 0, 0, 0, scaleZ, 0]);
273
+ return cad.translate(sized, 0, shape.height / 2, 0);
273
274
  }
274
275
  /**
275
276
  * A ball of three radii -- a true sphere when they agree.
@@ -348,21 +349,51 @@ export function unrotatedSolidForShape(cad, shape) {
348
349
  throw new UnbuildableShapeError(`The server cannot build exact geometry for a ${shape.kind}. Do it in the editor instead.`);
349
350
  }
350
351
  }
352
+ /**
353
+ * Apply a shape's `mirrorX/Y/Z` flags to a solid in the shape's own frame.
354
+ *
355
+ * The editor draws a shape as translate * rotate * mirror about the centre of
356
+ * its frame -- X and Z through its axis, Y through mid-height -- so the mirror
357
+ * comes first, before any rotation. Mirroring after a rotation reflects across
358
+ * the wrong plane: a wedge yawed 30 degrees lands its material 5mm away.
359
+ *
360
+ * `center` is that frame's centre in the solid's coordinates: (0, height/2, 0)
361
+ * for a solid a builder made, the solid's own bounds centre for one stored on
362
+ * the shape, whose rotation stays on the shape and is applied when drawn.
363
+ */
364
+ export function mirroredInShapeFrame(cad, solid, shape, center) {
365
+ let mirrored = solid;
366
+ if (shape.mirrorX)
367
+ mirrored = cad.mirror(mirrored, center, { x: 1, y: 0, z: 0 });
368
+ if (shape.mirrorY)
369
+ mirrored = cad.mirror(mirrored, center, { x: 0, y: 1, z: 0 });
370
+ if (shape.mirrorZ)
371
+ mirrored = cad.mirror(mirrored, center, { x: 0, y: 0, z: 1 });
372
+ return mirrored;
373
+ }
351
374
  /** The kinds `exactSolidForShape` can build, for an error message to name. */
352
375
  export const EXACT_SOLID_KINDS = [
353
376
  "box", "cylinder", "cone", "sphere", "halfSphere", "loft",
354
377
  "polygon", "tube", "ring", "roof", "roundRoof", "wedge", "pyramid", "torus",
355
378
  ];
356
379
  /**
357
- * The shape as an exact solid, turned the way it sits in the project.
380
+ * The shape as an exact solid, mirrored and turned the way it sits in the project.
358
381
  *
359
382
  * Rotation has to be baked in: the treated result is stored as a mesh with no
360
383
  * rotation of its own, so a shape filleted while turned would otherwise come
361
- * back straightened.
384
+ * back straightened. So does any mirror, applied first as the editor does,
385
+ * because the result clears the shape's mirror flags (#413).
386
+ *
387
+ * Turned about the shape's centre, `height / 2` above its base, which is where
388
+ * the viewport and `transformMesh` turn it. It used to turn about the base
389
+ * (the origin), which yaw cannot tell apart -- the vertical axis passes through
390
+ * both -- but a pitch or roll can: a 30 x 10 x 6 box pitched 20 degrees landed
391
+ * 0.18 mm low and 1.03 mm forward of where it was drawn, and an exact cut with
392
+ * a tilted cutter was off by that much (#420).
362
393
  */
363
- const Z_AXIS = { point: { x: 0, y: 0, z: 0 }, direction: { x: 0, y: 0, z: 1 } };
364
394
  export function exactSolidForShape(cad, shape) {
365
- let solid = unrotatedSolidForShape(cad, shape);
395
+ const pivot = { x: 0, y: shape.height / 2, z: 0 };
396
+ let solid = mirroredInShapeFrame(cad, unrotatedSolidForShape(cad, shape), shape, pivot);
366
397
  const yaw = shape.rotation ?? 0;
367
398
  const pitch = shape.rotationX ?? 0;
368
399
  const roll = shape.rotationZ ?? 0;
@@ -370,6 +401,8 @@ export function exactSolidForShape(cad, shape) {
370
401
  // in its default "XYZ" order, which is the matrix Rx * Ry * Rz -- so a point
371
402
  // is turned by roll first, then yaw, then pitch. Each `rotate` here
372
403
  // left-multiplies, so the calls run in that same order: roll, yaw, pitch.
404
+ // All three axes pass through the same pivot, so the composition is the one
405
+ // rotation `transformMesh` applies about that point.
373
406
  //
374
407
  // This used to negate the yaw and apply the three in the opposite order, and
375
408
  // nothing noticed, because the shapes anyone had filleted while turned were
@@ -379,11 +412,11 @@ export function exactSolidForShape(cad, shape) {
379
412
  // came back mirrored about the yaw, and any two non-zero rotations came back
380
413
  // in the wrong order.
381
414
  if (roll)
382
- solid = cad.rotate(solid, Z_AXIS, degreesToRadians(roll));
415
+ solid = cad.rotate(solid, { point: pivot, direction: { x: 0, y: 0, z: 1 } }, degreesToRadians(roll));
383
416
  if (yaw)
384
- solid = cad.rotate(solid, Y_AXIS, degreesToRadians(yaw));
417
+ solid = cad.rotate(solid, { point: pivot, direction: Y_AXIS.direction }, degreesToRadians(yaw));
385
418
  if (pitch)
386
- solid = cad.rotate(solid, X_AXIS, degreesToRadians(pitch));
419
+ solid = cad.rotate(solid, { point: pivot, direction: X_AXIS.direction }, degreesToRadians(pitch));
387
420
  return solid;
388
421
  }
389
422
  /** Whether a shape's rotation turns it at all, which decides if baking is needed. */
@@ -1 +1 @@
1
- {"version":3,"file":"cadSolids.js","sourceRoot":"","sources":["../src/cadSolids.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cadSolids.js","sourceRoot":"","sources":["../src/cadSolids.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/engine.js CHANGED
@@ -14,8 +14,9 @@
14
14
  * -- including the project lock, which a macro writing a directory needs and
15
15
  * does not have today -- without pulling `next/server` in with it.
16
16
  */
17
- import { allEdgeTreatmentEdgeCount, applyEdgeTreatment, applyBakedMirror, applyDraftPrism, applySketchFaceDraft, exactPlainSketchRevolveResult, isPlainFullTurnSketchRevolve, shapeEdges, shapeWithCadResult, ServerCadError, } from "./serverCadOperations.js";
18
- import { draftFaceForSketchSegment, legacyDraftSegmentForShape, sketchSegmentForDraftFace } from "./faceDraftSegmentLineage.js";
17
+ import { allEdgeTreatmentEdgeCount, applyEdgeTreatment, applyBakedMirror, applyDraftPrism, applySketchFaceDraft, exactPlainSketchRevolveResult, isPlainFullTurnSketchRevolve, orientedSolidForShape, shapeEdges, shapeWithCadResult, ServerCadError, } from "./serverCadOperations.js";
18
+ import { resolveRetainedFaceDraft, retainedFaceDraftFields, retainedPrismDraftFields } from "./sketchFaceDraftKernel.js";
19
+ import { withCadKernel } from "./serverCadKernel.js";
19
20
  import { cadSketchRegions, cadSketchSweepPaths } from "./sketchCadProfile.js";
20
21
  import { applyShell, shapeFaces, } from "./serverCadShell.js";
21
22
  import { measureBetween as measureBetweenEntities, shapeMeasurements, } from "./serverCadMeasure.js";
@@ -692,68 +693,21 @@ export function createEngine(store) {
692
693
  swept = replayedSource;
693
694
  }
694
695
  else if (requestedFaceDraft) {
695
- const priorReference = existing.faceDraft?.sourceFaceId === requestedFaceDraft.sourceFaceId
696
- ? existing.faceDraft.sourceFaceNormal
697
- : undefined;
698
- const selectedOnPrior = priorReference ? undefined
699
- : (await shapeFaces(existing, isExactSketchRevolve ? { topology: "exact" } : undefined))
700
- .find((face) => face.id === requestedFaceDraft.sourceFaceId);
701
- const isReselection = existing.faceDraft !== undefined
702
- && requestedFaceDraft.sourceFaceId !== existing.faceDraft.sourceFaceId;
703
- const exactReselectedSourceFace = isReselection
704
- ? (await shapeFaces(replayedSource)).find((face) => face.id === requestedFaceDraft.sourceFaceId)
705
- : undefined;
706
- const exactSelectedSourceFace = !replacingSketchProfile && !existing.faceDraft
707
- ? (await shapeFaces(replayedSource)).find((face) => face.id === requestedFaceDraft.sourceFaceId)
708
- : undefined;
709
- const legacySegmentMatch = replacingSketchProfile && existing.faceDraft && !existing.faceDraftSourceSegmentId
710
- ? await legacyDraftSegmentForShape(existing)
711
- : undefined;
712
- if (legacySegmentMatch?.status === "ambiguous") {
713
- throw new Error("The saved face draft does not identify one source sketch segment.");
714
- }
715
- const retainedSourceSegmentId = existing.faceDraftSourceSegmentId
716
- ?? (legacySegmentMatch?.status === "matched" ? legacySegmentMatch.segmentId : undefined);
717
- const retainedSegmentFace = replacingSketchProfile && retainedSourceSegmentId
718
- ? await draftFaceForSketchSegment(replayedSource, retainedSourceSegmentId)
719
- : undefined;
720
- if (retainedSegmentFace && retainedSegmentFace.status !== "matched") {
721
- throw new Error("The selected sketch segment no longer maps to exactly one extrusion side face.");
722
- }
723
- let currentFaceId = retainedSegmentFace?.status === "matched"
724
- ? retainedSegmentFace.faceId
725
- : exactReselectedSourceFace?.surfaceType === "plane" ? exactReselectedSourceFace.id
726
- : exactSelectedSourceFace?.surfaceType === "plane" ? exactSelectedSourceFace.id : undefined;
727
- const sourceFaceNormal = retainedSegmentFace?.status === "matched"
728
- ? retainedSegmentFace.normal
729
- : exactReselectedSourceFace?.normal ?? exactSelectedSourceFace?.normal ?? priorReference ?? selectedOnPrior?.normal;
730
- if (!sourceFaceNormal || selectedOnPrior && selectedOnPrior.surfaceType !== "plane") {
731
- throw new Error("The selected source face has no stable planar reference.");
732
- }
733
- if (!currentFaceId)
734
- currentFaceId = (await findUniqueDraftFace(replayedSource, sourceFaceNormal))?.id;
735
- if (!currentFaceId)
736
- throw new Error("The selected source face is missing or ambiguous after the sketch edit.");
737
- const segmentMatch = retainedSegmentFace?.status === "matched"
738
- ? retainedSegmentFace
739
- : await sketchSegmentForDraftFace(replayedSource, currentFaceId);
740
- if (segmentMatch.status === "ambiguous") {
741
- throw new Error("The selected lateral face matches multiple sketch segments.");
742
- }
743
- if (segmentMatch.status === "missing") {
744
- throw new Error("The selected extrusion side face has no exact sketch-segment boundary match.");
745
- }
746
- const faceDraft = { ...requestedFaceDraft, sourceFaceNormal };
696
+ // The resolver the editor's draft, edit and replay call too (#384).
697
+ const { faceId: currentFaceId, normal: sourceFaceNormal, segmentMatch } = await withCadKernel((cad) => resolveRetainedFaceDraft(cad, {
698
+ existing,
699
+ source: replayedSource,
700
+ request: requestedFaceDraft,
701
+ profileChanged: replacingSketchProfile,
702
+ }, (kernel, shape) => orientedSolidForShape(kernel, shape)));
747
703
  const result = await applySketchFaceDraft(replayedSource, {
748
704
  ...requestedFaceDraft,
749
705
  sourceFaceId: currentFaceId,
750
706
  });
707
+ // The same record the editor writes for a draft it makes (#384).
751
708
  swept = {
752
709
  ...shapeWithCadResult(replayedSource, result),
753
- faceDraft: { ...faceDraft, sourceFaceId: currentFaceId },
754
- faceDraftSourceFaceIds: replayedSource.faceIds,
755
- faceDraftSourceSegmentId: segmentMatch.status === "matched" ? segmentMatch.segmentId : undefined,
756
- faceDraftSourceFrame: existing.faceDraftSourceFrame ?? existing.cadBrepFrame,
710
+ ...retainedFaceDraftFields(replayedSource.faceIds, existing, { faceId: currentFaceId, normal: sourceFaceNormal, segmentMatch }, requestedFaceDraft),
757
711
  };
758
712
  }
759
713
  else if (draftPrismAngle !== undefined && !replayDraftAndTreatment) {
@@ -1329,15 +1283,10 @@ export function createEngine(store) {
1329
1283
  ],
1330
1284
  };
1331
1285
  }),
1332
- draftPrism: (projectId, shapeId, angle) => cadTreatment(projectId, shapeId, "prism-draft", async (shape) => {
1333
- const sourceFrame = shape.draftPrismSourceFrame ?? shape.cadBrepFrame;
1334
- return {
1335
- ...shapeWithCadResult(shape, await applyDraftPrism(shape, { angle })),
1336
- draftPrismAngle: angle,
1337
- draftPrismSourceHeight: shape.draftPrismSourceHeight ?? shape.height,
1338
- ...(sourceFrame ? { draftPrismSourceFrame: sourceFrame } : {}),
1339
- };
1340
- }),
1286
+ draftPrism: (projectId, shapeId, angle) => cadTreatment(projectId, shapeId, "prism-draft", async (shape) => ({
1287
+ ...shapeWithCadResult(shape, await applyDraftPrism(shape, { angle })),
1288
+ ...retainedPrismDraftFields(shape, angle),
1289
+ })),
1341
1290
  mirrorBaked: (projectId, ids, axis) => mutating(projectId, async (document) => {
1342
1291
  if (ids.length < 1)
1343
1292
  return failed({ reason: "selection_too_small", needed: 1, given: 0 });