@constructorfleet/sketchforge-engine 1.23.0 → 1.24.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"parametricRecompute.js","sourceRoot":"","sources":["../src/parametricRecompute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parametricRecompute.js","sourceRoot":"","sources":["../src/parametricRecompute.ts"],"names":[],"mappings":"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"}
@@ -210,6 +210,10 @@ export declare function revolvedShapeFromRequest(runtime: ManifoldToplevel, pars
210
210
  };
211
211
  edgeTreatments?: import("./domain/sketchforge.js").EdgeTreatmentFeature[];
212
212
  edgeTreatmentHistory?: import("./domain/sketchforge.js").EdgeTreatmentHistoryEntry[];
213
+ shell?: {
214
+ thickness: number;
215
+ openFaces?: Array<number | string>;
216
+ };
213
217
  cadDisplayEdges?: import("./domain/sketchforge.js").CadDisplayEdge[];
214
218
  cadDisplayEdgesVersion?: 2;
215
219
  edgeResizeMode?: "scale" | "preserve";
@@ -1 +1 @@
1
- {"version":3,"file":"revolveRequests.d.ts","sourceRoot":"","sources":["../src/revolveRequests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revolveRequests.d.ts","sourceRoot":"","sources":["../src/revolveRequests.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,10 @@
16
16
  * further back.
17
17
  *
18
18
  * The listing numbers entities as `GET /edges` and `GET /faces` number them, and
19
- * for the same reason: all three build the shape with `orientedSolidForShape`,
20
- * so an index means one thing across the listing, the measurement and the
21
- * fillet that follows. A *distance* is the one measurement that also depends on
19
+ * for the same reason: edges come from `edgeSolidForShape`, which the edge
20
+ * listing and a fillet also use, and faces from `orientedSolidForShape`, which
21
+ * the face listing uses, so an index means one thing across the listing, the
22
+ * measurement and the fillet that follows. A *distance* is the one measurement that also depends on
22
23
  * where the shape sits, and `measureBetween` says below what it does instead.
23
24
  *
24
25
  * A measurement that is not meaningful for the entity selected is reported as
@@ -1 +1 @@
1
- {"version":3,"file":"serverCadMeasure.d.ts","sourceRoot":"","sources":["../src/serverCadMeasure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kFAAkF;IAClF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yDAAyD;IACzD,iBAAiB,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACjD,CAAC;AAkEF,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAQxF;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAyBF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAwBhH"}
1
+ {"version":3,"file":"serverCadMeasure.d.ts","sourceRoot":"","sources":["../src/serverCadMeasure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kFAAkF;IAClF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yDAAyD;IACzD,iBAAiB,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACjD,CAAC;AAkEF,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAmBxF;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAyBF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAwBhH"}
@@ -16,9 +16,10 @@
16
16
  * further back.
17
17
  *
18
18
  * The listing numbers entities as `GET /edges` and `GET /faces` number them, and
19
- * for the same reason: all three build the shape with `orientedSolidForShape`,
20
- * so an index means one thing across the listing, the measurement and the
21
- * fillet that follows. A *distance* is the one measurement that also depends on
19
+ * for the same reason: edges come from `edgeSolidForShape`, which the edge
20
+ * listing and a fillet also use, and faces from `orientedSolidForShape`, which
21
+ * the face listing uses, so an index means one thing across the listing, the
22
+ * measurement and the fillet that follows. A *distance* is the one measurement that also depends on
22
23
  * where the shape sits, and `measureBetween` says below what it does instead.
23
24
  *
24
25
  * A measurement that is not meaningful for the entity selected is reported as
@@ -28,7 +29,7 @@
28
29
  */
29
30
  import { circularEdgeRadius, faceRadius, planarFaceAngle, } from "./cadMeasurements.js";
30
31
  import { withCadKernel } from "./serverCadKernel.js";
31
- import { orientedSolidForShape, ServerCadError } from "./serverCadOperations.js";
32
+ import { edgeSolidForShape, orientedSolidForShape, ServerCadError } from "./serverCadOperations.js";
32
33
  import { faceOutwardNormal } from "./serverCadShell.js";
33
34
  import { placedSolidForShape } from "./serverShapeBooleans.js";
34
35
  function edgeMeasurement(cad, handle, index) {
@@ -97,10 +98,23 @@ function faceMeasurement(cad, handle, index) {
97
98
  /** Every edge and face of a shape, measured. */
98
99
  export function shapeMeasurements(shape) {
99
100
  return withCadKernel((cad) => {
100
- const solid = orientedSolidForShape(cad, shape);
101
+ // Edges from the solid `GET /edges` numbers, faces from the one `GET /faces`
102
+ // numbers. They differ only for an untreated revolve, whose edges are its
103
+ // exact circles while its default face listing is still its mesh's. A
104
+ // revolve the edge listing refuses (a partial turn, a thread) is still
105
+ // measured, from its mesh, as it was before the listing refused it.
106
+ const faceSolid = orientedSolidForShape(cad, shape);
107
+ let edgeSolid = faceSolid;
108
+ try {
109
+ edgeSolid = edgeSolidForShape(cad, shape);
110
+ }
111
+ catch (error) {
112
+ if (!(error instanceof ServerCadError))
113
+ throw error;
114
+ }
101
115
  return [
102
- ...cad.getSubShapes(solid, "edge").map((handle, index) => edgeMeasurement(cad, handle, index)),
103
- ...cad.getSubShapes(solid, "face").map((handle, index) => faceMeasurement(cad, handle, index)),
116
+ ...cad.getSubShapes(edgeSolid, "edge").map((handle, index) => edgeMeasurement(cad, handle, index)),
117
+ ...cad.getSubShapes(faceSolid, "face").map((handle, index) => faceMeasurement(cad, handle, index)),
104
118
  ];
105
119
  });
106
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serverCadMeasure.js","sourceRoot":"","sources":["../src/serverCadMeasure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverCadMeasure.js","sourceRoot":"","sources":["../src/serverCadMeasure.ts"],"names":[],"mappings":"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"}
@@ -167,11 +167,23 @@ export declare function applyBakedMirror(shape: WorkplaneShape, axis: "x" | "y"
167
167
  */
168
168
  export declare function applyEdgeTreatment(shape: WorkplaneShape, treatment: ServerCadTreatment): Promise<ServerCadResult>;
169
169
  /** Count currently chamferable/filletable edges without preserving topology indexes. */
170
- export declare function allEdgeTreatmentEdgeCount(shape: WorkplaneShape, kind: ServerCadTreatment["kind"]): Promise<number>;
170
+ export declare function allEdgeTreatmentEdgeCount(shape: WorkplaneShape, _kind: ServerCadTreatment["kind"]): Promise<number>;
171
+ /**
172
+ * The solid `GET /edges` numbers and a fillet or chamfer rounds.
173
+ *
174
+ * One builder for both, so an index from the listing names the same edge in
175
+ * the treatment. For an untreated revolve that is the exact solid rebuilt from
176
+ * its profile (#347); a revolve with no exact solid is refused rather than
177
+ * listed or treated by its facets. Everything else is the oriented solid.
178
+ */
179
+ export declare function edgeSolidForShape(cad: OcctKernel, shape: WorkplaneShape): ShapeHandle;
171
180
  /** Build the analytical full-turn BREP for chamfering a retained plain revolve. */
172
181
  export declare function isPlainFullTurnSketchRevolve(shape: WorkplaneShape): boolean;
173
182
  /** Build the analytical BREP for a plain, single-region full-turn revolve. */
174
- export declare function exactPlainSketchRevolveSolid(cad: OcctKernel, sketchProfile: SketchProfile, sketchRevolve: WorkplaneShape["sketchRevolve"], targetShape?: WorkplaneShape): ShapeHandle;
183
+ export declare function exactPlainSketchRevolveSolid(cad: OcctKernel, sketchProfile: SketchProfile, sketchRevolve: WorkplaneShape["sketchRevolve"], targetShape?: WorkplaneShape, sectionScale?: {
184
+ radial: number;
185
+ axial: number;
186
+ }): ShapeHandle;
175
187
  /** Rebuild the exact CAD representation of an eligible retained revolve. */
176
188
  export declare function exactPlainSketchRevolveResult(shape: WorkplaneShape): Promise<ServerCadResult>;
177
189
  /**
@@ -190,7 +202,7 @@ export declare function applySketchFaceDraft(shape: WorkplaneShape, request: Ske
190
202
  export declare function meshedCadResult(cad: OcctKernel, result: ShapeHandle, sourceShape?: WorkplaneShape, lineage?: {
191
203
  sourceFaceHashes: number[];
192
204
  evolution: EvolutionData;
193
- }): ServerCadResult;
205
+ }, sourceSolid?: ShapeHandle): ServerCadResult;
194
206
  /**
195
207
  * The shape as it stands after a treatment.
196
208
  *
@@ -1 +1 @@
1
- {"version":3,"file":"serverCadOperations.d.ts","sourceRoot":"","sources":["../src/serverCadOperations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAYxE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAI7E,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM;CAK1C;AAKD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGX,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,OAAO,eAAe,CAAC;CAC7C,CAAC;AAsBF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,WAMnE;AAyBD,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,eAkB1E;AAkBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,WAE3D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,eAYxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,eAS3E;AAgCD,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAQ1E;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwErH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6DjH;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlH;AAUD,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,cAAc,WAKjE;AAED,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,UAAU,EACf,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,cAAc,CAAC,eAAe,CAAC,EAC9C,WAAW,CAAC,EAAE,cAAc,eAqD7B;AAoBD,4EAA4E;AAC5E,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAQ7F;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CA6C3G;AAED,2GAA2G;AAC3G,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CA2DrH;AAiCD,iGAAiG;AACjG,wBAAgB,eAAe,CAC7B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,cAAc,EAC5B,OAAO,CAAC,EAAE;IAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,aAAa,CAAA;CAAE,GACjE,eAAe,CAqCjB;AAyDD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAiGjG"}
1
+ {"version":3,"file":"serverCadOperations.d.ts","sourceRoot":"","sources":["../src/serverCadOperations.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ import { exactSolidForShape, shapeIsTurned, unrotatedSolidForShape, UnbuildableS
20
20
  import { canonicalizeShape } from "./workplaneShapes.js";
21
21
  import { createLocalId } from "./localIds.js";
22
22
  import { cadSketchRegions } from "./sketchCadProfile.js";
23
- import { sketchProfileToRevolvePolygons } from "./sketchRevolve.js";
23
+ import { normalizeSketchRevolveSettings, sketchProfileToRevolvePolygons } from "./sketchRevolve.js";
24
24
  export class ServerCadError extends Error {
25
25
  status;
26
26
  constructor(message, status = 422) {
@@ -234,8 +234,9 @@ export function shapeEdges(shape) {
234
234
  return withCadKernel((cad) => {
235
235
  // Oriented, not local: the edge a caller names by index has to be the edge
236
236
  // the treatment then rounds, and a turned shape's edge midpoints are only
237
- // where the caller sees them once the rotation is applied.
238
- const solid = orientedSolidForShape(cad, shape);
237
+ // where the caller sees them once the rotation is applied. `edgeSolidForShape`
238
+ // is what the treatment builds too, so the two cannot number differently.
239
+ const solid = edgeSolidForShape(cad, shape);
239
240
  return cad.getSubShapes(solid, "edge").map((handle, index) => edgeSummary(cad, solid, handle, index));
240
241
  });
241
242
  }
@@ -339,7 +340,7 @@ export function applyEdgeTreatment(shape, treatment) {
339
340
  return Promise.reject(new ServerCadError("The fillet radius or chamfer distance must be greater than zero.", 400));
340
341
  }
341
342
  return withCadKernel((cad) => {
342
- const solid = edgeTreatmentSolid(cad, shape, treatment);
343
+ const solid = edgeSolidForShape(cad, shape);
343
344
  const allEdges = cad.getSubShapes(solid, "edge");
344
345
  const requested = treatment.edges;
345
346
  if (requested?.some((index) => !Number.isInteger(index) || index < 0 || index >= allEdges.length)) {
@@ -386,22 +387,107 @@ export function applyEdgeTreatment(shape, treatment) {
386
387
  // no visible reason. Unwrap the single solid inside it.
387
388
  const treatedSolids = cad.getSubShapes(treated, "solid");
388
389
  const result = treatedSolids.length === 1 ? treatedSolids[0] : treated;
389
- return meshedCadResult(cad, result, shape, evolution ? { sourceFaceHashes, evolution } : undefined);
390
+ return meshedCadResult(cad, result, shape, evolution ? { sourceFaceHashes, evolution } : undefined, solid);
390
391
  });
391
392
  }
392
393
  /** Count currently chamferable/filletable edges without preserving topology indexes. */
393
- export function allEdgeTreatmentEdgeCount(shape, kind) {
394
+ export function allEdgeTreatmentEdgeCount(shape, _kind) {
394
395
  return withCadKernel((cad) => {
395
- const solid = edgeTreatmentSolid(cad, shape, { kind, amount: 1 });
396
+ const solid = edgeSolidForShape(cad, shape);
396
397
  return cad.getSubShapes(solid, "edge").filter((edge) => adjacentFaceCount(cad, solid, edge) >= 2).length;
397
398
  });
398
399
  }
399
- function edgeTreatmentSolid(cad, shape, treatment) {
400
- if (treatment.kind === "chamfer" && !treatment.edges?.length
401
- && shape.sketchOperation === "revolve" && shape.sketchProfile && !shape.faceDraft) {
402
- return exactPlainSketchRevolveSolid(cad, shape.sketchProfile, shape.sketchRevolve, shape);
400
+ /**
401
+ * A retained sketch revolve whose geometry is still exactly its sketch.
402
+ *
403
+ * A revolve is stored as a manifold mesh with its profile and settings beside
404
+ * it, and nothing else: no `cadBrep` until something treats, shells or drafts
405
+ * it. Its edges are therefore the facets of that mesh unless they are rebuilt
406
+ * from the profile, which is what makes these shapes different from every
407
+ * other mesh the server can be handed.
408
+ */
409
+ function isUntreatedSketchRevolve(shape) {
410
+ return shape.sketchOperation === "revolve" && Boolean(shape.sketchProfile)
411
+ && !shape.cadBrep && !shape.faceDraft;
412
+ }
413
+ /**
414
+ * Why an untreated revolve has no exact solid to list or treat edges on, or
415
+ * null when it has one.
416
+ *
417
+ * Only a plain full turn of one closed region is rebuilt exactly. Anything else
418
+ * would fall back to the sewn tessellation, where a fillet "succeeds" by
419
+ * rounding hundreds of facet edges and an edge index names a facet, so it is
420
+ * refused instead.
421
+ */
422
+ function revolveWithoutExactEdges(shape) {
423
+ if (!isUntreatedSketchRevolve(shape))
424
+ return null;
425
+ const settings = normalizeSketchRevolveSettings(shape.sketchRevolve);
426
+ const limitation = "Fillets, chamfers and edge listings on a revolve use its exact solid, which is built only for a plain full turn of one closed profile region";
427
+ if (settings.pitch !== 0) {
428
+ return `${limitation}. This is a helical revolve (a thread or spring), whose only geometry is a tessellated sweep, so its edges are facets. Treat the profile before revolving it instead.`;
403
429
  }
404
- return orientedSolidForShape(cad, shape);
430
+ if (settings.coreRadius > 0) {
431
+ return `${limitation}. This revolve is fused to a core, which has no exact solid here, so its edges are facets.`;
432
+ }
433
+ if (Math.abs(Math.abs(settings.sweepAngle) - 360) > 1e-6) {
434
+ return `${limitation}. This revolve turns ${Math.abs(settings.sweepAngle)} degrees rather than a full turn, so its edges are facets.`;
435
+ }
436
+ const { radialX, radialZ } = revolveResizeFactors(shape);
437
+ if (Math.abs(radialX - radialZ) > 1e-6 * Math.max(radialX, radialZ)) {
438
+ return `${limitation}. This revolve has been resized unevenly across its axis, so it is no longer round and no revolve describes it exactly. Resize its width and depth together.`;
439
+ }
440
+ return null;
441
+ }
442
+ /**
443
+ * How far a revolve has been resized since it was swept, per axis.
444
+ *
445
+ * The ratio of its drawn size to its mesh's natural size, which is what the
446
+ * viewport stretches the mesh by.
447
+ */
448
+ function revolveResizeFactors(shape) {
449
+ const mesh = shape.importedMesh;
450
+ const ratio = (drawn, base) => (base && base > 0 && drawn > 0 ? drawn / base : 1);
451
+ return {
452
+ radialX: ratio(shape.width, mesh?.baseWidth),
453
+ radialZ: ratio(shape.depth, mesh?.baseDepth),
454
+ axial: ratio(shape.height, mesh?.baseHeight),
455
+ };
456
+ }
457
+ /**
458
+ * The exact solid of an untreated plain full-turn revolve, at its drawn size,
459
+ * or null for any other shape.
460
+ *
461
+ * A resize is applied to the profile before it is turned, not to the solid
462
+ * afterwards: the section is scaled radially by the width ratio and axially by
463
+ * the height ratio, so a resized revolve is still a revolve and its faces stay
464
+ * analytic. Scaling the solid instead goes wrong both ways the kernel offers --
465
+ * `transform` turns an uneven scale into a uniform one, and `generalTransform`
466
+ * approximates every face as a B-spline that is about 1% off in volume and
467
+ * cannot be written back out as BREP.
468
+ *
469
+ * The ratios are to the mesh's natural size rather than its bounds, which for
470
+ * a facet count that is not a multiple of four are narrower than the circle.
471
+ */
472
+ function exactRevolveSolidForShape(cad, shape) {
473
+ if (!isUntreatedSketchRevolve(shape) || revolveWithoutExactEdges(shape))
474
+ return null;
475
+ const { radialX, axial } = revolveResizeFactors(shape);
476
+ return exactPlainSketchRevolveSolid(cad, shape.sketchProfile, normalizeSketchRevolveSettings(shape.sketchRevolve), undefined, { radial: radialX, axial });
477
+ }
478
+ /**
479
+ * The solid `GET /edges` numbers and a fillet or chamfer rounds.
480
+ *
481
+ * One builder for both, so an index from the listing names the same edge in
482
+ * the treatment. For an untreated revolve that is the exact solid rebuilt from
483
+ * its profile (#347); a revolve with no exact solid is refused rather than
484
+ * listed or treated by its facets. Everything else is the oriented solid.
485
+ */
486
+ export function edgeSolidForShape(cad, shape) {
487
+ const refusal = revolveWithoutExactEdges(shape);
488
+ if (refusal)
489
+ throw new ServerCadError(refusal);
490
+ return exactRevolveSolidForShape(cad, shape) ?? orientedSolidForShape(cad, shape);
405
491
  }
406
492
  /** Build the analytical full-turn BREP for chamfering a retained plain revolve. */
407
493
  export function isPlainFullTurnSketchRevolve(shape) {
@@ -411,10 +497,10 @@ export function isPlainFullTurnSketchRevolve(shape) {
411
497
  && Math.abs(Math.abs(settings.sweepAngle) - 360) <= 1e-6;
412
498
  }
413
499
  /** Build the analytical BREP for a plain, single-region full-turn revolve. */
414
- export function exactPlainSketchRevolveSolid(cad, sketchProfile, sketchRevolve, targetShape) {
500
+ export function exactPlainSketchRevolveSolid(cad, sketchProfile, sketchRevolve, targetShape, sectionScale = { radial: 1, axial: 1 }) {
415
501
  if (!sketchRevolve || (sketchRevolve.pitch ?? 0) !== 0 || (sketchRevolve.coreRadius ?? 0) !== 0
416
502
  || Math.abs(Math.abs(sketchRevolve.sweepAngle) - 360) > 1e-6) {
417
- throw new ServerCadError("Exact face drafting requires a plain full-turn sketch revolve.");
503
+ throw new ServerCadError("Exact revolve geometry requires a plain full-turn sketch revolve.");
418
504
  }
419
505
  const polygons = sketchProfileToRevolvePolygons(sketchProfile, sketchRevolve);
420
506
  if (polygons.length === 0)
@@ -422,8 +508,8 @@ export function exactPlainSketchRevolveSolid(cad, sketchProfile, sketchRevolve,
422
508
  const profile = {
423
509
  points: polygons.flatMap((polygon, polygonIndex) => polygon.map(([x, z], pointIndex) => ({
424
510
  id: `revolve-${polygonIndex}-point-${pointIndex}`,
425
- x,
426
- z,
511
+ x: x * sectionScale.radial,
512
+ z: z * sectionScale.axial,
427
513
  }))),
428
514
  segments: polygons.flatMap((polygon, polygonIndex) => polygon.map((_, pointIndex) => ({
429
515
  id: `revolve-${polygonIndex}-segment-${pointIndex}`,
@@ -434,8 +520,9 @@ export function exactPlainSketchRevolveSolid(cad, sketchProfile, sketchRevolve,
434
520
  };
435
521
  const pathWire = (path) => cad.makeWire(path.steps.map(({ from, to }) => cad.makeLineEdge({ x: from.x, y: from.z, z: 0 }, { x: to.x, y: to.z, z: 0 })));
436
522
  const regions = cadSketchRegions(profile);
437
- if (regions.length !== 1)
438
- throw new ServerCadError("Exact face drafting requires one closed revolve profile region.");
523
+ if (regions.length !== 1) {
524
+ throw new ServerCadError("Exact revolve geometry requires one closed profile region, and this revolve's profile has several.");
525
+ }
439
526
  const solids = regions.map((region) => {
440
527
  let face = cad.makeFace(pathWire(region.outer));
441
528
  if (region.holes.length)
@@ -490,7 +577,12 @@ export function exactPlainSketchRevolveResult(shape) {
490
577
  return Promise.reject(new ServerCadError("Exact revolve geometry requires a plain full-turn retained sketch revolve."));
491
578
  }
492
579
  return withCadKernel((cad) => {
493
- const solid = exactPlainSketchRevolveSolid(cad, shape.sketchProfile, shape.sketchRevolve, shape);
580
+ // The same solid a treatment of this shape starts from, so the untreated
581
+ // exact result and a treated one are the same geometry before the blend.
582
+ // A revolve stretched unevenly across its axis has no such solid; it keeps
583
+ // the bounds-fitted rebuild this function has always returned.
584
+ const solid = exactRevolveSolidForShape(cad, { ...shape, cadBrep: undefined, faceDraft: undefined })
585
+ ?? exactPlainSketchRevolveSolid(cad, shape.sketchProfile, shape.sketchRevolve, shape);
494
586
  return { ...meshedCadResult(cad, solid), faceIds: freshFaceIds(cad, solid, shape.id) };
495
587
  });
496
588
  }
@@ -641,7 +733,7 @@ function faceNormal(cad, face) {
641
733
  }
642
734
  }
643
735
  /** The exact geometry and a mesh of it, which is what a shape stores after any CAD operation. */
644
- export function meshedCadResult(cad, result, sourceShape, lineage) {
736
+ export function meshedCadResult(cad, result, sourceShape, lineage, sourceSolid) {
645
737
  const mesh = cad.meshShape(result, { linearDeflection: MESH_DEFLECTION });
646
738
  // The editor stores a flat triangle list, not an indexed mesh, so the
647
739
  // indices are expanded here rather than carried.
@@ -663,7 +755,7 @@ export function meshedCadResult(cad, result, sourceShape, lineage) {
663
755
  const faceIds = sourceShape
664
756
  ? lineage
665
757
  ? faceIdsFromEvolution(sourceShape.id, sourceShape.faceIds, lineage.sourceFaceHashes, faces.map((face) => cad.hashCode(face, FACE_HASH_UPPER_BOUND)), lineage.evolution)
666
- : faceIdsForResult(cad, sourceShape, faces)
758
+ : faceIdsForResult(cad, sourceShape, faces, sourceSolid)
667
759
  : undefined;
668
760
  return {
669
761
  brep: cad.toBREP(result),
@@ -679,8 +771,8 @@ export function meshedCadResult(cad, result, sourceShape, lineage) {
679
771
  * occurs on each side. OCCT face ordering and hash codes are kernel details,
680
772
  * so an unmatched or ambiguous face receives a new application ID.
681
773
  */
682
- function faceIdsForResult(cad, source, resultFaces) {
683
- const sourceFaces = cad.getSubShapes(orientedSolidForShape(cad, source), "face");
774
+ function faceIdsForResult(cad, source, resultFaces, sourceSolid = orientedSolidForShape(cad, source)) {
775
+ const sourceFaces = cad.getSubShapes(sourceSolid, "face");
684
776
  const fingerprint = (face) => {
685
777
  const brep = cad.toBREP(face);
686
778
  try {