@constructorfleet/sketchforge-engine 1.14.0 → 1.16.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/LICENSE +661 -0
- package/README.md +61 -3
- package/dist/domain/sketchforge.d.ts +25 -0
- package/dist/domain/sketchforge.d.ts.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +159 -6
- package/dist/engine.js.map +1 -1
- package/dist/projectMeshes.d.ts.map +1 -1
- package/dist/projectMeshes.js +4 -2
- package/dist/projectMeshes.js.map +1 -1
- package/dist/revolveRequests.d.ts +94 -1
- package/dist/revolveRequests.d.ts.map +1 -1
- package/dist/revolveRequests.js +3 -1
- package/dist/revolveRequests.js.map +1 -1
- package/dist/serverStepExplode.d.ts.map +1 -1
- package/dist/serverStepExplode.js +34 -2
- package/dist/serverStepExplode.js.map +1 -1
- package/dist/shapeRequests.d.ts +1 -1
- package/dist/shapeRequests.d.ts.map +1 -1
- package/dist/shapeRequests.js +1 -1
- package/dist/shapeRequests.js.map +1 -1
- package/dist/sketchCadProfile.d.ts +23 -0
- package/dist/sketchCadProfile.d.ts.map +1 -0
- package/dist/sketchCadProfile.js +166 -0
- package/dist/sketchCadProfile.js.map +1 -0
- package/dist/sketchCadSweep.d.ts +4 -0
- package/dist/sketchCadSweep.d.ts.map +1 -0
- package/dist/sketchCadSweep.js +95 -0
- package/dist/sketchCadSweep.js.map +1 -0
- package/dist/sketchSweepRequest.d.ts +5 -0
- package/dist/sketchSweepRequest.d.ts.map +1 -0
- package/dist/sketchSweepRequest.js +107 -0
- package/dist/sketchSweepRequest.js.map +1 -0
- package/dist/skfProject.d.ts +2 -0
- package/dist/skfProject.d.ts.map +1 -1
- package/dist/skfProject.js +76 -3
- package/dist/skfProject.js.map +1 -1
- package/dist/stepAssemblyHierarchy.d.ts +14 -0
- package/dist/stepAssemblyHierarchy.d.ts.map +1 -0
- package/dist/stepAssemblyHierarchy.js +170 -0
- package/dist/stepAssemblyHierarchy.js.map +1 -0
- package/dist/stepComponentMetadata.d.ts +9 -1
- package/dist/stepComponentMetadata.d.ts.map +1 -1
- package/dist/stepComponentMetadata.js +6 -2
- package/dist/stepComponentMetadata.js.map +1 -1
- package/dist/stepGlbColors.d.ts.map +1 -1
- package/dist/stepGlbColors.js +2 -25
- package/dist/stepGlbColors.js.map +1 -1
- package/dist/stepGlbDocument.d.ts +25 -0
- package/dist/stepGlbDocument.d.ts.map +1 -0
- package/dist/stepGlbDocument.js +27 -0
- package/dist/stepGlbDocument.js.map +1 -0
- package/dist/stepImportCommon.d.ts.map +1 -1
- package/dist/stepImportCommon.js +9 -9
- package/dist/stepImportCommon.js.map +1 -1
- package/dist/workplaneShapes.d.ts.map +1 -1
- package/dist/workplaneShapes.js +3 -1
- package/dist/workplaneShapes.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sketchCadProfile.js","sourceRoot":"","sources":["../src/sketchCadProfile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type OcctKernel, type ShapeHandle } from "occt-wasm";
|
|
2
|
+
import { cadSketchSweepPaths } from "./sketchCadProfile.js";
|
|
3
|
+
export declare function buildCadSketchSweep(cad: OcctKernel, profile: Parameters<typeof cadSketchSweepPaths>[0]): ShapeHandle;
|
|
4
|
+
//# sourceMappingURL=sketchCadSweep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sketchCadSweep.d.ts","sourceRoot":"","sources":["../src/sketchCadSweep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,UAAU,EAAE,KAAK,WAAW,EAAa,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAA6B,MAAM,uBAAuB,CAAC;AAuBvF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CA6BpH"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { TransitionMode } from "occt-wasm";
|
|
2
|
+
import { cadSketchSweepPaths } from "./sketchCadProfile.js";
|
|
3
|
+
import { LocalizedError } from "./support/i18n/LocalizedError.js";
|
|
4
|
+
import { deriveSketchSweepFrames, sketchSweepSpinePointInSection } from "./sketchSweepFrames.js";
|
|
5
|
+
function pathWire(cad, path, map = (point) => ({ x: point.x, y: 0, z: point.z })) {
|
|
6
|
+
const edges = 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
|
+
map(from),
|
|
13
|
+
map({ ...first, sweepDepth: first.sweepDepth ?? from.sweepDepth }),
|
|
14
|
+
map({ ...second, sweepDepth: second.sweepDepth ?? to.sweepDepth }),
|
|
15
|
+
map(to),
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
return cad.makeLineEdge(map(from), map(to));
|
|
19
|
+
});
|
|
20
|
+
return cad.makeWire(edges);
|
|
21
|
+
}
|
|
22
|
+
export function buildCadSketchSweep(cad, profile) {
|
|
23
|
+
const { sections, spine: rawSpine } = cadSketchSweepPaths(profile);
|
|
24
|
+
const defaultSection = {
|
|
25
|
+
origin: { x: 0, y: 0, z: 0 },
|
|
26
|
+
normal: { x: 0, y: 1, z: 0 },
|
|
27
|
+
xAxis: { x: 1, y: 0, z: 0 },
|
|
28
|
+
zAxis: { x: 0, y: 0, z: 1 },
|
|
29
|
+
};
|
|
30
|
+
const frames = profile.sweepFrames ?? deriveSketchSweepFrames(defaultSection);
|
|
31
|
+
const spineInOrthogonalPlane = (point) => {
|
|
32
|
+
const position = sketchSweepSpinePointInSection(frames, point);
|
|
33
|
+
return { ...position, z: position.z + (point.sweepDepth ?? 0) };
|
|
34
|
+
};
|
|
35
|
+
const spine = orientedSpine(rawSpine, spineInOrthogonalPlane);
|
|
36
|
+
// The builder returns geometry in the section frame's canonical coordinates.
|
|
37
|
+
// The editor applies the selected workplane transform once after meshing.
|
|
38
|
+
const sectionInWorkplane = (point) => ({ x: point.x, y: 0, z: point.z });
|
|
39
|
+
const spineWire = pathWire(cad, spine, spineInOrthogonalPlane);
|
|
40
|
+
const solids = sections.map((region) => {
|
|
41
|
+
const solid = cad.sweep(pathWire(cad, region.outer, sectionInWorkplane), spineWire, TransitionMode.RoundCorner);
|
|
42
|
+
if (region.holes.length === 0)
|
|
43
|
+
return solid;
|
|
44
|
+
const cut = region.holes.reduce((result, hole) => {
|
|
45
|
+
const holeSolid = cad.sweep(pathWire(cad, hole, sectionInWorkplane), spineWire, TransitionMode.RoundCorner);
|
|
46
|
+
return cad.cut(result, holeSolid);
|
|
47
|
+
}, solid);
|
|
48
|
+
const remainingSolids = cad.getSubShapes(cut, "solid");
|
|
49
|
+
return remainingSolids.length === 1 ? remainingSolids[0] : cut;
|
|
50
|
+
});
|
|
51
|
+
return solids.length === 1 ? solids[0] : cad.makeCompound(solids);
|
|
52
|
+
}
|
|
53
|
+
function orientedSpine(path, map) {
|
|
54
|
+
if (path.steps.length === 0)
|
|
55
|
+
throw new LocalizedError("errors.sketch.sweepNeedsSectionAndSpine");
|
|
56
|
+
const reversed = reversePath(path);
|
|
57
|
+
const forwardAligned = initialTangentIsNormal(path, map);
|
|
58
|
+
const reverseAligned = initialTangentIsNormal(reversed, map);
|
|
59
|
+
if (!forwardAligned && !reverseAligned)
|
|
60
|
+
throw new LocalizedError("errors.sketch.sweepSpineDirection");
|
|
61
|
+
if (forwardAligned && reverseAligned) {
|
|
62
|
+
const forwardStart = path.steps[0].from;
|
|
63
|
+
const reverseStart = reversed.steps[0].from;
|
|
64
|
+
const forwardDistance = forwardStart.x ** 2 + forwardStart.z ** 2 + (forwardStart.sweepDepth ?? 0) ** 2;
|
|
65
|
+
const reverseDistance = reverseStart.x ** 2 + reverseStart.z ** 2 + (reverseStart.sweepDepth ?? 0) ** 2;
|
|
66
|
+
return reverseDistance < forwardDistance ? reversed : path;
|
|
67
|
+
}
|
|
68
|
+
return reverseAligned ? reversed : path;
|
|
69
|
+
}
|
|
70
|
+
function initialTangentIsNormal(path, map) {
|
|
71
|
+
const step = path.steps[0];
|
|
72
|
+
if (!step)
|
|
73
|
+
return false;
|
|
74
|
+
const forward = step.segment.startId === step.from.id;
|
|
75
|
+
const firstControl = forward ? step.from.handleOut : step.from.handleIn;
|
|
76
|
+
const secondControl = forward ? step.to.handleIn : step.to.handleOut;
|
|
77
|
+
const firstHandle = step.segment.kind !== "line" && firstControl && secondControl ? firstControl : undefined;
|
|
78
|
+
const start = map(step.from);
|
|
79
|
+
const tangentEnd = firstHandle
|
|
80
|
+
? map({ ...firstHandle, sweepDepth: firstHandle.sweepDepth ?? step.from.sweepDepth })
|
|
81
|
+
: map(step.to);
|
|
82
|
+
const dx = tangentEnd.x - start.x;
|
|
83
|
+
const dy = tangentEnd.y - start.y;
|
|
84
|
+
const dz = tangentEnd.z - start.z;
|
|
85
|
+
const length = Math.hypot(dx, dy, dz);
|
|
86
|
+
return length > 0 && Math.hypot(dx, dz) <= length * 1e-6;
|
|
87
|
+
}
|
|
88
|
+
function reversePath(path) {
|
|
89
|
+
return {
|
|
90
|
+
...path,
|
|
91
|
+
points: [...path.points].reverse(),
|
|
92
|
+
steps: [...path.steps].reverse().map((step) => ({ ...step, from: step.to, to: step.from })),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=sketchCadSweep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sketchCadSweep.js","sourceRoot":"","sources":["../src/sketchCadSweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WorkplaneShape } from "./domain/sketchforge.js";
|
|
2
|
+
export declare function invalidSketchSweepProfile(profile: unknown): string | null;
|
|
3
|
+
/** Build a retained sketch sweep from the public shape request's profile. */
|
|
4
|
+
export declare function sketchSweepShapeFromRequest(request: Record<string, unknown>): Promise<WorkplaneShape>;
|
|
5
|
+
//# sourceMappingURL=sketchSweepRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sketchSweepRequest.d.ts","sourceRoot":"","sources":["../src/sketchSweepRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM7E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA8BzE;AAED,6EAA6E;AAC7E,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAyD3G"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { createLocalId } from "./localIds.js";
|
|
2
|
+
import { withCadKernel } from "./serverCadKernel.js";
|
|
3
|
+
import { buildCadSketchSweep } from "./sketchCadSweep.js";
|
|
4
|
+
import { canonicalizeShape, cleanNearZero } from "./workplaneShapes.js";
|
|
5
|
+
export function invalidSketchSweepProfile(profile) {
|
|
6
|
+
if (!profile || typeof profile !== "object" || Array.isArray(profile))
|
|
7
|
+
return "A sketch sweep profile must be an object.";
|
|
8
|
+
const value = profile;
|
|
9
|
+
if (!Array.isArray(value.points) || value.points.length < 5 || value.points.length > 5000) {
|
|
10
|
+
return "A sketch sweep profile must contain between 5 and 5000 points.";
|
|
11
|
+
}
|
|
12
|
+
if (!Array.isArray(value.segments) || value.segments.length < 4 || value.segments.length > 10000) {
|
|
13
|
+
return "A sketch sweep profile must contain between 4 and 10000 segments.";
|
|
14
|
+
}
|
|
15
|
+
const pointIds = new Set();
|
|
16
|
+
for (const point of value.points) {
|
|
17
|
+
if (!point || typeof point !== "object" || Array.isArray(point))
|
|
18
|
+
return "Every sketch sweep point must be an object.";
|
|
19
|
+
const entry = point;
|
|
20
|
+
if (typeof entry.id !== "string" || !entry.id || pointIds.has(entry.id))
|
|
21
|
+
return "Sketch sweep point IDs must be unique non-empty strings.";
|
|
22
|
+
pointIds.add(entry.id);
|
|
23
|
+
if (![entry.x, entry.z, entry.sweepDepth ?? 0].every((coordinate) => typeof coordinate === "number" && Number.isFinite(coordinate) && Math.abs(coordinate) <= 10000)) {
|
|
24
|
+
return "Sketch sweep point coordinates must be finite and within 10000 mm.";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const segmentIds = new Set();
|
|
28
|
+
for (const segment of value.segments) {
|
|
29
|
+
if (!segment || typeof segment !== "object" || Array.isArray(segment))
|
|
30
|
+
return "Every sketch sweep segment must be an object.";
|
|
31
|
+
const entry = segment;
|
|
32
|
+
if (typeof entry.id !== "string" || !entry.id || segmentIds.has(entry.id))
|
|
33
|
+
return "Sketch sweep segment IDs must be unique non-empty strings.";
|
|
34
|
+
if (typeof entry.startId !== "string" || typeof entry.endId !== "string" || !pointIds.has(entry.startId) || !pointIds.has(entry.endId)) {
|
|
35
|
+
return "Sketch sweep segments must reference existing point IDs.";
|
|
36
|
+
}
|
|
37
|
+
segmentIds.add(entry.id);
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/** Build a retained sketch sweep from the public shape request's profile. */
|
|
42
|
+
export async function sketchSweepShapeFromRequest(request) {
|
|
43
|
+
const profile = request.profile;
|
|
44
|
+
return withCadKernel((cad) => {
|
|
45
|
+
const solid = buildCadSketchSweep(cad, profile);
|
|
46
|
+
if (!cad.isValid(solid))
|
|
47
|
+
throw new Error("The sketch sweep produced invalid geometry");
|
|
48
|
+
const mesh = cad.tessellate(solid, { linearDeflection: 0.05, angularDeflection: 0.16 });
|
|
49
|
+
const positions = mesh.positions;
|
|
50
|
+
const normals = mesh.normals;
|
|
51
|
+
const indices = mesh.indices;
|
|
52
|
+
if (positions.length < 9 || indices.length < 3)
|
|
53
|
+
throw new Error("The sketch sweep produced no solid geometry");
|
|
54
|
+
let minX = Infinity, minY = Infinity, minZ = Infinity;
|
|
55
|
+
let maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
|
|
56
|
+
for (let i = 0; i < positions.length; i += 3) {
|
|
57
|
+
minX = Math.min(minX, positions[i]);
|
|
58
|
+
minY = Math.min(minY, positions[i + 1]);
|
|
59
|
+
minZ = Math.min(minZ, positions[i + 2]);
|
|
60
|
+
maxX = Math.max(maxX, positions[i]);
|
|
61
|
+
maxY = Math.max(maxY, positions[i + 1]);
|
|
62
|
+
maxZ = Math.max(maxZ, positions[i + 2]);
|
|
63
|
+
}
|
|
64
|
+
if (![minX, minY, minZ, maxX, maxY, maxZ].every(Number.isFinite))
|
|
65
|
+
throw new Error("The sketch sweep produced invalid bounds");
|
|
66
|
+
const id = typeof request.id === "string" ? request.id : createLocalId("sketch-sweep");
|
|
67
|
+
const centerX = (minX + maxX) / 2;
|
|
68
|
+
const centerZ = (minZ + maxZ) / 2;
|
|
69
|
+
const width = Math.max(0.01, maxX - minX);
|
|
70
|
+
const height = Math.max(0.01, maxY - minY);
|
|
71
|
+
const depth = Math.max(0.01, maxZ - minZ);
|
|
72
|
+
const flattenedPositions = [];
|
|
73
|
+
const flattenedNormals = [];
|
|
74
|
+
for (let i = 0; i < indices.length; i += 1) {
|
|
75
|
+
const vertex = indices[i] * 3;
|
|
76
|
+
flattenedPositions.push(positions[vertex] - centerX, positions[vertex + 1] - minY, positions[vertex + 2] - centerZ);
|
|
77
|
+
if (normals.length >= vertex + 3)
|
|
78
|
+
flattenedNormals.push(normals[vertex], normals[vertex + 1], normals[vertex + 2]);
|
|
79
|
+
}
|
|
80
|
+
return canonicalizeShape({
|
|
81
|
+
id,
|
|
82
|
+
name: typeof request.name === "string" && request.name.trim() ? request.name.trim() : "Sketch sweep",
|
|
83
|
+
kind: "mesh",
|
|
84
|
+
color: typeof request.color === "string" ? request.color : "#d41721",
|
|
85
|
+
x: cleanNearZero(centerX, 0.0005) + (typeof request.x === "number" ? request.x : 0),
|
|
86
|
+
z: cleanNearZero(centerZ, 0.0005) + (typeof request.z === "number" ? request.z : 0),
|
|
87
|
+
elevation: cleanNearZero(minY, 0.0005) + (typeof request.elevation === "number" ? request.elevation : 0),
|
|
88
|
+
width, depth, height, size: Math.max(width, depth),
|
|
89
|
+
rotation: typeof request.rotation === "number" && Number.isFinite(request.rotation) ? request.rotation : 0,
|
|
90
|
+
rotationX: typeof request.rotationX === "number" && Number.isFinite(request.rotationX) ? request.rotationX : 0,
|
|
91
|
+
rotationZ: typeof request.rotationZ === "number" && Number.isFinite(request.rotationZ) ? request.rotationZ : 0,
|
|
92
|
+
hole: request.hole === true,
|
|
93
|
+
sketchProfile: structuredClone(profile),
|
|
94
|
+
sketchOperation: "sweep",
|
|
95
|
+
sketchSourceId: `sketch/${id}`,
|
|
96
|
+
importedMesh: {
|
|
97
|
+
positions: flattenedPositions,
|
|
98
|
+
normals: flattenedNormals.length === flattenedPositions.length ? flattenedNormals : undefined,
|
|
99
|
+
baseWidth: maxX - minX, baseDepth: maxZ - minZ, baseHeight: maxY - minY,
|
|
100
|
+
triangleCount: Math.floor(indices.length / 3), sourceFormat: "json",
|
|
101
|
+
},
|
|
102
|
+
cadBrep: cad.toBREP(solid),
|
|
103
|
+
cadBrepFrame: { x: centerX, z: centerZ, elevation: minY, width, depth, height },
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=sketchSweepRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sketchSweepRequest.js","sourceRoot":"","sources":["../src/sketchSweepRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAExE,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,2CAA2C,CAAC;IAC1H,MAAM,KAAK,GAAG,OAAkC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QAC1F,OAAO,gEAAgE,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACjG,OAAO,mEAAmE,CAAC;IAC7E,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,6CAA6C,CAAC;QACtH,MAAM,KAAK,GAAG,KAAgC,CAAC;QAC/C,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,0DAA0D,CAAC;QAC3I,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrK,OAAO,oEAAoE,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,+CAA+C,CAAC;QAC9H,MAAM,KAAK,GAAG,OAAkC,CAAC;QACjD,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,4DAA4D,CAAC;QAC/I,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACvI,OAAO,0DAA0D,CAAC;QACpE,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAAgC;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAwB,CAAC;IACjD,OAAO,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAE/G,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC;QACtD,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YACzH,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;QAC3H,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9H,MAAM,EAAE,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvF,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,kBAAkB,GAAa,EAAE,CAAC;QACxC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC;YAC/B,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAE,GAAG,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,OAAO,CAAC,CAAC;YACvH,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC;gBAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;QACxH,CAAC;QACD,OAAO,iBAAiB,CAAC;YACvB,EAAE;YACF,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc;YACpG,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACpE,CAAC,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,CAAC,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACxG,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;YAClD,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1G,SAAS,EAAE,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9G,SAAS,EAAE,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9G,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI;YAC3B,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC;YACvC,eAAe,EAAE,OAAO;YACxB,cAAc,EAAE,UAAU,EAAE,EAAE;YAC9B,YAAY,EAAE;gBACZ,SAAS,EAAE,kBAAkB;gBAC7B,OAAO,EAAE,gBAAgB,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;gBAC7F,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI;gBACvE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM;aACpE;YACD,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1B,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;SAChF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/skfProject.d.ts
CHANGED
package/dist/skfProject.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skfProject.d.ts","sourceRoot":"","sources":["../src/skfProject.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"skfProject.d.ts","sourceRoot":"","sources":["../src/skfProject.ts"],"names":[],"mappings":"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"}
|
package/dist/skfProject.js
CHANGED
|
@@ -380,6 +380,16 @@ async function serializeShapeNode(shape, nodeId, nodes, builder, sourceAssetsByA
|
|
|
380
380
|
...(sketchProfile.constraints?.length ? { constraints: sketchProfile.constraints } : {}),
|
|
381
381
|
...(images.length ? { images } : {}),
|
|
382
382
|
};
|
|
383
|
+
// Older saved shapes have no explicit source ID. Give them a stable
|
|
384
|
+
// identity derived from the output object when they are next packaged.
|
|
385
|
+
const hasSketchExtrusionSource = shape.sketchOperation === "extrude"
|
|
386
|
+
|| shape.sketchOperation === "revolve"
|
|
387
|
+
|| shape.sketchOperation === "sweep"
|
|
388
|
+
|| (shape.sketchOperation === undefined && shape.kind !== "sketch");
|
|
389
|
+
if (shape.sketchSourceId || hasSketchExtrusionSource) {
|
|
390
|
+
definition.sketchSourceId = shape.sketchSourceId ?? `sketch/${safeNodeToken(shape.id)}`;
|
|
391
|
+
definition.sketchSourceNodeId = `${nodeId}/source-sketch`;
|
|
392
|
+
}
|
|
383
393
|
}
|
|
384
394
|
let importedReference;
|
|
385
395
|
if (importedMesh) {
|
|
@@ -412,6 +422,26 @@ async function serializeShapeNode(shape, nodeId, nodes, builder, sourceAssetsByA
|
|
|
412
422
|
if (cadBrep)
|
|
413
423
|
cadBrepAssetId = (await builder.addText("brep", cadBrep, "application/vnd.sketchforge.brep")).id;
|
|
414
424
|
const cadDisplayEdgesAssetId = cadDisplayEdges ? (await builder.addDisplayEdges(cadDisplayEdges)).id : undefined;
|
|
425
|
+
const sourceSketchId = typeof definition.sketchSourceId === "string" ? definition.sketchSourceId : undefined;
|
|
426
|
+
if (sourceSketchId && definition.sketchSourceNodeId && definition.sketchProfile) {
|
|
427
|
+
nodes.push({
|
|
428
|
+
nodeId: `${nodeId}/source-sketch`,
|
|
429
|
+
objectId: sourceSketchId,
|
|
430
|
+
objectType: "sketch",
|
|
431
|
+
workplaneId: "base",
|
|
432
|
+
definition: {
|
|
433
|
+
...definition,
|
|
434
|
+
id: sourceSketchId,
|
|
435
|
+
name: `${shape.name} sketch`,
|
|
436
|
+
kind: "sketch",
|
|
437
|
+
sketchOperation: undefined,
|
|
438
|
+
sketchRevolve: undefined,
|
|
439
|
+
sketchSourceId: undefined,
|
|
440
|
+
sketchSourceNodeId: undefined,
|
|
441
|
+
sketchSourceOfObjectId: shape.id,
|
|
442
|
+
},
|
|
443
|
+
});
|
|
444
|
+
}
|
|
415
445
|
const groupedShapeNodeIds = [];
|
|
416
446
|
for (const child of groupedShapes ?? []) {
|
|
417
447
|
const childNodeId = `${nodeId}/group/${safeNodeToken(child.id)}`;
|
|
@@ -488,24 +518,35 @@ function activeProjectIndexes(state) {
|
|
|
488
518
|
return;
|
|
489
519
|
(node.groupedShapeNodeIds ?? []).forEach(visit);
|
|
490
520
|
let previous;
|
|
491
|
-
if (node.definition.sketchProfile) {
|
|
521
|
+
if (node.definition.sketchProfile && typeof node.definition.sketchSourceOfObjectId !== "string") {
|
|
492
522
|
const operation = node.definition.sketchOperation ?? "extrude";
|
|
523
|
+
const sourceSketchId = typeof node.definition.sketchSourceId === "string"
|
|
524
|
+
? node.definition.sketchSourceId
|
|
525
|
+
: `sketch/${safeNodeToken(node.objectId)}`;
|
|
493
526
|
const featureType = operation === "revolve" ? "sketch-revolve" : operation === "sweep" ? "sketch-sweep" : "sketch-extrusion";
|
|
494
527
|
const featureId = `feature/${safeNodeToken(node.nodeId)}/${featureType}`;
|
|
528
|
+
const hasSourceDependency = node.definition.sketchOperation === "extrude"
|
|
529
|
+
|| node.definition.sketchOperation === "revolve"
|
|
530
|
+
|| node.definition.sketchOperation === "sweep"
|
|
531
|
+
|| (node.definition.sketchOperation === undefined && node.definition.kind !== "sketch");
|
|
495
532
|
features.push({
|
|
496
533
|
id: featureId,
|
|
497
534
|
type: featureType,
|
|
498
535
|
outputObjectId: node.objectId,
|
|
499
|
-
inputObjectIds: [],
|
|
536
|
+
inputObjectIds: hasSourceDependency ? [sourceSketchId] : [],
|
|
500
537
|
dependsOnFeatureIds: [],
|
|
501
538
|
parameters: operation === "revolve"
|
|
502
539
|
? { ...node.definition.sketchRevolve, axis: "vertical-sketch-axis", mode: "create" }
|
|
503
540
|
: operation === "sweep" ? { mode: "create" } : { depth: node.definition.height, direction: "positive-y", mode: "create" },
|
|
504
541
|
});
|
|
505
542
|
sketches.push({
|
|
506
|
-
id: `sketch/${safeNodeToken(node.objectId)}`,
|
|
543
|
+
id: typeof node.definition.sketchSourceId === "string" ? sourceSketchId : `sketch/${safeNodeToken(node.objectId)}`,
|
|
507
544
|
nodeId: node.nodeId,
|
|
508
545
|
objectId: node.objectId,
|
|
546
|
+
...(typeof node.definition.sketchSourceNodeId === "string" ? {
|
|
547
|
+
sourceNodeId: node.definition.sketchSourceNodeId,
|
|
548
|
+
sourceObjectId: sourceSketchId,
|
|
549
|
+
} : {}),
|
|
509
550
|
operation,
|
|
510
551
|
extrusionDepth: operation === "extrude" ? Number(node.definition.height) : 0,
|
|
511
552
|
...(operation === "revolve" && node.definition.sketchRevolve ? { revolve: node.definition.sketchRevolve } : {}),
|
|
@@ -895,6 +936,12 @@ function validateShapeDefinition(definition, label) {
|
|
|
895
936
|
}
|
|
896
937
|
if (definition.sketchProfile)
|
|
897
938
|
validateSketchProfile(definition.sketchProfile, `${label}.sketchProfile`);
|
|
939
|
+
if (definition.sketchSourceId !== undefined)
|
|
940
|
+
stringValue(definition.sketchSourceId, `${label}.sketchSourceId`);
|
|
941
|
+
if (definition.sketchSourceNodeId !== undefined)
|
|
942
|
+
stringValue(definition.sketchSourceNodeId, `${label}.sketchSourceNodeId`);
|
|
943
|
+
if (definition.sketchSourceOfObjectId !== undefined)
|
|
944
|
+
stringValue(definition.sketchSourceOfObjectId, `${label}.sketchSourceOfObjectId`);
|
|
898
945
|
if (definition.sketchOperation !== undefined && definition.sketchOperation !== "extrude" && definition.sketchOperation !== "revolve" && definition.sketchOperation !== "sweep") {
|
|
899
946
|
throw new LocalizedError("errors.skf.fieldInvalid", { label: `${label}.sketchOperation` });
|
|
900
947
|
}
|
|
@@ -1126,6 +1173,32 @@ async function validateDocumentAndAssets(raw, files) {
|
|
|
1126
1173
|
}
|
|
1127
1174
|
if (!stateById.has(document.sceneStateId))
|
|
1128
1175
|
throw new LocalizedError("errors.skf.sceneStateMissing");
|
|
1176
|
+
// Source sketches are persisted graph nodes, but are not rendered scene
|
|
1177
|
+
// shapes. Include their IDs when validating feature input references.
|
|
1178
|
+
if (Array.isArray(document.sketches)) {
|
|
1179
|
+
for (const [index, sketch] of document.sketches.entries()) {
|
|
1180
|
+
const record = objectRecord(sketch, `sketches[${index}]`);
|
|
1181
|
+
activeObjectIds.add(stringValue(record.id, `sketches[${index}].id`));
|
|
1182
|
+
if (record.sourceNodeId === undefined && record.sourceObjectId === undefined)
|
|
1183
|
+
continue;
|
|
1184
|
+
const sourceObjectId = stringValue(record.sourceObjectId, `sketches[${index}].sourceObjectId`);
|
|
1185
|
+
const sourceNodeId = stringValue(record.sourceNodeId, `sketches[${index}].sourceNodeId`);
|
|
1186
|
+
const sourceNode = stateById.get(document.sceneStateId)?.nodes.find((node) => node.nodeId === sourceNodeId);
|
|
1187
|
+
const outputNode = stateById.get(document.sceneStateId)?.nodes.find((node) => node.nodeId === record.nodeId);
|
|
1188
|
+
const sourceDefinition = sourceNode?.definition;
|
|
1189
|
+
const outputDefinition = outputNode?.definition;
|
|
1190
|
+
if (record.id !== sourceObjectId
|
|
1191
|
+
|| sourceNode?.objectId !== sourceObjectId
|
|
1192
|
+
|| sourceDefinition?.sketchSourceOfObjectId !== record.objectId
|
|
1193
|
+
|| outputDefinition?.sketchSourceId !== sourceObjectId
|
|
1194
|
+
|| outputDefinition?.sketchSourceNodeId !== sourceNodeId) {
|
|
1195
|
+
throw new LocalizedError("errors.skf.featureMissingInput", {
|
|
1196
|
+
id: `sketch/${index}`,
|
|
1197
|
+
objectId: sourceObjectId,
|
|
1198
|
+
});
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1129
1202
|
if (!Number.isInteger(document.history.index) || document.history.index < 0 || document.history.index >= document.history.entries.length) {
|
|
1130
1203
|
throw new LocalizedError("errors.skf.historyIndexInvalid");
|
|
1131
1204
|
}
|