@hatiolab/figure-model 0.5.0 → 0.5.1
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/asset-types.d.ts +1 -1
- package/dist/asset-types.d.ts.map +1 -1
- package/dist/asset.d.ts.map +1 -1
- package/dist/asset.js +6 -5
- package/dist/asset.js.map +1 -1
- package/dist/authoring-actions.d.ts +2 -795
- package/dist/authoring-actions.d.ts.map +1 -1
- package/dist/authoring-actions.js +66 -3777
- package/dist/authoring-actions.js.map +1 -1
- package/dist/authoring-bindings.d.ts +35 -0
- package/dist/authoring-bindings.d.ts.map +1 -0
- package/dist/authoring-bindings.js +241 -0
- package/dist/authoring-bindings.js.map +1 -0
- package/dist/authoring-dimensions.d.ts +10 -0
- package/dist/authoring-dimensions.d.ts.map +1 -0
- package/dist/authoring-dimensions.js +88 -0
- package/dist/authoring-dimensions.js.map +1 -0
- package/dist/authoring-fastening.d.ts +24 -0
- package/dist/authoring-fastening.d.ts.map +1 -0
- package/dist/authoring-fastening.js +562 -0
- package/dist/authoring-fastening.js.map +1 -0
- package/dist/authoring-geometry.d.ts +119 -0
- package/dist/authoring-geometry.d.ts.map +1 -0
- package/dist/authoring-geometry.js +419 -0
- package/dist/authoring-geometry.js.map +1 -0
- package/dist/authoring-nodes.d.ts +77 -0
- package/dist/authoring-nodes.d.ts.map +1 -0
- package/dist/authoring-nodes.js +310 -0
- package/dist/authoring-nodes.js.map +1 -0
- package/dist/authoring-occupancy.d.ts +28 -0
- package/dist/authoring-occupancy.d.ts.map +1 -0
- package/dist/authoring-occupancy.js +784 -0
- package/dist/authoring-occupancy.js.map +1 -0
- package/dist/authoring-proportion.d.ts +27 -0
- package/dist/authoring-proportion.d.ts.map +1 -0
- package/dist/authoring-proportion.js +378 -0
- package/dist/authoring-proportion.js.map +1 -0
- package/dist/authoring-size.d.ts +17 -0
- package/dist/authoring-size.d.ts.map +1 -0
- package/dist/authoring-size.js +140 -0
- package/dist/authoring-size.js.map +1 -0
- package/dist/authoring-types.d.ts +753 -0
- package/dist/authoring-types.d.ts.map +1 -0
- package/dist/authoring-types.js +42 -0
- package/dist/authoring-types.js.map +1 -0
- package/dist/command-preview.d.ts +1 -1
- package/dist/command-preview.d.ts.map +1 -1
- package/dist/command-preview.js +1 -0
- package/dist/command-preview.js.map +1 -1
- package/dist/contract.d.ts +129 -3
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js +3 -0
- package/dist/cost.js.map +1 -1
- package/dist/create.d.ts +36 -0
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +60 -0
- package/dist/create.js.map +1 -1
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +4 -3
- package/dist/document.js.map +1 -1
- package/dist/editor-workspace.d.ts +3 -3
- package/dist/editor-workspace.d.ts.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +3 -1
- package/dist/examples.js.map +1 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +2 -0
- package/dist/gate.js.map +1 -1
- package/dist/graph-types.d.ts +3 -2
- package/dist/graph-types.d.ts.map +1 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +3 -3
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/joint-list.js +1 -1
- package/dist/joint-list.js.map +1 -1
- package/dist/joint-part-edits.d.ts +40 -0
- package/dist/joint-part-edits.d.ts.map +1 -0
- package/dist/joint-part-edits.js +488 -0
- package/dist/joint-part-edits.js.map +1 -0
- package/dist/joint-writing.d.ts +50 -0
- package/dist/joint-writing.d.ts.map +1 -0
- package/dist/joint-writing.js +847 -0
- package/dist/joint-writing.js.map +1 -0
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +11 -8
- package/dist/json.js.map +1 -1
- package/dist/kernel-version.d.ts +1 -1
- package/dist/kernel-version.js +1 -1
- package/dist/package.d.ts +15 -3
- package/dist/package.d.ts.map +1 -1
- package/dist/package.js +58 -0
- package/dist/package.js.map +1 -1
- package/dist/part-edit.d.ts +1 -1
- package/dist/part-edit.d.ts.map +1 -1
- package/dist/part-edit.js +7 -4
- package/dist/part-edit.js.map +1 -1
- package/dist/proposal.d.ts +1 -1
- package/dist/proposal.d.ts.map +1 -1
- package/dist/proposal.js +5 -2
- package/dist/proposal.js.map +1 -1
- package/dist/render-batches.d.ts +10 -2
- package/dist/render-batches.d.ts.map +1 -1
- package/dist/render-batches.js +19 -5
- package/dist/render-batches.js.map +1 -1
- package/dist/resize-plan.d.ts +1 -1
- package/dist/resize-plan.d.ts.map +1 -1
- package/dist/robots.d.ts.map +1 -1
- package/dist/robots.js +3 -1
- package/dist/robots.js.map +1 -1
- package/dist/room.d.ts +1 -1
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +2 -1
- package/dist/room.js.map +1 -1
- package/dist/shape-edit.js +4 -4
- package/dist/shape-edit.js.map +1 -1
- package/dist/shape-ops.d.ts +62 -7
- package/dist/shape-ops.d.ts.map +1 -1
- package/dist/shape-ops.js +117 -8
- package/dist/shape-ops.js.map +1 -1
- package/dist/slot-layout-presets.d.ts +102 -0
- package/dist/slot-layout-presets.d.ts.map +1 -0
- package/dist/slot-layout-presets.js +185 -0
- package/dist/slot-layout-presets.js.map +1 -0
- package/dist/slot-layout.d.ts +16 -1
- package/dist/slot-layout.d.ts.map +1 -1
- package/dist/slot-layout.js.map +1 -1
- package/docs/modeller-interaction-performance-2026-10-07.md +40 -8
- package/docs/shape-contract.md +46 -0
- package/package.json +1 -1
package/dist/room.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGnD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
|
package/dist/shape-edit.js
CHANGED
|
@@ -11,8 +11,8 @@ import { FigureContractError } from "./contract.js";
|
|
|
11
11
|
import { compileFigureGraph, figureShapeFaces } from "./graph.js";
|
|
12
12
|
import { figureExtrudeLayoutOf, figureLoftLayoutOf, figureShapeDescriptionOf } from "./shape-ops.js";
|
|
13
13
|
import { checkFigureSection, normalizeFigureSection } from "./section.js";
|
|
14
|
-
const fail = (code, path, message) => {
|
|
15
|
-
throw new FigureContractError(code, path, message);
|
|
14
|
+
const fail = (code, path, message, details) => {
|
|
15
|
+
throw new FigureContractError(code, path, message, details);
|
|
16
16
|
};
|
|
17
17
|
/** A push's or a pyramid's argument layout: a pyramid's is a drawn push's with its apex after (ADR-0100 §4.1.1). */
|
|
18
18
|
const layoutOf = (shape) => shape.op === 'loft@1' ? figureLoftLayoutOf(shape.params, shape.id) : figureExtrudeLayoutOf(shape.params, shape.id);
|
|
@@ -107,7 +107,7 @@ function keepReferencedFaces(asset, part, shape, before) {
|
|
|
107
107
|
lost: lost.map(([face, refs]) => ({ face, ...(face in before ? { axis: look(before[face]).axis, normal: look(before[face]).normal } : {}), refs })),
|
|
108
108
|
remain: Object.entries(after).map(([face, f]) => ({ face, axis: look(f).axis, normal: look(f).normal }))
|
|
109
109
|
};
|
|
110
|
-
throw new FigureContractError('FEATURE_MAPPING_REQUIRED', part, `this edit takes away ${lost.map(([face, who]) => `${face} (${who.map(r => `${r.kind} ${r.id}`).join(', ')})`).join('; ')}; fasten those elsewhere or unfasten them first`, need);
|
|
110
|
+
throw new FigureContractError('FEATURE_MAPPING_REQUIRED', part, `this edit takes away ${lost.map(([face, who]) => `${face} (${who.map(r => `${r.kind} ${r.id}`).join(', ')})`).join('; ')}; fasten those elsewhere or unfasten them first`, { reason: 'faces-taken-away', ...need });
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
const LENGTH_INPUT = (id) => ({ id, unit: 'mm', min: 0, max: Number.MAX_VALUE, role: 'design' });
|
|
@@ -276,7 +276,7 @@ export function setFigureSectionPoints(asset, part, points, drop) {
|
|
|
276
276
|
const section = { kind: 'polygon', points: points.map(q => ({ id: q.id, [a]: q[a], [b]: q[b] })) };
|
|
277
277
|
const issues = checkFigureSection(section, L.axis);
|
|
278
278
|
if (issues.length)
|
|
279
|
-
fail('SECTION_INVALID', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}
|
|
279
|
+
fail('SECTION_INVALID', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`, { reason: 'section-invalid', issues });
|
|
280
280
|
const drawn = normalizeFigureSection(section, L.axis);
|
|
281
281
|
const m = asset.document.model;
|
|
282
282
|
const before = figureShapeFaces(shape) ?? {};
|
package/dist/shape-edit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape-edit.js","sourceRoot":"","sources":["../src/shape-edit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shape-edit.js","sourceRoot":"","sources":["../src/shape-edit.ts"],"names":[],"mappings":"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"}
|
package/dist/shape-ops.d.ts
CHANGED
|
@@ -14,9 +14,10 @@ export interface FigureShapeFace {
|
|
|
14
14
|
}>;
|
|
15
15
|
/**
|
|
16
16
|
* `line`: the plane touches a curved side at its extreme -- a cylinder's side (Q3). A part fastened to it touches it
|
|
17
|
-
* along a line, and the screen says so; it is not a surface to hold things on.
|
|
17
|
+
* along a line, and the screen says so; it is not a surface to hold things on. `bounds`: a face of the box around a
|
|
18
|
+
* mesh, not the mesh's surface (ADR-0107 decision 4) -- a part fastened to it sits on the box.
|
|
18
19
|
*/
|
|
19
|
-
contact?: 'line';
|
|
20
|
+
contact?: 'line' | 'bounds';
|
|
20
21
|
}
|
|
21
22
|
/** A term of a measure: an argument times a factor (a radius is half a width). */
|
|
22
23
|
export type FigureShapeTerm = {
|
|
@@ -31,8 +32,11 @@ export type FigureShapeEdit = {
|
|
|
31
32
|
} | {
|
|
32
33
|
refused: FigureShapeEditRefusal;
|
|
33
34
|
};
|
|
34
|
-
/**
|
|
35
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Why an axis cannot be edited by a size: its reach is a drawn section's points, it has none, or it is a mesh's other
|
|
37
|
+
* axis -- a mesh is sized as a whole along its longest axis, and the others follow (ADR-0129 decision 2).
|
|
38
|
+
*/
|
|
39
|
+
export type FigureShapeEditRefusal = 'SECTION_CORNERS' | 'NO_MEASURE' | 'MESH_UNIFORM';
|
|
36
40
|
/**
|
|
37
41
|
* What a shape node offers the commands that size and place a part (ADR-0097 §6, ADR-0100 §4.2): how far it reaches
|
|
38
42
|
* along each of its own axes, how a size edits it, and its flat faces by name.
|
|
@@ -43,7 +47,7 @@ export interface FigureShapeDescription {
|
|
|
43
47
|
edit: Readonly<Record<Axis, FigureShapeEdit>>;
|
|
44
48
|
faces: Readonly<Record<string, FigureShapeFace>>;
|
|
45
49
|
/** What a person calls it, for messages: 상자, 원기둥 … */
|
|
46
|
-
kind: 'rectangle' | 'ellipse' | 'polygon' | 'portal' | 'sphere' | 'taper' | 'pyramid';
|
|
50
|
+
kind: 'rectangle' | 'ellipse' | 'polygon' | 'portal' | 'sphere' | 'taper' | 'pyramid' | 'mesh';
|
|
47
51
|
}
|
|
48
52
|
export type FigureSectionKind = 'rectangle' | 'ellipse' | 'polygon' | 'portal';
|
|
49
53
|
export declare const FIGURE_SECTION_KINDS: readonly FigureSectionKind[];
|
|
@@ -89,6 +93,40 @@ export type FigureRevolveProfile = 'half-ellipse' | 'taper';
|
|
|
89
93
|
export declare function figureLoftLayoutOf(params: Record<string, string> | undefined, path: string): FigureExtrudeLayout & {
|
|
90
94
|
apex: Record<Axis, number>;
|
|
91
95
|
};
|
|
96
|
+
/** The file formats a mesh part reads. Only binary glTF (ADR-0129). */
|
|
97
|
+
export declare const FIGURE_MESH_FORMATS: readonly string[];
|
|
98
|
+
/** A mesh's bounds as a param value: `mm_` and its six numbers. A number that needs `+` to be written is refused. */
|
|
99
|
+
export declare function figureMeshBoundsParam(b: {
|
|
100
|
+
min: {
|
|
101
|
+
x: number;
|
|
102
|
+
y: number;
|
|
103
|
+
z: number;
|
|
104
|
+
};
|
|
105
|
+
max: {
|
|
106
|
+
x: number;
|
|
107
|
+
y: number;
|
|
108
|
+
z: number;
|
|
109
|
+
};
|
|
110
|
+
}): string;
|
|
111
|
+
export interface FigureMeshLayout {
|
|
112
|
+
/** The file's sha256, lower-case hex. */
|
|
113
|
+
asset: string;
|
|
114
|
+
format: string;
|
|
115
|
+
/** The node of the file, by its place; none for the whole file. */
|
|
116
|
+
node?: number;
|
|
117
|
+
unit: string;
|
|
118
|
+
/** The reach at 1:1, in mm, in the part's own frame, as the file has it. */
|
|
119
|
+
bounds: Record<Axis, {
|
|
120
|
+
min: number;
|
|
121
|
+
max: number;
|
|
122
|
+
}>;
|
|
123
|
+
/** The axis it reaches furthest along: the one its size is. */
|
|
124
|
+
axis: Axis;
|
|
125
|
+
triangles: number;
|
|
126
|
+
primitives: number;
|
|
127
|
+
}
|
|
128
|
+
/** A mesh node's record (contract §13), checked. Every reader goes through here. */
|
|
129
|
+
export declare function figureMeshLayoutOf(params: Record<string, string> | undefined, path: string): FigureMeshLayout;
|
|
92
130
|
export declare const FIGURE_SHAPE_OPERATOR_NAMES: readonly string[];
|
|
93
131
|
/**
|
|
94
132
|
* What a shape node offers, or undefined for a node that is not a shape. Given the graph, a centred push's ends are
|
|
@@ -109,7 +147,7 @@ export declare function figureShapeDescriptionOf(node: {
|
|
|
109
147
|
* face needs without knowing the operation.
|
|
110
148
|
*/
|
|
111
149
|
export interface FigureEvaluatedShape {
|
|
112
|
-
provider: 'extrude' | 'revolve' | 'loft';
|
|
150
|
+
provider: 'extrude' | 'revolve' | 'loft' | 'mesh';
|
|
113
151
|
dimensions: Record<string, number>;
|
|
114
152
|
extrusion?: {
|
|
115
153
|
axis: Axis;
|
|
@@ -142,6 +180,23 @@ export interface FigureEvaluatedShape {
|
|
|
142
180
|
end: number;
|
|
143
181
|
apex: Partial<Record<Axis, number>>;
|
|
144
182
|
};
|
|
183
|
+
/**
|
|
184
|
+
* A file's mesh (contract §13): the file by its hash, the node of it, and how it is drawn -- `scale` is mm per file
|
|
185
|
+
* unit, and `bounds` are its reach at this size, in its own frame. The renderer draws the file, or this box without it.
|
|
186
|
+
*/
|
|
187
|
+
mesh?: {
|
|
188
|
+
asset: string;
|
|
189
|
+
format: string;
|
|
190
|
+
node?: number;
|
|
191
|
+
unit: string;
|
|
192
|
+
scale: number;
|
|
193
|
+
bounds: Record<Axis, {
|
|
194
|
+
min: number;
|
|
195
|
+
max: number;
|
|
196
|
+
}>;
|
|
197
|
+
triangles: number;
|
|
198
|
+
primitives: number;
|
|
199
|
+
};
|
|
145
200
|
faces: Record<string, {
|
|
146
201
|
axis: Axis;
|
|
147
202
|
normal: 1 | -1;
|
|
@@ -151,7 +206,7 @@ export interface FigureEvaluatedShape {
|
|
|
151
206
|
/** The two operators, in the graph's operator shape. */
|
|
152
207
|
export declare const FIGURE_SHAPE_OPERATORS: Record<string, Dynamic>;
|
|
153
208
|
/** How far an evaluated shape reaches along each of its own axes: least and most, in its own frame. */
|
|
154
|
-
export declare function figureShapeBoundsOf(shape: Pick<FigureEvaluatedShape, 'extrusion' | 'loft' | 'revolution'>): Record<Axis, {
|
|
209
|
+
export declare function figureShapeBoundsOf(shape: Pick<FigureEvaluatedShape, 'extrusion' | 'loft' | 'revolution' | 'mesh'>): Record<Axis, {
|
|
155
210
|
min: number;
|
|
156
211
|
max: number;
|
|
157
212
|
}>;
|
package/dist/shape-ops.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape-ops.d.ts","sourceRoot":"","sources":["../src/shape-ops.ts"],"names":[],"mappings":"AAeA,OAAO,EAA4C,KAAK,aAAa,EAA2B,MAAM,cAAc,CAAA;AACpH,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AAE5C,KAAK,OAAO,GAAG,GAAG,CAAA;AAMlB,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAI/E,CAAA;AAEF,sHAAsH;AACtH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACd,KAAK,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChD
|
|
1
|
+
{"version":3,"file":"shape-ops.d.ts","sourceRoot":"","sources":["../src/shape-ops.ts"],"names":[],"mappings":"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"}
|
package/dist/shape-ops.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/*
|
|
5
5
|
* The shape operations (ADR-0100, docs/shape-contract.md): `extrude@1` pushes a section along one of the part's own
|
|
6
|
-
* axes, `revolve@1` turns a half-section about one, `loft@1` draws a drawn section to one point (a pyramid)
|
|
7
|
-
* the only operators that make a shape.
|
|
6
|
+
* axes, `revolve@1` turns a half-section about one, `loft@1` draws a drawn section to one point (a pyramid), and
|
|
7
|
+
* `mesh@1` is a file's mesh, named by its hash (ADR-0129, contract §13). They are the only operators that make a shape.
|
|
8
8
|
*
|
|
9
9
|
* A node is the record of its shape: its params say what it is -- the axis, the kind of section, the names of a drawn
|
|
10
10
|
* section's points, whether it has an inside and which of its ends are open -- and its arguments are the values that
|
|
@@ -15,8 +15,8 @@ import { FigureContractError } from "./contract.js";
|
|
|
15
15
|
import { checkFigureSection, FIGURE_SECTION_PLANE } from "./section.js";
|
|
16
16
|
import { figureExtrusionFeaturesOf } from "./shape-features.js";
|
|
17
17
|
import { AXES } from "./words.js";
|
|
18
|
-
const fail = (code, path, detail) => {
|
|
19
|
-
throw new FigureContractError(code, path, detail);
|
|
18
|
+
const fail = (code, path, detail, details) => {
|
|
19
|
+
throw new FigureContractError(code, path, detail, details);
|
|
20
20
|
};
|
|
21
21
|
const isLength = (t) => Array.isArray(t) && t.length === 3 && t[0] === 1 && t[1] === 0 && t[2] === 0;
|
|
22
22
|
/** The words the part's outer faces go by, low then high, along each of its own axes. */
|
|
@@ -290,7 +290,82 @@ function loftDescription(node, model) {
|
|
|
290
290
|
/* Only its base is flat and whole: the end is a point, and the sides are not faces to fasten to yet (§5). */
|
|
291
291
|
return { measure, edit, faces: { [lo]: { axis: L.axis, normal: -1, plane: endsOf(node, model).lo } }, kind: 'pyramid' };
|
|
292
292
|
}
|
|
293
|
-
|
|
293
|
+
/* ------------------------------------------------------------------------------------------------------------ mesh */
|
|
294
|
+
/** The file formats a mesh part reads. Only binary glTF (ADR-0129). */
|
|
295
|
+
export const FIGURE_MESH_FORMATS = ['glb'];
|
|
296
|
+
/** A file's unit, in mm. glTF is in metres. */
|
|
297
|
+
const MESH_UNITS = { m: 1000, mm: 1 };
|
|
298
|
+
/*
|
|
299
|
+
* A node's params are identifiers (`graph.ts`), so the record is written as such: `asset` is `sha256-<hex>`, `bounds`
|
|
300
|
+
* are `mm_<min x>_<min y>_<min z>_<max x>_<max y>_<max z>`, the counts are `n<digits>`, and `node` is `node-<index>`.
|
|
301
|
+
* A node is picked by its place in the file, not its name: the file is fixed by its hash, so its place is exact, and a
|
|
302
|
+
* glTF name may repeat or hold any character.
|
|
303
|
+
*/
|
|
304
|
+
const ASSET = /^sha256-([0-9a-f]{64})$/;
|
|
305
|
+
const NUMBER = '-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e-?\\d+)?';
|
|
306
|
+
const BOUNDS = new RegExp(`^mm${`_(${NUMBER})`.repeat(6)}$`);
|
|
307
|
+
const COUNT = /^n(\d+)$/;
|
|
308
|
+
const NODE = /^node-(\d+)$/;
|
|
309
|
+
/** A mesh's bounds as a param value: `mm_` and its six numbers. A number that needs `+` to be written is refused. */
|
|
310
|
+
export function figureMeshBoundsParam(b) {
|
|
311
|
+
const ns = [b.min.x, b.min.y, b.min.z, b.max.x, b.max.y, b.max.z].map(v => String(v === 0 ? 0 : v));
|
|
312
|
+
return `mm_${ns.join('_')}`;
|
|
313
|
+
}
|
|
314
|
+
/** A mesh node's record (contract §13), checked. Every reader goes through here. */
|
|
315
|
+
export function figureMeshLayoutOf(params, path) {
|
|
316
|
+
const p = params ?? {};
|
|
317
|
+
const asset = ASSET.exec(p.asset ?? '')?.[1];
|
|
318
|
+
if (!asset)
|
|
319
|
+
fail('PARAM', path, 'asset is sha256- and the file\'s 64 lower-case hex digits');
|
|
320
|
+
if (!FIGURE_MESH_FORMATS.includes(p.format))
|
|
321
|
+
fail('PARAM', path, `format is ${FIGURE_MESH_FORMATS.join(' or ')}, not ${String(p.format)}`);
|
|
322
|
+
if (!Object.hasOwn(MESH_UNITS, p.unit ?? ''))
|
|
323
|
+
fail('PARAM', path, `unit is ${Object.keys(MESH_UNITS).join(' or ')}, not ${String(p.unit)}`);
|
|
324
|
+
const nodeAt = p.node === undefined ? undefined : NODE.exec(p.node)?.[1];
|
|
325
|
+
if (p.node !== undefined && nodeAt === undefined)
|
|
326
|
+
fail('PARAM', path, 'node, when given, is node- and its place in the file');
|
|
327
|
+
const written = BOUNDS.exec(p.bounds ?? '');
|
|
328
|
+
const n = (written ?? []).slice(1).map(Number);
|
|
329
|
+
if (!written || n.length !== 6 || !n.every(Number.isFinite))
|
|
330
|
+
fail('PARAM', path, 'bounds are mm_ and six numbers: min x, y, z, then max x, y, z');
|
|
331
|
+
const bounds = { x: { min: n[0], max: n[3] }, y: { min: n[1], max: n[4] }, z: { min: n[2], max: n[5] } };
|
|
332
|
+
if (AXES.some(x => !(bounds[x].max >= bounds[x].min)))
|
|
333
|
+
fail('PARAM', path, 'each bound\'s max is at least its min');
|
|
334
|
+
const axis = p.axis;
|
|
335
|
+
if (!AXES.includes(axis))
|
|
336
|
+
fail('PARAM', path, `axis is x, y or z, not ${String(p.axis)}`);
|
|
337
|
+
const reach = (x) => bounds[x].max - bounds[x].min;
|
|
338
|
+
if (!(reach(axis) > 0) || AXES.some(x => reach(x) > reach(axis)))
|
|
339
|
+
fail('PARAM', path, `axis is the one the bounds reach furthest along, and it has a reach`);
|
|
340
|
+
const count = (name) => {
|
|
341
|
+
const v = Number(COUNT.exec(p[name] ?? '')?.[1]);
|
|
342
|
+
if (!Number.isSafeInteger(v))
|
|
343
|
+
fail('PARAM', path, `${name} is n and a count`);
|
|
344
|
+
return v;
|
|
345
|
+
};
|
|
346
|
+
return { asset: asset, format: p.format, ...(nodeAt !== undefined ? { node: Number(nodeAt) } : {}), unit: p.unit, bounds, axis, triangles: count('triangles'), primitives: count('primitives') };
|
|
347
|
+
}
|
|
348
|
+
/*
|
|
349
|
+
* A mesh's one argument is its size: its reach along `axis`, in mm. Every axis reaches size times its share of that
|
|
350
|
+
* reach, and its faces are the faces of its bounds at that size.
|
|
351
|
+
*/
|
|
352
|
+
function meshDescription(node) {
|
|
353
|
+
const L = figureMeshLayoutOf(node.params, node.id);
|
|
354
|
+
const span = L.bounds[L.axis].max - L.bounds[L.axis].min;
|
|
355
|
+
const measure = {};
|
|
356
|
+
const edit = {};
|
|
357
|
+
const faces = {};
|
|
358
|
+
for (const x of AXES) {
|
|
359
|
+
const share = (L.bounds[x].max - L.bounds[x].min) / span;
|
|
360
|
+
measure[x] = [{ arg: 0, k: share }];
|
|
361
|
+
edit[x] = x === L.axis ? { arg: 0, k: 1 } : { refused: share > 0 ? 'MESH_UNIFORM' : 'NO_MEASURE' };
|
|
362
|
+
const [lo, hi] = FIGURE_OUTER_FACES[x];
|
|
363
|
+
faces[lo] = { axis: x, normal: -1, plane: [{ arg: 0, k: L.bounds[x].min / span }], contact: 'bounds' };
|
|
364
|
+
faces[hi] = { axis: x, normal: 1, plane: [{ arg: 0, k: L.bounds[x].max / span }], contact: 'bounds' };
|
|
365
|
+
}
|
|
366
|
+
return { measure, edit, faces, kind: 'mesh' };
|
|
367
|
+
}
|
|
368
|
+
export const FIGURE_SHAPE_OPERATOR_NAMES = ['extrude@1', 'revolve@1', 'loft@1', 'mesh@1'];
|
|
294
369
|
/**
|
|
295
370
|
* What a shape node offers, or undefined for a node that is not a shape. Given the graph, a centred push's ends are
|
|
296
371
|
* written as ±half its length (`endsOf`); the planes are the same either way.
|
|
@@ -302,6 +377,8 @@ export function figureShapeDescriptionOf(node, model) {
|
|
|
302
377
|
return revolveDescription(node, model);
|
|
303
378
|
if (node?.op === 'loft@1')
|
|
304
379
|
return loftDescription(node, model);
|
|
380
|
+
if (node?.op === 'mesh@1')
|
|
381
|
+
return meshDescription(node);
|
|
305
382
|
return undefined;
|
|
306
383
|
}
|
|
307
384
|
const facesAt = (faces, args) => Object.fromEntries(Object.entries(faces).map(([name, f]) => [
|
|
@@ -393,7 +470,7 @@ function runExtrude(args, path, node) {
|
|
|
393
470
|
}
|
|
394
471
|
const issues = checkFigureSection(section, L.axis);
|
|
395
472
|
if (issues.length)
|
|
396
|
-
fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}
|
|
473
|
+
fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`, { reason: 'section-invalid', issues });
|
|
397
474
|
if (section.kind === 'polygon' && L.section === 'polygon' && !(signedArea2(section, L.axis) > 0))
|
|
398
475
|
fail('SECTION_WINDING', path, 'a drawn section runs counter-clockwise seen from its push axis; write it with normalizeFigureSection');
|
|
399
476
|
const extrusion = { axis: L.axis, section, start, end: start + length };
|
|
@@ -414,7 +491,7 @@ function runExtrude(args, path, node) {
|
|
|
414
491
|
dimensions['closed.end'] = cavity.end.closed;
|
|
415
492
|
const r = figureExtrusionFeaturesOf(extrusion, [cavity]);
|
|
416
493
|
if ('refused' in r)
|
|
417
|
-
fail('GEOMETRY_DOMAIN', path, `the inside is not valid: ${r.refused.code}${'refused' in r.refused ? ` ${r.refused.refused}` : ''}
|
|
494
|
+
fail('GEOMETRY_DOMAIN', path, `the inside is not valid: ${r.refused.code}${'refused' in r.refused ? ` ${r.refused.refused}` : ''}`, { reason: 'inside-invalid', refusal: r.refused });
|
|
418
495
|
}
|
|
419
496
|
return {
|
|
420
497
|
provider: 'extrude',
|
|
@@ -463,7 +540,7 @@ function runLoft(args, path, node) {
|
|
|
463
540
|
const section = { kind: 'polygon', points };
|
|
464
541
|
const issues = checkFigureSection(section, L.axis);
|
|
465
542
|
if (issues.length)
|
|
466
|
-
fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}
|
|
543
|
+
fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`, { reason: 'section-invalid', issues });
|
|
467
544
|
if (!(signedArea2(section, L.axis) > 0))
|
|
468
545
|
fail('SECTION_WINDING', path, 'a drawn section runs counter-clockwise seen from its push axis; write it with normalizeFigureSection');
|
|
469
546
|
const apex = { [a]: args[L.apex[a]], [b]: args[L.apex[b]] };
|
|
@@ -478,6 +555,20 @@ function runLoft(args, path, node) {
|
|
|
478
555
|
faces: facesAt(loftDescription(node).faces, args)
|
|
479
556
|
};
|
|
480
557
|
}
|
|
558
|
+
function runMesh(args, path, node) {
|
|
559
|
+
const L = figureMeshLayoutOf(node.params, path);
|
|
560
|
+
const size = args[0];
|
|
561
|
+
if (!(size > 0))
|
|
562
|
+
fail('GEOMETRY_DOMAIN', path, `a mesh of positive size required, not ${size}`);
|
|
563
|
+
const ratio = size / (L.bounds[L.axis].max - L.bounds[L.axis].min);
|
|
564
|
+
const bounds = Object.fromEntries(AXES.map(x => [x, { min: L.bounds[x].min * ratio, max: L.bounds[x].max * ratio }]));
|
|
565
|
+
return {
|
|
566
|
+
provider: 'mesh',
|
|
567
|
+
dimensions: { size },
|
|
568
|
+
mesh: { asset: L.asset, format: L.format, ...(L.node !== undefined ? { node: L.node } : {}), unit: L.unit, scale: MESH_UNITS[L.unit] * ratio, bounds, triangles: L.triangles, primitives: L.primitives },
|
|
569
|
+
faces: facesAt(meshDescription(node).faces, args)
|
|
570
|
+
};
|
|
571
|
+
}
|
|
481
572
|
/** The shape's value type: its frame, and the directions of its flat faces, which a reader checks names against. */
|
|
482
573
|
function shapeType(provider, n, faces) {
|
|
483
574
|
return {
|
|
@@ -522,11 +613,24 @@ export const FIGURE_SHAPE_OPERATORS = {
|
|
|
522
613
|
return [shapeType('loft', n, loftDescription(n).faces)];
|
|
523
614
|
},
|
|
524
615
|
run: (args, p, n) => [runLoft(args, p, n)]
|
|
616
|
+
},
|
|
617
|
+
'mesh@1': {
|
|
618
|
+
ports: ['shape'],
|
|
619
|
+
params: ['frame', 'asset', 'format', 'unit', 'bounds', 'axis', 'triangles', 'primitives'],
|
|
620
|
+
optionalParams: ['node'],
|
|
621
|
+
types(t, p, n) {
|
|
622
|
+
if (t.length !== 1 || !t.every(isLength))
|
|
623
|
+
fail('TYPE', p, `a mesh takes one length, its size, not ${t.length}`);
|
|
624
|
+
return [shapeType('mesh', n, meshDescription(n).faces)];
|
|
625
|
+
},
|
|
626
|
+
run: (args, p, n) => [runMesh(args, p, n)]
|
|
525
627
|
}
|
|
526
628
|
};
|
|
527
629
|
/* ----------------------------------------------------------------------------------------------- evaluated readers */
|
|
528
630
|
/** How far an evaluated shape reaches along each of its own axes: least and most, in its own frame. */
|
|
529
631
|
export function figureShapeBoundsOf(shape) {
|
|
632
|
+
if (shape.mesh)
|
|
633
|
+
return Object.fromEntries(AXES.map(x => [x, { ...shape.mesh.bounds[x] }]));
|
|
530
634
|
const out = {};
|
|
531
635
|
if (shape.extrusion) {
|
|
532
636
|
const e = shape.extrusion;
|
|
@@ -605,6 +709,11 @@ export function figureShapeSupportOf(shape, d) {
|
|
|
605
709
|
const l = shape.loft;
|
|
606
710
|
return span([...l.section.points.map(p => ({ ...p, [l.axis]: l.start })), { ...l.apex, [l.axis]: l.end }]);
|
|
607
711
|
}
|
|
712
|
+
/* A mesh reaches no further than its bounds' corners: the box is what the kernel knows of it. */
|
|
713
|
+
if (shape.mesh) {
|
|
714
|
+
const b = shape.mesh.bounds;
|
|
715
|
+
return span([b.x.min, b.x.max].flatMap(x => [b.y.min, b.y.max].flatMap(y => [b.z.min, b.z.max].map(z => ({ x, y, z })))));
|
|
716
|
+
}
|
|
608
717
|
const r = shape.revolution;
|
|
609
718
|
if (r.profile.kind === 'half-ellipse') {
|
|
610
719
|
const [u, v] = FIGURE_SECTION_PLANE[r.axis];
|