@constructorfleet/sketchforge-engine 1.26.0 → 1.27.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.
- package/dist/cadAnalysis.d.ts +94 -0
- package/dist/cadAnalysis.d.ts.map +1 -0
- package/dist/cadAnalysis.js +143 -0
- package/dist/cadAnalysis.js.map +1 -0
- package/dist/cadShell.d.ts +143 -0
- package/dist/cadShell.d.ts.map +1 -0
- package/dist/cadShell.js +306 -0
- package/dist/cadShell.js.map +1 -0
- package/dist/domain/sketchforge.d.ts +1 -1
- package/dist/domain/sketchforge.d.ts.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +57 -15
- package/dist/engine.js.map +1 -1
- package/dist/parametricRecompute.d.ts.map +1 -1
- package/dist/parametricRecompute.js +7 -4
- package/dist/parametricRecompute.js.map +1 -1
- package/dist/revolveRequests.d.ts.map +1 -1
- package/dist/serverCadInterference.d.ts +8 -45
- package/dist/serverCadInterference.d.ts.map +1 -1
- package/dist/serverCadInterference.js +13 -42
- package/dist/serverCadInterference.js.map +1 -1
- package/dist/serverCadOperations.d.ts.map +1 -1
- package/dist/serverCadOperations.js +76 -25
- package/dist/serverCadOperations.js.map +1 -1
- package/dist/serverCadShell.d.ts +7 -94
- package/dist/serverCadShell.d.ts.map +1 -1
- package/dist/serverCadShell.js +25 -269
- package/dist/serverCadShell.js.map +1 -1
- package/dist/serverCadThickness.d.ts +8 -8
- package/dist/serverCadThickness.d.ts.map +1 -1
- package/dist/serverCadThickness.js +15 -42
- package/dist/serverCadThickness.js.map +1 -1
- package/dist/serverStepExplode.d.ts +1 -2
- package/dist/serverStepExplode.d.ts.map +1 -1
- package/dist/serverStepExplode.js +15 -148
- package/dist/serverStepExplode.js.map +1 -1
- package/dist/sketchFaceDraftKernel.d.ts +5 -5
- package/dist/sketchFaceDraftKernel.d.ts.map +1 -1
- package/dist/sketchFaceDraftKernel.js +11 -9
- package/dist/sketchFaceDraftKernel.js.map +1 -1
- package/dist/stepAssemblyExplode.d.ts +45 -0
- package/dist/stepAssemblyExplode.d.ts.map +1 -0
- package/dist/stepAssemblyExplode.js +195 -0
- package/dist/stepAssemblyExplode.js.map +1 -0
- package/dist/support/cadModifierTypes.d.ts +59 -0
- package/dist/support/cadModifierTypes.d.ts.map +1 -1
- package/dist/support/i18n/locales/en/messages.json +13 -1
- package/package.json +1 -1
package/dist/cadShell.js
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hollowing a solid with a wall of a given thickness, on any OCCT kernel.
|
|
3
|
+
*
|
|
4
|
+
* The REST endpoint (`serverCadShell.ts`) and the editor's CAD worker both
|
|
5
|
+
* hollow through this module, so a part shelled in the browser and the same
|
|
6
|
+
* part shelled over the API come out of the same code at the same tolerance.
|
|
7
|
+
* It imports nothing Node-only: the caller hands it a kernel and a solid.
|
|
8
|
+
*
|
|
9
|
+
* OCCT does the work with `BRepOffsetAPI_MakeThickSolid`, which the bundled
|
|
10
|
+
* kernel exposes as `shell`. Two things about it are worth knowing before
|
|
11
|
+
* changing any of this, both found by measuring rather than by reading:
|
|
12
|
+
*
|
|
13
|
+
* - With no faces removed it does not hollow anything. It returns the *inner*
|
|
14
|
+
* solid -- the original offset inwards by the thickness -- so a sealed
|
|
15
|
+
* hollow has to be the original cut by that, which is what `hollowedSolid`
|
|
16
|
+
* does. Asking it to hollow a closed solid directly gives you back a
|
|
17
|
+
* smaller solid part, which looks plausible and is not what was asked for.
|
|
18
|
+
* - A thickness that does not fit does not reliably fail. Past half the
|
|
19
|
+
* part it variously returns an empty compound, a solid that reports
|
|
20
|
+
* `isValid: false` with a correct bounding box, or the original solid
|
|
21
|
+
* untouched with every extent and the validity flag intact. Only the volume
|
|
22
|
+
* tells those apart from a real answer, which is why `hollowedSolid`
|
|
23
|
+
* measures it rather than trusting the call to throw.
|
|
24
|
+
*
|
|
25
|
+
* Refusals are `CadShellError`s carrying a `reason`, so the REST path can
|
|
26
|
+
* answer with its English message and status while the editor says the same
|
|
27
|
+
* thing in the person's language.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* The precision OCCT reconstructs the thick solid at.
|
|
31
|
+
*
|
|
32
|
+
* `1e-6` is the kernel's own recommendation for a precise shell and matches
|
|
33
|
+
* what brepjs uses; the looser `1e-3` survives more inputs but produces
|
|
34
|
+
* different topology, which would make a part shelled in the editor disagree
|
|
35
|
+
* with the same part shelled over the API.
|
|
36
|
+
*/
|
|
37
|
+
const SHELL_TOLERANCE = 1e-6;
|
|
38
|
+
/** How closely a face's normal must line up with an axis to be named for it. */
|
|
39
|
+
const AXIS_TOLERANCE = 1e-3;
|
|
40
|
+
/**
|
|
41
|
+
* Names for the faces a request is likely to want open, by where they point.
|
|
42
|
+
*
|
|
43
|
+
* A caller that knows the geometry can name face indexes from the listing, but
|
|
44
|
+
* nobody wants to list a box's faces to find out which one is the lid. The
|
|
45
|
+
* directions are the solid's own axes: +Y up, +Z towards the viewer. Which of
|
|
46
|
+
* several parallel faces a name means is settled by how far out each sits, so
|
|
47
|
+
* the solid may stand anywhere.
|
|
48
|
+
*/
|
|
49
|
+
const FACE_DIRECTIONS = {
|
|
50
|
+
top: { x: 0, y: 1, z: 0 },
|
|
51
|
+
bottom: { x: 0, y: -1, z: 0 },
|
|
52
|
+
right: { x: 1, y: 0, z: 0 },
|
|
53
|
+
left: { x: -1, y: 0, z: 0 },
|
|
54
|
+
front: { x: 0, y: 0, z: 1 },
|
|
55
|
+
back: { x: 0, y: 0, z: -1 },
|
|
56
|
+
};
|
|
57
|
+
export const FACE_DIRECTION_NAMES = Object.keys(FACE_DIRECTIONS);
|
|
58
|
+
export class CadShellError extends Error {
|
|
59
|
+
reason;
|
|
60
|
+
/** The HTTP status the REST path answers with. */
|
|
61
|
+
status;
|
|
62
|
+
constructor(reason, message, status = 422) {
|
|
63
|
+
super(message);
|
|
64
|
+
this.name = "CadShellError";
|
|
65
|
+
this.reason = reason;
|
|
66
|
+
this.status = status;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The normal pointing out of the solid at the middle of a face.
|
|
71
|
+
*
|
|
72
|
+
* Exported because the measurement endpoint needs the same normal to answer
|
|
73
|
+
* "what is the angle between these two faces", and a second copy of this would
|
|
74
|
+
* be free to drift from the one the face listing and the shell request agree on.
|
|
75
|
+
*/
|
|
76
|
+
export function faceOutwardNormal(cad, face) {
|
|
77
|
+
try {
|
|
78
|
+
const bounds = cad.uvBounds(face);
|
|
79
|
+
// `surfaceNormal` already accounts for the face's own orientation, so a
|
|
80
|
+
// reversed face reports the normal pointing out of the solid rather than
|
|
81
|
+
// the surface's natural one. Verified against a box's six faces and
|
|
82
|
+
// against the inner faces of a hollow, where the two disagree.
|
|
83
|
+
const normal = cad.surfaceNormal(face, (bounds.uMin + bounds.uMax) / 2, (bounds.vMin + bounds.vMax) / 2);
|
|
84
|
+
if (![normal.x, normal.y, normal.z].every(Number.isFinite))
|
|
85
|
+
return null;
|
|
86
|
+
return normal;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function axisOf(normal) {
|
|
93
|
+
if (!normal)
|
|
94
|
+
return null;
|
|
95
|
+
for (const name of FACE_DIRECTION_NAMES) {
|
|
96
|
+
const direction = FACE_DIRECTIONS[name];
|
|
97
|
+
const dot = normal.x * direction.x + normal.y * direction.y + normal.z * direction.z;
|
|
98
|
+
if (dot > 1 - AXIS_TOLERANCE)
|
|
99
|
+
return name;
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/** How far out along its own direction a face sits, which is what settles a tie. */
|
|
104
|
+
function reachAlong(centroid, direction) {
|
|
105
|
+
return centroid.x * direction.x + centroid.y * direction.y + centroid.z * direction.z;
|
|
106
|
+
}
|
|
107
|
+
/** A solid's faces in kernel order, with the direction each one answers to. */
|
|
108
|
+
export function describeShellFaces(cad, solid) {
|
|
109
|
+
const faces = cad.getSubShapes(solid, "face");
|
|
110
|
+
const described = faces.map((handle, index) => {
|
|
111
|
+
const normal = faceOutwardNormal(cad, handle);
|
|
112
|
+
let surfaceType = "unknown";
|
|
113
|
+
try {
|
|
114
|
+
surfaceType = cad.surfaceType(handle);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// Not every surface reports a type; the area and centroid still do.
|
|
118
|
+
}
|
|
119
|
+
const centroid = cad.getSurfaceCenterOfMass(handle);
|
|
120
|
+
return {
|
|
121
|
+
index,
|
|
122
|
+
surfaceType,
|
|
123
|
+
area: cad.getSurfaceArea(handle),
|
|
124
|
+
centroid: { x: centroid.x, y: centroid.y, z: centroid.z },
|
|
125
|
+
normal: normal ? { x: normal.x, y: normal.y, z: normal.z } : null,
|
|
126
|
+
// A flat face is the only kind a direction name can mean: "the top" of a
|
|
127
|
+
// sphere is a point on a curved surface, not a lid you can take off.
|
|
128
|
+
axis: surfaceType === "plane" ? axisOf(normal) : null,
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
// Several faces can point the same way -- the lid of a hollow box and the
|
|
132
|
+
// floor of its cavity both point up -- so a name belongs to the outermost of
|
|
133
|
+
// them. Without this, opening "top" on an already-hollow part would pick the
|
|
134
|
+
// cavity floor and quietly produce nonsense.
|
|
135
|
+
const furthest = new Map();
|
|
136
|
+
for (const face of described) {
|
|
137
|
+
if (!face.axis)
|
|
138
|
+
continue;
|
|
139
|
+
const reach = reachAlong(face.centroid, FACE_DIRECTIONS[face.axis]);
|
|
140
|
+
const best = furthest.get(face.axis);
|
|
141
|
+
if (best === undefined || reach > best)
|
|
142
|
+
furthest.set(face.axis, reach);
|
|
143
|
+
}
|
|
144
|
+
return described.map(({ axis, ...face }) => ({
|
|
145
|
+
...face,
|
|
146
|
+
facing: axis && Math.abs(reachAlong(face.centroid, FACE_DIRECTIONS[axis]) - (furthest.get(axis) ?? 0)) < AXIS_TOLERANCE
|
|
147
|
+
? axis
|
|
148
|
+
: null,
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The face indexes a request's `openFaces` names, in listing order.
|
|
153
|
+
*
|
|
154
|
+
* Mixed on purpose: `["top"]` is what a script asking for a tray wants to write,
|
|
155
|
+
* and an index from the listing is the only way to name a face that no direction
|
|
156
|
+
* describes -- one wall of a hexagonal pot, say.
|
|
157
|
+
*/
|
|
158
|
+
export function resolveShellOpenFaces(requested, faces) {
|
|
159
|
+
const chosen = new Set();
|
|
160
|
+
for (const entry of requested) {
|
|
161
|
+
if (typeof entry === "number") {
|
|
162
|
+
if (!Number.isInteger(entry) || entry < 0 || entry >= faces.length) {
|
|
163
|
+
throw new CadShellError("face-index", `Face indexes must be between 0 and ${faces.length - 1}.`, 400);
|
|
164
|
+
}
|
|
165
|
+
chosen.add(entry);
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const name = entry.trim().toLowerCase();
|
|
169
|
+
if (!FACE_DIRECTION_NAMES.includes(name)) {
|
|
170
|
+
throw new CadShellError("direction", `"${entry}" is not a face direction. Use one of ${FACE_DIRECTION_NAMES.join(", ")}, or a face index from the face listing.`, 400);
|
|
171
|
+
}
|
|
172
|
+
const matched = faces.filter((face) => face.facing === name);
|
|
173
|
+
if (matched.length === 0) {
|
|
174
|
+
throw new CadShellError("no-flat-face", `This shape has no flat ${name} face to open. Name a face index from the face listing instead.`, 422);
|
|
175
|
+
}
|
|
176
|
+
for (const face of matched)
|
|
177
|
+
chosen.add(face.index);
|
|
178
|
+
}
|
|
179
|
+
return [...chosen].sort((left, right) => left - right);
|
|
180
|
+
}
|
|
181
|
+
/** The single solid inside whatever OCCT handed back, or the shape itself. */
|
|
182
|
+
function soleSolid(cad, result) {
|
|
183
|
+
const solids = cad.getSubShapes(result, "solid");
|
|
184
|
+
return solids.length === 1 ? solids[0] : result;
|
|
185
|
+
}
|
|
186
|
+
export function shellVolumeOf(cad, shape) {
|
|
187
|
+
try {
|
|
188
|
+
const volume = cad.getVolume(shape);
|
|
189
|
+
return Number.isFinite(volume) ? volume : null;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const TOO_THICK = "That wall thickness is too large for this shape: hollowing it at that thickness leaves no cavity. Try a thinner wall.";
|
|
196
|
+
/**
|
|
197
|
+
* What OCCT refusing outright actually means, as far as it can be told apart.
|
|
198
|
+
*
|
|
199
|
+
* A thickness that merely does not fit does not throw: it comes back as an
|
|
200
|
+
* empty compound, a solid that fails its own validity check, or the original
|
|
201
|
+
* untouched, all of which `hollowedSolid` catches by measuring. A throw is the
|
|
202
|
+
* other failure, and it tracks the *kind of surface* rather than the number.
|
|
203
|
+
*
|
|
204
|
+
* It is not "curved": an analytic sphere, cylinder, cone and torus all offset
|
|
205
|
+
* perfectly well. What fails is a **spline** skin -- OCCT will not offset one
|
|
206
|
+
* inwards at any thickness or at any reconstruction tolerance (checked at 1e-6,
|
|
207
|
+
* 1e-4, 1e-3 and 1e-2). In this app that is an elliptical ball, a loft, and
|
|
208
|
+
* anything built by extruding a profile wire, because those surfaces are
|
|
209
|
+
* splines however round they look.
|
|
210
|
+
*/
|
|
211
|
+
const CANNOT_OFFSET = "OCCT could not hollow this shape: its surfaces cannot be offset inwards into a sound solid. A shape whose skin is a spline rather than an analytic surface -- a ball with unequal radii, a loft -- fails this way at any wall thickness, however round it looks.";
|
|
212
|
+
/** Whether a handle is a solid OCCT itself will vouch for. */
|
|
213
|
+
function isSoundSolid(cad, shape) {
|
|
214
|
+
try {
|
|
215
|
+
return cad.isSolid(shape) && Boolean(cad.isValid(shape));
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// An empty compound throws from `isValid` rather than reporting false.
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The hollowed solid, or a refusal.
|
|
224
|
+
*
|
|
225
|
+
* Both paths run through OCCT's thick-solid builder, which answers two
|
|
226
|
+
* different questions depending on whether any face is removed -- see the
|
|
227
|
+
* module note. The checks around it are not belt and braces: every one of them
|
|
228
|
+
* has a real input that reaches it, and the order matters, because it is what
|
|
229
|
+
* separates a wall that does not fit from a shape that cannot be hollowed at
|
|
230
|
+
* all. The inward offset is measured before it is cut away, so a thickness
|
|
231
|
+
* that collapses it is reported as a thickness rather than blamed on the
|
|
232
|
+
* shape's surfaces.
|
|
233
|
+
*/
|
|
234
|
+
function hollowedSolid(cad, solid, sourceVolume, thickness, openFaces) {
|
|
235
|
+
let hollow;
|
|
236
|
+
if (openFaces.length > 0) {
|
|
237
|
+
const faces = cad.getSubShapes(solid, "face");
|
|
238
|
+
try {
|
|
239
|
+
hollow = cad.shell(solid, openFaces.map((index) => faces[index]), thickness, SHELL_TOLERANCE);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
throw new CadShellError("cannot-offset", CANNOT_OFFSET);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// No face removed: `shell` returns the inward offset solid rather than a
|
|
247
|
+
// hollow, so the sealed void is the original cut by it.
|
|
248
|
+
let inner;
|
|
249
|
+
try {
|
|
250
|
+
inner = cad.shell(solid, [], thickness, SHELL_TOLERANCE);
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
throw new CadShellError("cannot-offset", CANNOT_OFFSET);
|
|
254
|
+
}
|
|
255
|
+
// The cavity, before it is a cavity. Past half the part this is an empty
|
|
256
|
+
// compound, and cutting the solid by it throws -- which would otherwise
|
|
257
|
+
// read as the shape's fault rather than the thickness's.
|
|
258
|
+
const innerVolume = shellVolumeOf(cad, inner);
|
|
259
|
+
if (!isSoundSolid(cad, inner) || innerVolume === null || innerVolume <= 0 || innerVolume >= sourceVolume) {
|
|
260
|
+
throw new CadShellError("too-thick", TOO_THICK);
|
|
261
|
+
}
|
|
262
|
+
try {
|
|
263
|
+
hollow = cad.cut(solid, inner);
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
throw new CadShellError("cannot-offset", CANNOT_OFFSET);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const result = soleSolid(cad, hollow);
|
|
270
|
+
if (!isSoundSolid(cad, result))
|
|
271
|
+
throw new CadShellError("too-thick", TOO_THICK);
|
|
272
|
+
const volume = shellVolumeOf(cad, result);
|
|
273
|
+
if (volume === null || volume <= 0)
|
|
274
|
+
throw new CadShellError("too-thick", TOO_THICK);
|
|
275
|
+
// Past the thickness that fits, OCCT hands back the original solid with
|
|
276
|
+
// every extent and the validity flag intact. Hollowing always removes the
|
|
277
|
+
// cavity, so a result that weighs what it started at did nothing.
|
|
278
|
+
if (volume >= sourceVolume * (1 - 1e-6))
|
|
279
|
+
throw new CadShellError("too-thick", TOO_THICK);
|
|
280
|
+
return { solid: result, volume };
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Hollow `solid` out to a wall of `request.thickness`, leaving `openFaces` off.
|
|
284
|
+
*
|
|
285
|
+
* `faces` is the listing the request's indexes refer to; it is described from
|
|
286
|
+
* the solid when not given. Returns the hollow and the volumes either side of
|
|
287
|
+
* it, or throws a `CadShellError`.
|
|
288
|
+
*/
|
|
289
|
+
export function shellSolid(cad, solid, request, faces = describeShellFaces(cad, solid)) {
|
|
290
|
+
if (!Number.isFinite(request.thickness) || request.thickness <= 0) {
|
|
291
|
+
throw new CadShellError("thickness", "The wall thickness must be greater than zero.", 400);
|
|
292
|
+
}
|
|
293
|
+
if (faces.length === 0)
|
|
294
|
+
throw new CadShellError("no-faces", "That shape has no faces to hollow out.");
|
|
295
|
+
const openFaces = resolveShellOpenFaces(request.openFaces ?? [], faces);
|
|
296
|
+
if (openFaces.length === faces.length) {
|
|
297
|
+
throw new CadShellError("every-face-open", "Leaving every face open would remove the shape rather than hollow it. Leave at least one face closed.");
|
|
298
|
+
}
|
|
299
|
+
const sourceVolume = shellVolumeOf(cad, solid);
|
|
300
|
+
if (sourceVolume === null || sourceVolume <= 0) {
|
|
301
|
+
throw new CadShellError("no-volume", "That shape has no volume to hollow out.");
|
|
302
|
+
}
|
|
303
|
+
const hollow = hollowedSolid(cad, solid, sourceVolume, request.thickness, openFaces);
|
|
304
|
+
return { solid: hollow.solid, volume: hollow.volume, sourceVolume };
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=cadShell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cadShell.js","sourceRoot":"","sources":["../src/cadShell.ts"],"names":[],"mappings":"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"}
|
|
@@ -394,7 +394,7 @@ export type WorkplaneShape = {
|
|
|
394
394
|
faceDraftSourceSegmentId?: string;
|
|
395
395
|
/** Original extrusion frame used to keep face-draft source edits in place. */
|
|
396
396
|
faceDraftSourceFrame?: CadBrepFrame;
|
|
397
|
-
/** Original
|
|
397
|
+
/** Original sketch resize ratios, retained for profile replay after drafting. */
|
|
398
398
|
faceDraftSourceScale?: {
|
|
399
399
|
width: number;
|
|
400
400
|
depth: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sketchforge.d.ts","sourceRoot":"","sources":["../../src/domain/sketchforge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sketchforge.d.ts","sourceRoot":"","sources":["../../src/domain/sketchforge.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAYL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* does not have today -- without pulling `next/server` in with it.
|
|
16
16
|
*/
|
|
17
17
|
import { allEdgeTreatmentEdgeCount, applyEdgeTreatment, applyBakedMirror, applyDraftPrism, applySketchFaceDraft, exactPlainSketchRevolveResult, isPlainFullTurnSketchRevolve, orientedSolidForShape, shapeEdges, shapeWithCadResult, ServerCadError, } from "./serverCadOperations.js";
|
|
18
|
-
import { resolveRetainedFaceDraft, retainedFaceDraftFields, retainedPrismDraftFields } from "./sketchFaceDraftKernel.js";
|
|
18
|
+
import { resolveRetainedFaceDraft, retainedDraftSourcePlacement, retainedFaceDraftFields, retainedPrismDraftFields, } from "./sketchFaceDraftKernel.js";
|
|
19
19
|
import { withCadKernel } from "./serverCadKernel.js";
|
|
20
20
|
import { cadSketchRegions, cadSketchSweepPaths } from "./sketchCadProfile.js";
|
|
21
21
|
import { applyShell, shapeFaces, } from "./serverCadShell.js";
|
|
@@ -98,6 +98,12 @@ async function findUniqueDraftFace(shape, normal) {
|
|
|
98
98
|
&& faceNormalMatches(face.normal, normal));
|
|
99
99
|
return matches.length === 1 ? matches[0] : null;
|
|
100
100
|
}
|
|
101
|
+
function unmirroredDraftSource(shape) {
|
|
102
|
+
return { ...shape, mirrorX: undefined, mirrorY: undefined, mirrorZ: undefined };
|
|
103
|
+
}
|
|
104
|
+
function retainDraftSourceMirrors(result, source) {
|
|
105
|
+
return { ...result, mirrorX: source.mirrorX, mirrorY: source.mirrorY, mirrorZ: source.mirrorZ };
|
|
106
|
+
}
|
|
101
107
|
/**
|
|
102
108
|
* Carry face metadata across a parameter edit only when a face has a unique
|
|
103
109
|
* counterpart. Curved faces may change their sampled normal as their defining
|
|
@@ -635,6 +641,18 @@ export function createEngine(store) {
|
|
|
635
641
|
|| (faceDraftChanged && isSketchExtrusion)) {
|
|
636
642
|
const sourceFrame = existing.faceDraftSourceFrame ?? existing.draftPrismSourceFrame ?? existing.cadBrepFrame;
|
|
637
643
|
const sourceHeight = existing.draftPrismSourceHeight ?? existing.faceDraftSourceFrame?.height ?? existing.height;
|
|
644
|
+
const ratio = (drawn, source) => source && source > 0 && drawn > 0 ? drawn / source : 1;
|
|
645
|
+
const faceDraftSourceScale = existing.faceDraftSourceScale ?? (existing.faceDraft ? {
|
|
646
|
+
// Editor-written drafts predate this field. Their output bounds
|
|
647
|
+
// include the taper, so they cannot be used to infer the source
|
|
648
|
+
// resize ratio; these shapes were only retained before resize support.
|
|
649
|
+
width: 1, depth: 1, height: 1,
|
|
650
|
+
} : {
|
|
651
|
+
width: ratio(existing.width, sourceFrame?.width ?? existing.importedMesh?.baseWidth),
|
|
652
|
+
depth: ratio(existing.depth, sourceFrame?.depth ?? existing.importedMesh?.baseDepth),
|
|
653
|
+
height: ratio(existing.height, sourceFrame?.height ?? existing.importedMesh?.baseHeight),
|
|
654
|
+
});
|
|
655
|
+
const rebuildScale = existing.faceDraft || faceDraftChanged ? faceDraftSourceScale : { width: 1, depth: 1, height: 1 };
|
|
638
656
|
try {
|
|
639
657
|
const rebuilt = await sketchExtrusionShapeFromRequest({
|
|
640
658
|
id: existing.id,
|
|
@@ -644,9 +662,9 @@ export function createEngine(store) {
|
|
|
644
662
|
hole: existing.hole,
|
|
645
663
|
profile: replacingSketchProfile ? changes.sketchProfile : existing.sketchProfile,
|
|
646
664
|
height: sourceHeight,
|
|
647
|
-
x:
|
|
648
|
-
z:
|
|
649
|
-
elevation:
|
|
665
|
+
x: 0,
|
|
666
|
+
z: 0,
|
|
667
|
+
elevation: 0,
|
|
650
668
|
rotation: existing.rotation,
|
|
651
669
|
rotationX: existing.rotationX,
|
|
652
670
|
rotationZ: existing.rotationZ,
|
|
@@ -656,6 +674,15 @@ export function createEngine(store) {
|
|
|
656
674
|
const rebuiltSource = {
|
|
657
675
|
...sourceMetadata,
|
|
658
676
|
...rebuilt,
|
|
677
|
+
mirrorX: existing.mirrorX,
|
|
678
|
+
mirrorY: existing.mirrorY,
|
|
679
|
+
mirrorZ: existing.mirrorZ,
|
|
680
|
+
...retainedDraftSourcePlacement(existing, rebuilt.cadBrepFrame, existing.faceDraft && !hasExistingTreatment ? existing.cadBrepFrame : undefined),
|
|
681
|
+
...(existing.faceDraft || faceDraftChanged ? { faceDraftSourceScale } : {}),
|
|
682
|
+
width: rebuilt.width * rebuildScale.width,
|
|
683
|
+
depth: rebuilt.depth * rebuildScale.depth,
|
|
684
|
+
height: rebuilt.height * rebuildScale.height,
|
|
685
|
+
size: Math.max(rebuilt.width * rebuildScale.width, rebuilt.depth * rebuildScale.depth),
|
|
659
686
|
id: existing.id,
|
|
660
687
|
sketchSourceId: existing.sketchSourceId ?? rebuilt.sketchSourceId,
|
|
661
688
|
faceDraft: undefined,
|
|
@@ -699,20 +726,29 @@ export function createEngine(store) {
|
|
|
699
726
|
source: replayedSource,
|
|
700
727
|
request: requestedFaceDraft,
|
|
701
728
|
profileChanged: replacingSketchProfile,
|
|
702
|
-
}, (kernel, shape) => orientedSolidForShape(kernel, shape)));
|
|
729
|
+
}, (kernel, shape) => orientedSolidForShape(kernel, unmirroredDraftSource(shape))));
|
|
703
730
|
const result = await applySketchFaceDraft(replayedSource, {
|
|
704
731
|
...requestedFaceDraft,
|
|
705
732
|
sourceFaceId: currentFaceId,
|
|
706
733
|
});
|
|
707
734
|
// The same record the editor writes for a draft it makes (#384).
|
|
735
|
+
const drafted = shapeWithCadResult(replayedSource, result);
|
|
708
736
|
swept = {
|
|
709
|
-
...
|
|
737
|
+
...retainDraftSourceMirrors(drafted, replayedSource),
|
|
738
|
+
...(!replayedSource.mirrorX && !replayedSource.mirrorY && !replayedSource.mirrorZ
|
|
739
|
+
? retainedDraftSourcePlacement({
|
|
740
|
+
...replayedSource,
|
|
741
|
+
faceDraftSourceFrame: undefined,
|
|
742
|
+
draftPrismSourceFrame: undefined,
|
|
743
|
+
}, drafted.cadBrepFrame)
|
|
744
|
+
: {}),
|
|
710
745
|
...retainedFaceDraftFields(replayedSource.faceIds, existing, { faceId: currentFaceId, normal: sourceFaceNormal, segmentMatch }, requestedFaceDraft),
|
|
746
|
+
faceDraftSourceScale,
|
|
711
747
|
};
|
|
712
748
|
}
|
|
713
749
|
else if (draftPrismAngle !== undefined && !replayDraftAndTreatment) {
|
|
714
750
|
swept = {
|
|
715
|
-
...shapeWithCadResult(replayedSource, await applyDraftPrism(replayedSource, { angle: draftPrismAngle })),
|
|
751
|
+
...retainDraftSourceMirrors(shapeWithCadResult(replayedSource, await applyDraftPrism(replayedSource, { angle: draftPrismAngle })), replayedSource),
|
|
716
752
|
draftPrismAngle,
|
|
717
753
|
};
|
|
718
754
|
}
|
|
@@ -762,6 +798,9 @@ export function createEngine(store) {
|
|
|
762
798
|
const rebuiltSweep = {
|
|
763
799
|
...sourceMetadata,
|
|
764
800
|
...resized,
|
|
801
|
+
mirrorX: existing.mirrorX,
|
|
802
|
+
mirrorY: existing.mirrorY,
|
|
803
|
+
mirrorZ: existing.mirrorZ,
|
|
765
804
|
id: existing.id,
|
|
766
805
|
sketchSourceId: existing.sketchSourceId ?? rebuilt.sketchSourceId,
|
|
767
806
|
faceIds: refreshedFaceIds,
|
|
@@ -790,13 +829,13 @@ export function createEngine(store) {
|
|
|
790
829
|
? existing.faceDraft.sourceFaceNormal
|
|
791
830
|
: undefined;
|
|
792
831
|
const selectedOnPrior = priorReference ? undefined
|
|
793
|
-
: (await shapeFaces(existing, isExactSketchRevolve ? { topology: "exact" } : undefined))
|
|
832
|
+
: (await shapeFaces(unmirroredDraftSource(existing), isExactSketchRevolve ? { topology: "exact" } : undefined))
|
|
794
833
|
.find((face) => face.id === requestedFaceDraft.sourceFaceId);
|
|
795
834
|
const sourceFaceNormal = priorReference ?? selectedOnPrior?.normal;
|
|
796
835
|
if (!sourceFaceNormal || selectedOnPrior && selectedOnPrior.surfaceType !== "plane") {
|
|
797
836
|
throw new Error("The selected source face has no stable planar reference.");
|
|
798
837
|
}
|
|
799
|
-
const currentFace = await findUniqueDraftFace(replayedSource, sourceFaceNormal);
|
|
838
|
+
const currentFace = await findUniqueDraftFace(unmirroredDraftSource(replayedSource), sourceFaceNormal);
|
|
800
839
|
if (!currentFace)
|
|
801
840
|
throw new Error("The selected source face is missing or ambiguous after the sketch edit.");
|
|
802
841
|
const faceDraft = { ...requestedFaceDraft, sourceFaceNormal };
|
|
@@ -805,7 +844,7 @@ export function createEngine(store) {
|
|
|
805
844
|
sourceFaceId: currentFace.id,
|
|
806
845
|
});
|
|
807
846
|
swept = {
|
|
808
|
-
...shapeWithCadResult(replayedSource, result),
|
|
847
|
+
...retainDraftSourceMirrors(shapeWithCadResult(replayedSource, result), replayedSource),
|
|
809
848
|
faceDraft,
|
|
810
849
|
faceDraftSourceFrame: existing.faceDraftSourceFrame ?? existing.cadBrepFrame,
|
|
811
850
|
};
|
|
@@ -841,18 +880,21 @@ export function createEngine(store) {
|
|
|
841
880
|
const sourceScale = existing.faceDraftSourceScale ?? revolveSourceScale(existing);
|
|
842
881
|
const rebuilt = resizeRebuiltRevolve(rebuiltAtNaturalScale, sourceScale);
|
|
843
882
|
if (requestedFaceDraft) {
|
|
844
|
-
const exactBase =
|
|
883
|
+
const exactBase = {
|
|
884
|
+
...retainDraftSourceMirrors(shapeWithCadResult(rebuilt, await exactPlainSketchRevolveResult(rebuilt)), rebuilt),
|
|
885
|
+
faceDraftSourceScale: sourceScale,
|
|
886
|
+
};
|
|
845
887
|
const priorReference = existing.faceDraft?.sourceFaceId === requestedFaceDraft.sourceFaceId
|
|
846
888
|
? existing.faceDraft.sourceFaceNormal
|
|
847
889
|
: undefined;
|
|
848
890
|
const selectedOnPrior = priorReference ? undefined
|
|
849
|
-
: (await shapeFaces(existing, { topology: "exact" }))
|
|
891
|
+
: (await shapeFaces(unmirroredDraftSource(existing), { topology: "exact" }))
|
|
850
892
|
.find((face) => face.id === requestedFaceDraft.sourceFaceId);
|
|
851
893
|
const sourceFaceNormal = priorReference ?? selectedOnPrior?.normal;
|
|
852
894
|
if (!sourceFaceNormal || selectedOnPrior && selectedOnPrior.surfaceType !== "plane") {
|
|
853
895
|
throw new Error("The selected source face has no stable planar reference.");
|
|
854
896
|
}
|
|
855
|
-
const currentFace = await findUniqueDraftFace(exactBase, sourceFaceNormal);
|
|
897
|
+
const currentFace = await findUniqueDraftFace(unmirroredDraftSource(exactBase), sourceFaceNormal);
|
|
856
898
|
if (!currentFace)
|
|
857
899
|
throw new Error("The selected source face is missing or ambiguous after the sketch edit.");
|
|
858
900
|
const faceDraft = { ...requestedFaceDraft, sourceFaceNormal };
|
|
@@ -861,7 +903,7 @@ export function createEngine(store) {
|
|
|
861
903
|
sourceFaceId: currentFace.id,
|
|
862
904
|
});
|
|
863
905
|
swept = {
|
|
864
|
-
...shapeWithCadResult(exactBase, result),
|
|
906
|
+
...retainDraftSourceMirrors(shapeWithCadResult(exactBase, result), exactBase),
|
|
865
907
|
faceDraft,
|
|
866
908
|
faceDraftSourceFrame: existing.faceDraftSourceFrame ?? existing.cadBrepFrame ?? exactBase.cadBrepFrame,
|
|
867
909
|
faceDraftSourceScale: sourceScale,
|
|
@@ -1284,7 +1326,7 @@ export function createEngine(store) {
|
|
|
1284
1326
|
};
|
|
1285
1327
|
}),
|
|
1286
1328
|
draftPrism: (projectId, shapeId, angle) => cadTreatment(projectId, shapeId, "prism-draft", async (shape) => ({
|
|
1287
|
-
...shapeWithCadResult(shape, await applyDraftPrism(shape, { angle })),
|
|
1329
|
+
...retainDraftSourceMirrors(shapeWithCadResult(shape, await applyDraftPrism(shape, { angle })), shape),
|
|
1288
1330
|
...retainedPrismDraftFields(shape, angle),
|
|
1289
1331
|
})),
|
|
1290
1332
|
mirrorBaked: (projectId, ids, axis) => mutating(projectId, async (document) => {
|