@toolpath/viewer 1.5.0 → 2.1.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/README.md +155 -25
- package/dist/{chunk-4TBLMR4Z.js → chunk-WTTOUG4P.js} +27 -14
- package/dist/engine/index.d.ts +2 -2
- package/dist/engine/index.js +1 -1
- package/dist/index.d.ts +224 -27
- package/dist/index.js +563 -111
- package/dist/{normalize-CvnV9Ggh.d.ts → normalize--FiXUhO4.d.ts} +7 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as PartModel, d as PartPick, V as Vec3, R as RegionHighlight, e as ViewerTheme, S as SectionOptions, f as SectionState, g as PartModelRegion, T as TriangleRange,
|
|
2
|
-
export { A as AXES_PLANE_OFFSET, k as AXES_PLANE_SCALE, l as AxesPlane, B as BuildPickInput, C as CANDIDATE_WEIGHT, m as CAP_HATCH, D as DEFAULT_SECTION_NORMAL, o as DEFAULT_THEME, p as DIRECTION_COLORS, q as DISABLED_SECTION, E as EnginePart, r as FeatureHighlight, t as FocusOptions, H as HANDLE_PIXELS, u as HIGHLIGHT_COLORS, v as HIGHLIGHT_WEIGHT, w as HOVER_WEIGHT, x as HighlightLayers, K as KnownFeatureType, y as KnownShapeKind, N as NO_MODIFIERS, O as OUTLINE_SCALE, z as PICKED_SURFACE_LABEL, G as PREVIEW_SCALE, I as PartDisplay, J as PartMesh, L as PartMeshProps, a as PartMeshRefs, Q as PartObject, U as PickModifiers, W as PointerLocation, X as REGION_ATTRIBUTE, Y as RegionPaint, Z as SECTION_GIZMO_FRAME_SCALE, _ as SECTION_RENDER_ORDER, $ as SectionAnchor, a0 as SectionBounds, a1 as SectionPlacement, a2 as ShapeKind, a3 as SurfaceHit, a4 as applyHighlightLayers, a5 as axesPlanes, a6 as buildPick, a7 as buildRegionAttribute, a8 as buildRegionTexels, a9 as createPart, aa as directionColor, ab as dragPlane, ac as focusForPick, ad as hitUnderRay, n as normalizePartReport, ae as pickedStartDepth, af as resolveTheme, ag as sectionAnchor, ah as sectionBounds, ai as sectionConstant, aj as sectionDepth, ak as sectionDepthConstant, al as sectionDepthRange, am as sectionFromPick, an as sectionMeasurement, ao as sectionOffset, ap as sectionOptionsFromState, aq as sectionPlane, s as smoothRegionNormals, ar as surfaceUnderRay, as as themesEqual, at as viewDirection } from './normalize
|
|
1
|
+
import { P as PartModel, F as FeatureTag, d as PartPick, V as Vec3, R as RegionHighlight, e as ViewerTheme, S as SectionOptions, f as SectionState, g as PartModelRegion, T as TriangleRange, h as RegionIndex, i as PartModelFeature, j as FeatureType } from './normalize--FiXUhO4.js';
|
|
2
|
+
export { A as AXES_PLANE_OFFSET, k as AXES_PLANE_SCALE, l as AxesPlane, B as BuildPickInput, C as CANDIDATE_WEIGHT, m as CAP_HATCH, D as DEFAULT_SECTION_NORMAL, o as DEFAULT_THEME, p as DIRECTION_COLORS, q as DISABLED_SECTION, E as EnginePart, r as FeatureHighlight, t as FocusOptions, H as HANDLE_PIXELS, u as HIGHLIGHT_COLORS, v as HIGHLIGHT_WEIGHT, w as HOVER_WEIGHT, x as HighlightLayers, K as KnownFeatureType, y as KnownShapeKind, N as NO_MODIFIERS, O as OUTLINE_SCALE, z as PICKED_SURFACE_LABEL, G as PREVIEW_SCALE, I as PartDisplay, J as PartMesh, L as PartMeshProps, a as PartMeshRefs, Q as PartObject, U as PickModifiers, W as PointerLocation, X as REGION_ATTRIBUTE, Y as RegionPaint, Z as SECTION_GIZMO_FRAME_SCALE, _ as SECTION_RENDER_ORDER, $ as SectionAnchor, a0 as SectionBounds, a1 as SectionPlacement, a2 as ShapeKind, a3 as SurfaceHit, a4 as applyHighlightLayers, a5 as axesPlanes, a6 as buildPick, a7 as buildRegionAttribute, a8 as buildRegionTexels, a9 as createPart, aa as directionColor, ab as dragPlane, ac as focusForPick, ad as hitUnderRay, n as normalizePartReport, ae as pickedStartDepth, af as resolveTheme, ag as sectionAnchor, ah as sectionBounds, ai as sectionConstant, aj as sectionDepth, ak as sectionDepthConstant, al as sectionDepthRange, am as sectionFromPick, an as sectionMeasurement, ao as sectionOffset, ap as sectionOptionsFromState, aq as sectionPlane, s as smoothRegionNormals, ar as surfaceUnderRay, as as themesEqual, at as viewDirection } from './normalize--FiXUhO4.js';
|
|
3
3
|
import { BufferGeometry, Box3, CanvasTexture, Plane, Vector3, OrthographicCamera, PerspectiveCamera, Object3D, Matrix4, Vector2, Ray, ShaderMaterial, Texture, Color, MeshBasicMaterial, WebGLRenderTarget } from 'three';
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ReactNode, PropsWithChildren, RefObject, CSSProperties } from 'react';
|
|
@@ -13,6 +13,49 @@ import CameraControls from 'camera-controls';
|
|
|
13
13
|
*/
|
|
14
14
|
declare function regionAdjacency(model: PartModel, geometry: BufferGeometry): Map<number, Set<number>>;
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* A feature's faces as plain triangles: what something placed on the part
|
|
18
|
+
* fits itself against, without needing three.js to read them.
|
|
19
|
+
*/
|
|
20
|
+
interface FeatureTriangles {
|
|
21
|
+
/** Nine numbers a triangle — its three corners, x, y, z each — in the geometry's coordinates. */
|
|
22
|
+
readonly positions: Float32Array;
|
|
23
|
+
/** Three a triangle: its unit normal, pointing out of the part. */
|
|
24
|
+
readonly normals: Float32Array;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Every triangle of a feature's faces, read out of the mesh through the
|
|
28
|
+
* region index.
|
|
29
|
+
*
|
|
30
|
+
* Each normal is the mesh's own where it has them — the average of the three
|
|
31
|
+
* corners' — because they say which side is outside whatever order a
|
|
32
|
+
* triangle's corners are wound in. A mesh without normals gives each triangle
|
|
33
|
+
* its winding's. A triangle with no area has no normal and is left out.
|
|
34
|
+
*
|
|
35
|
+
* Indexed and non-indexed meshes both read: triangle `t` is corners `3t` to
|
|
36
|
+
* `3t + 2` of the index where there is one, of the positions where there is
|
|
37
|
+
* not. Empty for a tag the part does not have, or a geometry with no positions.
|
|
38
|
+
*/
|
|
39
|
+
declare function featureTriangles(model: Pick<PartModel, 'regionIndex'>, geometry: BufferGeometry, tag: FeatureTag): FeatureTriangles;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The part an overlay is drawn on: its model and the mesh `<PartMesh>` draws.
|
|
43
|
+
*
|
|
44
|
+
* `<EnginePart>` loads its mesh itself, so a child of it has no other way to
|
|
45
|
+
* reach the geometry — and an overlay placed on the part, such as
|
|
46
|
+
* `<ToolMarks>` at a feature's faces, needs the triangles it is drawn against.
|
|
47
|
+
*/
|
|
48
|
+
interface PartContextValue {
|
|
49
|
+
readonly model: PartModel;
|
|
50
|
+
/** In the coordinates the part is drawn in: the caller's, whatever it did to centre it. */
|
|
51
|
+
readonly geometry: BufferGeometry;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The part this is drawn inside: a child of `<PartMesh>` or `<EnginePart>`.
|
|
55
|
+
* Throws anywhere else, as `useViewerControls` does outside `<Viewer>`.
|
|
56
|
+
*/
|
|
57
|
+
declare const usePartContext: () => PartContextValue;
|
|
58
|
+
|
|
16
59
|
interface HoverCardProps {
|
|
17
60
|
/** The current `onHover` pick, or `null` after the pointer leaves the part. */
|
|
18
61
|
pick: PartPick | null;
|
|
@@ -44,6 +87,8 @@ interface ViewerToolbarControls {
|
|
|
44
87
|
axes?: ViewerToolbarControl;
|
|
45
88
|
grid?: ViewerToolbarControl;
|
|
46
89
|
banana?: ViewerToolbarControl;
|
|
90
|
+
/** Tools drawn on the part: see `<ToolMarks>`. */
|
|
91
|
+
tools?: ViewerToolbarControl;
|
|
47
92
|
directions?: ViewerToolbarControl;
|
|
48
93
|
hover?: ViewerToolbarControl;
|
|
49
94
|
focus?: ViewerToolbarControl;
|
|
@@ -84,6 +129,7 @@ declare const ViewerToolbar: (({ className, children }: ViewerToolbarProps) => r
|
|
|
84
129
|
AxesButton: () => react.JSX.Element;
|
|
85
130
|
GridButton: () => react.JSX.Element;
|
|
86
131
|
BananaButton: () => react.JSX.Element;
|
|
132
|
+
ToolsButton: () => react.JSX.Element;
|
|
87
133
|
DirectionsButton: () => react.JSX.Element;
|
|
88
134
|
HoverButton: () => react.JSX.Element;
|
|
89
135
|
FocusButton: () => react.JSX.Element;
|
|
@@ -106,8 +152,82 @@ type StockAllowance = number | Vec3 | {
|
|
|
106
152
|
wall: number;
|
|
107
153
|
floor: number;
|
|
108
154
|
};
|
|
109
|
-
/** How
|
|
155
|
+
/** How explicit fixed stock is positioned relative to the part's Z bounds. */
|
|
110
156
|
type StockPosition = 'model_centered' | 'offset_from_top' | 'offset_from_bottom';
|
|
157
|
+
/**
|
|
158
|
+
* Round stock in part coordinates, in millimetres: the centre of its base, the
|
|
159
|
+
* direction from the base toward its far end, and its size. The Engine's
|
|
160
|
+
* resolved `StockCylinder` carries the same four figures.
|
|
161
|
+
*/
|
|
162
|
+
interface CylinderStockFigure {
|
|
163
|
+
origin: Vec3;
|
|
164
|
+
axis: Vec3;
|
|
165
|
+
diameter: number;
|
|
166
|
+
length: number;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* A block squared to a frame of its own rather than to the part, in
|
|
170
|
+
* millimetres. `lower` and `upper` are corners in `frame`, whose point
|
|
171
|
+
* `(x, y, z)` sits at `location + x·refDirection + y·(axis × refDirection) + z·axis`
|
|
172
|
+
* in part coordinates, with `axis` normalised and `refDirection` projected
|
|
173
|
+
* square to it and normalised. This is the shape of the Engine's plan
|
|
174
|
+
* `StockBox`, which is squared to the setup.
|
|
175
|
+
*/
|
|
176
|
+
interface BoxStockFigure {
|
|
177
|
+
/** Omit for a box whose corners are already in part coordinates. */
|
|
178
|
+
frame?: {
|
|
179
|
+
location: Vec3;
|
|
180
|
+
axis: Vec3;
|
|
181
|
+
refDirection: Vec3;
|
|
182
|
+
};
|
|
183
|
+
lower: Vec3;
|
|
184
|
+
upper: Vec3;
|
|
185
|
+
}
|
|
186
|
+
/** Box preview around the part: explicit dimensions or per-side allowance. */
|
|
187
|
+
type BoxStockPreview = {
|
|
188
|
+
partGeometry: BufferGeometry;
|
|
189
|
+
offset?: Vec3;
|
|
190
|
+
} & ({
|
|
191
|
+
dimensions: Vec3;
|
|
192
|
+
position?: StockPosition;
|
|
193
|
+
positionOffset?: number;
|
|
194
|
+
allowance?: never;
|
|
195
|
+
} | {
|
|
196
|
+
allowance?: StockAllowance;
|
|
197
|
+
dimensions?: never;
|
|
198
|
+
position?: never;
|
|
199
|
+
positionOffset?: never;
|
|
200
|
+
});
|
|
201
|
+
/** Resolved corners or part-relative preview options, never both. */
|
|
202
|
+
type BoxStockInput = (BoxStockFigure & {
|
|
203
|
+
partGeometry?: never;
|
|
204
|
+
offset?: never;
|
|
205
|
+
allowance?: never;
|
|
206
|
+
dimensions?: never;
|
|
207
|
+
position?: never;
|
|
208
|
+
positionOffset?: never;
|
|
209
|
+
}) | (BoxStockPreview & {
|
|
210
|
+
lower?: never;
|
|
211
|
+
upper?: never;
|
|
212
|
+
frame?: never;
|
|
213
|
+
});
|
|
214
|
+
/** Upright cylinder preview centered on the part's bounding box. */
|
|
215
|
+
interface CylinderStockPreview {
|
|
216
|
+
partGeometry: BufferGeometry;
|
|
217
|
+
diameter: number;
|
|
218
|
+
length: number;
|
|
219
|
+
position?: StockPosition;
|
|
220
|
+
positionOffset?: number;
|
|
221
|
+
}
|
|
222
|
+
/** Resolved cylinder placement or part-relative preview options, never both. */
|
|
223
|
+
type CylinderStockInput = (CylinderStockFigure & {
|
|
224
|
+
partGeometry?: never;
|
|
225
|
+
position?: never;
|
|
226
|
+
positionOffset?: never;
|
|
227
|
+
}) | (CylinderStockPreview & {
|
|
228
|
+
origin?: never;
|
|
229
|
+
axis?: never;
|
|
230
|
+
});
|
|
111
231
|
/**
|
|
112
232
|
* Bounds for an explicit fixed box. X/Y are centered on the part's bounding
|
|
113
233
|
* box; Z is centered, offset from the top, or offset from the bottom. `offset`
|
|
@@ -117,36 +237,38 @@ declare function fixedBoxStockBounds(geometry: BufferGeometry, dimensions: Vec3,
|
|
|
117
237
|
/** Per-side allowance and centre offset in millimetres, in the part's coordinates. */
|
|
118
238
|
declare function boxStockBounds(geometry: BufferGeometry, allowance?: StockAllowance, offset?: Vec3): Box3;
|
|
119
239
|
|
|
120
|
-
interface
|
|
121
|
-
/**
|
|
122
|
-
|
|
240
|
+
interface StockAppearanceProps {
|
|
241
|
+
/** Keep the preceding decoded GLB visible until its replacement is ready. Key by part/run to reset. */
|
|
242
|
+
retainPrevious?: boolean;
|
|
243
|
+
/** Reproduce the legacy Workpiece's materials, duplicate surface pass and edge ordering. */
|
|
244
|
+
renderStyle?: 'overlay' | 'legacy-workpiece';
|
|
123
245
|
color?: number;
|
|
246
|
+
/** Unlit surface contribution, useful for readable workpiece shading beside the CAD model. */
|
|
247
|
+
emissive?: number;
|
|
248
|
+
/** Shade each triangle independently without changing the source's vertices or normals. */
|
|
249
|
+
flatShading?: boolean;
|
|
124
250
|
opacity?: number;
|
|
125
251
|
edgeColor?: number;
|
|
126
252
|
edgeOpacity?: number;
|
|
127
253
|
showEdges?: boolean;
|
|
128
254
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
positionOffset?: number;
|
|
139
|
-
/**
|
|
140
|
-
* Stock left around the part, in millimetres. In the `{ wall, floor }` form,
|
|
141
|
-
* wall applies to X/Y and floor applies to Z. Number and `{ x, y, z }` forms
|
|
142
|
-
* are retained for compatibility. Defaults to zero.
|
|
143
|
-
*/
|
|
144
|
-
allowance?: StockAllowance;
|
|
145
|
-
/** Translation from the part's bounding-box centre, in millimetres. */
|
|
146
|
-
offset?: Vec3;
|
|
255
|
+
interface StockSources {
|
|
256
|
+
/** Caller-owned geometry; Stock never disposes it. */
|
|
257
|
+
geometry: BufferGeometry;
|
|
258
|
+
/** Caller-provided GLB bytes; Stock owns and cleans up the decoded geometry. */
|
|
259
|
+
glb: ArrayBuffer;
|
|
260
|
+
/** Resolved box corners/frame, or part-relative box preview options. */
|
|
261
|
+
box: BoxStockInput;
|
|
262
|
+
/** Resolved cylinder placement, or part-relative cylinder preview options. */
|
|
263
|
+
cylinder: CylinderStockInput;
|
|
147
264
|
}
|
|
148
|
-
/**
|
|
149
|
-
|
|
265
|
+
/** Exactly one source, in the same millimetre, Z-up coordinates as the part. */
|
|
266
|
+
type StockSource = {
|
|
267
|
+
[K in keyof StockSources]: Pick<StockSources, K> & Partial<Record<Exclude<keyof StockSources, K>, never>>;
|
|
268
|
+
}[keyof StockSources];
|
|
269
|
+
type StockProps = StockAppearanceProps & StockSource;
|
|
270
|
+
/** Translucent stock, included in Fit but ignored by picking, sections and measurements. */
|
|
271
|
+
declare const Stock: ({ geometry, glb, box, cylinder, ...appearance }: StockProps) => react.JSX.Element;
|
|
150
272
|
|
|
151
273
|
/** The six-inch (154 mm) reference model bundled with `@toolpath/viewer`. */
|
|
152
274
|
declare const BANANA_MODEL_URL: string;
|
|
@@ -871,6 +993,81 @@ interface MeasureToolProps {
|
|
|
871
993
|
*/
|
|
872
994
|
declare const MeasureTool: ({ mode, measurements, onChange, showDeltas, format, labelClassName, theme, }: MeasureToolProps) => react.JSX.Element | null;
|
|
873
995
|
|
|
996
|
+
/**
|
|
997
|
+
* A cutting tool drawn on the part: an end mill standing at a place, up an
|
|
998
|
+
* axis, to scale. What it stands for — the widest tool a pocket admits, the
|
|
999
|
+
* tool an operation uses — is the caller's; this is only where and how big.
|
|
1000
|
+
*/
|
|
1001
|
+
interface ToolMark {
|
|
1002
|
+
/** The centre of the tool's bottom, in the coordinates the part is drawn in. */
|
|
1003
|
+
readonly base: Vec3;
|
|
1004
|
+
/** Up the tool, from its tip to its shank. Need not be unit length. */
|
|
1005
|
+
readonly axis: Vec3;
|
|
1006
|
+
readonly diameter: number;
|
|
1007
|
+
/** How tall the drawn tool stands from its tip. */
|
|
1008
|
+
readonly height: number;
|
|
1009
|
+
/**
|
|
1010
|
+
* The radius on the tool's corner: 0 for a flat end mill, half the diameter
|
|
1011
|
+
* for a ball, anything between for a bull nose. Held to that range.
|
|
1012
|
+
*/
|
|
1013
|
+
readonly cornerRadius?: number;
|
|
1014
|
+
/**
|
|
1015
|
+
* Which way the dimension across the tool's top runs: toward what it
|
|
1016
|
+
* touches, say. Any direction square to the axis when left out or along it.
|
|
1017
|
+
*/
|
|
1018
|
+
readonly across?: Vec3;
|
|
1019
|
+
/**
|
|
1020
|
+
* The tool's own side, to turn about its axis in place of the end mill
|
|
1021
|
+
* `diameter` and `cornerRadius` make: radius out from the axis and height
|
|
1022
|
+
* above the tip, from the tip up — `@toolpath/tool-drawing`'s outline of a
|
|
1023
|
+
* drill, a chamfer mill, a tool in its holder. `diameter` and `height` still
|
|
1024
|
+
* place the rims and the dimension.
|
|
1025
|
+
*/
|
|
1026
|
+
readonly profile?: readonly ToolProfilePoint[];
|
|
1027
|
+
/** Written on the dimension: `⌀ 3.200 mm`. */
|
|
1028
|
+
readonly label?: string;
|
|
1029
|
+
/** After the label, quieter: `bull nose R 0.5 · 3 places`. */
|
|
1030
|
+
readonly note?: string;
|
|
1031
|
+
}
|
|
1032
|
+
/** A point on a tool's side: radius out from its axis and height above its tip. */
|
|
1033
|
+
interface ToolProfilePoint {
|
|
1034
|
+
readonly r: number;
|
|
1035
|
+
readonly z: number;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
interface ToolMarksProps {
|
|
1039
|
+
/** The tools to draw, in the coordinates the part is drawn in. */
|
|
1040
|
+
marks: readonly ToolMark[];
|
|
1041
|
+
/** Draws nothing while false, and keeps its place in the scene. On by default. */
|
|
1042
|
+
visible?: boolean;
|
|
1043
|
+
/**
|
|
1044
|
+
* Added to every label's `className`, beside {@link MEASURE_LABEL_CLASS} —
|
|
1045
|
+
* a Tailwind utility list, or a CSS module's class.
|
|
1046
|
+
*/
|
|
1047
|
+
labelClassName?: string;
|
|
1048
|
+
/** `measure` colours the rims and the dimension, as it does the measure tool's lines. */
|
|
1049
|
+
theme?: Partial<ViewerTheme>;
|
|
1050
|
+
}
|
|
1051
|
+
/**
|
|
1052
|
+
* Cutting tools drawn on the part, each to scale where it stands: a
|
|
1053
|
+
* see-through end mill — flat, bull nose or ball — or any tool turned from its
|
|
1054
|
+
* `profile`, rimmed at its bottom and top, with a dimension across its top and
|
|
1055
|
+
* a label on it. Mount it inside
|
|
1056
|
+
* `<Viewer>`, beside or inside the part.
|
|
1057
|
+
*
|
|
1058
|
+
* What a tool stands for is the caller's. A DFM panel stands the widest tool
|
|
1059
|
+
* a pocket admits in its tightest place; a plan could show the tool an
|
|
1060
|
+
* operation uses. Nothing here reads a datasheet.
|
|
1061
|
+
*
|
|
1062
|
+
* Drawn as the measure tool draws: the lines show through the part, in the
|
|
1063
|
+
* theme's `measure` colour, and the labels are unstyled DOM elements with the
|
|
1064
|
+
* {@link MEASURE_LABEL_CLASS} class and `data-measure-label="tool"`, the
|
|
1065
|
+
* label's text in a `data-measure-value` span and its note in a
|
|
1066
|
+
* `data-measure-note` one. The marks take no pointer events and are left out
|
|
1067
|
+
* of framing, so fitting the view fits the part.
|
|
1068
|
+
*/
|
|
1069
|
+
declare const ToolMarks: ({ marks, visible, labelClassName, theme }: ToolMarksProps) => react.JSX.Element;
|
|
1070
|
+
|
|
874
1071
|
/**
|
|
875
1072
|
* The cut a viewer holds for itself, when nobody else is holding it.
|
|
876
1073
|
*
|
|
@@ -1778,4 +1975,4 @@ declare const ORBIT_TARGET_FADE_MS = 1000;
|
|
|
1778
1975
|
*/
|
|
1779
1976
|
declare function orbitTargetOpacity(sinceHold: number, fade?: number): number;
|
|
1780
1977
|
|
|
1781
|
-
export { ANGLE_ARC_FRACTION, ANGLE_ARC_SEGMENTS, AXIS_COLORS, type AngleMeasurement, type ArrowPlacement, Axes, type AxesProps, type Axis, type AxisLock, BANANA_GAP, BANANA_MODEL_URL, Banana, type BananaProps,
|
|
1978
|
+
export { ANGLE_ARC_FRACTION, ANGLE_ARC_SEGMENTS, AXIS_COLORS, type AngleMeasurement, type ArrowPlacement, Axes, type AxesProps, type Axis, type AxisLock, BANANA_GAP, BANANA_MODEL_URL, Banana, type BananaProps, type BoxStockFigure, type BoxStockInput, type BoxStockPreview, CAD_CAMERA_UP, CHAMFER, CONTROL_SCHEME_OPTIONS, CadCameraControls, type CadCameraControlsProps, type CameraLimits, type CapMaterial, type CapUniforms, type ControlScheme, type ControlSchemeOption, type CubeZone, type CylinderStockFigure, type CylinderStockInput, type CylinderStockPreview, DEFAULT_FIT_MARGIN, DELTA_DASH_PIXELS, DOUBLE_TAP_MS, type DeltaLeg, DirectionArrows, type DirectionArrowsProps, type DirectionGroup, type DistanceMeasurement, type DoubleTapPoint, type DoubleTapTracker, EXCLUDE_FROM_FRAME, ExtendedCameraControls, type ExtendedCameraControlsOptions, FEATURE_TYPE_RANKS, FeatureTag, type FeatureTriangles, FeatureType, Grid, type GridProps, type GridSpec, HoverCard, type HoverCardProps, MAX_FRAME_RATIO, MEASURE_LABEL_CLASS, MEASURE_LINE_PIXELS, MEASURE_MARKER_PIXELS, MEASURE_RENDER_ORDER, MIN_FRAME_RATIO, type MeasureLabelKind, type MeasureMode, MeasureTool, type MeasureToolProps, type Measurement, type NamedDirection, ORBIT_TARGET_COLOR, ORBIT_TARGET_FADE_MS, ORBIT_TARGET_FLASH_MS, ORBIT_TARGET_PIXELS, ORBIT_TARGET_RING_COLOR, ORBIT_TARGET_RING_OPACITY, ORBIT_TARGET_RING_PIXELS, ORBIT_TARGET_RING_WIDTH, PERSPECTIVE_FOV, POINTS_PER_MEASUREMENT, type PartContextValue, PartModel, PartModelFeature, PartModelRegion, PartPick, PartReportFormatError, type Projection, type RankingContext, RegionHighlight, RegionIndex, type Retarget, type RetargetPose, SNAP_MARKER_PIXELS, SNAP_PIXELS, type SceneBounds, SectionOptions, type SectionSample, SectionState, type SectionStore, SectionTool, type SectionToolProps, SectionView, type Snap, type SnapEdges, type SnapHit, type SnapKind, Stock, type StockAllowance, type StockAppearanceProps, type StockPosition, type StockProps, type StockSource, type SurfaceOf, TAP_SLOP, type TapPoint, type TapTracker, type ToolMark, ToolMarks, type ToolMarksProps, type ToolProfilePoint, TriangleRange, UnsupportedKernelVersionError, VIEW_NAMES, VIEW_SIGNS, Vec3, ViewCube, type ViewCubeProps, type ViewKind, type ViewName, Viewer, type ViewerCamera, type ViewerControls, type ViewerHandle, type ViewerProps, ViewerTheme, ViewerToolbar, type ViewerToolbarControl, type ViewerToolbarControls, type ViewerToolbarControlsProps, type ViewerToolbarProps, ViewerToolbarProvider, type ViewerView, type ViewportSize, adaptedUp, angleArc, angleArcRadius, angleAt, applyCapTheme, applyProjection, arrowPlacement, aspectRatio, bananaFrameBounds, bananaPosition, bestOwner, boundsFromBox, boxStockBounds, buildRegionIndex, cadViewDirections, cameraLimits, capHit, clipSegments, contentBounds, createCapMaterial, createMaskMaterial, createMaskTarget, createSectionStore, createStencilMaterials, cubeOutlineGeometry, cubeZones, currentViewDirection, cycleOwner, defaultBounds, deltaBetween, deltaLegs, directionHighlights, directionIndexOf, directionLabel, distanceBetween, excludedFromFrame, featureTriangles, featureTypeRank, fitDistance, fixedBoxStockBounds, formatDegrees, formatMillimetres, gridGeometry, gridSpec, groupByDirection, labelGeometry, labelTexture, lockToAxis, measurementFromPoints, measurementLabel, measurementLabelAnchor, midpoint, movedFar, nextMeasurementId, orbitTargetOpacity, orthographicHalfHeight, panelGeometry, perspectiveFitDistance, pointInContour, rankOwners, regionAdjacency, regionEdgesGeometry, regionNormals, resolveSectionPlane, retargetPose, sameDirection, sampleSection, screenLength, screenPoint, sectionContour, snapAt, squaredUp, startPosition, targetBoundary, trackDoubleTaps, trackTaps, useContentBox, usePartContext, useRetarget, useSectionStore, useTapGuard, useViewerControls, useViewerToolbar, viewKind, viewUp, viewVector, visualSurfaces };
|