@constructorfleet/sketchforge-engine 1.26.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 (200) hide show
  1. package/dist/cadAnalysis.d.ts +94 -0
  2. package/dist/cadAnalysis.d.ts.map +1 -0
  3. package/dist/cadAnalysis.js +157 -0
  4. package/dist/cadAnalysis.js.map +1 -0
  5. package/dist/cadBakeMetadata.d.ts +11 -2
  6. package/dist/cadBakeMetadata.d.ts.map +1 -1
  7. package/dist/cadBakeMetadata.js +9 -0
  8. package/dist/cadBakeMetadata.js.map +1 -1
  9. package/dist/cadProjection.d.ts.map +1 -1
  10. package/dist/cadProjection.js.map +1 -1
  11. package/dist/cadSection.d.ts.map +1 -1
  12. package/dist/cadShell.d.ts +143 -0
  13. package/dist/cadShell.d.ts.map +1 -0
  14. package/dist/cadShell.js +313 -0
  15. package/dist/cadShell.js.map +1 -0
  16. package/dist/cadSolids.d.ts.map +1 -1
  17. package/dist/cadSolids.js +18 -1
  18. package/dist/cadSolids.js.map +1 -1
  19. package/dist/cutBrepFrameMigration.d.ts +46 -0
  20. package/dist/cutBrepFrameMigration.d.ts.map +1 -0
  21. package/dist/cutBrepFrameMigration.js +105 -0
  22. package/dist/cutBrepFrameMigration.js.map +1 -0
  23. package/dist/cutterPadding.d.ts.map +1 -1
  24. package/dist/domain/cameraProjection.js.map +1 -1
  25. package/dist/domain/sketchforge.d.ts +31 -1
  26. package/dist/domain/sketchforge.d.ts.map +1 -1
  27. package/dist/editorHistory.d.ts.map +1 -1
  28. package/dist/editorHistory.js.map +1 -1
  29. package/dist/engine.d.ts +3 -3
  30. package/dist/engine.d.ts.map +1 -1
  31. package/dist/engine.js +156 -78
  32. package/dist/engine.js.map +1 -1
  33. package/dist/exactBooleanParts.d.ts +4 -2
  34. package/dist/exactBooleanParts.d.ts.map +1 -1
  35. package/dist/exactBooleanParts.js +7 -3
  36. package/dist/exactBooleanParts.js.map +1 -1
  37. package/dist/exactBooleanSolids.d.ts.map +1 -1
  38. package/dist/gearProfile.d.ts.map +1 -1
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/loftProfile.d.ts +1 -1
  44. package/dist/loftProfile.d.ts.map +1 -1
  45. package/dist/loftProfile.js.map +1 -1
  46. package/dist/meshEdgeProjection.d.ts +104 -0
  47. package/dist/meshEdgeProjection.d.ts.map +1 -0
  48. package/dist/meshEdgeProjection.js +439 -0
  49. package/dist/meshEdgeProjection.js.map +1 -0
  50. package/dist/meshImport.d.ts.map +1 -1
  51. package/dist/meshImport.js +2 -20
  52. package/dist/meshImport.js.map +1 -1
  53. package/dist/meshMassProperties.d.ts +92 -0
  54. package/dist/meshMassProperties.d.ts.map +1 -0
  55. package/dist/meshMassProperties.js +570 -0
  56. package/dist/meshMassProperties.js.map +1 -0
  57. package/dist/meshSection.d.ts +44 -0
  58. package/dist/meshSection.d.ts.map +1 -0
  59. package/dist/meshSection.js +154 -0
  60. package/dist/meshSection.js.map +1 -0
  61. package/dist/meshShellOverlap.d.ts +75 -0
  62. package/dist/meshShellOverlap.d.ts.map +1 -0
  63. package/dist/meshShellOverlap.js +797 -0
  64. package/dist/meshShellOverlap.js.map +1 -0
  65. package/dist/meshShellSolids.d.ts +44 -0
  66. package/dist/meshShellSolids.d.ts.map +1 -0
  67. package/dist/meshShellSolids.js +116 -0
  68. package/dist/meshShellSolids.js.map +1 -0
  69. package/dist/nodeSvgDomParser.d.ts +3 -0
  70. package/dist/nodeSvgDomParser.d.ts.map +1 -0
  71. package/dist/nodeSvgDomParser.js +53 -0
  72. package/dist/nodeSvgDomParser.js.map +1 -0
  73. package/dist/parametricRecompute.d.ts.map +1 -1
  74. package/dist/parametricRecompute.js +63 -10
  75. package/dist/parametricRecompute.js.map +1 -1
  76. package/dist/placementWorkplane.d.ts.map +1 -1
  77. package/dist/placementWorkplane.js.map +1 -1
  78. package/dist/projectAssets.d.ts +1 -1
  79. package/dist/projectStore.d.ts +1 -1
  80. package/dist/projectStore.d.ts.map +1 -1
  81. package/dist/projectStore.js +23 -2
  82. package/dist/projectStore.js.map +1 -1
  83. package/dist/revolveRequests.d.ts +57 -1
  84. package/dist/revolveRequests.d.ts.map +1 -1
  85. package/dist/revolveRequests.js +103 -4
  86. package/dist/revolveRequests.js.map +1 -1
  87. package/dist/sceneExport.d.ts +6 -0
  88. package/dist/sceneExport.d.ts.map +1 -1
  89. package/dist/sceneExport.js +6 -2
  90. package/dist/sceneExport.js.map +1 -1
  91. package/dist/serverCadInterference.d.ts +8 -45
  92. package/dist/serverCadInterference.d.ts.map +1 -1
  93. package/dist/serverCadInterference.js +21 -43
  94. package/dist/serverCadInterference.js.map +1 -1
  95. package/dist/serverCadOperations.d.ts +73 -4
  96. package/dist/serverCadOperations.d.ts.map +1 -1
  97. package/dist/serverCadOperations.js +356 -71
  98. package/dist/serverCadOperations.js.map +1 -1
  99. package/dist/serverCadProjection.d.ts +14 -1
  100. package/dist/serverCadProjection.d.ts.map +1 -1
  101. package/dist/serverCadProjection.js +135 -13
  102. package/dist/serverCadProjection.js.map +1 -1
  103. package/dist/serverCadProperties.d.ts +14 -7
  104. package/dist/serverCadProperties.d.ts.map +1 -1
  105. package/dist/serverCadProperties.js +60 -24
  106. package/dist/serverCadProperties.js.map +1 -1
  107. package/dist/serverCadSection.d.ts +21 -1
  108. package/dist/serverCadSection.d.ts.map +1 -1
  109. package/dist/serverCadSection.js +157 -43
  110. package/dist/serverCadSection.js.map +1 -1
  111. package/dist/serverCadShell.d.ts +7 -94
  112. package/dist/serverCadShell.d.ts.map +1 -1
  113. package/dist/serverCadShell.js +25 -272
  114. package/dist/serverCadShell.js.map +1 -1
  115. package/dist/serverCadThickness.d.ts +8 -8
  116. package/dist/serverCadThickness.d.ts.map +1 -1
  117. package/dist/serverCadThickness.js +15 -42
  118. package/dist/serverCadThickness.js.map +1 -1
  119. package/dist/serverShapeBooleans.d.ts +75 -0
  120. package/dist/serverShapeBooleans.d.ts.map +1 -1
  121. package/dist/serverShapeBooleans.js +251 -9
  122. package/dist/serverShapeBooleans.js.map +1 -1
  123. package/dist/serverShapeGroups.js.map +1 -1
  124. package/dist/serverStepExplode.d.ts +1 -2
  125. package/dist/serverStepExplode.d.ts.map +1 -1
  126. package/dist/serverStepExplode.js +15 -148
  127. package/dist/serverStepExplode.js.map +1 -1
  128. package/dist/shapeBounds.d.ts.map +1 -1
  129. package/dist/shapeCatalog.d.ts.map +1 -1
  130. package/dist/shapeCatalog.js +1 -0
  131. package/dist/shapeCatalog.js.map +1 -1
  132. package/dist/shapeRequests.d.ts +13 -0
  133. package/dist/shapeRequests.d.ts.map +1 -1
  134. package/dist/shapeRequests.js +14 -0
  135. package/dist/shapeRequests.js.map +1 -1
  136. package/dist/sketchCadProfile.d.ts +13 -0
  137. package/dist/sketchCadProfile.d.ts.map +1 -1
  138. package/dist/sketchCadProfile.js +108 -0
  139. package/dist/sketchCadProfile.js.map +1 -1
  140. package/dist/sketchCadSweep.js.map +1 -1
  141. package/dist/sketchEdgeSegmentLineage.d.ts +32 -0
  142. package/dist/sketchEdgeSegmentLineage.d.ts.map +1 -0
  143. package/dist/sketchEdgeSegmentLineage.js +49 -0
  144. package/dist/sketchEdgeSegmentLineage.js.map +1 -0
  145. package/dist/sketchEdgeSegmentLineageKernel.d.ts +83 -0
  146. package/dist/sketchEdgeSegmentLineageKernel.d.ts.map +1 -0
  147. package/dist/sketchEdgeSegmentLineageKernel.js +125 -0
  148. package/dist/sketchEdgeSegmentLineageKernel.js.map +1 -0
  149. package/dist/sketchFaceDraftKernel.d.ts +16 -9
  150. package/dist/sketchFaceDraftKernel.d.ts.map +1 -1
  151. package/dist/sketchFaceDraftKernel.js +19 -11
  152. package/dist/sketchFaceDraftKernel.js.map +1 -1
  153. package/dist/sketchRevolve.d.ts +13 -0
  154. package/dist/sketchRevolve.d.ts.map +1 -1
  155. package/dist/sketchRevolve.js +4 -1
  156. package/dist/sketchRevolve.js.map +1 -1
  157. package/dist/skfProject.d.ts +1 -1
  158. package/dist/skfProject.d.ts.map +1 -1
  159. package/dist/skfProject.js +63 -4
  160. package/dist/skfProject.js.map +1 -1
  161. package/dist/sphereTessellation.d.ts.map +1 -1
  162. package/dist/stepAssemblyExplode.d.ts +45 -0
  163. package/dist/stepAssemblyExplode.d.ts.map +1 -0
  164. package/dist/stepAssemblyExplode.js +195 -0
  165. package/dist/stepAssemblyExplode.js.map +1 -0
  166. package/dist/stepAssemblyHierarchy.js.map +1 -1
  167. package/dist/stepComponentMetadata.d.ts +1 -1
  168. package/dist/stepComponentMetadata.d.ts.map +1 -1
  169. package/dist/stepComponentMetadata.js +93 -39
  170. package/dist/stepComponentMetadata.js.map +1 -1
  171. package/dist/stepExport.d.ts +14 -1
  172. package/dist/stepExport.d.ts.map +1 -1
  173. package/dist/stepExport.js +81 -32
  174. package/dist/stepExport.js.map +1 -1
  175. package/dist/stepImportCommon.d.ts +4 -1
  176. package/dist/stepImportCommon.d.ts.map +1 -1
  177. package/dist/stepImportCommon.js +7 -6
  178. package/dist/stepImportCommon.js.map +1 -1
  179. package/dist/stlImport.js.map +1 -1
  180. package/dist/support/cadModifierTypes.d.ts +100 -1
  181. package/dist/support/cadModifierTypes.d.ts.map +1 -1
  182. package/dist/support/i18n/LocalizedError.d.ts.map +1 -1
  183. package/dist/support/i18n/locales/en/messages.json +42 -2
  184. package/dist/support/i18n/locales.d.ts.map +1 -1
  185. package/dist/support/lib/appTheme.d.ts.map +1 -1
  186. package/dist/support/lib/materialPresets.js.map +1 -1
  187. package/dist/support/lib/measurementUnits.d.ts.map +1 -1
  188. package/dist/support/lib/operator-configuration.json +13 -1
  189. package/dist/support/lib/operatorConfiguration.d.ts +5 -5
  190. package/dist/support/lib/workplaneGrid.js.map +1 -1
  191. package/dist/svgImport.d.ts +2 -0
  192. package/dist/svgImport.d.ts.map +1 -1
  193. package/dist/svgImport.js +7 -0
  194. package/dist/svgImport.js.map +1 -1
  195. package/dist/threadCatalog.js.map +1 -1
  196. package/dist/workplaneSettings.js.map +1 -1
  197. package/dist/workplaneShapes.d.ts +2 -2
  198. package/dist/workplaneShapes.d.ts.map +1 -1
  199. package/dist/workplaneShapes.js.map +1 -1
  200. package/package.json +7 -6
@@ -15,10 +15,12 @@
15
15
  * Node-only. Never import this from anything the browser bundles.
16
16
  */
17
17
  import { withCadKernel } from "./serverCadKernel.js";
18
- import { localSolidForShape, meshedCadResult, solidFromMeshPositions, ServerCadError, cadResultIsValid } from "./serverCadOperations.js";
19
- import { UnbuildableShapeError } from "./cadSolids.js";
18
+ import { exactRevolveAngularDeflection, exactRevolveLocalSolid, hasExactRevolveSolid, localSolidForShape, meshedCadResult, solidFromMeshPositions, ServerCadError, cadResultIsValid } from "./serverCadOperations.js";
19
+ import { mirroredInShapeFrame, UnbuildableShapeError } from "./cadSolids.js";
20
20
  import { createLocalId } from "./localIds.js";
21
- import { boundsForPositions, expandGroupsForBoolean, groupedShapeFromSelection, meshShapeFromWorldPositions, shapeAsGroupChild, shapePlacementMatrix, worldMeshForShape, } from "./serverShapeGroups.js";
21
+ import { solidFromBrepOnKernel } from "./sketchFaceDraftKernel.js";
22
+ import { shapeDepth, shapeHasTaper, shapeWidth } from "./workplaneShapes.js";
23
+ import { boundsForPositions, expandGroupsForBoolean, groupedShapeFromSelection, meshShapeFromWorldPositions, restoreGroupedChildren, shapeAsGroupChild, shapePlacementMatrix, worldMeshForShape, } from "./serverShapeGroups.js";
22
24
  /** OCCT takes an affine transform as three row-major rows of (basis, offset); THREE stores its matrix by column. */
23
25
  function rowMajorTransform(matrix) {
24
26
  const e = matrix.elements;
@@ -58,9 +60,55 @@ function meshTrianglePositions(mesh) {
58
60
  * `generalTransform` because a reflection is not a rigid placement.
59
61
  */
60
62
  export function placedSolidForShape(cad, shape) {
63
+ return placedSolid(cad, shape).solid;
64
+ }
65
+ const PARAMETRIC = { source: "parametric", precision: "exact" };
66
+ const BREP = { source: "brep", precision: "exact" };
67
+ const MESH = { source: "mesh", precision: "tessellated" };
68
+ /**
69
+ * Several solids' provenance as one: only as exact as the least exact of them.
70
+ * A group record is reported this way from the members it actually fused, so
71
+ * a member that fell back to its triangles -- a cut resized with its group,
72
+ * or one whose B-rep failed its check -- makes the record tessellated.
73
+ */
74
+ function combinedProvenance(sources) {
75
+ return sources.find((source) => source.source === "mesh")
76
+ ?? sources.find((source) => source.source === "brep")
77
+ ?? PARAMETRIC;
78
+ }
79
+ /**
80
+ * The shape as a placed solid, together with the representation it was
81
+ * actually built from. Reported by the builder rather than guessed from the
82
+ * shape's fields beforehand, because only building it can tell whether a
83
+ * stored B-rep passed its check or a group member fell back to its mesh.
84
+ */
85
+ export function placedSolid(cad, shape) {
86
+ // A plain revolve is stored as its sweep's mesh, but its profile describes
87
+ // it exactly (#523). It is built in the mesh's own frame and placed the way
88
+ // the mesh is, with the mirror applied exactly about the same centre rather
89
+ // than through `generalTransform`, so its faces stay analytic.
90
+ const revolve = exactRevolveLocalSolid(cad, shape);
91
+ if (revolve) {
92
+ const mirrored = mirroredInShapeFrame(cad, revolve, shape, { x: 0, y: shape.height / 2, z: 0 });
93
+ const rigid = { ...shape, mirrorX: false, mirrorY: false, mirrorZ: false };
94
+ return { solid: cad.transform(mirrored, rowMajorTransform(shapePlacementMatrix(rigid))), provenance: PARAMETRIC };
95
+ }
96
+ // A boolean result keeps its exact solid beside the mesh it is drawn with
97
+ // (#541), and the triangles are only ever an approximation of it.
98
+ const stored = placedResultBrepSolid(cad, shape);
99
+ if (stored)
100
+ return { solid: stored, provenance: BREP };
61
101
  const mesh = worldMeshForShape(shape);
62
102
  if (mesh)
63
- return solidFromMeshPositions(cad, meshTrianglePositions(mesh));
103
+ return { solid: solidFromMeshPositions(cad, meshTrianglePositions(mesh)), provenance: MESH };
104
+ if (isGroupRecord(shape)) {
105
+ const sources = [];
106
+ const solid = groupRecordSolid(cad, shape, sources);
107
+ return { solid, provenance: combinedProvenance(sources) };
108
+ }
109
+ return { solid: placedLocalSolid(cad, shape), provenance: shape.cadBrep ? BREP : PARAMETRIC };
110
+ }
111
+ function placedLocalSolid(cad, shape) {
64
112
  let solid;
65
113
  try {
66
114
  solid = localSolidForShape(cad, shape);
@@ -77,15 +125,205 @@ export function placedSolidForShape(cad, shape) {
77
125
  ? cad.generalTransform(solid, matrix)
78
126
  : cad.transform(solid, matrix);
79
127
  }
128
+ /**
129
+ * Whether the shape is a boolean result whose stored B-rep is still the exact
130
+ * form of the mesh it is drawn with (#541).
131
+ *
132
+ * A cut stores two descriptions of one solid: the triangles the viewport
133
+ * draws, and the B-rep they were tessellated from, both in the result's own
134
+ * frame -- centred in X and Z, base at Y = 0. While the two agree, the B-rep is
135
+ * the better answer to "what is this solid", so measurement, interference and
136
+ * a further boolean read it instead of sewing the triangles back up.
137
+ *
138
+ * They stop agreeing when an edit reaches the mesh and not the B-rep. Moving,
139
+ * turning and mirroring do not: they are placement, applied to both alike. A
140
+ * resize does, because it stretches the stored triangles and the B-rep keeps
141
+ * its original size; so does a taper, and so does a frame recorded with a
142
+ * baked `sourceTransform`, which puts the B-rep somewhere other than the
143
+ * mesh's frame. A result made from a mesh operand is left out too: its B-rep
144
+ * was sewn from triangles, so calling it exact would be a claim about
145
+ * geometry nobody ever had.
146
+ *
147
+ * Edge treatments, drafts and shells rewrite the B-rep under their own rules
148
+ * and stay on the paths they had.
149
+ */
150
+ export function hasCurrentResultBrep(shape) {
151
+ const mesh = shape.importedMesh;
152
+ if (!shape.cadBrep || !shape.cadBrepFrame || shape.cadBrepFrame.sourceTransform)
153
+ return false;
154
+ if (!shape.groupedShapes?.length || !mesh || mesh.positions.length < 9)
155
+ return false;
156
+ if (shape.edgeTreatments?.length || shape.faceDraft || shape.shell || shapeHasTaper(shape))
157
+ return false;
158
+ const unresized = (current, base) => Math.abs(current - base) <= RESULT_SIZE_TOLERANCE_MM;
159
+ if (!unresized(shapeWidth(shape), mesh.baseWidth)
160
+ || !unresized(shapeDepth(shape), mesh.baseDepth)
161
+ || !unresized(shape.height, mesh.baseHeight))
162
+ return false;
163
+ return shape.groupedShapes.every(operandIsExact);
164
+ }
165
+ /**
166
+ * Stored sizes are rounded to a thousandth of a millimetre while the mesh's
167
+ * base size is not, so an untouched result differs from its mesh by up to
168
+ * half of that. Absolute, not relative to the size: a 200 mm cut stretched by
169
+ * 0.15 mm is a resize, and a relative tolerance would call it untouched and
170
+ * measure the stale B-rep.
171
+ */
172
+ const RESULT_SIZE_TOLERANCE_MM = 1e-3;
173
+ /** Whether an operand went into a cut as exact geometry rather than as triangles. */
174
+ function operandIsExact(child) {
175
+ if (hasExactRevolveSolid(child) || hasCurrentResultBrep(child))
176
+ return true;
177
+ if ((child.importedMesh?.positions.length ?? 0) >= 9)
178
+ return false;
179
+ return child.groupedShapes?.length ? child.groupedShapes.every(operandIsExact) : true;
180
+ }
181
+ /**
182
+ * How far a result's B-rep may sit from its mesh's box: the cut is meshed to
183
+ * a tenth of a millimetre of chord height, so its corners can fall that far
184
+ * inside the true surfaces, with a margin on top for a large part.
185
+ */
186
+ const RESULT_BREP_MATCH_MM = 0.25;
187
+ const RESULT_BREP_MATCH_FRACTION = 0.01;
188
+ /**
189
+ * How far a result's B-rep volume may differ from its mesh's, per mm² of the
190
+ * B-rep's surface. Every triangle lies within the 0.1 mm chord height of the
191
+ * true surface it was tessellated from, so the faceting can move at most
192
+ * that much depth across the whole area; twice it leaves room for OCCT
193
+ * treating the deflection as a target rather than a hard bound. A flat face
194
+ * contributes nothing, so a box-like part sits far inside this.
195
+ */
196
+ const RESULT_BREP_VOLUME_MM_PER_AREA = 0.2;
197
+ /** The volume a closed triangle list encloses, by the divergence theorem. */
198
+ function enclosedVolume(positions) {
199
+ let sixTimes = 0;
200
+ for (let index = 0; index + 8 < positions.length; index += 9) {
201
+ const [ax, ay, az, bx, by, bz, cx, cy, cz] = positions.slice(index, index + 9);
202
+ sixTimes += ax * (by * cz - bz * cy) - ay * (bx * cz - bz * cx) + az * (bx * cy - by * cx);
203
+ }
204
+ return Math.abs(sixTimes) / 6;
205
+ }
206
+ /**
207
+ * A boolean result's stored B-rep, placed where the shape stands, or null to
208
+ * use its mesh instead.
209
+ *
210
+ * Placed the way the mesh is placed, since the two share a frame: mirrored
211
+ * exactly about the shape's centre, then moved rigidly, so the cut's
212
+ * cylinders stay cylinders. A cut's B-rep is in the result's own frame, at the
213
+ * origin -- what `cadBrepFrame` records for a cut since #548, and what loading
214
+ * a project corrects an older cut's frame to (`migratePre548CutBrepFrames`) --
215
+ * so the frame's position is not needed here; `cadBrepTransformForShape` would
216
+ * give the same placement, only with the mirror folded into an affine scale.
217
+ * A B-rep stored anywhere else fails the bounds check below and falls back to
218
+ * the mesh.
219
+ *
220
+ * The B-rep is checked against the mesh before it is trusted, because the
221
+ * structural test cannot see an edit that replaced the triangles and left the
222
+ * B-rep behind. The triangles' corners lie on the true surfaces, so the two
223
+ * boxes agree to within the meshing tolerance; a B-rep that misses by more is
224
+ * describing something else, and the mesh is what is on screen.
225
+ */
226
+ export function placedResultBrepSolid(cad, shape) {
227
+ if (!hasCurrentResultBrep(shape))
228
+ return null;
229
+ const meshBounds = boundsForPositions(shape.importedMesh.positions);
230
+ if (!meshBounds)
231
+ return null;
232
+ let solid;
233
+ try {
234
+ solid = solidFromBrepOnKernel(cad, shape.cadBrep);
235
+ }
236
+ catch {
237
+ return null;
238
+ }
239
+ const box = cad.getBoundingBox(solid);
240
+ const size = Math.max(meshBounds.maxX - meshBounds.minX, meshBounds.maxY - meshBounds.minY, meshBounds.maxZ - meshBounds.minZ);
241
+ const tolerance = RESULT_BREP_MATCH_MM + RESULT_BREP_MATCH_FRACTION * size;
242
+ const agrees = [
243
+ [box.xmin, meshBounds.minX], [box.xmax, meshBounds.maxX],
244
+ [box.ymin, meshBounds.minY], [box.ymax, meshBounds.maxY],
245
+ [box.zmin, meshBounds.minZ], [box.zmax, meshBounds.maxZ],
246
+ ].every(([exact, meshed]) => Number.isFinite(exact) && Math.abs(exact - meshed) <= tolerance);
247
+ if (!agrees)
248
+ return null;
249
+ // A box cannot see inside: the uncut plate has the same one as the plate
250
+ // with a bore through it. The volume can.
251
+ const query = cad.queryBatch([solid])[0];
252
+ if (!query || !Number.isFinite(query.volume)
253
+ || Math.abs(query.volume - enclosedVolume(shape.importedMesh.positions)) > RESULT_BREP_VOLUME_MM_PER_AREA * query.area) {
254
+ return null;
255
+ }
256
+ const mirrored = mirroredInShapeFrame(cad, solid, shape, { x: 0, y: shape.height / 2, z: 0 });
257
+ const rigid = { ...shape, mirrorX: false, mirrorY: false, mirrorZ: false };
258
+ return cad.transform(mirrored, rowMajorTransform(shapePlacementMatrix(rigid)));
259
+ }
260
+ /**
261
+ * A plain revolve's exact solid where it stands, as BREP text, or null for any
262
+ * other shape: what the STEP exporter writes for a revolve instead of skipping
263
+ * it as a mesh with no B-rep source (#523).
264
+ */
265
+ export function placedExactRevolveBrep(shape) {
266
+ if (!hasExactRevolveSolid(shape))
267
+ return Promise.resolve(null);
268
+ return withCadKernel((cad) => cad.toBREP(placedSolidForShape(cad, shape)));
269
+ }
80
270
  function singleSolid(cad, shape) {
81
271
  if (cad.isSolid(shape))
82
272
  return shape;
83
273
  const solids = cad.getSubShapes(shape, "solid");
84
274
  return solids.length === 1 ? solids[0] : shape;
85
275
  }
86
- function cutSolids(cad, solids, holes) {
87
- const solidHandles = solids.map((shape) => placedSolidForShape(cad, shape));
88
- const holeHandles = holes.map((shape) => placedSolidForShape(cad, shape));
276
+ /**
277
+ * Whether the shape is a group held only as a record of its children.
278
+ *
279
+ * Grouping solids with no hole among them stores the children and nothing
280
+ * else, in the editor and here alike, so there is no mesh or BREP to read.
281
+ */
282
+ export function isGroupRecord(shape) {
283
+ return Boolean(shape.groupedShapes?.length) && !shape.cadBrep && !worldMeshForShape(shape);
284
+ }
285
+ /**
286
+ * A group record as the one solid it stands for: its children, put back where
287
+ * they appear, fused (#500).
288
+ *
289
+ * Built when asked for rather than baked when grouping, because the record is
290
+ * what the editor stores and reads, and what ungrouping takes apart. Each child
291
+ * goes back through `placedSolidForShape`, so an exact child stays exact, a
292
+ * mesh child is sewn from its triangles, and a group nested inside is fused
293
+ * the same way. A group of holes is the region it removes, so it fuses too.
294
+ *
295
+ * A member hidden inside the group is left out, because the editor does not
296
+ * draw it either: what is measured and exported is what is on screen. The
297
+ * group's own `hidden` flag is not a member's, so it is read from the stored
298
+ * children rather than from the restored ones, which inherit it.
299
+ */
300
+ function groupRecordSolid(cad, group, sources) {
301
+ const stored = group.groupedShapes ?? [];
302
+ const children = restoreGroupedChildren(group).filter((_, index) => !stored[index]?.hidden);
303
+ if (children.length === 0) {
304
+ throw new ServerCadError(`"${group.name}" is a group whose members are all hidden, so it has no geometry; show a member first.`);
305
+ }
306
+ const solids = children.filter((child) => !child.hole);
307
+ if (solids.length === 0)
308
+ return fuseSolids(cad, children, sources);
309
+ const holes = children.filter((child) => child.hole);
310
+ return holes.length ? cutSolids(cad, solids, holes, sources).cut : fuseSolids(cad, solids, sources);
311
+ }
312
+ /** Each shape placed, with the representation it came from added to `sources`. */
313
+ function placedHandles(cad, shapes, sources) {
314
+ return shapes.map((shape) => {
315
+ const placed = placedSolid(cad, shape);
316
+ sources?.push(placed.provenance);
317
+ return placed.solid;
318
+ });
319
+ }
320
+ function fuseSolids(cad, shapes, sources) {
321
+ const handles = placedHandles(cad, shapes, sources);
322
+ return singleSolid(cad, handles.length === 1 ? handles[0] : cad.fuseAll(handles));
323
+ }
324
+ function cutSolids(cad, solids, holes, sources) {
325
+ const solidHandles = placedHandles(cad, solids, sources);
326
+ const holeHandles = placedHandles(cad, holes, sources);
89
327
  const fused = singleSolid(cad, solidHandles.length === 1 ? solidHandles[0] : cad.fuseAll(solidHandles));
90
328
  // Measured, because `cutAll` returns the solid untouched when nothing met it
91
329
  // and says nothing about having done so. The worker path has reported these
@@ -128,7 +366,9 @@ export async function buildGroupFromSelection(selection) {
128
366
  // Measured with the same threshold the editor uses, so the two agree
129
367
  // about what counts as a cut.
130
368
  const removedNothing = cutVolume >= fusedVolume - 1e-6;
131
- const meshed = meshedCadResult(cad, cut);
369
+ // No coarser than the finest exact revolve that went in (#523).
370
+ const angularDeflection = exactRevolveAngularDeflection(operands);
371
+ const meshed = meshedCadResult(cad, cut, undefined, undefined, undefined, angularDeflection);
132
372
  const bounds = boundsForPositions(meshed.positions);
133
373
  if (!bounds)
134
374
  return { meshed, brep: null, removedNothing };
@@ -164,7 +404,9 @@ export async function buildGroupFromSelection(selection) {
164
404
  normals: result.meshed.normals?.length === group.importedMesh.positions.length ? result.meshed.normals : undefined,
165
405
  },
166
406
  cadBrep: result.brep,
167
- cadBrepFrame: { x: group.x, z: group.z, elevation: group.elevation ?? 0, width, depth, height: group.height },
407
+ // Where the B-rep is, not where the shape is: it was recentred above
408
+ // into the result's own frame, at the origin (#548).
409
+ cadBrepFrame: { x: 0, z: 0, elevation: 0, width, depth, height: group.height },
168
410
  groupedBaseWidth: width,
169
411
  groupedBaseDepth: depth,
170
412
  groupedBaseHeight: group.height,
@@ -1 +1 @@
1
- {"version":3,"file":"serverShapeBooleans.js","sourceRoot":"","sources":["../src/serverShapeBooleans.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverShapeBooleans.js","sourceRoot":"","sources":["../src/serverShapeBooleans.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serverShapeGroups.js","sourceRoot":"","sources":["../src/serverShapeGroups.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverShapeGroups.js","sourceRoot":"","sources":["../src/serverShapeGroups.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  /** Split a retained STEP source into positioned, independently editable solids. Node-only. */
2
2
  import type { ProjectAsset, WorkplaneShape } from "./domain/sketchforge.js";
3
- export declare const MAX_EXPLODE_SOLIDS = 200;
4
- export declare const MAX_EXPLODE_SOURCE_BYTES: number;
3
+ export { MAX_EXPLODE_SOLIDS, MAX_EXPLODE_SOURCE_BYTES } from "./stepAssemblyExplode.js";
5
4
  /** Turn a STEP-imported mesh shape into one exact mesh/B-rep-backed shape per solid. */
6
5
  export declare function explodeStepAssembly(shape: WorkplaneShape, source: ProjectAsset): Promise<WorkplaneShape[]>;
7
6
  //# sourceMappingURL=serverStepExplode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serverStepExplode.d.ts","sourceRoot":"","sources":["../src/serverStepExplode.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAS9F,OAAO,KAAK,EAAE,YAAY,EAA0C,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGpH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,wBAAwB,QAAkB,CAAC;AAgExD,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA4F1G"}
1
+ {"version":3,"file":"serverStepExplode.d.ts","sourceRoot":"","sources":["../src/serverStepExplode.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAK9F,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAMxF,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAc1G"}
@@ -1,160 +1,27 @@
1
1
  /** Split a retained STEP source into positioned, independently editable solids. Node-only. */
2
- import * as THREE from "three";
3
- import { importedShapeFromTriangleSoup } from "./stlImport.js";
4
- import { stepComponentMetadata, stepShapeKey } from "./stepComponentMetadata.js";
5
2
  import { withCadKernel } from "./serverCadKernel.js";
6
- import { groupedShapeFromSelection } from "./serverShapeGroups.js";
7
3
  import { ServerCadError } from "./serverCadOperations.js";
8
- import { meshYawDegrees } from "./workplaneShapes.js";
9
- export const MAX_EXPLODE_SOLIDS = 200;
10
- export const MAX_EXPLODE_SOURCE_BYTES = 8 * 1024 * 1024;
11
- const X_AXIS = { point: { x: 0, y: 0, z: 0 }, direction: { x: 1, y: 0, z: 0 } };
12
- function boundsOf(cad, shape) {
13
- return cad.getBoundingBox(shape, false);
14
- }
15
- function leafPaths(nodes, parentPath = []) {
16
- return nodes.flatMap((node) => {
17
- const path = [...parentPath, { ...(node.id ? { id: node.id } : {}), name: node.name }];
18
- return node.children.length ? leafPaths(node.children, path) : [path];
19
- });
20
- }
21
- function uniqueNamedPath(paths, name) {
22
- const matches = paths.filter((path) => path.at(-1)?.name === name);
23
- return matches.length === 1 ? matches[0] : undefined;
24
- }
25
- function groupExplodedHierarchy(parts, roots) {
26
- const partsByOccurrence = new Map();
27
- for (const part of parts) {
28
- const occurrenceId = part.stepComponent?.occurrenceId;
29
- if (!occurrenceId)
30
- return parts;
31
- const matches = partsByOccurrence.get(occurrenceId) ?? [];
32
- matches.push(part);
33
- partsByOccurrence.set(occurrenceId, matches);
34
- }
35
- const consumed = new Set();
36
- let complete = true;
37
- const namedGroup = (name, children) => {
38
- const group = groupedShapeFromSelection(children, { allowSingle: true, name });
39
- if (!group) {
40
- complete = false;
41
- return children;
42
- }
43
- return [group];
44
- };
45
- const visit = (node) => {
46
- if (!node.children.length) {
47
- if (!node.id) {
48
- complete = false;
49
- return [];
50
- }
51
- const matches = partsByOccurrence.get(node.id);
52
- if (!matches?.length) {
53
- complete = false;
54
- return [];
55
- }
56
- matches.forEach((part) => consumed.add(part));
57
- return matches.length > 1 ? namedGroup(node.name, matches) : matches;
58
- }
59
- const children = node.children.flatMap(visit);
60
- if (!children.length)
61
- return [];
62
- return namedGroup(node.name, children);
63
- };
64
- const grouped = roots.flatMap(visit);
65
- // Keep the proven flat behavior when even one source solid cannot be
66
- // associated to a product occurrence. A partial tree would hide geometry.
67
- return complete && consumed.size === parts.length && grouped.length ? grouped : parts;
4
+ import { assertStepExplodable, explodeStepAssemblyWithKernel, StepExplodeError } from "./stepAssemblyExplode.js";
5
+ export { MAX_EXPLODE_SOLIDS, MAX_EXPLODE_SOURCE_BYTES } from "./stepAssemblyExplode.js";
6
+ function asServerCadError(error) {
7
+ return error instanceof StepExplodeError ? new ServerCadError(error.message, error.status) : error;
68
8
  }
69
9
  /** Turn a STEP-imported mesh shape into one exact mesh/B-rep-backed shape per solid. */
70
10
  export function explodeStepAssembly(shape, source) {
71
- if (shape.importedMesh?.sourceFormat !== "step" || !shape.importedMesh.assetId) {
72
- return Promise.reject(new ServerCadError("Only a STEP import with its original source asset can be exploded."));
11
+ // Refuse before taking the kernel: a throw inside `withCadKernel` discards it.
12
+ try {
13
+ assertStepExplodable(shape, source);
73
14
  }
74
- if (source.sourceFormat !== "step" || source.byteLength > MAX_EXPLODE_SOURCE_BYTES) {
75
- return Promise.reject(new ServerCadError(`STEP explosion supports source files up to ${MAX_EXPLODE_SOURCE_BYTES} bytes.`, 413));
15
+ catch (error) {
16
+ return Promise.reject(asServerCadError(error));
76
17
  }
77
18
  return withCadKernel((cad) => {
78
- const imported = cad.importStep(new TextDecoder().decode(source.bytes));
79
- const solids = cad.getSubShapes(imported, "solid");
80
- if (solids.length < 2)
81
- throw new ServerCadError("This STEP file contains only one solid; there is nothing to explode.");
82
- if (solids.length > MAX_EXPLODE_SOLIDS)
83
- throw new ServerCadError(`STEP explosion supports at most ${MAX_EXPLODE_SOLIDS} solids; this file contains ${solids.length}.`, 413);
84
- // Match the importer's Z-up conversion and scene-wide recentering.
85
- const turnedAssembly = cad.rotate(imported, X_AXIS, -Math.PI / 2);
86
- const assemblyBounds = boundsOf(cad, turnedAssembly);
87
- const centerX = (assemblyBounds.xmin + assemblyBounds.xmax) / 2;
88
- const floorY = assemblyBounds.ymin;
89
- const centerZ = (assemblyBounds.zmin + assemblyBounds.zmax) / 2;
90
- const rotation = new THREE.Matrix4().makeRotationFromEuler(new THREE.Euler(THREE.MathUtils.degToRad(shape.rotationX ?? 0), THREE.MathUtils.degToRad(meshYawDegrees(shape)), THREE.MathUtils.degToRad(shape.rotationZ ?? 0), "XYZ"));
91
- const mirrors = new THREE.Vector3(shape.mirrorX ? -1 : 1, shape.mirrorY ? -1 : 1, shape.mirrorZ ? -1 : 1);
92
- const parentCenter = new THREE.Vector3(shape.x, (shape.elevation ?? 0) + shape.height / 2, shape.z);
93
- const componentMetadata = stepComponentMetadata(cad, new TextDecoder().decode(source.bytes));
94
- const paths = leafPaths(shape.stepAssembly ?? []);
95
- const occurrencePartIndexes = new Map();
96
- const parts = solids.map((solid, index) => {
97
- const candidates = componentMetadata.bySolid.get(stepShapeKey(cad, solid)) ?? [];
98
- const firstCandidate = candidates[0];
99
- const metadata = firstCandidate ? {
100
- ...(candidates.length === 1 && firstCandidate.name ? { name: firstCandidate.name } : {}),
101
- ...(candidates.length === 1 && firstCandidate.occurrenceId ? { occurrenceId: firstCandidate.occurrenceId } : {}),
102
- ...(candidates.every((candidate) => candidate.color === firstCandidate.color) && firstCandidate.color
103
- ? { color: firstCandidate.color }
104
- : {}),
105
- } : undefined;
106
- const path = metadata?.occurrenceId
107
- ? paths.find((candidate) => candidate.at(-1)?.id === metadata.occurrenceId)
108
- : metadata?.name ? uniqueNamedPath(paths, metadata.name) : undefined;
109
- const occurrenceId = path?.at(-1)?.id;
110
- const occurrencePartIndex = occurrenceId ? (occurrencePartIndexes.get(occurrenceId) ?? 0) : 0;
111
- if (occurrenceId)
112
- occurrencePartIndexes.set(occurrenceId, occurrencePartIndex + 1);
113
- const componentName = path?.at(-1)?.name ?? (paths.length === 0 ? metadata?.name : undefined);
114
- const turned = cad.rotate(solid, X_AXIS, -Math.PI / 2);
115
- const positioned = cad.translate(turned, -centerX, -floorY, -centerZ);
116
- const bounds = boundsOf(cad, positioned);
117
- const partX = (bounds.xmin + bounds.xmax) / 2;
118
- const partY = bounds.ymin;
119
- const partZ = (bounds.zmin + bounds.zmax) / 2;
120
- const local = cad.translate(positioned, -partX, -partY, -partZ);
121
- const mesh = cad.tessellate(positioned);
122
- const positions = [];
123
- const normals = [];
124
- for (let cursor = 0; cursor < mesh.indices.length; cursor += 1) {
125
- const vertex = mesh.indices[cursor] * 3;
126
- positions.push(mesh.positions[vertex], mesh.positions[vertex + 1], mesh.positions[vertex + 2]);
127
- if (mesh.normals.length === mesh.positions.length)
128
- normals.push(mesh.normals[vertex], mesh.normals[vertex + 1], mesh.normals[vertex + 2]);
129
- }
130
- const child = importedShapeFromTriangleSoup(componentName ?? `${shape.name} ${index + 1}`, positions, normals.length ? normals : undefined, "step");
131
- const offset = new THREE.Vector3(partX, partY - shape.height / 2, partZ).multiply(mirrors).applyMatrix4(rotation).add(parentCenter);
132
- child.color = metadata?.color ?? shape.color;
133
- child.material = shape.material;
134
- child.appearance = shape.appearance;
135
- child.hole = shape.hole;
136
- child.hidden = shape.hidden;
137
- child.locked = shape.locked;
138
- child.rotation = shape.rotation;
139
- child.rotationX = shape.rotationX;
140
- child.rotationZ = shape.rotationZ;
141
- child.mirrorX = shape.mirrorX;
142
- child.mirrorY = shape.mirrorY;
143
- child.mirrorZ = shape.mirrorZ;
144
- child.x = offset.x;
145
- child.elevation = offset.y;
146
- child.z = offset.z;
147
- child.importedMesh.brepStep = cad.exportStep(local);
148
- if (path && occurrenceId) {
149
- child.stepComponent = {
150
- id: `${occurrenceId}/solid-${occurrencePartIndex + 1}`,
151
- occurrenceId,
152
- path,
153
- };
154
- }
155
- return child;
156
- });
157
- return groupExplodedHierarchy(parts, shape.stepAssembly ?? []);
19
+ try {
20
+ return explodeStepAssemblyWithKernel(cad, shape, source).shapes;
21
+ }
22
+ catch (error) {
23
+ throw asServerCadError(error);
24
+ }
158
25
  });
159
26
  }
160
27
  //# sourceMappingURL=serverStepExplode.js.map