@constructorfleet/sketchforge-engine 1.25.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.
Files changed (73) hide show
  1. package/dist/cadAnalysis.d.ts +94 -0
  2. package/dist/cadAnalysis.d.ts.map +1 -0
  3. package/dist/cadAnalysis.js +143 -0
  4. package/dist/cadAnalysis.js.map +1 -0
  5. package/dist/cadShell.d.ts +143 -0
  6. package/dist/cadShell.d.ts.map +1 -0
  7. package/dist/cadShell.js +306 -0
  8. package/dist/cadShell.js.map +1 -0
  9. package/dist/cadSolids.d.ts +32 -0
  10. package/dist/cadSolids.d.ts.map +1 -1
  11. package/dist/cadSolids.js +45 -12
  12. package/dist/cadSolids.js.map +1 -1
  13. package/dist/domain/sketchforge.d.ts +1 -1
  14. package/dist/domain/sketchforge.d.ts.map +1 -1
  15. package/dist/engine.d.ts.map +1 -1
  16. package/dist/engine.js +70 -79
  17. package/dist/engine.js.map +1 -1
  18. package/dist/faceDraftSegmentLineage.d.ts +2 -37
  19. package/dist/faceDraftSegmentLineage.d.ts.map +1 -1
  20. package/dist/faceDraftSegmentLineage.js +6 -190
  21. package/dist/faceDraftSegmentLineage.js.map +1 -1
  22. package/dist/parametricRecompute.d.ts.map +1 -1
  23. package/dist/parametricRecompute.js +7 -4
  24. package/dist/parametricRecompute.js.map +1 -1
  25. package/dist/revolveRequests.d.ts.map +1 -1
  26. package/dist/serverCadInterference.d.ts +8 -45
  27. package/dist/serverCadInterference.d.ts.map +1 -1
  28. package/dist/serverCadInterference.js +13 -42
  29. package/dist/serverCadInterference.js.map +1 -1
  30. package/dist/serverCadMeasure.d.ts.map +1 -1
  31. package/dist/serverCadMeasure.js +33 -2
  32. package/dist/serverCadMeasure.js.map +1 -1
  33. package/dist/serverCadOperations.d.ts +14 -43
  34. package/dist/serverCadOperations.d.ts.map +1 -1
  35. package/dist/serverCadOperations.js +117 -160
  36. package/dist/serverCadOperations.js.map +1 -1
  37. package/dist/serverCadShell.d.ts +7 -94
  38. package/dist/serverCadShell.d.ts.map +1 -1
  39. package/dist/serverCadShell.js +25 -269
  40. package/dist/serverCadShell.js.map +1 -1
  41. package/dist/serverCadThickness.d.ts +8 -8
  42. package/dist/serverCadThickness.d.ts.map +1 -1
  43. package/dist/serverCadThickness.js +15 -42
  44. package/dist/serverCadThickness.js.map +1 -1
  45. package/dist/serverShapeBooleans.js +1 -1
  46. package/dist/serverShapeBooleans.js.map +1 -1
  47. package/dist/serverStepExplode.d.ts +1 -2
  48. package/dist/serverStepExplode.d.ts.map +1 -1
  49. package/dist/serverStepExplode.js +15 -148
  50. package/dist/serverStepExplode.js.map +1 -1
  51. package/dist/sketchExtrusionRequest.d.ts.map +1 -1
  52. package/dist/sketchExtrusionRequest.js +2 -25
  53. package/dist/sketchExtrusionRequest.js.map +1 -1
  54. package/dist/sketchExtrusionSolid.d.ts +4 -0
  55. package/dist/sketchExtrusionSolid.d.ts.map +1 -0
  56. package/dist/sketchExtrusionSolid.js +36 -0
  57. package/dist/sketchExtrusionSolid.js.map +1 -0
  58. package/dist/sketchFaceDraftKernel.d.ts +248 -0
  59. package/dist/sketchFaceDraftKernel.d.ts.map +1 -0
  60. package/dist/sketchFaceDraftKernel.js +575 -0
  61. package/dist/sketchFaceDraftKernel.js.map +1 -0
  62. package/dist/stepAssemblyExplode.d.ts +45 -0
  63. package/dist/stepAssemblyExplode.d.ts.map +1 -0
  64. package/dist/stepAssemblyExplode.js +195 -0
  65. package/dist/stepAssemblyExplode.js.map +1 -0
  66. package/dist/support/cadModifierTypes.d.ts +82 -0
  67. package/dist/support/cadModifierTypes.d.ts.map +1 -1
  68. package/dist/support/i18n/locales/en/messages.json +15 -1
  69. package/dist/support/lib/operator-configuration.json +11 -0
  70. package/dist/workplaneShapes.d.ts.map +1 -1
  71. package/dist/workplaneShapes.js +5 -0
  72. package/dist/workplaneShapes.js.map +1 -1
  73. package/package.json +1 -1
@@ -0,0 +1,248 @@
1
+ /**
2
+ * The retained face and prism drafts of a sketch extrusion, on a kernel the
3
+ * caller supplies.
4
+ *
5
+ * Browser-safe: nothing here loads a kernel, so the editor's CAD worker runs
6
+ * these on its own OCCT instance and the server runs the same functions inside
7
+ * `withCadKernel`. A draft the editor makes must be the same feature, with the
8
+ * same record and placement, that `PATCH faceDraft` or `POST /draft-prism`
9
+ * makes, and the way to keep two callers from drifting is for both to call one
10
+ * implementation. Shared here, and called by both: which face a draft names
11
+ * (`resolveRetainedFaceDraft`, legacy segment inference included), the draft
12
+ * itself (`draftSketchFace`), result face IDs, the records, and where the
13
+ * drafted part is placed (`retainedDraftSourcePlacement`).
14
+ *
15
+ * Errors carry the messages the REST API has always returned; each caller
16
+ * wraps them in its own error type.
17
+ */
18
+ import type { OcctKernel, ShapeHandle, Vec3 } from "occt-wasm";
19
+ import type { CadBrepFrame, SketchFaceDraft, SketchProfile, WorkplaneShape } from "./domain/sketchforge.js";
20
+ export declare const SKETCH_FACE_DRAFT_PULL_AXES: {
21
+ readonly x: {
22
+ readonly x: 1;
23
+ readonly y: 0;
24
+ readonly z: 0;
25
+ };
26
+ readonly y: {
27
+ readonly x: 0;
28
+ readonly y: 1;
29
+ readonly z: 0;
30
+ };
31
+ readonly z: {
32
+ readonly x: 0;
33
+ readonly y: 0;
34
+ readonly z: 1;
35
+ };
36
+ readonly "-x": {
37
+ readonly x: -1;
38
+ readonly y: 0;
39
+ readonly z: 0;
40
+ };
41
+ readonly "-y": {
42
+ readonly x: 0;
43
+ readonly y: -1;
44
+ readonly z: 0;
45
+ };
46
+ readonly "-z": {
47
+ readonly x: 0;
48
+ readonly y: 0;
49
+ readonly z: -1;
50
+ };
51
+ };
52
+ export type SketchFaceDraftPullDirection = keyof typeof SKETCH_FACE_DRAFT_PULL_AXES;
53
+ export type SketchFaceDraftRequest = {
54
+ sourceFaceId: string;
55
+ angle: number;
56
+ pullDirection: SketchFaceDraftPullDirection;
57
+ };
58
+ export type SketchFaceSegmentMatch = {
59
+ status: "unsupported";
60
+ } | {
61
+ status: "cap";
62
+ } | {
63
+ status: "matched";
64
+ segmentId: string;
65
+ faceId: string;
66
+ normal: Vec3;
67
+ } | {
68
+ status: "missing";
69
+ } | {
70
+ status: "ambiguous";
71
+ };
72
+ /** What a face-draft lookup needs of the undrafted source extrusion. */
73
+ export type SketchFaceDraftSource = Pick<WorkplaneShape, "id" | "sketchOperation" | "sketchProfile" | "cadBrep" | "faceIds" | "cadBrepFrame" | "height">;
74
+ type SegmentEndpoints = {
75
+ id: string;
76
+ start: {
77
+ x: number;
78
+ z: number;
79
+ };
80
+ end: {
81
+ x: number;
82
+ z: number;
83
+ };
84
+ };
85
+ type BoundaryEdge = {
86
+ curveType: string;
87
+ vertices: Vec3[];
88
+ };
89
+ export declare function uniqueSketchSegmentForSideBoundary(boundary: BoundaryEdge[], segments: SegmentEndpoints[], height: number): {
90
+ status: "matched";
91
+ segmentId: string;
92
+ } | {
93
+ status: "missing" | "ambiguous";
94
+ };
95
+ /**
96
+ * A face's outward normal at the middle of its parameter range, or null.
97
+ *
98
+ * The same sample the REST face listing reports, so a normal recorded here
99
+ * compares equal to one a script read from `GET /faces`.
100
+ */
101
+ export declare function sketchFaceNormal(cad: OcctKernel, face: ShapeHandle): Vec3 | null;
102
+ /** Map a selected source face to its exact sketch line segment, when supported. */
103
+ export declare function sketchSegmentForDraftFaceOnKernel(cad: OcctKernel, shape: SketchFaceDraftSource, faceId: string): SketchFaceSegmentMatch;
104
+ /** Find the unique source face corresponding to a retained sketch segment. */
105
+ export declare function draftFaceForSketchSegmentOnKernel(cad: OcctKernel, shape: SketchFaceDraftSource, segmentId: string): SketchFaceSegmentMatch;
106
+ /**
107
+ * Draft one face of a solid about a signed local pull axis, or null when the
108
+ * kernel cannot.
109
+ *
110
+ * OCCT's draft only reliably takes +Z as the pull direction, so when the
111
+ * direct call refuses, the solid is turned until the requested axis is +Z, the
112
+ * face found again on the turned solid by its normal and centre, drafted, and
113
+ * turned back.
114
+ */
115
+ export declare function draftSketchFace(cad: OcctKernel, solid: ShapeHandle, face: ShapeHandle, request: {
116
+ angle: number;
117
+ pullDirection: SketchFaceDraftPullDirection;
118
+ }): ShapeHandle | null;
119
+ /**
120
+ * Face IDs for a result, inherited from the source where a face is plainly
121
+ * the same one.
122
+ *
123
+ * Keep an ID only when an exact face BREP or a unique planar support surface
124
+ * occurs on each side. OCCT face ordering and hash codes are kernel details,
125
+ * so an unmatched or ambiguous face receives a new application ID.
126
+ */
127
+ export declare function faceIdsForCadResult(cad: OcctKernel, source: Pick<WorkplaneShape, "id" | "faceIds">, resultFaces: ShapeHandle[], sourceSolid: ShapeHandle): string[];
128
+ /**
129
+ * Why a retained face draft could not be made, for a caller that words it
130
+ * itself: the face it names cannot be found (`unresolved`), the angle is out of
131
+ * range, the kernel refuses that face, axis and angle (`incompatible`), or the
132
+ * result is not a valid solid. The message is the REST API's.
133
+ */
134
+ export declare class SketchFaceDraftError extends Error {
135
+ readonly reason: "unresolved" | "angle" | "incompatible" | "invalid-result";
136
+ constructor(message: string, reason: SketchFaceDraftError["reason"]);
137
+ }
138
+ /** The single solid a stored B-rep describes, healed the way the server reads one. */
139
+ export declare function solidFromBrepOnKernel(cad: OcctKernel, brep: string): ShapeHandle;
140
+ /** What a face-draft resolution needs of the shape the draft was asked of. */
141
+ export type RetainedFaceDraftPrior = Pick<WorkplaneShape, "id" | "faceIds" | "cadBrep" | "cadBrepFrame" | "height" | "sketchOperation" | "sketchProfile" | "faceDraft" | "faceDraftSourceFaceIds" | "faceDraftSourceSegmentId" | "faceDraftSourceFrame">;
142
+ /**
143
+ * The solid a resolution lists faces on. The server passes its oriented solid,
144
+ * which carries a shape's mirror; the default is the stored B-rep as it is.
145
+ */
146
+ export type RetainedFaceDraftSolidOf = (cad: OcctKernel, shape: RetainedFaceDraftPrior | SketchFaceDraftSource) => ShapeHandle;
147
+ /**
148
+ * Infer the sketch segment of a draft saved before segments were recorded,
149
+ * from its saved source face ID or, failing that, its normal on the extrusion
150
+ * rebuilt from its sketch.
151
+ */
152
+ export declare function legacyDraftSegmentOnKernel(cad: OcctKernel, shape: RetainedFaceDraftPrior): SketchFaceSegmentMatch;
153
+ /** The face a retained draft acts on, with the evidence its record keeps. */
154
+ export type ResolvedSketchFaceDraftSource = {
155
+ faceId: string;
156
+ normal: Vec3;
157
+ segmentMatch: SketchFaceSegmentMatch;
158
+ };
159
+ export type RetainedFaceDraftResolution = {
160
+ /** The shape the draft was asked of: undrafted for a new draft, drafted for an edit or replay. */
161
+ existing: RetainedFaceDraftPrior;
162
+ /** The undrafted extrusion the draft is made on, with a stable ID per face. */
163
+ source: SketchFaceDraftSource;
164
+ request: {
165
+ sourceFaceId: string;
166
+ angle: number;
167
+ pullDirection: SketchFaceDraftPullDirection;
168
+ };
169
+ /** Whether the sketch profile was replaced, so faces must be found by segment or normal. */
170
+ profileChanged: boolean;
171
+ };
172
+ /**
173
+ * Resolve which face of the undrafted source a retained face draft acts on.
174
+ *
175
+ * The one implementation behind both `PATCH faceDraft` on a sketch extrusion
176
+ * and the editor's draft, edit and replay. In order: a draft already on the
177
+ * same face keeps its recorded normal; a new face is looked up by ID, on the
178
+ * rebuilt source when the sketch is unchanged and on the prior shape
179
+ * otherwise; after a profile edit the recorded sketch segment, or the one a
180
+ * legacy draft's saved face implies, must still bound exactly one side face;
181
+ * failing an ID, exactly one flat face must carry the normal. Whatever face is
182
+ * chosen must not match two segments, nor be a side no segment bounds. Each
183
+ * refusal carries the message the API returns for it.
184
+ */
185
+ export declare function resolveRetainedFaceDraft(cad: OcctKernel, { existing, source, request, profileChanged }: RetainedFaceDraftResolution, solidOf?: RetainedFaceDraftSolidOf): ResolvedSketchFaceDraftSource;
186
+ /** The fields a retained face draft adds to its shape. */
187
+ export type RetainedFaceDraftFields = {
188
+ faceDraft: SketchFaceDraft;
189
+ faceDraftSourceFaceIds: string[] | undefined;
190
+ faceDraftSourceSegmentId: string | undefined;
191
+ faceDraftSourceFrame: CadBrepFrame | undefined;
192
+ };
193
+ /**
194
+ * The record of a retained face draft.
195
+ *
196
+ * `sourceFaceIds` are the IDs of the undrafted source it was resolved on, and
197
+ * `frameSource` the shape the draft was asked of: its earlier source frame is
198
+ * kept through every replay, so a sketch edit never loses where it started.
199
+ */
200
+ export declare function retainedFaceDraftFields(sourceFaceIds: string[] | undefined, frameSource: Pick<WorkplaneShape, "faceDraftSourceFrame" | "cadBrepFrame">, resolved: Pick<ResolvedSketchFaceDraftSource, "faceId" | "normal" | "segmentMatch">, request: {
201
+ angle: number;
202
+ pullDirection: SketchFaceDraftPullDirection;
203
+ }): RetainedFaceDraftFields;
204
+ /**
205
+ * Resolve and draft a retained face draft on the undrafted source.
206
+ *
207
+ * The editor's CAD worker runs this. The drafted solid is in the source
208
+ * B-rep's own frame; `sourceFaceIds` are the source's listed IDs and
209
+ * `resultFaceIds` inherit them for faces the draft left alone.
210
+ */
211
+ export declare function retainedSketchFaceDraft(cad: OcctKernel, resolution: RetainedFaceDraftResolution): {
212
+ solid: ShapeHandle;
213
+ resolved: ResolvedSketchFaceDraftSource;
214
+ sourceFaceIds: string[];
215
+ resultFaceIds: string[];
216
+ };
217
+ /** The fields a retained prism draft adds to its shape. */
218
+ export declare function retainedPrismDraftFields(shape: Pick<WorkplaneShape, "draftPrismSourceFrame" | "draftPrismSourceHeight" | "cadBrepFrame" | "height">, angle: number): {
219
+ draftPrismSourceFrame?: CadBrepFrame | undefined;
220
+ draftPrismAngle: number;
221
+ draftPrismSourceHeight: number;
222
+ };
223
+ /**
224
+ * The centre of a profile's bounds: where a prism draft's B-rep is centred,
225
+ * and where a straight extrusion of it has its frame.
226
+ */
227
+ export declare function draftPrismProfileOffset(profile: Pick<SketchProfile, "points">): {
228
+ x: number;
229
+ y: number;
230
+ z: number;
231
+ };
232
+ /**
233
+ * Where the REST API places the undrafted extrusion a retained draft is
234
+ * rebuilt on, and so the drafted result, which keeps it.
235
+ *
236
+ * The shape's position is moved by however far the rebuilt extrusion's frame
237
+ * is from the source frame the draft first started from. Frame offsets are in
238
+ * sketch coordinates, so rotate them by the shape's placement before adding
239
+ * them to its world position. The editor and REST use this same rule so one
240
+ * record means one placement whichever side wrote it (#384, #435).
241
+ */
242
+ export declare function retainedDraftSourcePlacement(existing: Pick<WorkplaneShape, "x" | "z" | "elevation" | "rotation" | "rotationX" | "rotationZ" | "mirrorX" | "mirrorY" | "mirrorZ" | "faceDraftSourceFrame" | "draftPrismSourceFrame" | "cadBrepFrame">, rebuiltFrame: Pick<CadBrepFrame, "x" | "z" | "elevation">, sourceFrameOverride?: Pick<CadBrepFrame, "x" | "z" | "elevation">): {
243
+ x: number;
244
+ z: number;
245
+ elevation: number;
246
+ };
247
+ export {};
248
+ //# sourceMappingURL=sketchFaceDraftKernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketchFaceDraftKernel.d.ts","sourceRoot":"","sources":["../src/sketchFaceDraftKernel.ts"],"names":[],"mappings":"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"}