@constructorfleet/sketchforge-engine 1.7.0 → 1.9.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.
@@ -0,0 +1,104 @@
1
+ /**
2
+ * A 2D drawing of a project, with no kernel in it.
3
+ *
4
+ * The kernel's hidden-line removal (`projectEdges`) answers which edges of a
5
+ * solid a camera can see and which it cannot; everything after that is
6
+ * arithmetic and SVG text, and lives here so it can be tested against drawn
7
+ * polylines rather than against OCCT. `serverCadProjection.ts` is the half
8
+ * that drives the kernel.
9
+ *
10
+ * The kernel ships its own `toSVG` and `toMultiviewSVG` for exactly this, and
11
+ * the layout below is theirs: a grid of equal panels sharing one scale, a
12
+ * label and an XYZ gnomon per panel, the part's size in a footer. They are not
13
+ * used because the build this project pins (occt-wasm 3.6.1) reads the
14
+ * projected points in the wrong frame -- the HLR result comes back in the
15
+ * camera's own 2D coordinates, and that renderer dots them with world axes --
16
+ * so the front and right views collapse to a line and the top view is a mirror
17
+ * image. Upstream corrected it in a later major version; when the kernel is
18
+ * upgraded, this file reduces to naming the views.
19
+ */
20
+ import type { Vec3 } from "occt-wasm";
21
+ /** The viewpoints the drawing can show, named as the kernel names them. */
22
+ export declare const PROJECTION_VIEWS: readonly ["front", "back", "top", "bottom", "left", "right", "iso"];
23
+ export type ProjectionView = (typeof PROJECTION_VIEWS)[number];
24
+ /** The default grid: three orthographic views and an isometric. */
25
+ export declare const MULTIVIEW_PANELS: readonly ProjectionView[];
26
+ /** What a drawing shows: one named view, or the grid. */
27
+ export declare const PROJECTION_LAYOUTS: readonly ["multiview", "front", "back", "top", "bottom", "left", "right", "iso"];
28
+ export type ProjectionLayout = (typeof PROJECTION_LAYOUTS)[number];
29
+ /** The layout a request names; the grid when it names none; null when it names nonsense. */
30
+ export declare function parseProjectionLayout(value: unknown): ProjectionLayout | null;
31
+ /**
32
+ * The layout behind a capture `face`.
33
+ *
34
+ * `home` and `current` are what the editor's viewport words mean -- a
35
+ * three-quarter look at everything -- and the grid is the headless answer to
36
+ * that: it shows the isometric and the three faces it is made of. The six
37
+ * face names are the kernel's own.
38
+ */
39
+ export declare function projectionLayoutForCaptureFace(face: unknown): ProjectionLayout;
40
+ /**
41
+ * The editor's Y-up frame turned into the Z-up frame a drawing reads in, as
42
+ * OCCT's row-major 3x4 affine rows: `[x, y, z]` becomes `[x, -z, y]`.
43
+ *
44
+ * It is the same turn every file export makes (the STL and 3MF writers apply it
45
+ * per vertex, STEP per solid), so a drawing's "top" is the view down the
46
+ * editor's elevation axis and the footer's X×Y×Z reads as the other exports'
47
+ * coordinates do.
48
+ */
49
+ export declare const EDITOR_TO_DRAWING_TRANSFORM: readonly number[];
50
+ /**
51
+ * Where a view's camera stands, in the drawing frame.
52
+ *
53
+ * `toward` points from the part to the camera and `right` is the screen's
54
+ * horizontal; screen-up is their cross product, which is also the frame the
55
+ * kernel hands projected points back in (see `viewUp`). Every orthographic
56
+ * view keeps +Z upward. The isometric stands where the editor's home camera
57
+ * stands -- in front, to the right, and above.
58
+ */
59
+ export type ViewBasis = {
60
+ toward: Vec3;
61
+ right: Vec3;
62
+ };
63
+ export declare function viewBasis(view: ProjectionView): ViewBasis;
64
+ /** Screen-up for a basis: `toward × right`, the Y axis of OCCT's `gp_Ax2(origin, toward, right)`. */
65
+ export declare function viewUp({ toward, right }: ViewBasis): Vec3;
66
+ /** A projected edge as `[u0, v0, u1, v1, ...]` in model units, v upward. */
67
+ export type DrawingPolyline = number[];
68
+ /** One view's worth of projected edges. */
69
+ export type ViewDrawing = {
70
+ view: ProjectionView;
71
+ visible: DrawingPolyline[];
72
+ hidden: DrawingPolyline[];
73
+ };
74
+ export type DrawingOptions = {
75
+ /** Width and height of each panel in px. Each panel is square. */
76
+ panelSize?: number;
77
+ /** Space between the part and the panel edge, in px. */
78
+ padding?: number;
79
+ /** Draw occluded edges dashed. On by default; a laser-cut template wants it off. */
80
+ showHidden?: boolean;
81
+ strokeWidth?: number;
82
+ background?: string;
83
+ visibleColor?: string;
84
+ hiddenColor?: string;
85
+ };
86
+ export type Drawing = {
87
+ layout: ProjectionLayout;
88
+ panels: ViewDrawing[];
89
+ /** The part's overall extent along X, Y and Z of the drawing frame, for the footer. */
90
+ size?: {
91
+ x: number;
92
+ y: number;
93
+ z: number;
94
+ };
95
+ };
96
+ /**
97
+ * The drawing as a standalone SVG document.
98
+ *
99
+ * Every panel shares one scale, so the part is the same size in each and the
100
+ * views read against each other. A single named view is one panel with no
101
+ * label and no footer.
102
+ */
103
+ export declare function renderDrawingSvg(drawing: Drawing, options?: DrawingOptions): string;
104
+ //# sourceMappingURL=cadProjection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cadProjection.d.ts","sourceRoot":"","sources":["../src/cadProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,qEAAsE,CAAC;AACpG,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAAqC,CAAC;AAE5F,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,kFAA8C,CAAC;AAC9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAG7E;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAG9E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,CAAC;AAKtD,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAUzD;AAED,qGAAqG;AACrG,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,IAAI,CAOzD;AAaD,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC;AAEvC,2CAA2C;AAC3C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,uFAAuF;IACvF,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C,CAAC;AAwGF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,CAiCvF"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * A 2D drawing of a project, with no kernel in it.
3
+ *
4
+ * The kernel's hidden-line removal (`projectEdges`) answers which edges of a
5
+ * solid a camera can see and which it cannot; everything after that is
6
+ * arithmetic and SVG text, and lives here so it can be tested against drawn
7
+ * polylines rather than against OCCT. `serverCadProjection.ts` is the half
8
+ * that drives the kernel.
9
+ *
10
+ * The kernel ships its own `toSVG` and `toMultiviewSVG` for exactly this, and
11
+ * the layout below is theirs: a grid of equal panels sharing one scale, a
12
+ * label and an XYZ gnomon per panel, the part's size in a footer. They are not
13
+ * used because the build this project pins (occt-wasm 3.6.1) reads the
14
+ * projected points in the wrong frame -- the HLR result comes back in the
15
+ * camera's own 2D coordinates, and that renderer dots them with world axes --
16
+ * so the front and right views collapse to a line and the top view is a mirror
17
+ * image. Upstream corrected it in a later major version; when the kernel is
18
+ * upgraded, this file reduces to naming the views.
19
+ */
20
+ /** The viewpoints the drawing can show, named as the kernel names them. */
21
+ export const PROJECTION_VIEWS = ["front", "back", "top", "bottom", "left", "right", "iso"];
22
+ /** The default grid: three orthographic views and an isometric. */
23
+ export const MULTIVIEW_PANELS = ["front", "top", "right", "iso"];
24
+ /** What a drawing shows: one named view, or the grid. */
25
+ export const PROJECTION_LAYOUTS = ["multiview", ...PROJECTION_VIEWS];
26
+ /** The layout a request names; the grid when it names none; null when it names nonsense. */
27
+ export function parseProjectionLayout(value) {
28
+ if (value === undefined)
29
+ return "multiview";
30
+ return PROJECTION_LAYOUTS.find((layout) => layout === value) ?? null;
31
+ }
32
+ /**
33
+ * The layout behind a capture `face`.
34
+ *
35
+ * `home` and `current` are what the editor's viewport words mean -- a
36
+ * three-quarter look at everything -- and the grid is the headless answer to
37
+ * that: it shows the isometric and the three faces it is made of. The six
38
+ * face names are the kernel's own.
39
+ */
40
+ export function projectionLayoutForCaptureFace(face) {
41
+ const view = PROJECTION_VIEWS.find((candidate) => candidate === face && candidate !== "iso");
42
+ return view ?? "multiview";
43
+ }
44
+ /**
45
+ * The editor's Y-up frame turned into the Z-up frame a drawing reads in, as
46
+ * OCCT's row-major 3x4 affine rows: `[x, y, z]` becomes `[x, -z, y]`.
47
+ *
48
+ * It is the same turn every file export makes (the STL and 3MF writers apply it
49
+ * per vertex, STEP per solid), so a drawing's "top" is the view down the
50
+ * editor's elevation axis and the footer's X×Y×Z reads as the other exports'
51
+ * coordinates do.
52
+ */
53
+ export const EDITOR_TO_DRAWING_TRANSFORM = [
54
+ 1, 0, 0, 0,
55
+ 0, 0, -1, 0,
56
+ 0, 1, 0, 0,
57
+ ];
58
+ const ISO_TOWARD = unit({ x: 1, y: -1, z: 1 });
59
+ const ISO_RIGHT = unit({ x: 1, y: 1, z: 0 });
60
+ export function viewBasis(view) {
61
+ switch (view) {
62
+ case "front": return { toward: { x: 0, y: -1, z: 0 }, right: { x: 1, y: 0, z: 0 } };
63
+ case "back": return { toward: { x: 0, y: 1, z: 0 }, right: { x: -1, y: 0, z: 0 } };
64
+ case "top": return { toward: { x: 0, y: 0, z: 1 }, right: { x: 1, y: 0, z: 0 } };
65
+ case "bottom": return { toward: { x: 0, y: 0, z: -1 }, right: { x: 1, y: 0, z: 0 } };
66
+ case "right": return { toward: { x: 1, y: 0, z: 0 }, right: { x: 0, y: 1, z: 0 } };
67
+ case "left": return { toward: { x: -1, y: 0, z: 0 }, right: { x: 0, y: -1, z: 0 } };
68
+ case "iso": return { toward: ISO_TOWARD, right: ISO_RIGHT };
69
+ }
70
+ }
71
+ /** Screen-up for a basis: `toward × right`, the Y axis of OCCT's `gp_Ax2(origin, toward, right)`. */
72
+ export function viewUp({ toward, right }) {
73
+ // `0 +` turns a -0 from the arithmetic into the 0 it is.
74
+ return {
75
+ x: 0 + (toward.y * right.z - toward.z * right.y),
76
+ y: 0 + (toward.z * right.x - toward.x * right.z),
77
+ z: 0 + (toward.x * right.y - toward.y * right.x),
78
+ };
79
+ }
80
+ function unit(vector) {
81
+ const length = Math.hypot(vector.x, vector.y, vector.z) || 1;
82
+ return { x: vector.x / length, y: vector.y / length, z: vector.z / length };
83
+ }
84
+ function dot(a, b) {
85
+ return a.x * b.x + a.y * b.y + a.z * b.z;
86
+ }
87
+ const VIEW_LABEL = {
88
+ front: "Front", back: "Back", top: "Top", bottom: "Bottom", left: "Left", right: "Right", iso: "Iso",
89
+ };
90
+ const GRID_COLUMNS = 2;
91
+ const FOOTER_HEIGHT = 22;
92
+ function resolved(options) {
93
+ return {
94
+ panelSize: options.panelSize ?? 480,
95
+ padding: options.padding ?? 14,
96
+ showHidden: options.showHidden ?? true,
97
+ strokeWidth: options.strokeWidth ?? 1,
98
+ background: options.background ?? "#ffffff",
99
+ visibleColor: options.visibleColor ?? "#111111",
100
+ hiddenColor: options.hiddenColor ?? "#9aa0a6",
101
+ };
102
+ }
103
+ function round(value) {
104
+ return Math.round(value * 100) / 100;
105
+ }
106
+ function escapeXml(value) {
107
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
108
+ }
109
+ function extentOf(panel) {
110
+ let minU = Infinity, maxU = -Infinity, minV = Infinity, maxV = -Infinity;
111
+ for (const line of [...panel.visible, ...panel.hidden]) {
112
+ for (let index = 0; index + 1 < line.length; index += 2) {
113
+ minU = Math.min(minU, line[index]);
114
+ maxU = Math.max(maxU, line[index]);
115
+ minV = Math.min(minV, line[index + 1]);
116
+ maxV = Math.max(maxV, line[index + 1]);
117
+ }
118
+ }
119
+ return Number.isFinite(minU) ? { minU, maxU, minV, maxV } : { minU: 0, maxU: 0, minV: 0, maxV: 0 };
120
+ }
121
+ /** Model units to panel px, centred on the view's own midpoint; v up becomes y down. */
122
+ function toPixels(extent, scale, panelSize) {
123
+ const offsetX = panelSize / 2 - ((extent.minU + extent.maxU) / 2) * scale;
124
+ const offsetY = panelSize / 2 + ((extent.minV + extent.maxV) / 2) * scale;
125
+ return ([u, v]) => [round(u * scale + offsetX), round(-v * scale + offsetY)];
126
+ }
127
+ function pathData(lines, pixel) {
128
+ let d = "";
129
+ for (const line of lines) {
130
+ for (let index = 0; index + 1 < line.length; index += 2) {
131
+ const [x, y] = pixel([line[index], line[index + 1]]);
132
+ d += `${index === 0 ? "M" : "L"}${x} ${y}`;
133
+ }
134
+ }
135
+ return d;
136
+ }
137
+ /** The world axes as the view sees them, drawn in the panel's lower-left corner. */
138
+ function gnomon(view, panelSize, padding) {
139
+ const basis = viewBasis(view);
140
+ const up = viewUp(basis);
141
+ const length = 18;
142
+ const originX = padding + length + 4;
143
+ const originY = panelSize - padding - length - 4;
144
+ const axes = [
145
+ [{ x: 1, y: 0, z: 0 }, "#d33", "X"],
146
+ [{ x: 0, y: 1, z: 0 }, "#3a3", "Y"],
147
+ [{ x: 0, y: 0, z: 1 }, "#36c", "Z"],
148
+ ];
149
+ let svg = "";
150
+ for (const [axis, color, name] of axes) {
151
+ const dx = dot(axis, basis.right);
152
+ const dy = -dot(axis, up);
153
+ if (Math.hypot(dx, dy) < 0.05)
154
+ continue; // points into the screen
155
+ const endX = round(originX + dx * length);
156
+ const endY = round(originY + dy * length);
157
+ svg += `<line x1="${originX}" y1="${originY}" x2="${endX}" y2="${endY}" stroke="${color}" stroke-width="1.5"/>`;
158
+ svg += `<text x="${endX}" y="${endY}" font-size="9" fill="${color}" text-anchor="middle" dominant-baseline="middle">${name}</text>`;
159
+ }
160
+ return svg;
161
+ }
162
+ function panelSvg(panel, scale, options, label) {
163
+ const { panelSize, padding } = options;
164
+ const pixel = toPixels(extentOf(panel), scale, panelSize);
165
+ let body = `<rect x="0.5" y="0.5" width="${panelSize - 1}" height="${panelSize - 1}" fill="${options.background}" stroke="#e0e0e0"/>`;
166
+ if (options.showHidden) {
167
+ const d = pathData(panel.hidden, pixel);
168
+ if (d)
169
+ body += `<path d="${d}" fill="none" stroke="${options.hiddenColor}" stroke-width="${options.strokeWidth}" stroke-dasharray="3 2"/>`;
170
+ }
171
+ const d = pathData(panel.visible, pixel);
172
+ if (d)
173
+ body += `<path d="${d}" fill="none" stroke="${options.visibleColor}" stroke-width="${options.strokeWidth}" stroke-linejoin="round" stroke-linecap="round"/>`;
174
+ body += gnomon(panel.view, panelSize, padding);
175
+ if (label !== null) {
176
+ body += `<text x="${padding}" y="${padding + 4}" font-size="11" fill="#333" font-family="sans-serif">${escapeXml(label)}</text>`;
177
+ }
178
+ return body;
179
+ }
180
+ /**
181
+ * The drawing as a standalone SVG document.
182
+ *
183
+ * Every panel shares one scale, so the part is the same size in each and the
184
+ * views read against each other. A single named view is one panel with no
185
+ * label and no footer.
186
+ */
187
+ export function renderDrawingSvg(drawing, options = {}) {
188
+ const o = resolved(options);
189
+ const grid = drawing.layout === "multiview";
190
+ const inner = o.panelSize - 2 * o.padding;
191
+ let range = 1e-9;
192
+ for (const panel of drawing.panels) {
193
+ const extent = extentOf(panel);
194
+ range = Math.max(range, extent.maxU - extent.minU, extent.maxV - extent.minV);
195
+ }
196
+ const scale = inner / range;
197
+ const columns = grid ? GRID_COLUMNS : 1;
198
+ const rows = Math.ceil(drawing.panels.length / columns);
199
+ const footer = grid && drawing.size ? FOOTER_HEIGHT : 0;
200
+ const width = columns * o.panelSize;
201
+ const height = rows * o.panelSize + footer;
202
+ let panels = "";
203
+ drawing.panels.forEach((panel, index) => {
204
+ const x = (index % columns) * o.panelSize;
205
+ const y = Math.floor(index / columns) * o.panelSize;
206
+ const body = panelSvg(panel, scale, o, grid ? VIEW_LABEL[panel.view] : null);
207
+ panels += grid ? `<g transform="translate(${x} ${y})">${body}</g>` : body;
208
+ });
209
+ let footerSvg = "";
210
+ if (footer && drawing.size) {
211
+ const text = `${round(drawing.size.x)} × ${round(drawing.size.y)} × ${round(drawing.size.z)} (X×Y×Z)`;
212
+ footerSvg = `<text x="${width / 2}" y="${rows * o.panelSize + 15}" font-size="11" fill="#444" font-family="sans-serif" text-anchor="middle">${escapeXml(text)}</text>`;
213
+ }
214
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">`
215
+ + `<rect width="${width}" height="${height}" fill="${o.background}"/>${panels}${footerSvg}</svg>`;
216
+ }
217
+ //# sourceMappingURL=cadProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cadProjection.js","sourceRoot":"","sources":["../src/cadProjection.ts"],"names":[],"mappings":"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"}
package/dist/engine.d.ts CHANGED
@@ -17,6 +17,7 @@
17
17
  import { type ServerCadEdge, type ServerCadTreatment } from "./serverCadOperations.js";
18
18
  import { type ServerCadFace, type ServerCadShellRequest } from "./serverCadShell.js";
19
19
  import { type MeasurementEndRef, type ServerCadMeasurement, type ServerCadMeasurementPair } from "./serverCadMeasure.js";
20
+ import { type ServerCadShapeProperties } from "./serverCadProperties.js";
20
21
  import { type AlignAxis, type AlignTarget } from "./alignShapes.js";
21
22
  import { type DistributeSpacing } from "./distributeShapes.js";
22
23
  import { type ShapeRequest } from "./shapeRequests.js";
@@ -268,6 +269,8 @@ export type Engine = {
268
269
  shell(projectId: string, shapeId: string, request: ServerCadShellRequest): Promise<EngineResult<ShapeWritten>>;
269
270
  /** Every edge and face of a shape, measured from its exact geometry. */
270
271
  measurements(projectId: string, shapeId: string): Promise<EngineResult<ServerCadMeasurement[]>>;
272
+ /** Volume, area, center of mass, bounds and provenance for one placed shape. */
273
+ properties(projectId: string, shapeId: string): Promise<EngineResult<ServerCadShapeProperties>>;
271
274
  /**
272
275
  * The distance between two entities, and the angle between them if both are flat faces.
273
276
  *
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/engine.js CHANGED
@@ -17,6 +17,7 @@
17
17
  import { applyEdgeTreatment, shapeEdges, shapeWithCadResult, ServerCadError, } from "./serverCadOperations.js";
18
18
  import { applyShell, shapeFaces, } from "./serverCadShell.js";
19
19
  import { measureBetween as measureBetweenEntities, shapeMeasurements, } from "./serverCadMeasure.js";
20
+ import { shapeProperties } from "./serverCadProperties.js";
20
21
  import { alignShifts, effectiveAlignAnchorId, ALIGN_EPSILON, } from "./alignShapes.js";
21
22
  import { distributeShifts, widestDistributeAxis } from "./distributeShapes.js";
22
23
  import { importableMeshFormat, importedMeshFromFile, IMPORTABLE_MESH_FORMATS, } from "./meshImport.js";
@@ -545,6 +546,17 @@ export function createEngine(store) {
545
546
  return failed(cadFailure(error));
546
547
  }
547
548
  }),
549
+ properties: (projectId, shapeId) => reading(projectId, async (document) => {
550
+ const found = oneShape(document, shapeId);
551
+ if (!found.ok)
552
+ return found;
553
+ try {
554
+ return ok(await shapeProperties(found.value));
555
+ }
556
+ catch (error) {
557
+ return failed(cadFailure(error));
558
+ }
559
+ }),
548
560
  measureBetween: (projectId, from, to) => reading(projectId, async (document) => {
549
561
  // Both ends resolve before either is measured, so a request naming one
550
562
  // shape that is not in the project is refused by id rather than half done.
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /** Public API for SketchForge's project, geometry, import, export and CAD operations. */
2
2
  export { directoryProjectStore, type ProjectDocument, type ProjectMetadata, type ProjectStore } from "./projectStore.js";
3
3
  export { createEngine, type AlignOutcome, type AlignRequest, type CutRequest, type DistributeOutcome, type DistributeRequest, type Engine, type EngineFailure, type EngineResult, type MeshImportRequest, type PatternKind, type PatternRequest, type ProjectRead, type ShapeRemoved, type ShapesArranged, type ShapeWritten, type ShapesWritten, } from "./engine.js";
4
+ export type { ServerCadShapeProperties, ShapeGeometryProvenance } from "./serverCadProperties.js";
4
5
  export { alignCoordinate, alignShifts, effectiveAlignAnchorId, ALIGN_EPSILON, type AlignAxis, type AlignEntry, type AlignShift, type AlignTarget, } from "./alignShapes.js";
5
6
  export { distributeShifts, widestDistributeAxis, type DistributeEntry, type DistributeShift, type DistributeSpacing, } from "./distributeShapes.js";
6
7
  export { circularPatternPlacements, linearPatternPlacements, suggestedLinearStep, MAX_PATTERN_COUNT, MIN_PATTERN_COUNT, type CircularPatternRequest, type LinearPatternRequest, type PatternPlacement, } from "./patternShapes.js";
@@ -17,6 +18,8 @@ export { FACE_DIRECTION_NAMES, type ServerCadFace, type ServerCadShellRequest }
17
18
  export { type MeasurementEndRef, type MeasurementEntityKind, type ServerCadMeasurement, type ServerCadMeasurementPair, } from "./serverCadMeasure.js";
18
19
  export { type AngleUnavailableCode, type MeasurementUnavailableCode, type RadiusUnavailableCode, } from "./cadMeasurements.js";
19
20
  export { exportShapesToStep, type StepExportResult } from "./stepExport.js";
21
+ export { exportProjectScene, PROJECT_EXPORT_FORMATS, type ProjectExportArtifact, type ProjectExportFormat, type ProjectExportOptions } from "./sceneExport.js";
22
+ export { parseProjectionLayout, projectionLayoutForCaptureFace, PROJECTION_LAYOUTS, PROJECTION_VIEWS, type ProjectionLayout, type ProjectionView, } from "./cadProjection.js";
20
23
  export { meshProjectShapes } from "./projectMeshes.js";
21
24
  export { analyzeMeshTopology, type TriangleFace } from "./meshValidation.js";
22
25
  export { mirrorShapes } from "./serverShapeGroups.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -34,6 +34,8 @@ export { FACE_DIRECTION_NAMES } from "./serverCadShell.js";
34
34
  export {} from "./serverCadMeasure.js";
35
35
  export {} from "./cadMeasurements.js";
36
36
  export { exportShapesToStep } from "./stepExport.js";
37
+ export { exportProjectScene, PROJECT_EXPORT_FORMATS } from "./sceneExport.js";
38
+ export { parseProjectionLayout, projectionLayoutForCaptureFace, PROJECTION_LAYOUTS, PROJECTION_VIEWS, } from "./cadProjection.js";
37
39
  export { meshProjectShapes } from "./projectMeshes.js";
38
40
  export { analyzeMeshTopology } from "./meshValidation.js";
39
41
  export { mirrorShapes } from "./serverShapeGroups.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAiE,MAAM,mBAAmB,CAAC;AAEzH,gFAAgF;AAChF,OAAO,EACL,YAAY,GAiBb,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,6DAA6D;AAC7D,OAAO,EACL,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,aAAa,GAKd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAIrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAIlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AAEnG,iFAAiF;AACjF,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GAGxB,MAAM,iBAAiB,CAAC;AAEzB,+EAA+E;AAC/E,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,GAGf,MAAM,iBAAiB,CAAC;AAEzB,gFAAgF;AAChF,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,GAI1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAE9B,+EAA+E;AAC/E,EAAE;AACF,2EAA2E;AAC3E,oEAAoE;AACpE,+EAA+E;AAC/E,4EAA4E;AAC5E,6DAA6D;AAC7D,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EACL,cAAc,GAIf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAkD,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAKN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAyB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAiE,MAAM,mBAAmB,CAAC;AAEzH,gFAAgF;AAChF,OAAO,EACL,YAAY,GAiBb,MAAM,aAAa,CAAC;AAGrB,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,6DAA6D;AAC7D,OAAO,EACL,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,aAAa,GAKd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAIrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAIlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AAEnG,iFAAiF;AACjF,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GAGxB,MAAM,iBAAiB,CAAC;AAEzB,+EAA+E;AAC/E,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,GAGf,MAAM,iBAAiB,CAAC;AAEzB,gFAAgF;AAChF,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,GAI1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAE9B,+EAA+E;AAC/E,EAAE;AACF,2EAA2E;AAC3E,oEAAoE;AACpE,+EAA+E;AAC/E,4EAA4E;AAC5E,6DAA6D;AAC7D,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EACL,cAAc,GAIf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAkD,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAKN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAyB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAmF,MAAM,kBAAkB,CAAC;AAC/J,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,kBAAkB,EAClB,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { ProjectionLayout } from "./cadProjection.js";
2
+ import type { ProjectDocument } from "./serverProjectDocument.js";
3
+ export declare const PROJECT_EXPORT_FORMATS: readonly ["stl", "obj", "3mf", "step", "skf", "zip", "svg"];
4
+ export type ProjectExportFormat = (typeof PROJECT_EXPORT_FORMATS)[number];
5
+ export type ProjectExportArtifact = {
6
+ format: ProjectExportFormat;
7
+ filename: string;
8
+ mimeType: string;
9
+ data: Uint8Array;
10
+ shapeCount: number;
11
+ exportedCount?: number;
12
+ skipped?: Array<{
13
+ name: string;
14
+ kind: string;
15
+ reason: string;
16
+ }>;
17
+ };
18
+ export type ProjectExportOptions = {
19
+ format: ProjectExportFormat;
20
+ shapeIds?: string[];
21
+ name?: string;
22
+ /**
23
+ * What an SVG shows: one of the kernel's named views, or the four-view grid
24
+ * (the default). Meaningless for every other format, and the route refuses
25
+ * it there rather than ignoring it.
26
+ */
27
+ view?: ProjectionLayout;
28
+ };
29
+ export declare function exportProjectScene(document: ProjectDocument, options: ProjectExportOptions): Promise<ProjectExportArtifact>;
30
+ //# sourceMappingURL=sceneExport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sceneExport.d.ts","sourceRoot":"","sources":["../src/sceneExport.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,eAAO,MAAM,sBAAsB,6DAA8D,CAAC;AAClG,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE,CAAC;AAqEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAkChC"}
@@ -0,0 +1,109 @@
1
+ import { zipSync, strToU8 } from "fflate";
2
+ import { meshProjectShapes } from "./projectMeshes.js";
3
+ import { exportShapesToStep } from "./stepExport.js";
4
+ import { exportSkfProject } from "./skfProject.js";
5
+ import { projectShapesToSvg } from "./serverCadProjection.js";
6
+ export const PROJECT_EXPORT_FORMATS = ["stl", "obj", "3mf", "step", "skf", "zip", "svg"];
7
+ function stlBytes(meshes) {
8
+ const triangles = meshes.reduce((sum, mesh) => sum + mesh.faces.length, 0);
9
+ const bytes = new Uint8Array(84 + triangles * 50);
10
+ bytes.set(new TextEncoder().encode("SketchForge binary STL"));
11
+ const view = new DataView(bytes.buffer);
12
+ view.setUint32(80, triangles, true);
13
+ let offset = 84;
14
+ for (const mesh of meshes)
15
+ for (const [ia, ib, ic] of mesh.faces) {
16
+ const points = [mesh.vertices[ia], mesh.vertices[ib], mesh.vertices[ic]]
17
+ .map(([x, y, z]) => [x, -z, y]);
18
+ const [a, b, c] = points;
19
+ const u = b.map((value, i) => value - a[i]);
20
+ const v = c.map((value, i) => value - a[i]);
21
+ let normal = [u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2], u[0] * v[1] - u[1] * v[0]];
22
+ const length = Math.hypot(...normal) || 1;
23
+ normal = normal.map((value) => value / length);
24
+ for (const value of [...normal, ...a, ...b, ...c]) {
25
+ view.setFloat32(offset, value, true);
26
+ offset += 4;
27
+ }
28
+ view.setUint16(offset, 0, true);
29
+ offset += 2;
30
+ }
31
+ return bytes;
32
+ }
33
+ function objBytes(meshes) {
34
+ const lines = ["# SketchForge OBJ export"];
35
+ let index = 1;
36
+ for (const mesh of meshes) {
37
+ lines.push(`o ${mesh.name.replace(/\s+/g, "_")}`);
38
+ for (const [x, y, z] of mesh.vertices)
39
+ lines.push(`v ${x} ${y} ${z}`);
40
+ for (const [a, b, c] of mesh.faces)
41
+ lines.push(`f ${a + index} ${b + index} ${c + index}`);
42
+ index += mesh.vertices.length;
43
+ }
44
+ return new TextEncoder().encode(lines.join("\n"));
45
+ }
46
+ function threeMfBytes(meshes) {
47
+ const escape = (value) => value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;");
48
+ const objects = meshes.map((mesh, index) => `<object id="${index + 1}" type="model" name="${escape(mesh.name)}"><mesh><vertices>${mesh.vertices.map(([x, y, z]) => `<vertex x="${x}" y="${-z}" z="${y}"/>`).join("")}</vertices><triangles>${mesh.faces.map(([a, b, c]) => `<triangle v1="${a}" v2="${b}" v3="${c}"/>`).join("")}</triangles></mesh></object>`).join("");
49
+ const items = meshes.map((_, index) => `<item objectid="${index + 1}"/>`).join("");
50
+ const model = `<?xml version="1.0" encoding="UTF-8"?><model unit="millimeter" xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02"><resources>${objects}</resources><build>${items}</build></model>`;
51
+ return zipSync({
52
+ "[Content_Types].xml": strToU8('<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="model" ContentType="application/vnd.ms-package.3dmanufacturing-3dmodel+xml"/></Types>'),
53
+ "_rels/.rels": strToU8('<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Target="/3D/3dmodel.model" Id="rel0" Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel"/></Relationships>'),
54
+ "3D/3dmodel.model": strToU8(model),
55
+ });
56
+ }
57
+ function skfBytes(document, shapes) {
58
+ return exportSkfProject({
59
+ projectId: typeof document.metadata.id === "string" ? document.metadata.id : undefined,
60
+ projectName: document.projectName,
61
+ createdAt: document.createdAt,
62
+ modifiedAt: Date.now(),
63
+ shapes,
64
+ history: document.history,
65
+ historyIndex: document.historyIndex,
66
+ assets: document.assets,
67
+ workspace: document.workspace,
68
+ snapGrid: document.snapGrid,
69
+ placementElevation: document.placementElevation,
70
+ placementWorkplane: document.placementWorkplane,
71
+ sketchPlacementWorkplane: document.sketchPlacementWorkplane,
72
+ });
73
+ }
74
+ export async function exportProjectScene(document, options) {
75
+ const requested = options.shapeIds?.length ? new Set(options.shapeIds) : null;
76
+ const shapes = document.shapes.filter((shape) => !requested || requested.has(shape.id));
77
+ const baseName = (options.name?.trim() || document.projectName || "SketchForge project").replace(/[\\/:*?\"<>|]/g, "_");
78
+ const format = options.format;
79
+ if (format === "skf") {
80
+ const data = await skfBytes(document, shapes);
81
+ return { format, filename: `${baseName}.skf`, mimeType: "application/vnd.sketchforge.project+zip", data, shapeCount: shapes.length };
82
+ }
83
+ if (format === "step") {
84
+ const result = await exportShapesToStep(shapes.filter((shape) => shape.hidden !== true));
85
+ const data = new Uint8Array(await result.blob.arrayBuffer());
86
+ return { format, filename: `${baseName}.step`, mimeType: "model/step", data, shapeCount: shapes.length, exportedCount: result.exportedCount, skipped: result.skipped };
87
+ }
88
+ const visible = shapes.filter((shape) => shape.hidden !== true && shape.hole !== true);
89
+ if (!visible.length)
90
+ throw new Error("No visible solid objects to export.");
91
+ if (format === "svg") {
92
+ // Drawn from the exact solids by hidden-line removal, not from the meshes
93
+ // below: a projected circle stays a circle.
94
+ const svg = await projectShapesToSvg(visible, { view: options.view });
95
+ return { format, filename: `${baseName}.svg`, mimeType: "image/svg+xml", data: new TextEncoder().encode(svg), shapeCount: visible.length };
96
+ }
97
+ const meshes = await meshProjectShapes(visible);
98
+ if (!meshes.length)
99
+ throw new Error("No visible solid objects could be meshed.");
100
+ const stl = () => stlBytes(meshes);
101
+ const data = format === "stl" ? stl()
102
+ : format === "obj" ? objBytes(meshes)
103
+ : format === "3mf" ? threeMfBytes(meshes)
104
+ : zipSync({ [`${baseName}.stl`]: stl(), [`${baseName}.skf`]: await skfBytes(document, document.shapes) });
105
+ const suffix = format === "zip" ? "zip" : format;
106
+ const mimeType = { stl: "model/stl", obj: "text/plain", "3mf": "model/3mf", zip: "application/zip" }[format];
107
+ return { format, filename: `${baseName}.${suffix}`, mimeType, data, shapeCount: meshes.length };
108
+ }
109
+ //# sourceMappingURL=sceneExport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sceneExport.js","sourceRoot":"","sources":["../src/sceneExport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAK9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAalG,SAAS,QAAQ,CAAC,MAAqD;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;IAClD,KAAK,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,MAAM;QAAE,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;iBACrE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;YAC/C,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAAC,MAAM,IAAI,CAAC,CAAC;YAAC,CAAC;YACzG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAAqD;IACrE,MAAM,KAAK,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QAC3F,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,MAAqD;IACzE,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpI,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACzC,eAAe,KAAK,GAAG,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,8BAA8B,CACnT,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,+IAA+I,OAAO,sBAAsB,KAAK,kBAAkB,CAAC;IAClN,OAAO,OAAO,CAAC;QACb,qBAAqB,EAAE,OAAO,CAAC,+TAA+T,CAAC;QAC/V,aAAa,EAAE,OAAO,CAAC,oQAAoQ,CAAC;QAC5R,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,QAAyB,EAAE,MAAwB;IACnE,OAAO,gBAAgB,CAAC;QACtB,SAAS,EAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QACtF,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,MAAM;QACN,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB;KAC5D,CAAC,CAAC;AACL,CAAC;AAcD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAyB,EACzB,OAA6B;IAE7B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACxH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,MAAM,EAAE,QAAQ,EAAE,yCAAyC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACvI,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACzK,CAAC;IAED,MAAM,OAAO,GAAqB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzG,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC5E,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,0EAA0E;QAC1E,4CAA4C;QAC5C,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC7I,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;QACnC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;gBACzC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,QAAQ,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,QAAQ,MAAM,CAAC,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5G,MAAM,MAAM,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7G,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,IAAI,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAClG,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * A 2D drawing of a project, from the exact B-rep.
3
+ *
4
+ * OCCT's hidden-line removal runs on the real surfaces, so a cylinder's
5
+ * outline is a circle and an occluded edge is a dashed one. The client-side
6
+ * SVG export flattens a triangle soup from above instead, and the MCP capture
7
+ * tool used to depth-sort every triangle by hand; this is the server-side path
8
+ * neither of them had.
9
+ *
10
+ * Every visible solid of the scene is placed where it sits, turned into the
11
+ * drawing's Z-up frame (`EDITOR_TO_DRAWING_TRANSFORM`) and gathered into one
12
+ * compound, so a drawing of a scene is one drawing rather than one per part
13
+ * and the parts occlude each other correctly. Hidden shapes and cutters are
14
+ * left out, as every mesh export leaves them out.
15
+ *
16
+ * `projectEdges` hands its result back in the camera's own frame: x along the
17
+ * `right` axis it was given, y along `toward × right`, z flattened to zero.
18
+ * That is why the polylines below are read off as `(x, y)` with no further
19
+ * projection, and why the kernel's own SVG renderer (which dots them with
20
+ * world axes) is not used -- see `cadProjection.ts`.
21
+ *
22
+ * Node-only. Never import this from anything the browser bundles.
23
+ */
24
+ import { type ProjectionLayout } from "./cadProjection.js";
25
+ import type { WorkplaneShape } from "./domain/sketchforge.js";
26
+ export type ProjectionOptions = {
27
+ /** One named view, or the four-view grid. The grid by default. */
28
+ view?: ProjectionLayout;
29
+ /** Width and height of each panel in px. Each panel is square. */
30
+ panelSize?: number;
31
+ /** Draw occluded edges dashed. On by default; a laser-cut template wants it off. */
32
+ showHidden?: boolean;
33
+ };
34
+ /**
35
+ * The visible solids of `shapes` drawn to an SVG string.
36
+ *
37
+ * Refuses, as the mesh exports do, when nothing is left to draw.
38
+ */
39
+ export declare function projectShapesToSvg(shapes: readonly WorkplaneShape[], options?: ProjectionOptions): Promise<string>;
40
+ //# sourceMappingURL=serverCadProjection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverCadProjection.d.ts","sourceRoot":"","sources":["../src/serverCadProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAML,KAAK,gBAAgB,EAGtB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kEAAkE;IAClE,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAuCF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBtH"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * A 2D drawing of a project, from the exact B-rep.
3
+ *
4
+ * OCCT's hidden-line removal runs on the real surfaces, so a cylinder's
5
+ * outline is a circle and an occluded edge is a dashed one. The client-side
6
+ * SVG export flattens a triangle soup from above instead, and the MCP capture
7
+ * tool used to depth-sort every triangle by hand; this is the server-side path
8
+ * neither of them had.
9
+ *
10
+ * Every visible solid of the scene is placed where it sits, turned into the
11
+ * drawing's Z-up frame (`EDITOR_TO_DRAWING_TRANSFORM`) and gathered into one
12
+ * compound, so a drawing of a scene is one drawing rather than one per part
13
+ * and the parts occlude each other correctly. Hidden shapes and cutters are
14
+ * left out, as every mesh export leaves them out.
15
+ *
16
+ * `projectEdges` hands its result back in the camera's own frame: x along the
17
+ * `right` axis it was given, y along `toward × right`, z flattened to zero.
18
+ * That is why the polylines below are read off as `(x, y)` with no further
19
+ * projection, and why the kernel's own SVG renderer (which dots them with
20
+ * world axes) is not used -- see `cadProjection.ts`.
21
+ *
22
+ * Node-only. Never import this from anything the browser bundles.
23
+ */
24
+ import { EDITOR_TO_DRAWING_TRANSFORM, MULTIVIEW_PANELS, renderDrawingSvg, viewBasis, } from "./cadProjection.js";
25
+ import { withCadKernel } from "./serverCadKernel.js";
26
+ import { ServerCadError } from "./serverCadOperations.js";
27
+ import { placedSolidForShape } from "./serverShapeBooleans.js";
28
+ const ORIGIN = { x: 0, y: 0, z: 0 };
29
+ /** The scene as one shape in the drawing frame. */
30
+ function drawingCompound(cad, shapes) {
31
+ const solids = shapes.map((shape) => cad.transform(placedSolidForShape(cad, shape), [...EDITOR_TO_DRAWING_TRANSFORM]));
32
+ return solids.length === 1 ? solids[0] : cad.makeCompound(solids);
33
+ }
34
+ /** Each projected edge sampled into a polyline, read in the camera frame. */
35
+ function polylinesOf(cad, handle, deflection) {
36
+ // An empty category comes back as the null handle rather than an empty compound.
37
+ if (Number(handle) === 0)
38
+ return [];
39
+ const { points, edgeGroups } = cad.wireframe(handle, deflection);
40
+ const lines = [];
41
+ for (let group = 0; group + 1 < edgeGroups.length; group += 3) {
42
+ const start = edgeGroups[group];
43
+ const count = edgeGroups[group + 1];
44
+ const line = [];
45
+ for (let index = 0; index + 1 < count; index += 3) {
46
+ line.push(points[start + index], points[start + index + 1]);
47
+ }
48
+ if (line.length >= 4)
49
+ lines.push(line);
50
+ }
51
+ return lines;
52
+ }
53
+ function viewDrawing(cad, scene, view, deflection) {
54
+ const basis = viewBasis(view);
55
+ const projected = cad.projectEdges(scene, ORIGIN, basis.toward, basis.right);
56
+ const lines = (handle) => polylinesOf(cad, handle, deflection);
57
+ return {
58
+ view,
59
+ visible: [...lines(projected.visibleOutline), ...lines(projected.visibleSmooth), ...lines(projected.visibleSharp)],
60
+ hidden: [...lines(projected.hiddenOutline), ...lines(projected.hiddenSmooth), ...lines(projected.hiddenSharp)],
61
+ };
62
+ }
63
+ /**
64
+ * The visible solids of `shapes` drawn to an SVG string.
65
+ *
66
+ * Refuses, as the mesh exports do, when nothing is left to draw.
67
+ */
68
+ export function projectShapesToSvg(shapes, options = {}) {
69
+ const visible = shapes.filter((shape) => shape.hidden !== true && shape.hole !== true);
70
+ if (!visible.length) {
71
+ return Promise.reject(new ServerCadError("No visible solid objects to draw.", 422));
72
+ }
73
+ const layout = options.view ?? "multiview";
74
+ const views = layout === "multiview" ? MULTIVIEW_PANELS : [layout];
75
+ return withCadKernel((cad) => {
76
+ const scene = drawingCompound(cad, visible);
77
+ const box = cad.getBoundingBox(scene, false);
78
+ const size = { x: box.xmax - box.xmin, y: box.ymax - box.ymin, z: box.zmax - box.zmin };
79
+ // Sampled at a fifth of a percent of the diagonal, so a curve reads as a
80
+ // curve at any size without the drawing growing with the part.
81
+ const deflection = Math.max(Math.hypot(size.x, size.y, size.z) * 0.002, 1e-4);
82
+ const panels = views.map((view) => viewDrawing(cad, scene, view, deflection));
83
+ return renderDrawingSvg({ layout, panels, size }, { panelSize: options.panelSize, showHidden: options.showHidden });
84
+ });
85
+ }
86
+ //# sourceMappingURL=serverCadProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverCadProjection.js","sourceRoot":"","sources":["../src/serverCadProjection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /** Exact mass properties from the shape's positioned CAD solid. */
2
+ import type { WorkplaneShape } from "./domain/sketchforge.js";
3
+ export type ShapeGeometryProvenance = {
4
+ /** Which stored representation supplied the solid to the kernel. */
5
+ source: "parametric" | "brep" | "mesh";
6
+ /** Imported triangle meshes remain tessellated even after sewing into a solid. */
7
+ precision: "exact" | "tessellated";
8
+ };
9
+ export type ServerCadShapeProperties = {
10
+ /** Volume in mm^3. */
11
+ volume: number;
12
+ /** Surface area in mm^2. */
13
+ area: number;
14
+ /** Center of mass in project coordinates, in mm. */
15
+ centerOfMass: {
16
+ x: number;
17
+ y: number;
18
+ z: number;
19
+ };
20
+ /** Axis-aligned bounds in project coordinates, in mm. */
21
+ bbox: {
22
+ xmin: number;
23
+ ymin: number;
24
+ zmin: number;
25
+ xmax: number;
26
+ ymax: number;
27
+ zmax: number;
28
+ };
29
+ isValid: boolean;
30
+ provenance: ShapeGeometryProvenance;
31
+ };
32
+ /** Measure one shape using the same project-space solid the engine's CAD tools use. */
33
+ export declare function shapeProperties(shape: WorkplaneShape): Promise<ServerCadShapeProperties>;
34
+ //# sourceMappingURL=serverCadProperties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverCadProperties.d.ts","sourceRoot":"","sources":["../src/serverCadProperties.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAInE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,uBAAuB,GAAG;IACpC,oEAAoE;IACpE,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,kFAAkF;IAClF,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,YAAY,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,yDAAyD;IACzD,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,uBAAuB,CAAC;CACrC,CAAC;AAaF,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAcxF"}
@@ -0,0 +1,31 @@
1
+ /** Exact mass properties from the shape's positioned CAD solid. */
2
+ import { withCadKernel } from "./serverCadKernel.js";
3
+ import { placedSolidForShape } from "./serverShapeBooleans.js";
4
+ function geometryProvenance(shape) {
5
+ // placedSolidForShape uses an imported mesh when one is present, including
6
+ // when it also carries source STEP text. Report the geometry actually used.
7
+ if (shape.importedMesh?.positions && shape.importedMesh.positions.length >= 9) {
8
+ return { source: "mesh", precision: "tessellated" };
9
+ }
10
+ return shape.cadBrep
11
+ ? { source: "brep", precision: "exact" }
12
+ : { source: "parametric", precision: "exact" };
13
+ }
14
+ /** Measure one shape using the same project-space solid the engine's CAD tools use. */
15
+ export function shapeProperties(shape) {
16
+ return withCadKernel((cad) => {
17
+ const solid = placedSolidForShape(cad, shape);
18
+ const query = cad.queryBatch([solid])[0];
19
+ if (!query)
20
+ throw new Error("The CAD kernel returned no shape properties.");
21
+ return {
22
+ volume: query.volume,
23
+ area: query.area,
24
+ centerOfMass: query.centerOfMass,
25
+ bbox: query.bbox,
26
+ isValid: query.isValid,
27
+ provenance: geometryProvenance(shape),
28
+ };
29
+ });
30
+ }
31
+ //# sourceMappingURL=serverCadProperties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverCadProperties.js","sourceRoot":"","sources":["../src/serverCadProperties.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAuB/D,SAAS,kBAAkB,CAAC,KAAqB;IAC/C,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,KAAK,CAAC,YAAY,EAAE,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC,OAAO;QAClB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;QACxC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACnD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,OAAO,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC5E,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC;SACtC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructorfleet/sketchforge-engine",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Portable geometry and project engine for SketchForge.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "publishConfig": {