@constructorfleet/sketchforge-engine 1.27.0 → 1.28.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 (188) hide show
  1. package/dist/cadAnalysis.d.ts.map +1 -1
  2. package/dist/cadAnalysis.js +14 -0
  3. package/dist/cadAnalysis.js.map +1 -1
  4. package/dist/cadBakeMetadata.d.ts +11 -2
  5. package/dist/cadBakeMetadata.d.ts.map +1 -1
  6. package/dist/cadBakeMetadata.js +9 -0
  7. package/dist/cadBakeMetadata.js.map +1 -1
  8. package/dist/cadProjection.d.ts.map +1 -1
  9. package/dist/cadProjection.js.map +1 -1
  10. package/dist/cadSection.d.ts.map +1 -1
  11. package/dist/cadShell.d.ts +1 -1
  12. package/dist/cadShell.d.ts.map +1 -1
  13. package/dist/cadShell.js +7 -0
  14. package/dist/cadShell.js.map +1 -1
  15. package/dist/cadSolids.d.ts.map +1 -1
  16. package/dist/cadSolids.js +18 -1
  17. package/dist/cadSolids.js.map +1 -1
  18. package/dist/cutBrepFrameMigration.d.ts +46 -0
  19. package/dist/cutBrepFrameMigration.d.ts.map +1 -0
  20. package/dist/cutBrepFrameMigration.js +105 -0
  21. package/dist/cutBrepFrameMigration.js.map +1 -0
  22. package/dist/cutterPadding.d.ts.map +1 -1
  23. package/dist/domain/cameraProjection.js.map +1 -1
  24. package/dist/domain/sketchforge.d.ts +30 -0
  25. package/dist/domain/sketchforge.d.ts.map +1 -1
  26. package/dist/editorHistory.d.ts.map +1 -1
  27. package/dist/editorHistory.js.map +1 -1
  28. package/dist/engine.d.ts +3 -3
  29. package/dist/engine.d.ts.map +1 -1
  30. package/dist/engine.js +102 -66
  31. package/dist/engine.js.map +1 -1
  32. package/dist/exactBooleanParts.d.ts +4 -2
  33. package/dist/exactBooleanParts.d.ts.map +1 -1
  34. package/dist/exactBooleanParts.js +7 -3
  35. package/dist/exactBooleanParts.js.map +1 -1
  36. package/dist/exactBooleanSolids.d.ts.map +1 -1
  37. package/dist/gearProfile.d.ts.map +1 -1
  38. package/dist/index.d.ts +1 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/loftProfile.d.ts +1 -1
  43. package/dist/loftProfile.d.ts.map +1 -1
  44. package/dist/loftProfile.js.map +1 -1
  45. package/dist/meshEdgeProjection.d.ts +104 -0
  46. package/dist/meshEdgeProjection.d.ts.map +1 -0
  47. package/dist/meshEdgeProjection.js +439 -0
  48. package/dist/meshEdgeProjection.js.map +1 -0
  49. package/dist/meshImport.d.ts.map +1 -1
  50. package/dist/meshImport.js +2 -20
  51. package/dist/meshImport.js.map +1 -1
  52. package/dist/meshMassProperties.d.ts +92 -0
  53. package/dist/meshMassProperties.d.ts.map +1 -0
  54. package/dist/meshMassProperties.js +570 -0
  55. package/dist/meshMassProperties.js.map +1 -0
  56. package/dist/meshSection.d.ts +44 -0
  57. package/dist/meshSection.d.ts.map +1 -0
  58. package/dist/meshSection.js +154 -0
  59. package/dist/meshSection.js.map +1 -0
  60. package/dist/meshShellOverlap.d.ts +75 -0
  61. package/dist/meshShellOverlap.d.ts.map +1 -0
  62. package/dist/meshShellOverlap.js +797 -0
  63. package/dist/meshShellOverlap.js.map +1 -0
  64. package/dist/meshShellSolids.d.ts +44 -0
  65. package/dist/meshShellSolids.d.ts.map +1 -0
  66. package/dist/meshShellSolids.js +116 -0
  67. package/dist/meshShellSolids.js.map +1 -0
  68. package/dist/nodeSvgDomParser.d.ts +3 -0
  69. package/dist/nodeSvgDomParser.d.ts.map +1 -0
  70. package/dist/nodeSvgDomParser.js +53 -0
  71. package/dist/nodeSvgDomParser.js.map +1 -0
  72. package/dist/parametricRecompute.d.ts.map +1 -1
  73. package/dist/parametricRecompute.js +56 -6
  74. package/dist/parametricRecompute.js.map +1 -1
  75. package/dist/placementWorkplane.d.ts.map +1 -1
  76. package/dist/placementWorkplane.js.map +1 -1
  77. package/dist/projectAssets.d.ts +1 -1
  78. package/dist/projectStore.d.ts +1 -1
  79. package/dist/projectStore.d.ts.map +1 -1
  80. package/dist/projectStore.js +23 -2
  81. package/dist/projectStore.js.map +1 -1
  82. package/dist/revolveRequests.d.ts +57 -1
  83. package/dist/revolveRequests.d.ts.map +1 -1
  84. package/dist/revolveRequests.js +103 -4
  85. package/dist/revolveRequests.js.map +1 -1
  86. package/dist/sceneExport.d.ts +6 -0
  87. package/dist/sceneExport.d.ts.map +1 -1
  88. package/dist/sceneExport.js +6 -2
  89. package/dist/sceneExport.js.map +1 -1
  90. package/dist/serverCadInterference.d.ts.map +1 -1
  91. package/dist/serverCadInterference.js +9 -2
  92. package/dist/serverCadInterference.js.map +1 -1
  93. package/dist/serverCadOperations.d.ts +73 -4
  94. package/dist/serverCadOperations.d.ts.map +1 -1
  95. package/dist/serverCadOperations.js +285 -51
  96. package/dist/serverCadOperations.js.map +1 -1
  97. package/dist/serverCadProjection.d.ts +14 -1
  98. package/dist/serverCadProjection.d.ts.map +1 -1
  99. package/dist/serverCadProjection.js +135 -13
  100. package/dist/serverCadProjection.js.map +1 -1
  101. package/dist/serverCadProperties.d.ts +14 -7
  102. package/dist/serverCadProperties.d.ts.map +1 -1
  103. package/dist/serverCadProperties.js +60 -24
  104. package/dist/serverCadProperties.js.map +1 -1
  105. package/dist/serverCadSection.d.ts +21 -1
  106. package/dist/serverCadSection.d.ts.map +1 -1
  107. package/dist/serverCadSection.js +157 -43
  108. package/dist/serverCadSection.js.map +1 -1
  109. package/dist/serverCadShell.d.ts.map +1 -1
  110. package/dist/serverCadShell.js +0 -3
  111. package/dist/serverCadShell.js.map +1 -1
  112. package/dist/serverShapeBooleans.d.ts +75 -0
  113. package/dist/serverShapeBooleans.d.ts.map +1 -1
  114. package/dist/serverShapeBooleans.js +251 -9
  115. package/dist/serverShapeBooleans.js.map +1 -1
  116. package/dist/serverShapeGroups.js.map +1 -1
  117. package/dist/shapeBounds.d.ts.map +1 -1
  118. package/dist/shapeCatalog.d.ts.map +1 -1
  119. package/dist/shapeCatalog.js +1 -0
  120. package/dist/shapeCatalog.js.map +1 -1
  121. package/dist/shapeRequests.d.ts +13 -0
  122. package/dist/shapeRequests.d.ts.map +1 -1
  123. package/dist/shapeRequests.js +14 -0
  124. package/dist/shapeRequests.js.map +1 -1
  125. package/dist/sketchCadProfile.d.ts +13 -0
  126. package/dist/sketchCadProfile.d.ts.map +1 -1
  127. package/dist/sketchCadProfile.js +108 -0
  128. package/dist/sketchCadProfile.js.map +1 -1
  129. package/dist/sketchCadSweep.js.map +1 -1
  130. package/dist/sketchEdgeSegmentLineage.d.ts +32 -0
  131. package/dist/sketchEdgeSegmentLineage.d.ts.map +1 -0
  132. package/dist/sketchEdgeSegmentLineage.js +49 -0
  133. package/dist/sketchEdgeSegmentLineage.js.map +1 -0
  134. package/dist/sketchEdgeSegmentLineageKernel.d.ts +83 -0
  135. package/dist/sketchEdgeSegmentLineageKernel.d.ts.map +1 -0
  136. package/dist/sketchEdgeSegmentLineageKernel.js +125 -0
  137. package/dist/sketchEdgeSegmentLineageKernel.js.map +1 -0
  138. package/dist/sketchFaceDraftKernel.d.ts +11 -4
  139. package/dist/sketchFaceDraftKernel.d.ts.map +1 -1
  140. package/dist/sketchFaceDraftKernel.js +8 -2
  141. package/dist/sketchFaceDraftKernel.js.map +1 -1
  142. package/dist/sketchRevolve.d.ts +13 -0
  143. package/dist/sketchRevolve.d.ts.map +1 -1
  144. package/dist/sketchRevolve.js +4 -1
  145. package/dist/sketchRevolve.js.map +1 -1
  146. package/dist/skfProject.d.ts +1 -1
  147. package/dist/skfProject.d.ts.map +1 -1
  148. package/dist/skfProject.js +63 -4
  149. package/dist/skfProject.js.map +1 -1
  150. package/dist/sphereTessellation.d.ts.map +1 -1
  151. package/dist/stepAssemblyExplode.d.ts.map +1 -1
  152. package/dist/stepAssemblyExplode.js +1 -1
  153. package/dist/stepAssemblyExplode.js.map +1 -1
  154. package/dist/stepAssemblyHierarchy.js.map +1 -1
  155. package/dist/stepComponentMetadata.d.ts +1 -1
  156. package/dist/stepComponentMetadata.d.ts.map +1 -1
  157. package/dist/stepComponentMetadata.js +93 -39
  158. package/dist/stepComponentMetadata.js.map +1 -1
  159. package/dist/stepExport.d.ts +14 -1
  160. package/dist/stepExport.d.ts.map +1 -1
  161. package/dist/stepExport.js +81 -32
  162. package/dist/stepExport.js.map +1 -1
  163. package/dist/stepImportCommon.d.ts +4 -1
  164. package/dist/stepImportCommon.d.ts.map +1 -1
  165. package/dist/stepImportCommon.js +7 -6
  166. package/dist/stepImportCommon.js.map +1 -1
  167. package/dist/stlImport.js.map +1 -1
  168. package/dist/support/cadModifierTypes.d.ts +41 -1
  169. package/dist/support/cadModifierTypes.d.ts.map +1 -1
  170. package/dist/support/i18n/LocalizedError.d.ts.map +1 -1
  171. package/dist/support/i18n/locales/en/messages.json +30 -2
  172. package/dist/support/i18n/locales.d.ts.map +1 -1
  173. package/dist/support/lib/appTheme.d.ts.map +1 -1
  174. package/dist/support/lib/materialPresets.js.map +1 -1
  175. package/dist/support/lib/measurementUnits.d.ts.map +1 -1
  176. package/dist/support/lib/operator-configuration.json +13 -1
  177. package/dist/support/lib/operatorConfiguration.d.ts +5 -5
  178. package/dist/support/lib/workplaneGrid.js.map +1 -1
  179. package/dist/svgImport.d.ts +2 -0
  180. package/dist/svgImport.d.ts.map +1 -1
  181. package/dist/svgImport.js +7 -0
  182. package/dist/svgImport.js.map +1 -1
  183. package/dist/threadCatalog.js.map +1 -1
  184. package/dist/workplaneSettings.js.map +1 -1
  185. package/dist/workplaneShapes.d.ts +2 -2
  186. package/dist/workplaneShapes.d.ts.map +1 -1
  187. package/dist/workplaneShapes.js.map +1 -1
  188. package/package.json +7 -6
@@ -1,10 +1,30 @@
1
- /** Exact-kernel section contours for one bounded, named axis plane. Node-only. */
1
+ /**
2
+ * Section contours for one bounded, named axis plane. Node-only.
3
+ *
4
+ * Shapes the project describes exactly are cut by the OCCT kernel. Shapes it
5
+ * describes only by their triangles -- imported meshes, and anything stored as
6
+ * a mesh -- are sliced directly (`meshSection.ts`): sewing their triangles into
7
+ * a solid first is what made a 50,000-triangle section take minutes, and the
8
+ * sewn solid's section is the same polyline anyway.
9
+ */
2
10
  import { type SectionPlane } from "./cadSection.js";
3
11
  import type { WorkplaneShape } from "./domain/sketchforge.js";
4
12
  export type SectionOptions = {
5
13
  plane: SectionPlane;
6
14
  offset: number;
7
15
  };
16
+ export declare const MAX_SECTION_FACE_SPAN = 10000;
17
+ /**
18
+ * Triangles a section reads, across every mesh in it, counted from the stored
19
+ * positions as well as the recorded count. Slicing is linear, so this bounds
20
+ * memory rather than time: placing a mesh builds a vertex array, a transformed
21
+ * copy, and a Float64Array in the drawing frame, about 400 bytes a triangle
22
+ * at peak. Measured by hand, not in the perf lane (which stops at 240,000): a
23
+ * 1,965,600-triangle section ran out of a 1 GiB heap and completed in 1.5 GiB.
24
+ */
25
+ export declare const MAX_SECTION_MESH_TRIANGLES = 2000000;
26
+ export declare const MAX_CONTOURS = 10000;
27
+ export declare const MAX_SAMPLED_POINTS = 100000;
8
28
  export declare function sectionShapesToSvg(shapes: readonly WorkplaneShape[], options: SectionOptions): Promise<string>;
9
29
  export declare function sectionShapesToDxf(shapes: readonly WorkplaneShape[], options: SectionOptions): Promise<string>;
10
30
  //# sourceMappingURL=serverCadSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serverCadSection.d.ts","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,EAA2E,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK7H,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAiIrE,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpH;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpH"}
1
+ {"version":3,"file":"serverCadSection.d.ts","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAA2E,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO7H,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAIrE,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,UAAY,CAAC;AACpD,eAAO,MAAM,YAAY,QAAS,CAAC;AACnC,eAAO,MAAM,kBAAkB,SAAU,CAAC;AA8N1C,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpH;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpH"}
@@ -1,15 +1,33 @@
1
- /** Exact-kernel section contours for one bounded, named axis plane. Node-only. */
1
+ /**
2
+ * Section contours for one bounded, named axis plane. Node-only.
3
+ *
4
+ * Shapes the project describes exactly are cut by the OCCT kernel. Shapes it
5
+ * describes only by their triangles -- imported meshes, and anything stored as
6
+ * a mesh -- are sliced directly (`meshSection.ts`): sewing their triangles into
7
+ * a solid first is what made a 50,000-triangle section take minutes, and the
8
+ * sewn solid's section is the same polyline anyway.
9
+ */
2
10
  import { renderSectionDxf, renderSectionSvg, SECTION_PLANES } from "./cadSection.js";
3
11
  import { withCadKernel } from "./serverCadKernel.js";
4
12
  import { ServerCadError } from "./serverCadOperations.js";
5
13
  import { placedSolidForShape } from "./serverShapeBooleans.js";
6
14
  import { EDITOR_TO_DRAWING_TRANSFORM } from "./cadProjection.js";
15
+ import { sectionTriangleSoup } from "./meshSection.js";
16
+ import { worldMeshForShape } from "./serverShapeGroups.js";
7
17
  const MAX_SECTION_SHAPES = 100;
8
18
  const MAX_SECTION_SPAN = 8_000;
9
- const MAX_SECTION_FACE_SPAN = 10_000;
10
- const MAX_MESH_TRIANGLES = 50_000;
11
- const MAX_CONTOURS = 10_000;
12
- const MAX_SAMPLED_POINTS = 100_000;
19
+ export const MAX_SECTION_FACE_SPAN = 10_000;
20
+ /**
21
+ * Triangles a section reads, across every mesh in it, counted from the stored
22
+ * positions as well as the recorded count. Slicing is linear, so this bounds
23
+ * memory rather than time: placing a mesh builds a vertex array, a transformed
24
+ * copy, and a Float64Array in the drawing frame, about 400 bytes a triangle
25
+ * at peak. Measured by hand, not in the perf lane (which stops at 240,000): a
26
+ * 1,965,600-triangle section ran out of a 1 GiB heap and completed in 1.5 GiB.
27
+ */
28
+ export const MAX_SECTION_MESH_TRIANGLES = 2_000_000;
29
+ export const MAX_CONTOURS = 10_000;
30
+ export const MAX_SAMPLED_POINTS = 100_000;
13
31
  const FRAMES = {
14
32
  xy: {
15
33
  normal: "z", u: "x", v: "y",
@@ -31,6 +49,13 @@ function axisBounds(bounds, axis) {
31
49
  return { min: bounds.ymin, max: bounds.ymax };
32
50
  return { min: bounds.zmin, max: bounds.zmax };
33
51
  }
52
+ /** Triangles a shape's stored mesh holds, read from the positions themselves as well as the count beside them. */
53
+ function meshTriangleCount(shape) {
54
+ const mesh = shape.importedMesh;
55
+ if (!mesh)
56
+ return 0;
57
+ return Math.max(mesh.triangleCount ?? 0, Math.floor((mesh.positions?.length ?? 0) / 9));
58
+ }
34
59
  function validateRequest(shapes, options) {
35
60
  if (!options || !SECTION_PLANES.includes(options.plane))
36
61
  throw new ServerCadError(`plane must be one of: ${SECTION_PLANES.join(", ")}.`, 400);
@@ -39,14 +64,72 @@ function validateRequest(shapes, options) {
39
64
  }
40
65
  if (shapes.length > MAX_SECTION_SHAPES)
41
66
  throw new ServerCadError(`A section drawing supports a maximum of ${MAX_SECTION_SHAPES} shapes.`, 413);
42
- const triangles = shapes.reduce((sum, shape) => sum + (shape.importedMesh?.triangleCount ?? 0), 0);
43
- if (triangles > MAX_MESH_TRIANGLES)
44
- throw new ServerCadError(`Section drawing supports a maximum of ${MAX_MESH_TRIANGLES} imported mesh triangles.`, 413);
67
+ const counts = shapes.map(meshTriangleCount);
68
+ const triangles = counts.reduce((sum, count) => sum + count, 0);
69
+ if (triangles > MAX_SECTION_MESH_TRIANGLES) {
70
+ const alone = counts.some((count) => count > MAX_SECTION_MESH_TRIANGLES);
71
+ throw new ServerCadError(alone
72
+ ? `Section drawing supports a maximum of ${MAX_SECTION_MESH_TRIANGLES} mesh triangles; one selected mesh has ${Math.max(...counts)}. `
73
+ + "Reduce the mesh before importing it."
74
+ : `Section drawing supports a maximum of ${MAX_SECTION_MESH_TRIANGLES} mesh triangles across the selected shapes; these have ${triangles}. `
75
+ + "Pass shapeIds to section fewer shapes at a time, or reduce the meshes before importing them.", 413);
76
+ }
45
77
  }
46
78
  function sectionCompound(cad, shapes) {
47
79
  const handles = shapes.map((shape) => cad.transform(placedSolidForShape(cad, shape), [...EDITOR_TO_DRAWING_TRANSFORM]));
48
80
  return handles.length === 1 ? handles[0] : cad.makeCompound(handles);
49
81
  }
82
+ /** A mesh shape's triangles where it stands, in the drawing frame, three vertices per triangle. */
83
+ function drawingFramePositions(shape) {
84
+ const mesh = worldMeshForShape(shape);
85
+ if (!mesh)
86
+ return null;
87
+ const positions = new Float64Array(mesh.faces.length * 9);
88
+ const m = EDITOR_TO_DRAWING_TRANSFORM;
89
+ let cursor = 0;
90
+ for (const face of mesh.faces) {
91
+ for (const vertexIndex of face) {
92
+ const [x, y, z] = mesh.vertices[vertexIndex];
93
+ positions[cursor++] = m[0] * x + m[1] * y + m[2] * z + m[3];
94
+ positions[cursor++] = m[4] * x + m[5] * y + m[6] * z + m[7];
95
+ positions[cursor++] = m[8] * x + m[9] * y + m[10] * z + m[11];
96
+ }
97
+ }
98
+ return positions;
99
+ }
100
+ function positionBounds(positions) {
101
+ if (positions.length < 9)
102
+ return null;
103
+ const bounds = { xmin: Infinity, xmax: -Infinity, ymin: Infinity, ymax: -Infinity, zmin: Infinity, zmax: -Infinity };
104
+ for (let index = 0; index + 2 < positions.length; index += 3) {
105
+ const x = positions[index];
106
+ const y = positions[index + 1];
107
+ const z = positions[index + 2];
108
+ if (x < bounds.xmin)
109
+ bounds.xmin = x;
110
+ if (x > bounds.xmax)
111
+ bounds.xmax = x;
112
+ if (y < bounds.ymin)
113
+ bounds.ymin = y;
114
+ if (y > bounds.ymax)
115
+ bounds.ymax = y;
116
+ if (z < bounds.zmin)
117
+ bounds.zmin = z;
118
+ if (z > bounds.zmax)
119
+ bounds.zmax = z;
120
+ }
121
+ return bounds;
122
+ }
123
+ function unionBounds(bounds) {
124
+ if (!bounds.length)
125
+ return null;
126
+ return bounds.reduce((left, right) => ({
127
+ xmin: Math.min(left.xmin, right.xmin), xmax: Math.max(left.xmax, right.xmax),
128
+ ymin: Math.min(left.ymin, right.ymin), ymax: Math.max(left.ymax, right.ymax),
129
+ zmin: Math.min(left.zmin, right.zmin), zmax: Math.max(left.zmax, right.zmax),
130
+ }));
131
+ }
132
+ const AXIS_INDEX = { x: 0, y: 1, z: 2 };
50
133
  function contourCoordinates(plane, x, y, z) {
51
134
  if (plane === "xy")
52
135
  return [x, y];
@@ -79,47 +162,78 @@ function sampledContours(cad, section, plane, deflection) {
79
162
  }
80
163
  return contours;
81
164
  }
82
- /** Cut the visible stored solids by a bounded plane and return scale-readable SVG contours. */
165
+ /** Refuse a scene the plane misses or that is too large to draw, and frame what is left. */
166
+ function checkedFrame(bounds, options) {
167
+ const values = [bounds.xmin, bounds.xmax, bounds.ymin, bounds.ymax, bounds.zmin, bounds.zmax];
168
+ if (values.some((value) => !Number.isFinite(value) || Math.abs(value) > 100_000)) {
169
+ throw new ServerCadError("The selected scene has coordinates outside the supported section range.", 413);
170
+ }
171
+ const frame = FRAMES[options.plane];
172
+ const normal = axisBounds(bounds, frame.normal);
173
+ if (options.offset < normal.min - 1e-7 || options.offset > normal.max + 1e-7) {
174
+ throw new ServerCadError("The requested section plane does not intersect the selected scene.", 422);
175
+ }
176
+ const uBounds = axisBounds(bounds, frame.u);
177
+ const vBounds = axisBounds(bounds, frame.v);
178
+ const spans = [bounds.xmax - bounds.xmin, bounds.ymax - bounds.ymin, bounds.zmax - bounds.zmin];
179
+ if (spans.some((span) => span > MAX_SECTION_SPAN)) {
180
+ throw new ServerCadError(`Section drawings support a maximum section span of ${MAX_SECTION_SPAN} mm.`, 413);
181
+ }
182
+ const margin = Math.max(1, Math.max(uBounds.max - uBounds.min, vBounds.max - vBounds.min) * 0.02);
183
+ if (uBounds.max - uBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN || vBounds.max - vBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN) {
184
+ throw new ServerCadError(`Section faces are limited to ${MAX_SECTION_FACE_SPAN} mm on each side.`, 413);
185
+ }
186
+ return { frame, uBounds, vBounds, margin, diagonal: Math.hypot(...spans) };
187
+ }
188
+ function exactContours(cad, scene, options, framed) {
189
+ const { frame, uBounds, vBounds, margin, diagonal } = framed;
190
+ const face = cad.transform(cad.makeRectangle(uBounds.max - uBounds.min + margin * 2, vBounds.max - vBounds.min + margin * 2), frame.matrix(uBounds.min - margin, vBounds.min - margin, options.offset));
191
+ const section = cad.section(scene, face);
192
+ if (Number(section) === 0)
193
+ return [];
194
+ return sampledContours(cad, section, options.plane, Math.max(diagonal * 0.002, 1e-4));
195
+ }
196
+ function meshContours(meshes, options) {
197
+ const frame = FRAMES[options.plane];
198
+ const axes = { normal: AXIS_INDEX[frame.normal], u: AXIS_INDEX[frame.u], v: AXIS_INDEX[frame.v], offset: options.offset };
199
+ return meshes.flatMap((positions) => sectionTriangleSoup(positions, axes));
200
+ }
201
+ function finishedDrawing(contours, options, framed) {
202
+ const points = contours.reduce((sum, contour) => sum + contour.length / 2, 0);
203
+ if (contours.length > MAX_CONTOURS || points > MAX_SAMPLED_POINTS) {
204
+ throw new ServerCadError("Section drawing is too complex to return safely.", 413);
205
+ }
206
+ if (!contours.length)
207
+ throw new ServerCadError("The requested section plane produced no contours.", 422);
208
+ const drawing = { plane: options.plane, offset: options.offset, contours };
209
+ const bounds = { minU: framed.uBounds.min, maxU: framed.uBounds.max, minV: framed.vBounds.min, maxV: framed.vBounds.max };
210
+ return { drawing, bounds };
211
+ }
212
+ /** Cut the visible stored solids by a bounded plane and return scale-readable contours. */
83
213
  async function sectionShapesToDrawing(shapes, options) {
84
214
  validateRequest(shapes, options);
85
215
  const visible = shapes.filter((shape) => shape.hidden !== true && shape.hole !== true);
86
216
  if (!visible.length)
87
217
  return Promise.reject(new ServerCadError("No visible solid objects to section.", 422));
218
+ const meshes = [];
219
+ const exact = [];
220
+ for (const shape of visible) {
221
+ const positions = drawingFramePositions(shape);
222
+ if (positions)
223
+ meshes.push(positions);
224
+ else
225
+ exact.push(shape);
226
+ }
227
+ const meshBounds = meshes.map(positionBounds).filter((bounds) => bounds !== null);
228
+ if (!exact.length) {
229
+ const framed = checkedFrame(unionBounds(meshBounds), options);
230
+ return finishedDrawing(meshContours(meshes, options), options, framed);
231
+ }
88
232
  return withCadKernel((cad) => {
89
- const scene = sectionCompound(cad, visible);
90
- const bounds = cad.getBoundingBox(scene, false);
91
- const values = [bounds.xmin, bounds.xmax, bounds.ymin, bounds.ymax, bounds.zmin, bounds.zmax];
92
- if (values.some((value) => !Number.isFinite(value) || Math.abs(value) > 100_000)) {
93
- throw new ServerCadError("The selected scene has coordinates outside the supported section range.", 413);
94
- }
95
- const frame = FRAMES[options.plane];
96
- const normal = axisBounds(bounds, frame.normal);
97
- if (options.offset < normal.min - 1e-7 || options.offset > normal.max + 1e-7) {
98
- throw new ServerCadError("The requested section plane does not intersect the selected scene.", 422);
99
- }
100
- const uBounds = axisBounds(bounds, frame.u);
101
- const vBounds = axisBounds(bounds, frame.v);
102
- const spans = [bounds.xmax - bounds.xmin, bounds.ymax - bounds.ymin, bounds.zmax - bounds.zmin];
103
- if (spans.some((span) => span > MAX_SECTION_SPAN)) {
104
- throw new ServerCadError(`Section drawings support a maximum section span of ${MAX_SECTION_SPAN} mm.`, 413);
105
- }
106
- const margin = Math.max(1, Math.max(uBounds.max - uBounds.min, vBounds.max - vBounds.min) * 0.02);
107
- if (uBounds.max - uBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN || vBounds.max - vBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN) {
108
- throw new ServerCadError(`Section faces are limited to ${MAX_SECTION_FACE_SPAN} mm on each side.`, 413);
109
- }
110
- const face = cad.transform(cad.makeRectangle(uBounds.max - uBounds.min + margin * 2, vBounds.max - vBounds.min + margin * 2), frame.matrix(uBounds.min - margin, vBounds.min - margin, options.offset));
111
- const section = cad.section(scene, face);
112
- if (Number(section) === 0)
113
- throw new ServerCadError("The requested section plane produced no contours.", 422);
114
- const diagonal = Math.hypot(...spans);
115
- const contours = sampledContours(cad, section, options.plane, Math.max(diagonal * 0.002, 1e-4));
116
- if (!contours.length)
117
- throw new ServerCadError("The requested section plane produced no contours.", 422);
118
- const drawing = { plane: options.plane, offset: options.offset, contours };
119
- return { drawing, bounds: {
120
- minU: uBounds.min, maxU: uBounds.max,
121
- minV: vBounds.min, maxV: vBounds.max,
122
- } };
233
+ const scene = sectionCompound(cad, exact);
234
+ const framed = checkedFrame(unionBounds([cad.getBoundingBox(scene, false), ...meshBounds]), options);
235
+ const contours = exactContours(cad, scene, options, framed);
236
+ return finishedDrawing([...contours, ...meshContours(meshes, options)], options, framed);
123
237
  });
124
238
  }
125
239
  export async function sectionShapesToSvg(shapes, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"serverCadSection.js","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverCadSection.js","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serverCadShell.d.ts","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAsH,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACpL,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5F,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC5C,CAAC;AAgBF,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAWhH;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB1G"}
1
+ {"version":3,"file":"serverCadShell.d.ts","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAsH,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACpL,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5F,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC5C,CAAC;AAgBF,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAQhH;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB1G"}
@@ -32,9 +32,6 @@ function faceSummaries(cad, solid, shape, preferStoredIds = true) {
32
32
  export function shapeFaces(shape, options = {}) {
33
33
  return withCadKernel((cad) => {
34
34
  if (options.topology === "exact" && isPlainFullTurnSketchRevolve(shape)) {
35
- if (shape.faceColors && Object.keys(shape.faceColors).length > 0) {
36
- throw new ServerCadError("Exact revolve face listing is unavailable while legacy face colors are stored.");
37
- }
38
35
  const exact = exactPlainSketchRevolveSolid(cad, shape.sketchProfile, shape.sketchRevolve, shape);
39
36
  return faceSummaries(cad, exact, shape, false);
40
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serverCadShell.js","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverCadShell.js","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,81 @@ export type GroupBuildOutcome = {
54
54
  * `generalTransform` because a reflection is not a rigid placement.
55
55
  */
56
56
  export declare function placedSolidForShape(cad: OcctKernel, shape: WorkplaneShape): ShapeHandle;
57
+ /** Which stored representation supplied the geometry, and whether it is exact. */
58
+ export type ShapeGeometryProvenance = {
59
+ /** Which stored representation supplied the geometry that was measured. */
60
+ source: "parametric" | "brep" | "mesh";
61
+ /** Imported triangle meshes remain tessellated even after sewing into a solid. */
62
+ precision: "exact" | "tessellated";
63
+ };
64
+ export type PlacedSolid = {
65
+ solid: ShapeHandle;
66
+ provenance: ShapeGeometryProvenance;
67
+ };
68
+ /**
69
+ * The shape as a placed solid, together with the representation it was
70
+ * actually built from. Reported by the builder rather than guessed from the
71
+ * shape's fields beforehand, because only building it can tell whether a
72
+ * stored B-rep passed its check or a group member fell back to its mesh.
73
+ */
74
+ export declare function placedSolid(cad: OcctKernel, shape: WorkplaneShape): PlacedSolid;
75
+ /**
76
+ * Whether the shape is a boolean result whose stored B-rep is still the exact
77
+ * form of the mesh it is drawn with (#541).
78
+ *
79
+ * A cut stores two descriptions of one solid: the triangles the viewport
80
+ * draws, and the B-rep they were tessellated from, both in the result's own
81
+ * frame -- centred in X and Z, base at Y = 0. While the two agree, the B-rep is
82
+ * the better answer to "what is this solid", so measurement, interference and
83
+ * a further boolean read it instead of sewing the triangles back up.
84
+ *
85
+ * They stop agreeing when an edit reaches the mesh and not the B-rep. Moving,
86
+ * turning and mirroring do not: they are placement, applied to both alike. A
87
+ * resize does, because it stretches the stored triangles and the B-rep keeps
88
+ * its original size; so does a taper, and so does a frame recorded with a
89
+ * baked `sourceTransform`, which puts the B-rep somewhere other than the
90
+ * mesh's frame. A result made from a mesh operand is left out too: its B-rep
91
+ * was sewn from triangles, so calling it exact would be a claim about
92
+ * geometry nobody ever had.
93
+ *
94
+ * Edge treatments, drafts and shells rewrite the B-rep under their own rules
95
+ * and stay on the paths they had.
96
+ */
97
+ export declare function hasCurrentResultBrep(shape: WorkplaneShape): boolean;
98
+ /**
99
+ * A boolean result's stored B-rep, placed where the shape stands, or null to
100
+ * use its mesh instead.
101
+ *
102
+ * Placed the way the mesh is placed, since the two share a frame: mirrored
103
+ * exactly about the shape's centre, then moved rigidly, so the cut's
104
+ * cylinders stay cylinders. A cut's B-rep is in the result's own frame, at the
105
+ * origin -- what `cadBrepFrame` records for a cut since #548, and what loading
106
+ * a project corrects an older cut's frame to (`migratePre548CutBrepFrames`) --
107
+ * so the frame's position is not needed here; `cadBrepTransformForShape` would
108
+ * give the same placement, only with the mirror folded into an affine scale.
109
+ * A B-rep stored anywhere else fails the bounds check below and falls back to
110
+ * the mesh.
111
+ *
112
+ * The B-rep is checked against the mesh before it is trusted, because the
113
+ * structural test cannot see an edit that replaced the triangles and left the
114
+ * B-rep behind. The triangles' corners lie on the true surfaces, so the two
115
+ * boxes agree to within the meshing tolerance; a B-rep that misses by more is
116
+ * describing something else, and the mesh is what is on screen.
117
+ */
118
+ export declare function placedResultBrepSolid(cad: OcctKernel, shape: WorkplaneShape): ShapeHandle | null;
119
+ /**
120
+ * A plain revolve's exact solid where it stands, as BREP text, or null for any
121
+ * other shape: what the STEP exporter writes for a revolve instead of skipping
122
+ * it as a mesh with no B-rep source (#523).
123
+ */
124
+ export declare function placedExactRevolveBrep(shape: WorkplaneShape): Promise<string | null>;
125
+ /**
126
+ * Whether the shape is a group held only as a record of its children.
127
+ *
128
+ * Grouping solids with no hole among them stores the children and nothing
129
+ * else, in the editor and here alike, so there is no mesh or BREP to read.
130
+ */
131
+ export declare function isGroupRecord(shape: WorkplaneShape): boolean;
57
132
  /**
58
133
  * A group holding the given shapes, with any hole among them cut out.
59
134
  *
@@ -1 +1 @@
1
- {"version":3,"file":"serverShapeBooleans.d.ts","sourceRoot":"","sources":["../src/serverShapeBooleans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAezD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GACzB;IACA,KAAK,EAAE,cAAc,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAuBtC;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAiBvF;AAoCD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyErG"}
1
+ {"version":3,"file":"serverShapeBooleans.d.ts","sourceRoot":"","sources":["../src/serverShapeBooleans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkBzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GACzB;IACA,KAAK,EAAE,cAAc,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAuBtC;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAEvF;AAED,kFAAkF;AAClF,MAAM,MAAM,uBAAuB,GAAG;IACpC,2EAA2E;IAC3E,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,kFAAkF;IAClF,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAkBtF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAuB/E;AAkBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAUnE;AA8CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,GAAG,IAAI,CA6BhG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGpF;AAQD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,WAElD;AAuED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6ErG"}