@constructorfleet/sketchforge-engine 1.27.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cadAnalysis.d.ts.map +1 -1
- package/dist/cadAnalysis.js +14 -0
- package/dist/cadAnalysis.js.map +1 -1
- package/dist/cadBakeMetadata.d.ts +11 -2
- package/dist/cadBakeMetadata.d.ts.map +1 -1
- package/dist/cadBakeMetadata.js +9 -0
- package/dist/cadBakeMetadata.js.map +1 -1
- package/dist/cadProjection.d.ts.map +1 -1
- package/dist/cadProjection.js.map +1 -1
- package/dist/cadSection.d.ts.map +1 -1
- package/dist/cadShell.d.ts +1 -1
- package/dist/cadShell.d.ts.map +1 -1
- package/dist/cadShell.js +7 -0
- package/dist/cadShell.js.map +1 -1
- package/dist/cadSolids.d.ts.map +1 -1
- package/dist/cadSolids.js +18 -1
- package/dist/cadSolids.js.map +1 -1
- package/dist/cutBrepFrameMigration.d.ts +46 -0
- package/dist/cutBrepFrameMigration.d.ts.map +1 -0
- package/dist/cutBrepFrameMigration.js +105 -0
- package/dist/cutBrepFrameMigration.js.map +1 -0
- package/dist/cutterPadding.d.ts.map +1 -1
- package/dist/domain/cameraProjection.js.map +1 -1
- package/dist/domain/sketchforge.d.ts +30 -0
- package/dist/domain/sketchforge.d.ts.map +1 -1
- package/dist/editorHistory.d.ts.map +1 -1
- package/dist/editorHistory.js.map +1 -1
- package/dist/engine.d.ts +3 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +102 -66
- package/dist/engine.js.map +1 -1
- package/dist/exactBooleanParts.d.ts +4 -2
- package/dist/exactBooleanParts.d.ts.map +1 -1
- package/dist/exactBooleanParts.js +7 -3
- package/dist/exactBooleanParts.js.map +1 -1
- package/dist/exactBooleanSolids.d.ts.map +1 -1
- package/dist/gearProfile.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loftProfile.d.ts +1 -1
- package/dist/loftProfile.d.ts.map +1 -1
- package/dist/loftProfile.js.map +1 -1
- package/dist/meshEdgeProjection.d.ts +104 -0
- package/dist/meshEdgeProjection.d.ts.map +1 -0
- package/dist/meshEdgeProjection.js +439 -0
- package/dist/meshEdgeProjection.js.map +1 -0
- package/dist/meshImport.d.ts.map +1 -1
- package/dist/meshImport.js +2 -20
- package/dist/meshImport.js.map +1 -1
- package/dist/meshMassProperties.d.ts +92 -0
- package/dist/meshMassProperties.d.ts.map +1 -0
- package/dist/meshMassProperties.js +570 -0
- package/dist/meshMassProperties.js.map +1 -0
- package/dist/meshSection.d.ts +44 -0
- package/dist/meshSection.d.ts.map +1 -0
- package/dist/meshSection.js +154 -0
- package/dist/meshSection.js.map +1 -0
- package/dist/meshShellOverlap.d.ts +75 -0
- package/dist/meshShellOverlap.d.ts.map +1 -0
- package/dist/meshShellOverlap.js +797 -0
- package/dist/meshShellOverlap.js.map +1 -0
- package/dist/meshShellSolids.d.ts +44 -0
- package/dist/meshShellSolids.d.ts.map +1 -0
- package/dist/meshShellSolids.js +116 -0
- package/dist/meshShellSolids.js.map +1 -0
- package/dist/nodeSvgDomParser.d.ts +3 -0
- package/dist/nodeSvgDomParser.d.ts.map +1 -0
- package/dist/nodeSvgDomParser.js +53 -0
- package/dist/nodeSvgDomParser.js.map +1 -0
- package/dist/parametricRecompute.d.ts.map +1 -1
- package/dist/parametricRecompute.js +56 -6
- package/dist/parametricRecompute.js.map +1 -1
- package/dist/placementWorkplane.d.ts.map +1 -1
- package/dist/placementWorkplane.js.map +1 -1
- package/dist/projectAssets.d.ts +1 -1
- package/dist/projectStore.d.ts +1 -1
- package/dist/projectStore.d.ts.map +1 -1
- package/dist/projectStore.js +23 -2
- package/dist/projectStore.js.map +1 -1
- package/dist/revolveRequests.d.ts +57 -1
- package/dist/revolveRequests.d.ts.map +1 -1
- package/dist/revolveRequests.js +103 -4
- package/dist/revolveRequests.js.map +1 -1
- package/dist/sceneExport.d.ts +6 -0
- package/dist/sceneExport.d.ts.map +1 -1
- package/dist/sceneExport.js +6 -2
- package/dist/sceneExport.js.map +1 -1
- package/dist/serverCadInterference.d.ts.map +1 -1
- package/dist/serverCadInterference.js +9 -2
- package/dist/serverCadInterference.js.map +1 -1
- package/dist/serverCadOperations.d.ts +73 -4
- package/dist/serverCadOperations.d.ts.map +1 -1
- package/dist/serverCadOperations.js +285 -51
- package/dist/serverCadOperations.js.map +1 -1
- package/dist/serverCadProjection.d.ts +14 -1
- package/dist/serverCadProjection.d.ts.map +1 -1
- package/dist/serverCadProjection.js +135 -13
- package/dist/serverCadProjection.js.map +1 -1
- package/dist/serverCadProperties.d.ts +14 -7
- package/dist/serverCadProperties.d.ts.map +1 -1
- package/dist/serverCadProperties.js +60 -24
- package/dist/serverCadProperties.js.map +1 -1
- package/dist/serverCadSection.d.ts +21 -1
- package/dist/serverCadSection.d.ts.map +1 -1
- package/dist/serverCadSection.js +157 -43
- package/dist/serverCadSection.js.map +1 -1
- package/dist/serverCadShell.d.ts.map +1 -1
- package/dist/serverCadShell.js +0 -3
- package/dist/serverCadShell.js.map +1 -1
- package/dist/serverShapeBooleans.d.ts +75 -0
- package/dist/serverShapeBooleans.d.ts.map +1 -1
- package/dist/serverShapeBooleans.js +251 -9
- package/dist/serverShapeBooleans.js.map +1 -1
- package/dist/serverShapeGroups.js.map +1 -1
- package/dist/shapeBounds.d.ts.map +1 -1
- package/dist/shapeCatalog.d.ts.map +1 -1
- package/dist/shapeCatalog.js +1 -0
- package/dist/shapeCatalog.js.map +1 -1
- package/dist/shapeRequests.d.ts +13 -0
- package/dist/shapeRequests.d.ts.map +1 -1
- package/dist/shapeRequests.js +14 -0
- package/dist/shapeRequests.js.map +1 -1
- package/dist/sketchCadProfile.d.ts +13 -0
- package/dist/sketchCadProfile.d.ts.map +1 -1
- package/dist/sketchCadProfile.js +108 -0
- package/dist/sketchCadProfile.js.map +1 -1
- package/dist/sketchCadSweep.js.map +1 -1
- package/dist/sketchEdgeSegmentLineage.d.ts +32 -0
- package/dist/sketchEdgeSegmentLineage.d.ts.map +1 -0
- package/dist/sketchEdgeSegmentLineage.js +49 -0
- package/dist/sketchEdgeSegmentLineage.js.map +1 -0
- package/dist/sketchEdgeSegmentLineageKernel.d.ts +83 -0
- package/dist/sketchEdgeSegmentLineageKernel.d.ts.map +1 -0
- package/dist/sketchEdgeSegmentLineageKernel.js +125 -0
- package/dist/sketchEdgeSegmentLineageKernel.js.map +1 -0
- package/dist/sketchFaceDraftKernel.d.ts +11 -4
- package/dist/sketchFaceDraftKernel.d.ts.map +1 -1
- package/dist/sketchFaceDraftKernel.js +8 -2
- package/dist/sketchFaceDraftKernel.js.map +1 -1
- package/dist/sketchRevolve.d.ts +13 -0
- package/dist/sketchRevolve.d.ts.map +1 -1
- package/dist/sketchRevolve.js +4 -1
- package/dist/sketchRevolve.js.map +1 -1
- package/dist/skfProject.d.ts +1 -1
- package/dist/skfProject.d.ts.map +1 -1
- package/dist/skfProject.js +63 -4
- package/dist/skfProject.js.map +1 -1
- package/dist/sphereTessellation.d.ts.map +1 -1
- package/dist/stepAssemblyExplode.d.ts.map +1 -1
- package/dist/stepAssemblyExplode.js +1 -1
- package/dist/stepAssemblyExplode.js.map +1 -1
- package/dist/stepAssemblyHierarchy.js.map +1 -1
- package/dist/stepComponentMetadata.d.ts +1 -1
- package/dist/stepComponentMetadata.d.ts.map +1 -1
- package/dist/stepComponentMetadata.js +93 -39
- package/dist/stepComponentMetadata.js.map +1 -1
- package/dist/stepExport.d.ts +14 -1
- package/dist/stepExport.d.ts.map +1 -1
- package/dist/stepExport.js +81 -32
- package/dist/stepExport.js.map +1 -1
- package/dist/stepImportCommon.d.ts +4 -1
- package/dist/stepImportCommon.d.ts.map +1 -1
- package/dist/stepImportCommon.js +7 -6
- package/dist/stepImportCommon.js.map +1 -1
- package/dist/stlImport.js.map +1 -1
- package/dist/support/cadModifierTypes.d.ts +41 -1
- package/dist/support/cadModifierTypes.d.ts.map +1 -1
- package/dist/support/i18n/LocalizedError.d.ts.map +1 -1
- package/dist/support/i18n/locales/en/messages.json +30 -2
- package/dist/support/i18n/locales.d.ts.map +1 -1
- package/dist/support/lib/appTheme.d.ts.map +1 -1
- package/dist/support/lib/materialPresets.js.map +1 -1
- package/dist/support/lib/measurementUnits.d.ts.map +1 -1
- package/dist/support/lib/operator-configuration.json +13 -1
- package/dist/support/lib/operatorConfiguration.d.ts +5 -5
- package/dist/support/lib/workplaneGrid.js.map +1 -1
- package/dist/svgImport.d.ts +2 -0
- package/dist/svgImport.d.ts.map +1 -1
- package/dist/svgImport.js +7 -0
- package/dist/svgImport.js.map +1 -1
- package/dist/threadCatalog.js.map +1 -1
- package/dist/workplaneSettings.js.map +1 -1
- package/dist/workplaneShapes.d.ts +2 -2
- package/dist/workplaneShapes.d.ts.map +1 -1
- package/dist/workplaneShapes.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,10 +1,30 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Section contours for one bounded, named axis plane. Node-only.
|
|
3
|
+
*
|
|
4
|
+
* Shapes the project describes exactly are cut by the OCCT kernel. Shapes it
|
|
5
|
+
* describes only by their triangles -- imported meshes, and anything stored as
|
|
6
|
+
* a mesh -- are sliced directly (`meshSection.ts`): sewing their triangles into
|
|
7
|
+
* a solid first is what made a 50,000-triangle section take minutes, and the
|
|
8
|
+
* sewn solid's section is the same polyline anyway.
|
|
9
|
+
*/
|
|
2
10
|
import { type SectionPlane } from "./cadSection.js";
|
|
3
11
|
import type { WorkplaneShape } from "./domain/sketchforge.js";
|
|
4
12
|
export type SectionOptions = {
|
|
5
13
|
plane: SectionPlane;
|
|
6
14
|
offset: number;
|
|
7
15
|
};
|
|
16
|
+
export declare const MAX_SECTION_FACE_SPAN = 10000;
|
|
17
|
+
/**
|
|
18
|
+
* Triangles a section reads, across every mesh in it, counted from the stored
|
|
19
|
+
* positions as well as the recorded count. Slicing is linear, so this bounds
|
|
20
|
+
* memory rather than time: placing a mesh builds a vertex array, a transformed
|
|
21
|
+
* copy, and a Float64Array in the drawing frame, about 400 bytes a triangle
|
|
22
|
+
* at peak. Measured by hand, not in the perf lane (which stops at 240,000): a
|
|
23
|
+
* 1,965,600-triangle section ran out of a 1 GiB heap and completed in 1.5 GiB.
|
|
24
|
+
*/
|
|
25
|
+
export declare const MAX_SECTION_MESH_TRIANGLES = 2000000;
|
|
26
|
+
export declare const MAX_CONTOURS = 10000;
|
|
27
|
+
export declare const MAX_SAMPLED_POINTS = 100000;
|
|
8
28
|
export declare function sectionShapesToSvg(shapes: readonly WorkplaneShape[], options: SectionOptions): Promise<string>;
|
|
9
29
|
export declare function sectionShapesToDxf(shapes: readonly WorkplaneShape[], options: SectionOptions): Promise<string>;
|
|
10
30
|
//# sourceMappingURL=serverCadSection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverCadSection.d.ts","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"serverCadSection.d.ts","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAA2E,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO7H,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAIrE,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,UAAY,CAAC;AACpD,eAAO,MAAM,YAAY,QAAS,CAAC;AACnC,eAAO,MAAM,kBAAkB,SAAU,CAAC;AA8N1C,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpH;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpH"}
|
package/dist/serverCadSection.js
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Section contours for one bounded, named axis plane. Node-only.
|
|
3
|
+
*
|
|
4
|
+
* Shapes the project describes exactly are cut by the OCCT kernel. Shapes it
|
|
5
|
+
* describes only by their triangles -- imported meshes, and anything stored as
|
|
6
|
+
* a mesh -- are sliced directly (`meshSection.ts`): sewing their triangles into
|
|
7
|
+
* a solid first is what made a 50,000-triangle section take minutes, and the
|
|
8
|
+
* sewn solid's section is the same polyline anyway.
|
|
9
|
+
*/
|
|
2
10
|
import { renderSectionDxf, renderSectionSvg, SECTION_PLANES } from "./cadSection.js";
|
|
3
11
|
import { withCadKernel } from "./serverCadKernel.js";
|
|
4
12
|
import { ServerCadError } from "./serverCadOperations.js";
|
|
5
13
|
import { placedSolidForShape } from "./serverShapeBooleans.js";
|
|
6
14
|
import { EDITOR_TO_DRAWING_TRANSFORM } from "./cadProjection.js";
|
|
15
|
+
import { sectionTriangleSoup } from "./meshSection.js";
|
|
16
|
+
import { worldMeshForShape } from "./serverShapeGroups.js";
|
|
7
17
|
const MAX_SECTION_SHAPES = 100;
|
|
8
18
|
const MAX_SECTION_SPAN = 8_000;
|
|
9
|
-
const MAX_SECTION_FACE_SPAN = 10_000;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
19
|
+
export const MAX_SECTION_FACE_SPAN = 10_000;
|
|
20
|
+
/**
|
|
21
|
+
* Triangles a section reads, across every mesh in it, counted from the stored
|
|
22
|
+
* positions as well as the recorded count. Slicing is linear, so this bounds
|
|
23
|
+
* memory rather than time: placing a mesh builds a vertex array, a transformed
|
|
24
|
+
* copy, and a Float64Array in the drawing frame, about 400 bytes a triangle
|
|
25
|
+
* at peak. Measured by hand, not in the perf lane (which stops at 240,000): a
|
|
26
|
+
* 1,965,600-triangle section ran out of a 1 GiB heap and completed in 1.5 GiB.
|
|
27
|
+
*/
|
|
28
|
+
export const MAX_SECTION_MESH_TRIANGLES = 2_000_000;
|
|
29
|
+
export const MAX_CONTOURS = 10_000;
|
|
30
|
+
export const MAX_SAMPLED_POINTS = 100_000;
|
|
13
31
|
const FRAMES = {
|
|
14
32
|
xy: {
|
|
15
33
|
normal: "z", u: "x", v: "y",
|
|
@@ -31,6 +49,13 @@ function axisBounds(bounds, axis) {
|
|
|
31
49
|
return { min: bounds.ymin, max: bounds.ymax };
|
|
32
50
|
return { min: bounds.zmin, max: bounds.zmax };
|
|
33
51
|
}
|
|
52
|
+
/** Triangles a shape's stored mesh holds, read from the positions themselves as well as the count beside them. */
|
|
53
|
+
function meshTriangleCount(shape) {
|
|
54
|
+
const mesh = shape.importedMesh;
|
|
55
|
+
if (!mesh)
|
|
56
|
+
return 0;
|
|
57
|
+
return Math.max(mesh.triangleCount ?? 0, Math.floor((mesh.positions?.length ?? 0) / 9));
|
|
58
|
+
}
|
|
34
59
|
function validateRequest(shapes, options) {
|
|
35
60
|
if (!options || !SECTION_PLANES.includes(options.plane))
|
|
36
61
|
throw new ServerCadError(`plane must be one of: ${SECTION_PLANES.join(", ")}.`, 400);
|
|
@@ -39,14 +64,72 @@ function validateRequest(shapes, options) {
|
|
|
39
64
|
}
|
|
40
65
|
if (shapes.length > MAX_SECTION_SHAPES)
|
|
41
66
|
throw new ServerCadError(`A section drawing supports a maximum of ${MAX_SECTION_SHAPES} shapes.`, 413);
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
67
|
+
const counts = shapes.map(meshTriangleCount);
|
|
68
|
+
const triangles = counts.reduce((sum, count) => sum + count, 0);
|
|
69
|
+
if (triangles > MAX_SECTION_MESH_TRIANGLES) {
|
|
70
|
+
const alone = counts.some((count) => count > MAX_SECTION_MESH_TRIANGLES);
|
|
71
|
+
throw new ServerCadError(alone
|
|
72
|
+
? `Section drawing supports a maximum of ${MAX_SECTION_MESH_TRIANGLES} mesh triangles; one selected mesh has ${Math.max(...counts)}. `
|
|
73
|
+
+ "Reduce the mesh before importing it."
|
|
74
|
+
: `Section drawing supports a maximum of ${MAX_SECTION_MESH_TRIANGLES} mesh triangles across the selected shapes; these have ${triangles}. `
|
|
75
|
+
+ "Pass shapeIds to section fewer shapes at a time, or reduce the meshes before importing them.", 413);
|
|
76
|
+
}
|
|
45
77
|
}
|
|
46
78
|
function sectionCompound(cad, shapes) {
|
|
47
79
|
const handles = shapes.map((shape) => cad.transform(placedSolidForShape(cad, shape), [...EDITOR_TO_DRAWING_TRANSFORM]));
|
|
48
80
|
return handles.length === 1 ? handles[0] : cad.makeCompound(handles);
|
|
49
81
|
}
|
|
82
|
+
/** A mesh shape's triangles where it stands, in the drawing frame, three vertices per triangle. */
|
|
83
|
+
function drawingFramePositions(shape) {
|
|
84
|
+
const mesh = worldMeshForShape(shape);
|
|
85
|
+
if (!mesh)
|
|
86
|
+
return null;
|
|
87
|
+
const positions = new Float64Array(mesh.faces.length * 9);
|
|
88
|
+
const m = EDITOR_TO_DRAWING_TRANSFORM;
|
|
89
|
+
let cursor = 0;
|
|
90
|
+
for (const face of mesh.faces) {
|
|
91
|
+
for (const vertexIndex of face) {
|
|
92
|
+
const [x, y, z] = mesh.vertices[vertexIndex];
|
|
93
|
+
positions[cursor++] = m[0] * x + m[1] * y + m[2] * z + m[3];
|
|
94
|
+
positions[cursor++] = m[4] * x + m[5] * y + m[6] * z + m[7];
|
|
95
|
+
positions[cursor++] = m[8] * x + m[9] * y + m[10] * z + m[11];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return positions;
|
|
99
|
+
}
|
|
100
|
+
function positionBounds(positions) {
|
|
101
|
+
if (positions.length < 9)
|
|
102
|
+
return null;
|
|
103
|
+
const bounds = { xmin: Infinity, xmax: -Infinity, ymin: Infinity, ymax: -Infinity, zmin: Infinity, zmax: -Infinity };
|
|
104
|
+
for (let index = 0; index + 2 < positions.length; index += 3) {
|
|
105
|
+
const x = positions[index];
|
|
106
|
+
const y = positions[index + 1];
|
|
107
|
+
const z = positions[index + 2];
|
|
108
|
+
if (x < bounds.xmin)
|
|
109
|
+
bounds.xmin = x;
|
|
110
|
+
if (x > bounds.xmax)
|
|
111
|
+
bounds.xmax = x;
|
|
112
|
+
if (y < bounds.ymin)
|
|
113
|
+
bounds.ymin = y;
|
|
114
|
+
if (y > bounds.ymax)
|
|
115
|
+
bounds.ymax = y;
|
|
116
|
+
if (z < bounds.zmin)
|
|
117
|
+
bounds.zmin = z;
|
|
118
|
+
if (z > bounds.zmax)
|
|
119
|
+
bounds.zmax = z;
|
|
120
|
+
}
|
|
121
|
+
return bounds;
|
|
122
|
+
}
|
|
123
|
+
function unionBounds(bounds) {
|
|
124
|
+
if (!bounds.length)
|
|
125
|
+
return null;
|
|
126
|
+
return bounds.reduce((left, right) => ({
|
|
127
|
+
xmin: Math.min(left.xmin, right.xmin), xmax: Math.max(left.xmax, right.xmax),
|
|
128
|
+
ymin: Math.min(left.ymin, right.ymin), ymax: Math.max(left.ymax, right.ymax),
|
|
129
|
+
zmin: Math.min(left.zmin, right.zmin), zmax: Math.max(left.zmax, right.zmax),
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
const AXIS_INDEX = { x: 0, y: 1, z: 2 };
|
|
50
133
|
function contourCoordinates(plane, x, y, z) {
|
|
51
134
|
if (plane === "xy")
|
|
52
135
|
return [x, y];
|
|
@@ -79,47 +162,78 @@ function sampledContours(cad, section, plane, deflection) {
|
|
|
79
162
|
}
|
|
80
163
|
return contours;
|
|
81
164
|
}
|
|
82
|
-
/**
|
|
165
|
+
/** Refuse a scene the plane misses or that is too large to draw, and frame what is left. */
|
|
166
|
+
function checkedFrame(bounds, options) {
|
|
167
|
+
const values = [bounds.xmin, bounds.xmax, bounds.ymin, bounds.ymax, bounds.zmin, bounds.zmax];
|
|
168
|
+
if (values.some((value) => !Number.isFinite(value) || Math.abs(value) > 100_000)) {
|
|
169
|
+
throw new ServerCadError("The selected scene has coordinates outside the supported section range.", 413);
|
|
170
|
+
}
|
|
171
|
+
const frame = FRAMES[options.plane];
|
|
172
|
+
const normal = axisBounds(bounds, frame.normal);
|
|
173
|
+
if (options.offset < normal.min - 1e-7 || options.offset > normal.max + 1e-7) {
|
|
174
|
+
throw new ServerCadError("The requested section plane does not intersect the selected scene.", 422);
|
|
175
|
+
}
|
|
176
|
+
const uBounds = axisBounds(bounds, frame.u);
|
|
177
|
+
const vBounds = axisBounds(bounds, frame.v);
|
|
178
|
+
const spans = [bounds.xmax - bounds.xmin, bounds.ymax - bounds.ymin, bounds.zmax - bounds.zmin];
|
|
179
|
+
if (spans.some((span) => span > MAX_SECTION_SPAN)) {
|
|
180
|
+
throw new ServerCadError(`Section drawings support a maximum section span of ${MAX_SECTION_SPAN} mm.`, 413);
|
|
181
|
+
}
|
|
182
|
+
const margin = Math.max(1, Math.max(uBounds.max - uBounds.min, vBounds.max - vBounds.min) * 0.02);
|
|
183
|
+
if (uBounds.max - uBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN || vBounds.max - vBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN) {
|
|
184
|
+
throw new ServerCadError(`Section faces are limited to ${MAX_SECTION_FACE_SPAN} mm on each side.`, 413);
|
|
185
|
+
}
|
|
186
|
+
return { frame, uBounds, vBounds, margin, diagonal: Math.hypot(...spans) };
|
|
187
|
+
}
|
|
188
|
+
function exactContours(cad, scene, options, framed) {
|
|
189
|
+
const { frame, uBounds, vBounds, margin, diagonal } = framed;
|
|
190
|
+
const face = cad.transform(cad.makeRectangle(uBounds.max - uBounds.min + margin * 2, vBounds.max - vBounds.min + margin * 2), frame.matrix(uBounds.min - margin, vBounds.min - margin, options.offset));
|
|
191
|
+
const section = cad.section(scene, face);
|
|
192
|
+
if (Number(section) === 0)
|
|
193
|
+
return [];
|
|
194
|
+
return sampledContours(cad, section, options.plane, Math.max(diagonal * 0.002, 1e-4));
|
|
195
|
+
}
|
|
196
|
+
function meshContours(meshes, options) {
|
|
197
|
+
const frame = FRAMES[options.plane];
|
|
198
|
+
const axes = { normal: AXIS_INDEX[frame.normal], u: AXIS_INDEX[frame.u], v: AXIS_INDEX[frame.v], offset: options.offset };
|
|
199
|
+
return meshes.flatMap((positions) => sectionTriangleSoup(positions, axes));
|
|
200
|
+
}
|
|
201
|
+
function finishedDrawing(contours, options, framed) {
|
|
202
|
+
const points = contours.reduce((sum, contour) => sum + contour.length / 2, 0);
|
|
203
|
+
if (contours.length > MAX_CONTOURS || points > MAX_SAMPLED_POINTS) {
|
|
204
|
+
throw new ServerCadError("Section drawing is too complex to return safely.", 413);
|
|
205
|
+
}
|
|
206
|
+
if (!contours.length)
|
|
207
|
+
throw new ServerCadError("The requested section plane produced no contours.", 422);
|
|
208
|
+
const drawing = { plane: options.plane, offset: options.offset, contours };
|
|
209
|
+
const bounds = { minU: framed.uBounds.min, maxU: framed.uBounds.max, minV: framed.vBounds.min, maxV: framed.vBounds.max };
|
|
210
|
+
return { drawing, bounds };
|
|
211
|
+
}
|
|
212
|
+
/** Cut the visible stored solids by a bounded plane and return scale-readable contours. */
|
|
83
213
|
async function sectionShapesToDrawing(shapes, options) {
|
|
84
214
|
validateRequest(shapes, options);
|
|
85
215
|
const visible = shapes.filter((shape) => shape.hidden !== true && shape.hole !== true);
|
|
86
216
|
if (!visible.length)
|
|
87
217
|
return Promise.reject(new ServerCadError("No visible solid objects to section.", 422));
|
|
218
|
+
const meshes = [];
|
|
219
|
+
const exact = [];
|
|
220
|
+
for (const shape of visible) {
|
|
221
|
+
const positions = drawingFramePositions(shape);
|
|
222
|
+
if (positions)
|
|
223
|
+
meshes.push(positions);
|
|
224
|
+
else
|
|
225
|
+
exact.push(shape);
|
|
226
|
+
}
|
|
227
|
+
const meshBounds = meshes.map(positionBounds).filter((bounds) => bounds !== null);
|
|
228
|
+
if (!exact.length) {
|
|
229
|
+
const framed = checkedFrame(unionBounds(meshBounds), options);
|
|
230
|
+
return finishedDrawing(meshContours(meshes, options), options, framed);
|
|
231
|
+
}
|
|
88
232
|
return withCadKernel((cad) => {
|
|
89
|
-
const scene = sectionCompound(cad,
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
throw new ServerCadError("The selected scene has coordinates outside the supported section range.", 413);
|
|
94
|
-
}
|
|
95
|
-
const frame = FRAMES[options.plane];
|
|
96
|
-
const normal = axisBounds(bounds, frame.normal);
|
|
97
|
-
if (options.offset < normal.min - 1e-7 || options.offset > normal.max + 1e-7) {
|
|
98
|
-
throw new ServerCadError("The requested section plane does not intersect the selected scene.", 422);
|
|
99
|
-
}
|
|
100
|
-
const uBounds = axisBounds(bounds, frame.u);
|
|
101
|
-
const vBounds = axisBounds(bounds, frame.v);
|
|
102
|
-
const spans = [bounds.xmax - bounds.xmin, bounds.ymax - bounds.ymin, bounds.zmax - bounds.zmin];
|
|
103
|
-
if (spans.some((span) => span > MAX_SECTION_SPAN)) {
|
|
104
|
-
throw new ServerCadError(`Section drawings support a maximum section span of ${MAX_SECTION_SPAN} mm.`, 413);
|
|
105
|
-
}
|
|
106
|
-
const margin = Math.max(1, Math.max(uBounds.max - uBounds.min, vBounds.max - vBounds.min) * 0.02);
|
|
107
|
-
if (uBounds.max - uBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN || vBounds.max - vBounds.min + margin * 2 > MAX_SECTION_FACE_SPAN) {
|
|
108
|
-
throw new ServerCadError(`Section faces are limited to ${MAX_SECTION_FACE_SPAN} mm on each side.`, 413);
|
|
109
|
-
}
|
|
110
|
-
const face = cad.transform(cad.makeRectangle(uBounds.max - uBounds.min + margin * 2, vBounds.max - vBounds.min + margin * 2), frame.matrix(uBounds.min - margin, vBounds.min - margin, options.offset));
|
|
111
|
-
const section = cad.section(scene, face);
|
|
112
|
-
if (Number(section) === 0)
|
|
113
|
-
throw new ServerCadError("The requested section plane produced no contours.", 422);
|
|
114
|
-
const diagonal = Math.hypot(...spans);
|
|
115
|
-
const contours = sampledContours(cad, section, options.plane, Math.max(diagonal * 0.002, 1e-4));
|
|
116
|
-
if (!contours.length)
|
|
117
|
-
throw new ServerCadError("The requested section plane produced no contours.", 422);
|
|
118
|
-
const drawing = { plane: options.plane, offset: options.offset, contours };
|
|
119
|
-
return { drawing, bounds: {
|
|
120
|
-
minU: uBounds.min, maxU: uBounds.max,
|
|
121
|
-
minV: vBounds.min, maxV: vBounds.max,
|
|
122
|
-
} };
|
|
233
|
+
const scene = sectionCompound(cad, exact);
|
|
234
|
+
const framed = checkedFrame(unionBounds([cad.getBoundingBox(scene, false), ...meshBounds]), options);
|
|
235
|
+
const contours = exactContours(cad, scene, options, framed);
|
|
236
|
+
return finishedDrawing([...contours, ...meshContours(meshes, options)], options, framed);
|
|
123
237
|
});
|
|
124
238
|
}
|
|
125
239
|
export async function sectionShapesToSvg(shapes, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverCadSection.js","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAA0C,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAKjE,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAKnC,MAAM,MAAM,GAAqC;IAC/C,EAAE,EAAE;QACF,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;QAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;KACpE;IACD,EAAE,EAAE;QACF,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;QAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACrE;IACD,EAAE,EAAE;QACF,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;QAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACpE;CACF,CAAC;AAEF,SAAS,UAAU,CAAC,MAAc,EAAE,IAAqB;IACvD,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,MAAiC,EAAE,OAAuB;IACjF,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,yBAAyB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9I,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;QAC3E,MAAM,IAAI,cAAc,CAAC,wEAAwE,EAAE,GAAG,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB;QAAE,MAAM,IAAI,cAAc,CAAC,2CAA2C,kBAAkB,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/I,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnG,IAAI,SAAS,GAAG,kBAAkB;QAAE,MAAM,IAAI,cAAc,CAAC,yCAAyC,kBAAkB,2BAA2B,EAAE,GAAG,CAAC,CAAC;AAC5J,CAAC;AAED,SAAS,eAAe,CAAC,GAAe,EAAE,MAAiC;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;IACxH,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAmB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAC9E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,GAAe,EAAE,OAAoB,EAAE,KAAmB,EAAE,UAAkB;IACrG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAkB,EAAE,CAAC;QACnF,MAAM,IAAI,cAAc,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5D,MAAM,IAAI,cAAc,CAAC,qDAAqD,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAC/B,KAAK,EACL,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,EACrB,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,EACzB,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAC1B,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,cAAc,CAAC,yDAAyD,CAAC,CAAC;YACtF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+FAA+F;AAC/F,KAAK,UAAU,sBAAsB,CAAC,MAAiC,EAAE,OAAuB;IAC9F,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvF,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC,CAAC;IAE5G,OAAO,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9F,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,cAAc,CAAC,yEAAyE,EAAE,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;YAC7E,MAAM,IAAI,cAAc,CAAC,oEAAoE,EAAE,GAAG,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,cAAc,CAAC,sDAAsD,gBAAgB,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAClG,IAAI,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,qBAAqB,IAAI,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,qBAAqB,EAAE,CAAC;YACrI,MAAM,IAAI,cAAc,CAAC,gCAAgC,qBAAqB,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC1G,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CACxB,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,EACjG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CACzE,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,MAAM,IAAI,cAAc,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;QACzG,MAAM,OAAO,GAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;gBACxB,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG;gBACpC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG;aACrC,EAAE,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAiC,EAAE,OAAuB;IACjG,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAiC,EAAE,OAAuB;IACjG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClE,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"serverCadSection.js","sourceRoot":"","sources":["../src/serverCadSection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverCadShell.d.ts","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAsH,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACpL,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5F,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC5C,CAAC;AAgBF,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"serverCadShell.d.ts","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAsH,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACpL,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5F,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC5C,CAAC;AAgBF,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAQhH;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB1G"}
|
package/dist/serverCadShell.js
CHANGED
|
@@ -32,9 +32,6 @@ function faceSummaries(cad, solid, shape, preferStoredIds = true) {
|
|
|
32
32
|
export function shapeFaces(shape, options = {}) {
|
|
33
33
|
return withCadKernel((cad) => {
|
|
34
34
|
if (options.topology === "exact" && isPlainFullTurnSketchRevolve(shape)) {
|
|
35
|
-
if (shape.faceColors && Object.keys(shape.faceColors).length > 0) {
|
|
36
|
-
throw new ServerCadError("Exact revolve face listing is unavailable while legacy face colors are stored.");
|
|
37
|
-
}
|
|
38
35
|
const exact = exactPlainSketchRevolveSolid(cad, shape.sketchProfile, shape.sketchRevolve, shape);
|
|
39
36
|
return faceSummaries(cad, exact, shape, false);
|
|
40
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverCadShell.js","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAwB,MAAM,0BAA0B,CAAC;AACpL,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAC;AAGjG,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAsB,MAAM,eAAe,CAAC;AAc5F,SAAS,aAAa,CAAC,GAAe,EAAE,KAAkB,EAAE,KAAqB,EAAE,eAAe,GAAG,IAAI;IACvG,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,eAAe,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;QACnF,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,KAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"serverCadShell.js","sourceRoot":"","sources":["../src/serverCadShell.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,81 @@ export type GroupBuildOutcome = {
|
|
|
54
54
|
* `generalTransform` because a reflection is not a rigid placement.
|
|
55
55
|
*/
|
|
56
56
|
export declare function placedSolidForShape(cad: OcctKernel, shape: WorkplaneShape): ShapeHandle;
|
|
57
|
+
/** Which stored representation supplied the geometry, and whether it is exact. */
|
|
58
|
+
export type ShapeGeometryProvenance = {
|
|
59
|
+
/** Which stored representation supplied the geometry that was measured. */
|
|
60
|
+
source: "parametric" | "brep" | "mesh";
|
|
61
|
+
/** Imported triangle meshes remain tessellated even after sewing into a solid. */
|
|
62
|
+
precision: "exact" | "tessellated";
|
|
63
|
+
};
|
|
64
|
+
export type PlacedSolid = {
|
|
65
|
+
solid: ShapeHandle;
|
|
66
|
+
provenance: ShapeGeometryProvenance;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* The shape as a placed solid, together with the representation it was
|
|
70
|
+
* actually built from. Reported by the builder rather than guessed from the
|
|
71
|
+
* shape's fields beforehand, because only building it can tell whether a
|
|
72
|
+
* stored B-rep passed its check or a group member fell back to its mesh.
|
|
73
|
+
*/
|
|
74
|
+
export declare function placedSolid(cad: OcctKernel, shape: WorkplaneShape): PlacedSolid;
|
|
75
|
+
/**
|
|
76
|
+
* Whether the shape is a boolean result whose stored B-rep is still the exact
|
|
77
|
+
* form of the mesh it is drawn with (#541).
|
|
78
|
+
*
|
|
79
|
+
* A cut stores two descriptions of one solid: the triangles the viewport
|
|
80
|
+
* draws, and the B-rep they were tessellated from, both in the result's own
|
|
81
|
+
* frame -- centred in X and Z, base at Y = 0. While the two agree, the B-rep is
|
|
82
|
+
* the better answer to "what is this solid", so measurement, interference and
|
|
83
|
+
* a further boolean read it instead of sewing the triangles back up.
|
|
84
|
+
*
|
|
85
|
+
* They stop agreeing when an edit reaches the mesh and not the B-rep. Moving,
|
|
86
|
+
* turning and mirroring do not: they are placement, applied to both alike. A
|
|
87
|
+
* resize does, because it stretches the stored triangles and the B-rep keeps
|
|
88
|
+
* its original size; so does a taper, and so does a frame recorded with a
|
|
89
|
+
* baked `sourceTransform`, which puts the B-rep somewhere other than the
|
|
90
|
+
* mesh's frame. A result made from a mesh operand is left out too: its B-rep
|
|
91
|
+
* was sewn from triangles, so calling it exact would be a claim about
|
|
92
|
+
* geometry nobody ever had.
|
|
93
|
+
*
|
|
94
|
+
* Edge treatments, drafts and shells rewrite the B-rep under their own rules
|
|
95
|
+
* and stay on the paths they had.
|
|
96
|
+
*/
|
|
97
|
+
export declare function hasCurrentResultBrep(shape: WorkplaneShape): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* A boolean result's stored B-rep, placed where the shape stands, or null to
|
|
100
|
+
* use its mesh instead.
|
|
101
|
+
*
|
|
102
|
+
* Placed the way the mesh is placed, since the two share a frame: mirrored
|
|
103
|
+
* exactly about the shape's centre, then moved rigidly, so the cut's
|
|
104
|
+
* cylinders stay cylinders. A cut's B-rep is in the result's own frame, at the
|
|
105
|
+
* origin -- what `cadBrepFrame` records for a cut since #548, and what loading
|
|
106
|
+
* a project corrects an older cut's frame to (`migratePre548CutBrepFrames`) --
|
|
107
|
+
* so the frame's position is not needed here; `cadBrepTransformForShape` would
|
|
108
|
+
* give the same placement, only with the mirror folded into an affine scale.
|
|
109
|
+
* A B-rep stored anywhere else fails the bounds check below and falls back to
|
|
110
|
+
* the mesh.
|
|
111
|
+
*
|
|
112
|
+
* The B-rep is checked against the mesh before it is trusted, because the
|
|
113
|
+
* structural test cannot see an edit that replaced the triangles and left the
|
|
114
|
+
* B-rep behind. The triangles' corners lie on the true surfaces, so the two
|
|
115
|
+
* boxes agree to within the meshing tolerance; a B-rep that misses by more is
|
|
116
|
+
* describing something else, and the mesh is what is on screen.
|
|
117
|
+
*/
|
|
118
|
+
export declare function placedResultBrepSolid(cad: OcctKernel, shape: WorkplaneShape): ShapeHandle | null;
|
|
119
|
+
/**
|
|
120
|
+
* A plain revolve's exact solid where it stands, as BREP text, or null for any
|
|
121
|
+
* other shape: what the STEP exporter writes for a revolve instead of skipping
|
|
122
|
+
* it as a mesh with no B-rep source (#523).
|
|
123
|
+
*/
|
|
124
|
+
export declare function placedExactRevolveBrep(shape: WorkplaneShape): Promise<string | null>;
|
|
125
|
+
/**
|
|
126
|
+
* Whether the shape is a group held only as a record of its children.
|
|
127
|
+
*
|
|
128
|
+
* Grouping solids with no hole among them stores the children and nothing
|
|
129
|
+
* else, in the editor and here alike, so there is no mesh or BREP to read.
|
|
130
|
+
*/
|
|
131
|
+
export declare function isGroupRecord(shape: WorkplaneShape): boolean;
|
|
57
132
|
/**
|
|
58
133
|
* A group holding the given shapes, with any hole among them cut out.
|
|
59
134
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverShapeBooleans.d.ts","sourceRoot":"","sources":["../src/serverShapeBooleans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"serverShapeBooleans.d.ts","sourceRoot":"","sources":["../src/serverShapeBooleans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkBzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GACzB;IACA,KAAK,EAAE,cAAc,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAuBtC;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAEvF;AAED,kFAAkF;AAClF,MAAM,MAAM,uBAAuB,GAAG;IACpC,2EAA2E;IAC3E,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,kFAAkF;IAClF,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAkBtF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAuB/E;AAkBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAUnE;AA8CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,GAAG,IAAI,CA6BhG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGpF;AAQD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,WAElD;AAuED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6ErG"}
|