@constructorfleet/sketchforge-engine 1.25.0 → 1.26.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/cadSolids.d.ts +32 -0
- package/dist/cadSolids.d.ts.map +1 -1
- package/dist/cadSolids.js +45 -12
- package/dist/cadSolids.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +16 -67
- package/dist/engine.js.map +1 -1
- package/dist/faceDraftSegmentLineage.d.ts +2 -37
- package/dist/faceDraftSegmentLineage.d.ts.map +1 -1
- package/dist/faceDraftSegmentLineage.js +6 -190
- package/dist/faceDraftSegmentLineage.js.map +1 -1
- package/dist/serverCadMeasure.d.ts.map +1 -1
- package/dist/serverCadMeasure.js +33 -2
- package/dist/serverCadMeasure.js.map +1 -1
- package/dist/serverCadOperations.d.ts +14 -43
- package/dist/serverCadOperations.d.ts.map +1 -1
- package/dist/serverCadOperations.js +42 -136
- package/dist/serverCadOperations.js.map +1 -1
- package/dist/serverShapeBooleans.js +1 -1
- package/dist/serverShapeBooleans.js.map +1 -1
- package/dist/sketchExtrusionRequest.d.ts.map +1 -1
- package/dist/sketchExtrusionRequest.js +2 -25
- package/dist/sketchExtrusionRequest.js.map +1 -1
- package/dist/sketchExtrusionSolid.d.ts +4 -0
- package/dist/sketchExtrusionSolid.d.ts.map +1 -0
- package/dist/sketchExtrusionSolid.js +36 -0
- package/dist/sketchExtrusionSolid.js.map +1 -0
- package/dist/sketchFaceDraftKernel.d.ts +248 -0
- package/dist/sketchFaceDraftKernel.d.ts.map +1 -0
- package/dist/sketchFaceDraftKernel.js +573 -0
- package/dist/sketchFaceDraftKernel.js.map +1 -0
- package/dist/support/cadModifierTypes.d.ts +23 -0
- package/dist/support/cadModifierTypes.d.ts.map +1 -1
- package/dist/support/i18n/locales/en/messages.json +3 -1
- package/dist/support/lib/operator-configuration.json +11 -0
- package/dist/workplaneShapes.d.ts.map +1 -1
- package/dist/workplaneShapes.js +5 -0
- package/dist/workplaneShapes.js.map +1 -1
- package/package.json +1 -1
|
@@ -142,7 +142,7 @@ export async function buildGroupFromSelection(selection) {
|
|
|
142
142
|
catch (error) {
|
|
143
143
|
if (error instanceof ServerCadError)
|
|
144
144
|
return { error: error.message, status: error.status };
|
|
145
|
-
return { error: "The CAD kernel could not complete that cut.", status:
|
|
145
|
+
return { error: error instanceof Error ? error.message : "The CAD kernel could not complete that cut.", status: 422 };
|
|
146
146
|
}
|
|
147
147
|
const firstSolid = solids[0];
|
|
148
148
|
const group = meshShapeFromWorldPositions(result.meshed.positions, {
|
|
@@ -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":"sketchExtrusionRequest.d.ts","sourceRoot":"","sources":["../src/sketchExtrusionRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"sketchExtrusionRequest.d.ts","sourceRoot":"","sources":["../src/sketchExtrusionRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM7E,kEAAkE;AAClE,wBAAsB,+BAA+B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAwD/G"}
|
|
@@ -1,21 +1,7 @@
|
|
|
1
1
|
import { createLocalId } from "./localIds.js";
|
|
2
2
|
import { withCadKernel } from "./serverCadKernel.js";
|
|
3
|
-
import {
|
|
3
|
+
import { sketchExtrusionSolid } from "./sketchExtrusionSolid.js";
|
|
4
4
|
import { canonicalizeShape, cleanNearZero } from "./workplaneShapes.js";
|
|
5
|
-
function pathWire(cad, path) {
|
|
6
|
-
return cad.makeWire(path.steps.map(({ segment, from, to }) => {
|
|
7
|
-
const forward = segment.startId === from.id;
|
|
8
|
-
const first = forward ? from.handleOut : from.handleIn;
|
|
9
|
-
const second = forward ? to.handleIn : to.handleOut;
|
|
10
|
-
if (segment.kind !== "line" && first && second) {
|
|
11
|
-
return cad.makeBezierEdge([
|
|
12
|
-
{ x: from.x, y: 0, z: from.z }, { x: first.x, y: 0, z: first.z },
|
|
13
|
-
{ x: second.x, y: 0, z: second.z }, { x: to.x, y: 0, z: to.z },
|
|
14
|
-
]);
|
|
15
|
-
}
|
|
16
|
-
return cad.makeLineEdge({ x: from.x, y: 0, z: from.z }, { x: to.x, y: 0, z: to.z });
|
|
17
|
-
}));
|
|
18
|
-
}
|
|
19
5
|
/** Rebuild a retained sketch extrusion as exact OCCT geometry. */
|
|
20
6
|
export async function sketchExtrusionShapeFromRequest(request) {
|
|
21
7
|
const profile = request.profile;
|
|
@@ -24,16 +10,7 @@ export async function sketchExtrusionShapeFromRequest(request) {
|
|
|
24
10
|
throw new Error("A sketch extrusion height must be finite and greater than zero.");
|
|
25
11
|
}
|
|
26
12
|
return withCadKernel((cad) => {
|
|
27
|
-
const
|
|
28
|
-
if (regions.length === 0)
|
|
29
|
-
throw new Error("A sketch extrusion requires a closed profile.");
|
|
30
|
-
const solids = regions.map((region) => {
|
|
31
|
-
let face = cad.makeFace(pathWire(cad, region.outer));
|
|
32
|
-
if (region.holes.length)
|
|
33
|
-
face = cad.addHolesInFace(face, region.holes.map((hole) => pathWire(cad, hole)));
|
|
34
|
-
return cad.extrude(face, 0, height, 0);
|
|
35
|
-
});
|
|
36
|
-
const solid = solids.length === 1 ? solids[0] : cad.makeCompound(solids);
|
|
13
|
+
const solid = sketchExtrusionSolid(cad, profile, height);
|
|
37
14
|
if (!cad.isValid(solid))
|
|
38
15
|
throw new Error("The sketch extrusion produced invalid geometry.");
|
|
39
16
|
const mesh = cad.tessellate(solid, { linearDeflection: 0.05, angularDeflection: 0.16 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sketchExtrusionRequest.js","sourceRoot":"","sources":["../src/sketchExtrusionRequest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sketchExtrusionRequest.js","sourceRoot":"","sources":["../src/sketchExtrusionRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { OcctKernel, ShapeHandle } from "occt-wasm";
|
|
2
|
+
import type { SketchProfile } from "./domain/sketchforge.js";
|
|
3
|
+
export declare function sketchExtrusionSolid(cad: OcctKernel, profile: SketchProfile, height: number): ShapeHandle;
|
|
4
|
+
//# sourceMappingURL=sketchExtrusionSolid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sketchExtrusionSolid.d.ts","sourceRoot":"","sources":["../src/sketchExtrusionSolid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA0B7D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CASzG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { cadSketchRegions } from "./sketchCadProfile.js";
|
|
2
|
+
/**
|
|
3
|
+
* A sketch extrusion as exact geometry, on a kernel the caller supplies.
|
|
4
|
+
*
|
|
5
|
+
* Browser-safe, so a face-draft replay that must rebuild an older extrusion
|
|
6
|
+
* (`legacyDraftSegmentOnKernel`) can do it inside whichever kernel is running
|
|
7
|
+
* it. The profile is extruded along +Y from Y=0 in sketch coordinates, which is
|
|
8
|
+
* the frame every retained sketch extrusion's B-rep is stored in.
|
|
9
|
+
*/
|
|
10
|
+
function pathWire(cad, path) {
|
|
11
|
+
return cad.makeWire(path.steps.map(({ segment, from, to }) => {
|
|
12
|
+
const forward = segment.startId === from.id;
|
|
13
|
+
const first = forward ? from.handleOut : from.handleIn;
|
|
14
|
+
const second = forward ? to.handleIn : to.handleOut;
|
|
15
|
+
if (segment.kind !== "line" && first && second) {
|
|
16
|
+
return cad.makeBezierEdge([
|
|
17
|
+
{ x: from.x, y: 0, z: from.z }, { x: first.x, y: 0, z: first.z },
|
|
18
|
+
{ x: second.x, y: 0, z: second.z }, { x: to.x, y: 0, z: to.z },
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
21
|
+
return cad.makeLineEdge({ x: from.x, y: 0, z: from.z }, { x: to.x, y: 0, z: to.z });
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
export function sketchExtrusionSolid(cad, profile, height) {
|
|
25
|
+
const regions = cadSketchRegions(profile);
|
|
26
|
+
if (regions.length === 0)
|
|
27
|
+
throw new Error("A sketch extrusion requires a closed profile.");
|
|
28
|
+
const solids = regions.map((region) => {
|
|
29
|
+
let face = cad.makeFace(pathWire(cad, region.outer));
|
|
30
|
+
if (region.holes.length)
|
|
31
|
+
face = cad.addHolesInFace(face, region.holes.map((hole) => pathWire(cad, hole)));
|
|
32
|
+
return cad.extrude(face, 0, height, 0);
|
|
33
|
+
});
|
|
34
|
+
return solids.length === 1 ? solids[0] : cad.makeCompound(solids);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=sketchExtrusionSolid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sketchExtrusionSolid.js","sourceRoot":"","sources":["../src/sketchExtrusionSolid.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uBAAuB,CAAC;AAEpF;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,GAAe,EAAE,IAA0B;IAC3D,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,cAAc,CAAC;gBACxB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;gBAChE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;aAC/D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAe,EAAE,OAAsB,EAAE,MAAc;IAC1F,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACpC,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1G,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -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, in sketch
|
|
238
|
+
* coordinates. A fresh draft, or a re-draft of an unchanged sketch, therefore
|
|
239
|
+
* leaves the position where it is. The editor uses the same rule so that one
|
|
240
|
+
* record means one placement whichever side wrote it (#384).
|
|
241
|
+
*/
|
|
242
|
+
export declare function retainedDraftSourcePlacement(existing: Pick<WorkplaneShape, "x" | "z" | "elevation" | "faceDraftSourceFrame" | "draftPrismSourceFrame" | "cadBrepFrame">, rebuiltFrame: 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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"}
|