@danielsimonjr/sciengjs 1.0.4 → 1.0.6
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/README.md +3 -1
- package/dist/core.js +1 -0
- package/dist/core.js.map +1 -1
- package/dist/mesh/backend-dfm.d.ts +7 -0
- package/dist/mesh/backend-dfm.js +30 -0
- package/dist/mesh/backend-dfm.js.map +1 -0
- package/dist/mesh/backend-dxf.d.ts +8 -0
- package/dist/mesh/backend-dxf.js +39 -0
- package/dist/mesh/backend-dxf.js.map +1 -0
- package/dist/mesh/backend-glb.d.ts +6 -0
- package/dist/mesh/backend-glb.js +11 -5
- package/dist/mesh/backend-glb.js.map +1 -1
- package/dist/mesh/cad-build.d.ts +53 -0
- package/dist/mesh/cad-build.js +97 -4
- package/dist/mesh/cad-build.js.map +1 -1
- package/dist/mesh/dfm.d.ts +18 -0
- package/dist/mesh/dfm.js +73 -0
- package/dist/mesh/dfm.js.map +1 -0
- package/dist/mesh/dxf.d.ts +8 -0
- package/dist/mesh/dxf.js +29 -0
- package/dist/mesh/dxf.js.map +1 -0
- package/dist/mesh/index.d.ts +6 -3
- package/dist/mesh/index.js +4 -2
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/threemf.d.ts +4 -4
- package/dist/mesh/threemf.js +6 -6
- package/dist/pairs.js +2 -0
- package/dist/pairs.js.map +1 -1
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -305,6 +305,8 @@ const { bytes } = await render({ type: "cad", source, format: "stl" }, {});
|
|
|
305
305
|
- The faces keep the colour of the primitive that made them. The cut face of a `difference` has the colour of the cutter.
|
|
306
306
|
- STL holds no colour and no name. A coloured model gives a warning in STL.
|
|
307
307
|
- `format: "3mf"` gives a 3MF package that keeps the colours and the names. The unit is millimeter.
|
|
308
|
+
- `format: "dxf"` gives a 2D drawing in the X-Y plane: the outline of the model, or with the option `z` the section at that height. Each closed contour is one closed polyline, in millimetres.
|
|
309
|
+
- `format: "md"` gives a report of the design for manufacture in Markdown: the size, the volume and the surface area, and two checks. The overhang check gives the area that needs support for a print along +Z (option `overhang`, default 45 degrees from the vertical). The wall check finds the walls thinner than the option `minWall` (default 0.8 mm) in 32 sections on each axis. A failed check does not reject the render.
|
|
308
310
|
- A document with more than `maxCadNodes` nodes rejects with `E_LIMIT` before the solid operations start. A model with more than `maxCadFacets` facets also rejects with `E_LIMIT`.
|
|
309
311
|
- A bad value rejects with `E_INPUT`. The message gives the JSON path, for example `model.children[1].radius`.
|
|
310
312
|
|
|
@@ -342,7 +344,7 @@ The [build plan](docs/superpowers/plans/2026-11-01-scieng-engine-build.md) gives
|
|
|
342
344
|
| Plots | plot | svg, png and html: released in 0.5.0; pdf is not planned |
|
|
343
345
|
| SysML v2 | sysml, graph | svg, png and pdf: released in 0.9.0 |
|
|
344
346
|
| STEP, IGES, BREP | mesh (OpenCascade WASM) | glb, html and png: released in 0.7.0 |
|
|
345
|
-
| CAD documents | mesh (`manifold-3d`) | glb, stl, html and png: released in 0.8.0; 3mf: released in 1.0.4 |
|
|
347
|
+
| CAD documents | mesh (`manifold-3d`) | glb, stl, html and png: released in 0.8.0; 3mf: released in 1.0.4; dxf: released in 1.0.5; md (design for manufacture): released in 1.0.6 |
|
|
346
348
|
| HTML to PNG, PDF and Markdown | html, browser | PNG and PDF: released in 0.3.0; Markdown: released in 0.6.0 |
|
|
347
349
|
|
|
348
350
|
## Use from an agent
|
package/dist/core.js
CHANGED
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAiG,MAAM,YAAY,CAAC;AAE5K,2CAA2C;AAC3C,MAAM,IAAI,GAAiC;IACzC,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,0BAA0B;IAChC,EAAE,EAAE,8BAA8B;IAClC,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,WAAW;IAChB,KAAK,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Renders a CAD document to a Markdown report of the design for manufacture. The worker calls this function.
|
|
4
|
+
* The report gives the measures of the model, the overhang check and the wall check. A failed check does not
|
|
5
|
+
* reject the render.
|
|
6
|
+
*/
|
|
7
|
+
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { RenderError } from "../errors.js";
|
|
2
|
+
import { readCadRequest } from "./backend-glb.js";
|
|
3
|
+
import { measureCad } from "./cad-build.js";
|
|
4
|
+
import { DFM_DEFAULTS, writeDfmReport } from "./dfm.js";
|
|
5
|
+
/** Reads the options of a report: overhang (degrees, between 0 and 90) and minWall (millimetres, larger than 0). */
|
|
6
|
+
function readDfmOptions(options) {
|
|
7
|
+
for (const key of Object.keys(options)) {
|
|
8
|
+
if (key !== "overhang" && key !== "minWall")
|
|
9
|
+
throw new RenderError("E_INPUT", `cad to md takes no option ${key}`);
|
|
10
|
+
}
|
|
11
|
+
const { overhang = DFM_DEFAULTS.overhang, minWall = DFM_DEFAULTS.minWall } = options;
|
|
12
|
+
if (typeof overhang !== "number" || !(overhang > 0 && overhang < 90)) {
|
|
13
|
+
throw new RenderError("E_INPUT", "option overhang must be a number larger than 0 and smaller than 90");
|
|
14
|
+
}
|
|
15
|
+
if (typeof minWall !== "number" || !Number.isFinite(minWall) || minWall <= 0) {
|
|
16
|
+
throw new RenderError("E_INPUT", "option minWall must be a finite number larger than 0");
|
|
17
|
+
}
|
|
18
|
+
return { overhang, minWall };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Renders a CAD document to a Markdown report of the design for manufacture. The worker calls this function.
|
|
22
|
+
* The report gives the measures of the model, the overhang check and the wall check. A failed check does not
|
|
23
|
+
* reject the render.
|
|
24
|
+
*/
|
|
25
|
+
export async function render(request) {
|
|
26
|
+
const options = readDfmOptions(request.options);
|
|
27
|
+
const measures = await measureCad(readCadRequest(request), request.settings.maxCadFacets, options.minWall);
|
|
28
|
+
return { bytes: writeDfmReport(measures, options) };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=backend-dfm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-dfm.js","sourceRoot":"","sources":["../../src/mesh/backend-dfm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAExD,oHAAoH;AACpH,SAAS,cAAc,CAAC,OAAgC;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,6BAA6B,GAAG,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC;IACrF,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,oEAAoE,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,sDAAsD,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3G,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Renders a CAD document to a DXF drawing in the X-Y plane. The worker calls this function. With no option, the
|
|
4
|
+
* drawing is the outline of the model. The option z gives the section at that height. DXF holds no colour, so
|
|
5
|
+
* the render warns when the model has a colour. An output over maxMemoryMb rejects with E_LIMIT before the
|
|
6
|
+
* writer starts.
|
|
7
|
+
*/
|
|
8
|
+
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { RenderError } from "../errors.js";
|
|
2
|
+
import { readCadRequest } from "./backend-glb.js";
|
|
3
|
+
import { drawCad } from "./cad-build.js";
|
|
4
|
+
import { dxfByteLength, writeDxf } from "./dxf.js";
|
|
5
|
+
/** Reads the options of a dxf render. The one option is z, a finite number. An unknown key rejects with E_INPUT. */
|
|
6
|
+
function readZ(options) {
|
|
7
|
+
for (const key of Object.keys(options)) {
|
|
8
|
+
if (key !== "z")
|
|
9
|
+
throw new RenderError("E_INPUT", `cad to dxf takes no option ${key}`);
|
|
10
|
+
}
|
|
11
|
+
const z = options.z;
|
|
12
|
+
if (z !== undefined && (typeof z !== "number" || !Number.isFinite(z))) {
|
|
13
|
+
throw new RenderError("E_INPUT", "option z must be a finite number");
|
|
14
|
+
}
|
|
15
|
+
return z;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Renders a CAD document to a DXF drawing in the X-Y plane. The worker calls this function. With no option, the
|
|
19
|
+
* drawing is the outline of the model. The option z gives the section at that height. DXF holds no colour, so
|
|
20
|
+
* the render warns when the model has a colour. An output over maxMemoryMb rejects with E_LIMIT before the
|
|
21
|
+
* writer starts.
|
|
22
|
+
*/
|
|
23
|
+
export async function render(request) {
|
|
24
|
+
const z = readZ(request.options);
|
|
25
|
+
const { contours, colored } = await drawCad(readCadRequest(request), request.settings.maxCadFacets, z);
|
|
26
|
+
if (contours.length === 0) {
|
|
27
|
+
throw new RenderError("E_INPUT", z === undefined ? "the outline holds no contour" : `the drawing at z = ${z} holds no contour`);
|
|
28
|
+
}
|
|
29
|
+
const needed = dxfByteLength(contours);
|
|
30
|
+
const limitBytes = Math.floor(request.settings.maxMemoryMb * 1048576);
|
|
31
|
+
if (needed > limitBytes) {
|
|
32
|
+
throw new RenderError("E_LIMIT", "the dxf output needs " + needed + " bytes; the limit is " + limitBytes + " bytes");
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
bytes: writeDxf(contours),
|
|
36
|
+
warnings: colored ? ["dxf holds no colour and no name; the colours of the model are dropped"] : undefined,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=backend-dxf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-dxf.js","sourceRoot":"","sources":["../../src/mesh/backend-dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,oHAAoH;AACpH,SAAS,KAAK,CAAC,OAAgC;IAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,KAAK,GAAG;YAAE,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,8BAA8B,GAAG,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACvG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;IACtE,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,uBAAuB,GAAG,MAAM,GAAG,uBAAuB,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;IACvH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACzB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,CAAC,SAAS;KAC1G,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
2
|
import { buildCad } from "./cad-build.ts";
|
|
3
|
+
import { type CadDocument } from "./cad-document.ts";
|
|
3
4
|
import { readCad, type CadFormat, type CadMesh, type LinearUnit } from "./read.ts";
|
|
4
5
|
/**
|
|
5
6
|
* The number of copies of the geometry that a glb render holds at its peak: the typed arrays of the
|
|
@@ -20,6 +21,11 @@ export interface GlbDeps {
|
|
|
20
21
|
readCad: typeof readCad;
|
|
21
22
|
buildCad: typeof buildCad;
|
|
22
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Reads the CAD document of a render request: JSON text, checked against the node and facet limits. A source that
|
|
26
|
+
* is not text rejects with E_INPUT.
|
|
27
|
+
*/
|
|
28
|
+
export declare function readCadRequest(request: WorkerJob["request"]): CadDocument;
|
|
23
29
|
/**
|
|
24
30
|
* Reads the meshes of a mesh render. A CAD document is JSON text, checked against the node and facet limits and
|
|
25
31
|
* built through manifold-3d. A CAD render takes no option. STEP, IGES and BREP are bytes, read through occt-import-js.
|
package/dist/mesh/backend-glb.js
CHANGED
|
@@ -53,6 +53,16 @@ export function readMeshOptions(format, options) {
|
|
|
53
53
|
return { linearUnit: unit };
|
|
54
54
|
}
|
|
55
55
|
const DEFAULT_DEPS = { readCad, buildCad };
|
|
56
|
+
/**
|
|
57
|
+
* Reads the CAD document of a render request: JSON text, checked against the node and facet limits. A source that
|
|
58
|
+
* is not text rejects with E_INPUT.
|
|
59
|
+
*/
|
|
60
|
+
export function readCadRequest(request) {
|
|
61
|
+
if (typeof request.source !== "string")
|
|
62
|
+
throw new RenderError("E_INPUT", "cad takes JSON text, not bytes");
|
|
63
|
+
const { maxCadNodes, maxCadFacets } = request.settings;
|
|
64
|
+
return parseCadDocument(request.source, { maxNodes: maxCadNodes, maxFacets: maxCadFacets }).document;
|
|
65
|
+
}
|
|
56
66
|
/**
|
|
57
67
|
* Reads the meshes of a mesh render. A CAD document is JSON text, checked against the node and facet limits and
|
|
58
68
|
* built through manifold-3d. A CAD render takes no option. STEP, IGES and BREP are bytes, read through occt-import-js.
|
|
@@ -62,13 +72,9 @@ export async function readMeshes(request, deps = {}) {
|
|
|
62
72
|
const d = { ...DEFAULT_DEPS, ...deps };
|
|
63
73
|
let meshes;
|
|
64
74
|
if (request.type === "cad") {
|
|
65
|
-
if (typeof request.source !== "string")
|
|
66
|
-
throw new RenderError("E_INPUT", "cad takes JSON text, not bytes");
|
|
67
75
|
for (const key of Object.keys(request.options))
|
|
68
76
|
throw new RenderError("E_INPUT", `cad takes no option ${key}`);
|
|
69
|
-
|
|
70
|
-
const checked = parseCadDocument(request.source, { maxNodes: maxCadNodes, maxFacets: maxCadFacets });
|
|
71
|
-
meshes = [(await d.buildCad(checked.document, maxCadFacets)).mesh];
|
|
77
|
+
meshes = [(await d.buildCad(readCadRequest(request), request.settings.maxCadFacets)).mesh];
|
|
72
78
|
}
|
|
73
79
|
else {
|
|
74
80
|
const format = request.type;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-glb.js","sourceRoot":"","sources":["../../src/mesh/backend-glb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"backend-glb.js","sourceRoot":"","sources":["../../src/mesh/backend-glb.ts"],"names":[],"mappings":"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"}
|
package/dist/mesh/cad-build.d.ts
CHANGED
|
@@ -17,7 +17,24 @@ interface Solid {
|
|
|
17
17
|
getMesh(normalIdx?: number): ManifoldMesh;
|
|
18
18
|
numTri(): number;
|
|
19
19
|
volume(): number;
|
|
20
|
+
surfaceArea(): number;
|
|
21
|
+
boundingBox(): {
|
|
22
|
+
min: number[];
|
|
23
|
+
max: number[];
|
|
24
|
+
};
|
|
20
25
|
status(): string;
|
|
26
|
+
slice(height: number): Section;
|
|
27
|
+
project(): Section;
|
|
28
|
+
delete(): void;
|
|
29
|
+
}
|
|
30
|
+
/** A planar section of a solid. Each polygon is a closed contour of [x, y] points. */
|
|
31
|
+
interface Section {
|
|
32
|
+
toPolygons(): number[][][];
|
|
33
|
+
offset(delta: number, joinType: "Round", miterLimit: number, circularSegments: number): Section;
|
|
34
|
+
subtract(other: Section): Section;
|
|
35
|
+
simplify(epsilon: number): Section;
|
|
36
|
+
decompose(): Section[];
|
|
37
|
+
area(): number;
|
|
21
38
|
delete(): void;
|
|
22
39
|
}
|
|
23
40
|
interface Profile {
|
|
@@ -66,4 +83,40 @@ export interface CadBuildResult {
|
|
|
66
83
|
* The faces carry the colours of the primitives. A result over maxFacets rejects with E_LIMIT.
|
|
67
84
|
*/
|
|
68
85
|
export declare function buildCad(document: CadDocument, maxFacets: number): Promise<CadBuildResult>;
|
|
86
|
+
/** The result of a drawing: the closed contours in the X-Y plane, and whether the model has a colour. */
|
|
87
|
+
export interface CadDrawing {
|
|
88
|
+
contours: number[][][];
|
|
89
|
+
colored: boolean;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Draws a checked document in the X-Y plane. With no height, the drawing is the outline of the solid seen from
|
|
93
|
+
* above. With a height, the drawing is the section of the solid at that height. A result over maxFacets rejects
|
|
94
|
+
* with E_LIMIT.
|
|
95
|
+
*/
|
|
96
|
+
export declare function drawCad(document: CadDocument, maxFacets: number, z?: number): Promise<CadDrawing>;
|
|
97
|
+
/** The number of sections of the wall check on each axis. */
|
|
98
|
+
export declare const WALL_SECTIONS = 32;
|
|
99
|
+
/** A section of the wall check with a thin region: the axis, the position on the axis and the thin area. */
|
|
100
|
+
export interface ThinSection {
|
|
101
|
+
axis: "X" | "Y" | "Z";
|
|
102
|
+
at: number;
|
|
103
|
+
area: number;
|
|
104
|
+
}
|
|
105
|
+
/** The measures of a solid for the report of the design for manufacture. */
|
|
106
|
+
export interface CadMeasures {
|
|
107
|
+
min: number[];
|
|
108
|
+
max: number[];
|
|
109
|
+
volume: number;
|
|
110
|
+
area: number;
|
|
111
|
+
/** The vertex positions (x, y, z) and the triangles (three vertex indices each) of the solid. */
|
|
112
|
+
positions: Float32Array;
|
|
113
|
+
triangles: Uint32Array;
|
|
114
|
+
thin: ThinSection[];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Measures a checked document for the report of the design for manufacture. The wall check cuts WALL_SECTIONS
|
|
118
|
+
* sections on each axis. An opening of each section by minWall removes each wall thinner than minWall. A model
|
|
119
|
+
* with no solid rejects with E_INPUT.
|
|
120
|
+
*/
|
|
121
|
+
export declare function measureCad(document: CadDocument, maxFacets: number, minWall: number): Promise<CadMeasures>;
|
|
69
122
|
export {};
|
package/dist/mesh/cad-build.js
CHANGED
|
@@ -142,7 +142,102 @@ class Build {
|
|
|
142
142
|
* Builds the solid of a checked document and returns one mesh with flat normals at sharp edges.
|
|
143
143
|
* The faces carry the colours of the primitives. A result over maxFacets rejects with E_LIMIT.
|
|
144
144
|
*/
|
|
145
|
-
export
|
|
145
|
+
export function buildCad(document, maxFacets) {
|
|
146
|
+
return withSolid(document, maxFacets, (solid, build) => {
|
|
147
|
+
const shaded = build.keep(solid.calculateNormals(NORMAL_CHANNEL, SHARP_ANGLE));
|
|
148
|
+
const out = shaded.getMesh(NORMAL_CHANNEL);
|
|
149
|
+
return { mesh: toCadMesh(out, build.colors, document.model.name ?? "model"), volume: solid.volume() };
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Draws a checked document in the X-Y plane. With no height, the drawing is the outline of the solid seen from
|
|
154
|
+
* above. With a height, the drawing is the section of the solid at that height. A result over maxFacets rejects
|
|
155
|
+
* with E_LIMIT.
|
|
156
|
+
*/
|
|
157
|
+
export function drawCad(document, maxFacets, z) {
|
|
158
|
+
return withSolid(document, maxFacets, (solid, build) => {
|
|
159
|
+
const section = build.keep(z === undefined ? solid.project() : solid.slice(z));
|
|
160
|
+
const colored = [...build.colors.values()].some((c) => c !== null);
|
|
161
|
+
return { contours: section.toPolygons(), colored };
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/** The axes of the wall check. A rotation turns each axis into the Z axis, so that a slice of the turned solid cuts across the original axis. */
|
|
165
|
+
const SECTION_AXES = [
|
|
166
|
+
{ axis: "X", index: 0, angles: [0, -90, 0] },
|
|
167
|
+
{ axis: "Y", index: 1, angles: [90, 0, 0] },
|
|
168
|
+
{ axis: "Z", index: 2, angles: [0, 0, 0] },
|
|
169
|
+
];
|
|
170
|
+
/** The segments of a full circle in the round joins of the wall check. The joins shape only the corners of an opening. */
|
|
171
|
+
const OFFSET_SEGMENTS = 32;
|
|
172
|
+
/** The number of sections of the wall check on each axis. */
|
|
173
|
+
export const WALL_SECTIONS = 32;
|
|
174
|
+
/**
|
|
175
|
+
* Measures a checked document for the report of the design for manufacture. The wall check cuts WALL_SECTIONS
|
|
176
|
+
* sections on each axis. An opening of each section by minWall removes each wall thinner than minWall. A model
|
|
177
|
+
* with no solid rejects with E_INPUT.
|
|
178
|
+
*/
|
|
179
|
+
export function measureCad(document, maxFacets, minWall) {
|
|
180
|
+
return withSolid(document, maxFacets, (solid, build) => {
|
|
181
|
+
if (solid.numTri() === 0)
|
|
182
|
+
throw new RenderError("E_INPUT", "the model holds no solid");
|
|
183
|
+
const { min, max } = solid.boundingBox();
|
|
184
|
+
const mesh = solid.getMesh();
|
|
185
|
+
const positions = new Float32Array(mesh.vertProperties.length / mesh.numProp * 3);
|
|
186
|
+
for (let v = 0; v < positions.length / 3; v++) {
|
|
187
|
+
for (let c = 0; c < 3; c++)
|
|
188
|
+
positions[v * 3 + c] = mesh.vertProperties[v * mesh.numProp + c];
|
|
189
|
+
}
|
|
190
|
+
const thin = [];
|
|
191
|
+
for (const { axis, index, angles } of SECTION_AXES) {
|
|
192
|
+
const turned = index === 2 ? solid : build.keep(solid.rotate([...angles]));
|
|
193
|
+
const lo = min[index];
|
|
194
|
+
const step = (max[index] - lo) / WALL_SECTIONS;
|
|
195
|
+
for (let i = 0; i < WALL_SECTIONS; i++) {
|
|
196
|
+
const at = lo + (i + 0.5) * step;
|
|
197
|
+
const area = thinArea(build, build.keep(turned.slice(at)), minWall);
|
|
198
|
+
if (area > 0)
|
|
199
|
+
thin.push({ axis, at, area });
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
min: [...min],
|
|
204
|
+
max: [...max],
|
|
205
|
+
volume: solid.volume(),
|
|
206
|
+
area: solid.surfaceArea(),
|
|
207
|
+
positions,
|
|
208
|
+
triangles: Uint32Array.from(mesh.triVerts),
|
|
209
|
+
thin,
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* The area of the regions of a section that an opening by minWall removes, less the corners of the opening. The
|
|
215
|
+
* opening shrinks the section by a little less than half of minWall, so that a wall equal to minWall stays. A
|
|
216
|
+
* removed region is thin when the region is wider than a quarter of minWall. A removed region is also thin when its
|
|
217
|
+
* area is more than the four corners of a square bar.
|
|
218
|
+
*/
|
|
219
|
+
function thinArea(build, section, minWall) {
|
|
220
|
+
const segments = OFFSET_SEGMENTS;
|
|
221
|
+
const half = (minWall / 2) * (1 - 1e-6);
|
|
222
|
+
const corner = (1 - Math.PI / 4) * minWall * minWall;
|
|
223
|
+
const opened = build.keep(build.keep(section.offset(-half, "Round", 2, segments)).offset(half, "Round", 2, segments));
|
|
224
|
+
// The subtraction leaves slivers of zero width with a reversed winding. A shrink grows such a sliver, so the
|
|
225
|
+
// simplify step removes the slivers before the corner test.
|
|
226
|
+
const removed = build.keep(build.keep(section.subtract(opened)).simplify(minWall / 1000));
|
|
227
|
+
let area = 0;
|
|
228
|
+
for (const piece of removed.decompose()) {
|
|
229
|
+
build.keep(piece);
|
|
230
|
+
const pieceArea = piece.area();
|
|
231
|
+
if (pieceArea > corner || build.keep(piece.offset(-minWall / 8, "Round", 2, segments)).area() > 0)
|
|
232
|
+
area += pieceArea;
|
|
233
|
+
}
|
|
234
|
+
return area;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Builds the solid of a checked document and gives the solid to the reader. The build frees every WASM object
|
|
238
|
+
* after the reader returns. A failed operation rejects with E_INPUT. A solid over maxFacets rejects with E_LIMIT.
|
|
239
|
+
*/
|
|
240
|
+
async function withSolid(document, maxFacets, read) {
|
|
146
241
|
const m = await loadManifold();
|
|
147
242
|
const build = new Build(m, document.segments ?? DEFAULT_SEGMENTS, maxFacets);
|
|
148
243
|
try {
|
|
@@ -160,9 +255,7 @@ export async function buildCad(document, maxFacets) {
|
|
|
160
255
|
throw new RenderError("E_INPUT", `the solid operations failed: ${String(status)}`);
|
|
161
256
|
}
|
|
162
257
|
build.checkFacets(solid);
|
|
163
|
-
|
|
164
|
-
const out = shaded.getMesh(NORMAL_CHANNEL);
|
|
165
|
-
return { mesh: toCadMesh(out, build.colors, document.model.name ?? "model"), volume: solid.volume() };
|
|
258
|
+
return read(solid, build);
|
|
166
259
|
}
|
|
167
260
|
finally {
|
|
168
261
|
build.free();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cad-build.js","sourceRoot":"","sources":["../../src/mesh/cad-build.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cad-build.js","sourceRoot":"","sources":["../../src/mesh/cad-build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CadMeasures } from "./cad-build.ts";
|
|
2
|
+
/** The options of the report of the design for manufacture. */
|
|
3
|
+
export interface DfmOptions {
|
|
4
|
+
/** The overhang angle in degrees from the vertical. */
|
|
5
|
+
overhang: number;
|
|
6
|
+
/** The minimum wall in millimetres. */
|
|
7
|
+
minWall: number;
|
|
8
|
+
}
|
|
9
|
+
/** The default options of the report. */
|
|
10
|
+
export declare const DFM_DEFAULTS: DfmOptions;
|
|
11
|
+
/**
|
|
12
|
+
* The area of the faces that need support when the model is printed upwards along +Z. A face needs support when
|
|
13
|
+
* its normal points down and the face is more than the overhang angle from the vertical. A face with each vertex
|
|
14
|
+
* on the lowest plane stands on the bed and needs no support.
|
|
15
|
+
*/
|
|
16
|
+
export declare function supportArea(positions: Float32Array, triangles: Uint32Array, minZ: number, overhang: number): number;
|
|
17
|
+
/** Writes the report of the design for manufacture as GitHub Flavored Markdown. */
|
|
18
|
+
export declare function writeDfmReport(measures: CadMeasures, options: DfmOptions): Uint8Array;
|
package/dist/mesh/dfm.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { WALL_SECTIONS } from "./cad-build.js";
|
|
2
|
+
/** The default options of the report. */
|
|
3
|
+
export const DFM_DEFAULTS = { overhang: 45, minWall: 0.8 };
|
|
4
|
+
/** The largest number of thin sections that the report lists on each axis. */
|
|
5
|
+
const LISTED_SECTIONS = 10;
|
|
6
|
+
/**
|
|
7
|
+
* The area of the faces that need support when the model is printed upwards along +Z. A face needs support when
|
|
8
|
+
* its normal points down and the face is more than the overhang angle from the vertical. A face with each vertex
|
|
9
|
+
* on the lowest plane stands on the bed and needs no support.
|
|
10
|
+
*/
|
|
11
|
+
export function supportArea(positions, triangles, minZ, overhang) {
|
|
12
|
+
const limit = -Math.sin((overhang * Math.PI) / 180);
|
|
13
|
+
const bed = minZ + 1e-6 * Math.max(1, Math.abs(minZ));
|
|
14
|
+
let total = 0;
|
|
15
|
+
for (let t = 0; t < triangles.length; t += 3) {
|
|
16
|
+
const a = triangles[t] * 3;
|
|
17
|
+
const b = triangles[t + 1] * 3;
|
|
18
|
+
const c = triangles[t + 2] * 3;
|
|
19
|
+
if (positions[a + 2] <= bed && positions[b + 2] <= bed && positions[c + 2] <= bed)
|
|
20
|
+
continue;
|
|
21
|
+
const ux = positions[b] - positions[a];
|
|
22
|
+
const uy = positions[b + 1] - positions[a + 1];
|
|
23
|
+
const uz = positions[b + 2] - positions[a + 2];
|
|
24
|
+
const vx = positions[c] - positions[a];
|
|
25
|
+
const vy = positions[c + 1] - positions[a + 1];
|
|
26
|
+
const vz = positions[c + 2] - positions[a + 2];
|
|
27
|
+
const nx = uy * vz - uz * vy;
|
|
28
|
+
const ny = uz * vx - ux * vz;
|
|
29
|
+
const nz = ux * vy - uy * vx;
|
|
30
|
+
const length = Math.hypot(nx, ny, nz);
|
|
31
|
+
if (length > 0 && nz / length < limit)
|
|
32
|
+
total += length / 2;
|
|
33
|
+
}
|
|
34
|
+
return total;
|
|
35
|
+
}
|
|
36
|
+
/** A number with at most three decimals, and no negative zero. */
|
|
37
|
+
function fixed(value) {
|
|
38
|
+
const rounded = Number(value.toFixed(3));
|
|
39
|
+
return String(rounded === 0 ? 0 : rounded);
|
|
40
|
+
}
|
|
41
|
+
/** Writes the report of the design for manufacture as GitHub Flavored Markdown. */
|
|
42
|
+
export function writeDfmReport(measures, options) {
|
|
43
|
+
const size = measures.max.map((high, i) => fixed(high - measures.min[i])).join(" x ");
|
|
44
|
+
const support = supportArea(measures.positions, measures.triangles, measures.min[2], options.overhang);
|
|
45
|
+
const supportText = fixed(support);
|
|
46
|
+
const sections = 3 * WALL_SECTIONS;
|
|
47
|
+
const lines = [
|
|
48
|
+
"# Design for manufacture",
|
|
49
|
+
"",
|
|
50
|
+
"| Measure | Value |",
|
|
51
|
+
"| --- | --- |",
|
|
52
|
+
`| Size (X x Y x Z) | ${size} mm |`,
|
|
53
|
+
`| Volume | ${fixed(measures.volume)} mm³ |`,
|
|
54
|
+
`| Surface area | ${fixed(measures.area)} mm² |`,
|
|
55
|
+
"",
|
|
56
|
+
"| Check | Result | Value | Limit |",
|
|
57
|
+
"| --- | --- | --- | --- |",
|
|
58
|
+
`| Overhang | ${support > 0 ? "fail" : "pass"} | ${supportText} mm² needs support | ${fixed(options.overhang)}° from the vertical |`,
|
|
59
|
+
`| Minimum wall | ${measures.thin.length === 0 ? "pass" : "fail"} | ${measures.thin.length} of ${sections} sections have a thin region | ${fixed(options.minWall)} mm |`,
|
|
60
|
+
];
|
|
61
|
+
if (measures.thin.length > 0) {
|
|
62
|
+
lines.push("", "## Thin walls", "");
|
|
63
|
+
for (const axis of ["X", "Y", "Z"]) {
|
|
64
|
+
const onAxis = measures.thin.filter((section) => section.axis === axis);
|
|
65
|
+
for (const s of onAxis.slice(0, LISTED_SECTIONS))
|
|
66
|
+
lines.push(`- ${axis} = ${fixed(s.at)} mm: ${fixed(s.area)} mm² thin`);
|
|
67
|
+
if (onAxis.length > LISTED_SECTIONS)
|
|
68
|
+
lines.push(`- and ${onAxis.length - LISTED_SECTIONS} more sections on ${axis}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return new TextEncoder().encode(lines.join("\n") + "\n");
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=dfm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dfm.js","sourceRoot":"","sources":["../../src/mesh/dfm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DXF writer of the mesh stage (design section "CAD"). The output is ASCII DXF of release R12 (AC1009): a
|
|
3
|
+
* header with the release, and one closed POLYLINE on layer 0 for each contour. The lines end with CR LF.
|
|
4
|
+
*/
|
|
5
|
+
/** An upper bound of the size of the DXF output of the contours, in bytes, from the counts only. */
|
|
6
|
+
export declare function dxfByteLength(contours: number[][][]): number;
|
|
7
|
+
/** Writes the contours as one DXF file. Each contour is a list of [x, y] points, closed back to its first point. */
|
|
8
|
+
export declare function writeDxf(contours: number[][][]): Uint8Array;
|
package/dist/mesh/dxf.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DXF writer of the mesh stage (design section "CAD"). The output is ASCII DXF of release R12 (AC1009): a
|
|
3
|
+
* header with the release, and one closed POLYLINE on layer 0 for each contour. The lines end with CR LF.
|
|
4
|
+
*/
|
|
5
|
+
/** The bytes that a size bound counts per point, per contour, and the fixed part. */
|
|
6
|
+
const BOUND = { point: 120, contour: 200, fixed: 1024 };
|
|
7
|
+
/** A coordinate as text, with ten significant digits. */
|
|
8
|
+
const coordinate = (value) => String(Number(value.toPrecision(10)));
|
|
9
|
+
/** The lines of one group: the code, right-aligned in three characters, and the value. */
|
|
10
|
+
const group = (code, value) => `${String(code).padStart(3)}\r\n${value}\r\n`;
|
|
11
|
+
/** An upper bound of the size of the DXF output of the contours, in bytes, from the counts only. */
|
|
12
|
+
export function dxfByteLength(contours) {
|
|
13
|
+
return contours.reduce((n, c) => n + BOUND.contour + BOUND.point * c.length, BOUND.fixed);
|
|
14
|
+
}
|
|
15
|
+
/** Writes the contours as one DXF file. Each contour is a list of [x, y] points, closed back to its first point. */
|
|
16
|
+
export function writeDxf(contours) {
|
|
17
|
+
const parts = [group(0, "SECTION"), group(2, "HEADER"), group(9, "$ACADVER"), group(1, "AC1009"), group(0, "ENDSEC")];
|
|
18
|
+
parts.push(group(0, "SECTION"), group(2, "ENTITIES"));
|
|
19
|
+
for (const contour of contours) {
|
|
20
|
+
parts.push(group(0, "POLYLINE"), group(8, "0"), group(66, "1"), group(10, "0"), group(20, "0"), group(30, "0"), group(70, "1"));
|
|
21
|
+
for (const [x, y] of contour) {
|
|
22
|
+
parts.push(group(0, "VERTEX"), group(8, "0"), group(10, coordinate(x)), group(20, coordinate(y)), group(30, "0"));
|
|
23
|
+
}
|
|
24
|
+
parts.push(group(0, "SEQEND"), group(8, "0"));
|
|
25
|
+
}
|
|
26
|
+
parts.push(group(0, "ENDSEC"), group(0, "EOF"));
|
|
27
|
+
return new TextEncoder().encode(parts.join(""));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=dxf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../src/mesh/dxf.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qFAAqF;AACrF,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAExD,yDAAyD;AACzD,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpF,0FAA0F;AAC1F,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC;AAErG,oGAAoG;AACpG,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5F,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,QAAQ,CAAC,QAAsB;IAC7C,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QAChI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QACtH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/mesh/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
/** The mesh stage: STEP, IGES and BREP through occt-import-js, CAD documents through manifold-3d, and the glTF and
|
|
1
|
+
/** The mesh stage: STEP, IGES and BREP through occt-import-js, CAD documents through manifold-3d, and the glTF, STL, 3MF and DXF writers. */
|
|
2
2
|
export { readCad } from "./read.ts";
|
|
3
3
|
export type { CadFormat, CadFace, CadMesh, LinearUnit } from "./read.ts";
|
|
4
4
|
export { writeGlb } from "./glb.ts";
|
|
5
5
|
export { readMeshOptions } from "./backend-glb.ts";
|
|
6
6
|
export { writeStl } from "./stl.ts";
|
|
7
7
|
export { write3mf } from "./threemf.ts";
|
|
8
|
+
export { writeDxf } from "./dxf.ts";
|
|
9
|
+
export { DFM_DEFAULTS, supportArea, writeDfmReport } from "./dfm.ts";
|
|
10
|
+
export type { DfmOptions } from "./dfm.ts";
|
|
8
11
|
export { checkCadDocument, parseCadDocument, DEFAULT_SEGMENTS, MAX_SEGMENTS, MIN_SEGMENTS } from "./cad-document.ts";
|
|
9
12
|
export type * from "./cad-document.ts";
|
|
10
|
-
export { buildCad } from "./cad-build.ts";
|
|
11
|
-
export type { CadBuildResult } from "./cad-build.ts";
|
|
13
|
+
export { buildCad, drawCad, measureCad, WALL_SECTIONS } from "./cad-build.ts";
|
|
14
|
+
export type { CadBuildResult, CadDrawing, CadMeasures, ThinSection } from "./cad-build.ts";
|
|
12
15
|
export * as cad from "./cad-builder.ts";
|
package/dist/mesh/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
/** The mesh stage: STEP, IGES and BREP through occt-import-js, CAD documents through manifold-3d, and the glTF and
|
|
1
|
+
/** The mesh stage: STEP, IGES and BREP through occt-import-js, CAD documents through manifold-3d, and the glTF, STL, 3MF and DXF writers. */
|
|
2
2
|
export { readCad } from "./read.js";
|
|
3
3
|
export { writeGlb } from "./glb.js";
|
|
4
4
|
export { readMeshOptions } from "./backend-glb.js";
|
|
5
5
|
export { writeStl } from "./stl.js";
|
|
6
6
|
export { write3mf } from "./threemf.js";
|
|
7
|
+
export { writeDxf } from "./dxf.js";
|
|
8
|
+
export { DFM_DEFAULTS, supportArea, writeDfmReport } from "./dfm.js";
|
|
7
9
|
export { checkCadDocument, parseCadDocument, DEFAULT_SEGMENTS, MAX_SEGMENTS, MIN_SEGMENTS } from "./cad-document.js";
|
|
8
|
-
export { buildCad } from "./cad-build.js";
|
|
10
|
+
export { buildCad, drawCad, measureCad, WALL_SECTIONS } from "./cad-build.js";
|
|
9
11
|
export * as cad from "./cad-builder.js";
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/dist/mesh/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"AAAA,6IAA6I;AAC7I,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC"}
|
package/dist/mesh/threemf.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { CadMesh } from "./read.ts";
|
|
2
2
|
/**
|
|
3
|
-
* An upper bound of the size of the 3MF output of the meshes, in bytes, from the counts only. The backend compares
|
|
4
|
-
* with maxMemoryMb before the writer builds any text.
|
|
3
|
+
* An upper bound of the size of the 3MF output of the meshes, in bytes, from the counts only. The backend compares the
|
|
4
|
+
* bound with maxMemoryMb before the writer builds any text.
|
|
5
5
|
*/
|
|
6
6
|
export declare function threemfByteLength(meshes: CadMesh[]): number;
|
|
7
7
|
/**
|
|
8
|
-
* Writes the meshes as one 3MF Core package.
|
|
9
|
-
*
|
|
8
|
+
* Writes the meshes as one 3MF Core package. The writer skips a mesh with no triangle. If all meshes have no
|
|
9
|
+
* triangle, the function rejects with E_INPUT, because a 3MF build holds at least one item.
|
|
10
10
|
*/
|
|
11
11
|
export declare function write3mf(meshes: CadMesh[]): Uint8Array;
|
package/dist/mesh/threemf.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The 3MF writer of the mesh stage (design section "CAD"). The output is a 3MF Core package: a ZIP archive with
|
|
3
|
-
* the parts `[Content_Types].xml`, `_rels/.rels` and `3D/3dmodel.model`.
|
|
4
|
-
* with a fixed date, so the same meshes always give the same bytes.
|
|
3
|
+
* the parts `[Content_Types].xml`, `_rels/.rels` and `3D/3dmodel.model`. The writer stores each part without
|
|
4
|
+
* compression, with a fixed date, so the same meshes always give the same bytes.
|
|
5
5
|
*/
|
|
6
6
|
import { RenderError } from "../errors.js";
|
|
7
7
|
import { DEFAULT_COLOUR, triangleGroups } from "./glb.js";
|
|
@@ -112,8 +112,8 @@ function modelXml(meshes) {
|
|
|
112
112
|
`<build>${items.join("")}</build></model>`);
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
* An upper bound of the size of the 3MF output of the meshes, in bytes, from the counts only. The backend compares
|
|
116
|
-
* with maxMemoryMb before the writer builds any text.
|
|
115
|
+
* An upper bound of the size of the 3MF output of the meshes, in bytes, from the counts only. The backend compares the
|
|
116
|
+
* bound with maxMemoryMb before the writer builds any text.
|
|
117
117
|
*/
|
|
118
118
|
export function threemfByteLength(meshes) {
|
|
119
119
|
let total = BOUND.fixed;
|
|
@@ -124,8 +124,8 @@ export function threemfByteLength(meshes) {
|
|
|
124
124
|
return total;
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
|
-
* Writes the meshes as one 3MF Core package.
|
|
128
|
-
*
|
|
127
|
+
* Writes the meshes as one 3MF Core package. The writer skips a mesh with no triangle. If all meshes have no
|
|
128
|
+
* triangle, the function rejects with E_INPUT, because a 3MF build holds at least one item.
|
|
129
129
|
*/
|
|
130
130
|
export function write3mf(meshes) {
|
|
131
131
|
const encoder = new TextEncoder();
|
package/dist/pairs.js
CHANGED
|
@@ -35,6 +35,8 @@ export const PAIRS = [
|
|
|
35
35
|
{ type: "cad", format: "glb", stage: "mesh" },
|
|
36
36
|
{ type: "cad", format: "stl", stage: "mesh" },
|
|
37
37
|
{ type: "cad", format: "3mf", stage: "mesh" },
|
|
38
|
+
{ type: "cad", format: "dxf", stage: "mesh" },
|
|
39
|
+
{ type: "cad", format: "md", stage: "mesh" },
|
|
38
40
|
{ type: "html", format: "png", stage: "browser" },
|
|
39
41
|
{ type: "html", format: "pdf", stage: "browser" },
|
|
40
42
|
{ type: "html", format: "md", stage: "html" },
|
package/dist/pairs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairs.js","sourceRoot":"","sources":["../src/pairs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pairs.js","sourceRoot":"","sources":["../src/pairs.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -51,6 +51,8 @@ export const DEFAULT_REGISTRY = {
|
|
|
51
51
|
"cad:glb": { backend: "mesh/manifold+glb", moduleUrl: backendUrl("mesh/backend-glb") },
|
|
52
52
|
"cad:stl": { backend: "mesh/manifold+stl", moduleUrl: backendUrl("mesh/backend-stl") },
|
|
53
53
|
"cad:3mf": { backend: "mesh/manifold+3mf", moduleUrl: backendUrl("mesh/backend-3mf") },
|
|
54
|
+
"cad:dxf": { backend: "mesh/manifold+dxf", moduleUrl: backendUrl("mesh/backend-dxf") },
|
|
55
|
+
"cad:md": { backend: "mesh/manifold+dfm", moduleUrl: backendUrl("mesh/backend-dfm") },
|
|
54
56
|
"cad:html": { backend: "mesh/manifold+viewer", moduleUrl: backendUrl("mesh/backend-html") },
|
|
55
57
|
"cad:png": { backend: "mesh/manifold+viewer+browser/chromium", moduleUrl: backendUrl("mesh/backend-png") },
|
|
56
58
|
"tikz:svg": { backend: "tex/etex", moduleUrl: backendUrl("tex/backend-svg"), preload: texPreload },
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare const INPUT_TYPES: readonly ["dot", "mermaid", "math", "tikz", "p
|
|
|
3
3
|
/** One input type of the design. */
|
|
4
4
|
export type InputType = (typeof INPUT_TYPES)[number];
|
|
5
5
|
/** The output formats of the design. */
|
|
6
|
-
export declare const OUTPUT_FORMATS: readonly ["svg", "png", "pdf", "html", "md", "glb", "stl", "3mf"];
|
|
6
|
+
export declare const OUTPUT_FORMATS: readonly ["svg", "png", "pdf", "html", "md", "glb", "stl", "3mf", "dxf"];
|
|
7
7
|
/** One output format of the design. */
|
|
8
8
|
export type OutputFormat = (typeof OUTPUT_FORMATS)[number];
|
|
9
9
|
/** Input types whose source is bytes, not text. */
|
package/dist/types.js
CHANGED
|
@@ -13,7 +13,7 @@ export const INPUT_TYPES = [
|
|
|
13
13
|
"html",
|
|
14
14
|
];
|
|
15
15
|
/** The output formats of the design. */
|
|
16
|
-
export const OUTPUT_FORMATS = ["svg", "png", "pdf", "html", "md", "glb", "stl", "3mf"];
|
|
16
|
+
export const OUTPUT_FORMATS = ["svg", "png", "pdf", "html", "md", "glb", "stl", "3mf", "dxf"];
|
|
17
17
|
/** Input types whose source is bytes, not text. */
|
|
18
18
|
export const BINARY_INPUT_TYPES = ["step", "iges", "brep"];
|
|
19
19
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK;IACL,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;CACE,CAAC;AAKX,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK;IACL,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;CACE,CAAC;AAKX,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAKvG,mDAAmD;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ENGINE_VERSION = "1.0.
|
|
1
|
+
export declare const ENGINE_VERSION = "1.0.6";
|
package/dist/version.js
CHANGED