@snaptrude/plugin-core 0.3.0 → 0.5.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/AGENTS.md +130 -48
- package/CHANGELOG.md +111 -0
- package/api-manifest.full.json +3999 -0
- package/api-manifest.json +3845 -0
- package/dist/api/core/buildings.d.ts +427 -0
- package/dist/api/core/buildings.d.ts.map +1 -0
- package/dist/api/core/comment/index.d.ts +230 -0
- package/dist/api/core/comment/index.d.ts.map +1 -0
- package/dist/api/core/geom/create/index.d.ts +247 -0
- package/dist/api/core/geom/create/index.d.ts.map +1 -0
- package/dist/api/core/geom/delete/index.d.ts +72 -0
- package/dist/api/core/geom/delete/index.d.ts.map +1 -0
- package/dist/api/core/geom/index.d.ts +24 -23
- package/dist/api/core/geom/index.d.ts.map +1 -1
- package/dist/api/core/geom/query/arc.d.ts +169 -0
- package/dist/api/core/geom/query/arc.d.ts.map +1 -0
- package/dist/api/core/geom/query/brep.d.ts +402 -0
- package/dist/api/core/geom/query/brep.d.ts.map +1 -0
- package/dist/api/core/geom/query/circle.d.ts +378 -0
- package/dist/api/core/geom/query/circle.d.ts.map +1 -0
- package/dist/api/core/geom/query/contour.d.ts +450 -0
- package/dist/api/core/geom/query/contour.d.ts.map +1 -0
- package/dist/api/core/geom/query/curve.d.ts +918 -0
- package/dist/api/core/geom/query/curve.d.ts.map +1 -0
- package/dist/api/core/geom/query/edge.d.ts +128 -0
- package/dist/api/core/geom/query/edge.d.ts.map +1 -0
- package/dist/api/core/geom/query/face.d.ts +363 -0
- package/dist/api/core/geom/query/face.d.ts.map +1 -0
- package/dist/api/core/geom/query/halfedge.d.ts +206 -0
- package/dist/api/core/geom/query/halfedge.d.ts.map +1 -0
- package/dist/api/core/geom/query/index.d.ts +61 -0
- package/dist/api/core/geom/query/index.d.ts.map +1 -0
- package/dist/api/core/geom/query/profile.d.ts +410 -0
- package/dist/api/core/geom/query/profile.d.ts.map +1 -0
- package/dist/api/core/geom/query/vertex.d.ts +187 -0
- package/dist/api/core/geom/query/vertex.d.ts.map +1 -0
- package/dist/api/core/geom/update/contour.d.ts +272 -0
- package/dist/api/core/geom/update/contour.d.ts.map +1 -0
- package/dist/api/core/geom/update/curve.d.ts +180 -0
- package/dist/api/core/geom/update/curve.d.ts.map +1 -0
- package/dist/api/core/geom/update/index.d.ts +27 -0
- package/dist/api/core/geom/update/index.d.ts.map +1 -0
- package/dist/api/core/geom/update/profile.d.ts +329 -0
- package/dist/api/core/geom/update/profile.d.ts.map +1 -0
- package/dist/api/core/groups.d.ts +485 -0
- package/dist/api/core/groups.d.ts.map +1 -0
- package/dist/api/core/history/index.d.ts +78 -0
- package/dist/api/core/history/index.d.ts.map +1 -0
- package/dist/api/core/index.d.ts +46 -1
- package/dist/api/core/index.d.ts.map +1 -1
- package/dist/api/core/layers.d.ts +402 -0
- package/dist/api/core/layers.d.ts.map +1 -0
- package/dist/api/core/math/quat.d.ts +111 -128
- package/dist/api/core/math/quat.d.ts.map +1 -1
- package/dist/api/core/math/vec3.d.ts +120 -102
- package/dist/api/core/math/vec3.d.ts.map +1 -1
- package/dist/api/core/project/index.d.ts +399 -0
- package/dist/api/core/project/index.d.ts.map +1 -0
- package/dist/api/core/tags.d.ts +755 -0
- package/dist/api/core/tags.d.ts.map +1 -0
- package/dist/api/core/units/index.d.ts +175 -0
- package/dist/api/core/units/index.d.ts.map +1 -0
- package/dist/api/core/zoom/index.d.ts +45 -0
- package/dist/api/core/zoom/index.d.ts.map +1 -0
- package/dist/api/design/boolean/index.d.ts +168 -0
- package/dist/api/design/boolean/index.d.ts.map +1 -0
- package/dist/api/design/create/index.d.ts +828 -0
- package/dist/api/design/create/index.d.ts.map +1 -0
- package/dist/api/design/delete/index.d.ts +63 -0
- package/dist/api/design/delete/index.d.ts.map +1 -0
- package/dist/api/design/doors/index.d.ts +268 -0
- package/dist/api/design/doors/index.d.ts.map +1 -0
- package/dist/api/design/edit/index.d.ts +49 -0
- package/dist/api/design/edit/index.d.ts.map +1 -0
- package/dist/api/design/erase/index.d.ts +160 -0
- package/dist/api/design/erase/index.d.ts.map +1 -0
- package/dist/api/design/furniture/index.d.ts +123 -0
- package/dist/api/design/furniture/index.d.ts.map +1 -0
- package/dist/api/design/index.d.ts +153 -0
- package/dist/api/design/index.d.ts.map +1 -0
- package/dist/api/design/lock.d.ts +41 -0
- package/dist/api/design/lock.d.ts.map +1 -0
- package/dist/api/design/materials/index.d.ts +297 -0
- package/dist/api/design/materials/index.d.ts.map +1 -0
- package/dist/api/design/query/geometry/index.d.ts +140 -0
- package/dist/api/design/query/geometry/index.d.ts.map +1 -0
- package/dist/api/design/query/index.d.ts +1011 -0
- package/dist/api/design/query/index.d.ts.map +1 -0
- package/dist/api/design/query/spaces.d.ts +221 -0
- package/dist/api/design/query/spaces.d.ts.map +1 -0
- package/dist/api/design/selection/index.d.ts +138 -0
- package/dist/api/design/selection/index.d.ts.map +1 -0
- package/dist/api/design/shared.d.ts +38 -0
- package/dist/api/design/shared.d.ts.map +1 -0
- package/dist/api/design/transform/index.d.ts +87 -0
- package/dist/api/design/transform/index.d.ts.map +1 -0
- package/dist/api/design/update/index.d.ts +178 -0
- package/dist/api/design/update/index.d.ts.map +1 -0
- package/dist/api/design/windows/index.d.ts +189 -0
- package/dist/api/design/windows/index.d.ts.map +1 -0
- package/dist/api/entity/buildableEnvelope.d.ts +261 -0
- package/dist/api/entity/buildableEnvelope.d.ts.map +1 -0
- package/dist/api/entity/department.d.ts +0 -98
- package/dist/api/entity/department.d.ts.map +1 -1
- package/dist/api/entity/index.d.ts +9 -9
- package/dist/api/entity/index.d.ts.map +1 -1
- package/dist/api/entity/referenceLine.d.ts +49 -106
- package/dist/api/entity/referenceLine.d.ts.map +1 -1
- package/dist/api/entity/space.d.ts +482 -249
- package/dist/api/entity/space.d.ts.map +1 -1
- package/dist/api/entity/story.d.ts +49 -39
- package/dist/api/entity/story.d.ts.map +1 -1
- package/dist/api/index.d.ts +17 -12
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/presentation/aiInspiration.d.ts +440 -0
- package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
- package/dist/api/presentation/diagrams.d.ts +81 -0
- package/dist/api/presentation/diagrams.d.ts.map +1 -0
- package/dist/api/presentation/import.d.ts +113 -0
- package/dist/api/presentation/import.d.ts.map +1 -0
- package/dist/api/presentation/index.d.ts +46 -0
- package/dist/api/presentation/index.d.ts.map +1 -0
- package/dist/api/presentation/sheets.d.ts +176 -0
- package/dist/api/presentation/sheets.d.ts.map +1 -0
- package/dist/api/presentation/views.d.ts +296 -0
- package/dist/api/presentation/views.d.ts.map +1 -0
- package/dist/api/program/adjacency.d.ts +155 -0
- package/dist/api/program/adjacency.d.ts.map +1 -0
- package/dist/api/program/areas.d.ts +360 -0
- package/dist/api/program/areas.d.ts.map +1 -0
- package/dist/api/program/classification.d.ts +135 -0
- package/dist/api/program/classification.d.ts.map +1 -0
- package/dist/api/program/cores.d.ts +174 -0
- package/dist/api/program/cores.d.ts.map +1 -0
- package/dist/api/program/departments.d.ts +431 -0
- package/dist/api/program/departments.d.ts.map +1 -0
- package/dist/api/program/index.d.ts +69 -0
- package/dist/api/program/index.d.ts.map +1 -0
- package/dist/api/program/layout.d.ts +63 -0
- package/dist/api/program/layout.d.ts.map +1 -0
- package/dist/api/program/metrics.d.ts +108 -0
- package/dist/api/program/metrics.d.ts.map +1 -0
- package/dist/api/program/site.d.ts +367 -0
- package/dist/api/program/site.d.ts.map +1 -0
- package/dist/api/program/spreadsheet.d.ts +2041 -0
- package/dist/api/program/spreadsheet.d.ts.map +1 -0
- package/dist/handles.d.ts +138 -0
- package/dist/handles.d.ts.map +1 -0
- package/dist/host-utils.d.ts +7 -5
- package/dist/host-utils.d.ts.map +1 -1
- package/dist/index.cjs +4001 -904
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3392 -870
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
- package/scripts/generate-manifest.mjs +193 -0
- package/scripts/generate-manifest.test.mjs +193 -0
- package/src/api/core/buildings.ts +485 -0
- package/src/api/core/comment/index.ts +258 -0
- package/src/api/core/geom/create/index.ts +293 -0
- package/src/api/core/geom/delete/index.ts +78 -0
- package/src/api/core/geom/index.ts +24 -23
- package/src/api/core/geom/query/arc.ts +169 -0
- package/src/api/core/geom/query/brep.ts +444 -0
- package/src/api/core/geom/query/circle.ts +404 -0
- package/src/api/core/geom/query/contour.ts +540 -0
- package/src/api/core/geom/query/curve.ts +1078 -0
- package/src/api/core/geom/query/edge.ts +130 -0
- package/src/api/core/geom/query/face.ts +403 -0
- package/src/api/core/geom/query/halfedge.ts +210 -0
- package/src/api/core/geom/query/index.ts +63 -0
- package/src/api/core/geom/query/profile.ts +473 -0
- package/src/api/core/geom/query/vertex.ts +205 -0
- package/src/api/core/geom/update/contour.ts +315 -0
- package/src/api/core/geom/update/curve.ts +209 -0
- package/src/api/core/geom/update/index.ts +29 -0
- package/src/api/core/geom/update/profile.ts +377 -0
- package/src/api/core/groups.ts +521 -0
- package/src/api/core/history/index.ts +84 -0
- package/src/api/core/index.ts +46 -1
- package/src/api/core/layers.ts +333 -0
- package/src/api/core/math/quat.ts +112 -235
- package/src/api/core/math/vec3.ts +124 -159
- package/src/api/core/project/index.ts +418 -0
- package/src/api/core/tags.ts +808 -0
- package/src/api/core/units/index.ts +164 -0
- package/src/api/core/zoom/index.ts +47 -0
- package/src/api/design/boolean/index.ts +179 -0
- package/src/api/design/create/index.ts +886 -0
- package/src/api/design/delete/index.ts +67 -0
- package/src/api/design/doors/index.ts +285 -0
- package/src/api/design/edit/index.ts +54 -0
- package/src/api/design/erase/index.ts +151 -0
- package/src/api/design/furniture/index.ts +130 -0
- package/src/api/design/index.ts +162 -0
- package/src/api/design/lock.ts +42 -0
- package/src/api/design/materials/index.ts +301 -0
- package/src/api/design/query/geometry/index.ts +166 -0
- package/src/api/design/query/index.ts +937 -0
- package/src/api/design/query/spaces.ts +132 -0
- package/src/api/design/selection/index.ts +144 -0
- package/src/api/design/shared.ts +40 -0
- package/src/api/design/transform/index.ts +93 -0
- package/src/api/design/update/index.ts +117 -0
- package/src/api/design/windows/index.ts +207 -0
- package/src/api/entity/buildableEnvelope.ts +318 -0
- package/src/api/entity/department.ts +0 -113
- package/src/api/entity/index.ts +9 -9
- package/src/api/entity/referenceLine.ts +50 -38
- package/src/api/entity/space.ts +285 -226
- package/src/api/entity/story.ts +53 -42
- package/src/api/index.ts +17 -12
- package/src/api/presentation/aiInspiration.ts +362 -0
- package/src/api/presentation/diagrams.ts +84 -0
- package/src/api/presentation/import.ts +112 -0
- package/src/api/presentation/index.ts +48 -0
- package/src/api/presentation/sheets.ts +198 -0
- package/src/api/presentation/views.ts +303 -0
- package/src/api/program/adjacency.ts +164 -0
- package/src/api/program/areas.ts +335 -0
- package/src/api/program/classification.ts +138 -0
- package/src/api/program/cores.ts +171 -0
- package/src/api/program/departments.ts +465 -0
- package/src/api/program/index.ts +71 -0
- package/src/api/program/layout.ts +68 -0
- package/src/api/program/metrics.ts +120 -0
- package/src/api/program/site.ts +326 -0
- package/src/api/program/spreadsheet.ts +2075 -0
- package/src/handles.ts +148 -0
- package/src/host-utils.ts +10 -6
- package/src/index.ts +1 -0
- package/dist/api/core/geom/arc.d.ts +0 -81
- package/dist/api/core/geom/arc.d.ts.map +0 -1
- package/dist/api/core/geom/curve.d.ts +0 -70
- package/dist/api/core/geom/curve.d.ts.map +0 -1
- package/dist/api/core/geom/line.d.ts +0 -56
- package/dist/api/core/geom/line.d.ts.map +0 -1
- package/dist/api/core/geom/profile.d.ts +0 -121
- package/dist/api/core/geom/profile.d.ts.map +0 -1
- package/dist/api/tools/copy.d.ts +0 -59
- package/dist/api/tools/copy.d.ts.map +0 -1
- package/dist/api/tools/index.d.ts +0 -33
- package/dist/api/tools/index.d.ts.map +0 -1
- package/dist/api/tools/material.d.ts +0 -51
- package/dist/api/tools/material.d.ts.map +0 -1
- package/dist/api/tools/offset.d.ts +0 -43
- package/dist/api/tools/offset.d.ts.map +0 -1
- package/dist/api/tools/selection.d.ts +0 -48
- package/dist/api/tools/selection.d.ts.map +0 -1
- package/dist/api/tools/transform.d.ts +0 -114
- package/dist/api/tools/transform.d.ts.map +0 -1
- package/dist/api/units/index.d.ts +0 -163
- package/dist/api/units/index.d.ts.map +0 -1
- package/src/api/core/geom/arc.ts +0 -70
- package/src/api/core/geom/curve.ts +0 -41
- package/src/api/core/geom/line.ts +0 -53
- package/src/api/core/geom/profile.ts +0 -94
- package/src/api/tools/copy.ts +0 -55
- package/src/api/tools/index.ts +0 -39
- package/src/api/tools/material.ts +0 -49
- package/src/api/tools/offset.ts +0 -43
- package/src/api/tools/selection.ts +0 -51
- package/src/api/tools/transform.ts +0 -117
- package/src/api/units/index.ts +0 -163
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import * as z from "zod"
|
|
2
|
+
import { PluginApiReturn } from "../../../types"
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Project-level settings and info.
|
|
6
|
+
*
|
|
7
|
+
* Accessed via `snaptrude.core.project`. Currently exposes
|
|
8
|
+
* {@linkcode PluginProjectApi.settings} (snap + grid controls).
|
|
9
|
+
*/
|
|
10
|
+
export abstract class PluginProjectApi {
|
|
11
|
+
constructor() {}
|
|
12
|
+
|
|
13
|
+
/** Project settings — snaps and grid. See {@linkcode PluginProjectSettingsApi}. */
|
|
14
|
+
public abstract settings: PluginProjectSettingsApi
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Project settings — tolerance, snaps, and grid.
|
|
19
|
+
*
|
|
20
|
+
* Accessed via `snaptrude.core.project.settings`.
|
|
21
|
+
*/
|
|
22
|
+
export abstract class PluginProjectSettingsApi {
|
|
23
|
+
constructor() {}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Get the project tolerance as a numeric magnitude.
|
|
27
|
+
*
|
|
28
|
+
* The engine stores tolerance as a discrete per-unit precision option; this
|
|
29
|
+
* returns its magnitude (decimal precision `"0.00"` → `0.01`; fraction `"1/4"`
|
|
30
|
+
* → `0.25`).
|
|
31
|
+
*
|
|
32
|
+
* @examplePrompt What is the tolerance setting in this project?
|
|
33
|
+
* @examplePrompt Check the current dimension precision of the model
|
|
34
|
+
* @examplePrompt How precise are the measurements in this project?
|
|
35
|
+
* @examplePrompt Show me the project's tolerance value
|
|
36
|
+
*
|
|
37
|
+
* # Example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const tolerance = await snaptrude.core.project.settings.getTolerance()
|
|
40
|
+
* console.log(tolerance) // e.g. 0.01
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
public abstract getTolerance(): PluginApiReturn<number>
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Set the project tolerance. The value snaps to the **nearest allowed**
|
|
47
|
+
* per-unit precision option (tolerance is a discrete dropdown, not arbitrary).
|
|
48
|
+
*
|
|
49
|
+
* @param value - Target tolerance magnitude; snaps to the nearest allowed option.
|
|
50
|
+
* @returns `true` once applied; `false` if no tolerance options are available.
|
|
51
|
+
*
|
|
52
|
+
* @examplePrompt Set the project tolerance to 0.01
|
|
53
|
+
* @examplePrompt Change the dimension precision to two decimal places
|
|
54
|
+
* @examplePrompt Round dimensions to the nearest quarter inch
|
|
55
|
+
* @examplePrompt Make the measurements in this project more precise
|
|
56
|
+
*
|
|
57
|
+
* # Example
|
|
58
|
+
* ```ts
|
|
59
|
+
* // snaps to the nearest allowed precision option
|
|
60
|
+
* const applied = await snaptrude.core.project.settings.setTolerance(0.01)
|
|
61
|
+
* if (!applied) console.log("no tolerance options available")
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
public abstract setTolerance(value: number): PluginApiReturn<boolean>
|
|
65
|
+
|
|
66
|
+
/** Snap controls (dimension / angle / parallel / normal / magnetic). See {@linkcode PluginSnapsApi}. */
|
|
67
|
+
public abstract snaps: PluginSnapsApi
|
|
68
|
+
/** Grid controls. See {@linkcode PluginGridApi}. */
|
|
69
|
+
public abstract grid: PluginGridApi
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Snap controls. Dimension and angle snaps each have a numeric threshold plus an
|
|
74
|
+
* on/off toggle; parallel, normal, and magnetic snaps are on/off only.
|
|
75
|
+
* (`normal` is the perpendicular snap.)
|
|
76
|
+
*
|
|
77
|
+
* Accessed via `snaptrude.core.project.settings.snaps`.
|
|
78
|
+
*/
|
|
79
|
+
export abstract class PluginSnapsApi {
|
|
80
|
+
constructor() {}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Set the dimension-snap threshold — the length increment that drawing and
|
|
84
|
+
* editing snap to when dimension snapping is on.
|
|
85
|
+
*
|
|
86
|
+
* @param value - The snap threshold distance.
|
|
87
|
+
*
|
|
88
|
+
* @examplePrompt Set the dimension snap to 100mm
|
|
89
|
+
* @examplePrompt Change the snap distance to half a metre
|
|
90
|
+
* @examplePrompt Make the cursor snap every 6 inches when drawing
|
|
91
|
+
* @examplePrompt Adjust the snapping increment for lengths
|
|
92
|
+
*
|
|
93
|
+
* # Example
|
|
94
|
+
* ```ts
|
|
95
|
+
* // the threshold only applies while dimension snapping is on
|
|
96
|
+
* await snaptrude.core.project.settings.snaps.setDimension(100)
|
|
97
|
+
* await snaptrude.core.project.settings.snaps.enableDimension()
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
public abstract setDimension(value: number): PluginApiReturn<boolean>
|
|
101
|
+
/**
|
|
102
|
+
* Get the current dimension-snap threshold — the length increment that
|
|
103
|
+
* drawing and editing snap to when dimension snapping is on.
|
|
104
|
+
*
|
|
105
|
+
* @examplePrompt What is the dimension snap distance?
|
|
106
|
+
* @examplePrompt Check the current snap increment for drawing
|
|
107
|
+
* @examplePrompt How far apart are the length snaps set?
|
|
108
|
+
* @examplePrompt Show me the snap spacing value
|
|
109
|
+
*
|
|
110
|
+
* # Example
|
|
111
|
+
* ```ts
|
|
112
|
+
* const increment = await snaptrude.core.project.settings.snaps.getDimension()
|
|
113
|
+
* console.log(increment)
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
public abstract getDimension(): PluginApiReturn<number>
|
|
117
|
+
/**
|
|
118
|
+
* Turn dimension snapping on, so drawing and editing snap to the configured
|
|
119
|
+
* length increment.
|
|
120
|
+
*
|
|
121
|
+
* @examplePrompt Turn on dimension snapping
|
|
122
|
+
* @examplePrompt Enable snapping to set lengths while I draw
|
|
123
|
+
* @examplePrompt Make my walls snap to round dimensions
|
|
124
|
+
* @examplePrompt Switch length snapping back on
|
|
125
|
+
*
|
|
126
|
+
* # Example
|
|
127
|
+
* ```ts
|
|
128
|
+
* await snaptrude.core.project.settings.snaps.enableDimension()
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
public abstract enableDimension(): PluginApiReturn<boolean>
|
|
132
|
+
/**
|
|
133
|
+
* Turn dimension snapping off, so lengths no longer snap to the configured
|
|
134
|
+
* increment while drawing.
|
|
135
|
+
*
|
|
136
|
+
* @examplePrompt Turn off dimension snapping
|
|
137
|
+
* @examplePrompt Stop snapping to fixed lengths when I draw
|
|
138
|
+
* @examplePrompt Disable the length snap so I can draw freely
|
|
139
|
+
* @examplePrompt I don't want dimensions to snap anymore
|
|
140
|
+
*
|
|
141
|
+
* # Example
|
|
142
|
+
* ```ts
|
|
143
|
+
* await snaptrude.core.project.settings.snaps.disableDimension()
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
public abstract disableDimension(): PluginApiReturn<boolean>
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Set the angle-snap threshold in degrees — the angular increment that
|
|
150
|
+
* drawing snaps to when angle snapping is on.
|
|
151
|
+
*
|
|
152
|
+
* @param value - The snap threshold in degrees.
|
|
153
|
+
*
|
|
154
|
+
* @examplePrompt Set the angle snap to 15 degrees
|
|
155
|
+
* @examplePrompt Change angle snapping to every 45 degrees
|
|
156
|
+
* @examplePrompt Make drawing snap at 30 degree increments
|
|
157
|
+
* @examplePrompt Adjust the rotation snap angle
|
|
158
|
+
*
|
|
159
|
+
* # Example
|
|
160
|
+
* ```ts
|
|
161
|
+
* // snap drawing to 15-degree increments (applies while angle snapping is on)
|
|
162
|
+
* await snaptrude.core.project.settings.snaps.setAngle(15)
|
|
163
|
+
* await snaptrude.core.project.settings.snaps.enableAngle()
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
public abstract setAngle(value: number): PluginApiReturn<boolean>
|
|
167
|
+
/**
|
|
168
|
+
* Get the current angle-snap threshold in degrees — the angular increment
|
|
169
|
+
* that drawing snaps to when angle snapping is on.
|
|
170
|
+
*
|
|
171
|
+
* @examplePrompt What angle does drawing snap to?
|
|
172
|
+
* @examplePrompt Check the current angle snap in degrees
|
|
173
|
+
* @examplePrompt Show me the angle snapping increment
|
|
174
|
+
* @examplePrompt How many degrees is the angle snap set to?
|
|
175
|
+
*
|
|
176
|
+
* # Example
|
|
177
|
+
* ```ts
|
|
178
|
+
* const degrees = await snaptrude.core.project.settings.snaps.getAngle()
|
|
179
|
+
* console.log(degrees)
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
public abstract getAngle(): PluginApiReturn<number>
|
|
183
|
+
/**
|
|
184
|
+
* Turn angle snapping on, so drawn lines snap to the configured angle
|
|
185
|
+
* increment.
|
|
186
|
+
*
|
|
187
|
+
* @examplePrompt Turn on angle snapping
|
|
188
|
+
* @examplePrompt Enable snapping to angles while drawing
|
|
189
|
+
* @examplePrompt Make my lines snap to set angles
|
|
190
|
+
* @examplePrompt Switch angle snap back on
|
|
191
|
+
*
|
|
192
|
+
* # Example
|
|
193
|
+
* ```ts
|
|
194
|
+
* await snaptrude.core.project.settings.snaps.enableAngle()
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
public abstract enableAngle(): PluginApiReturn<boolean>
|
|
198
|
+
/**
|
|
199
|
+
* Turn angle snapping off, so lines can be drawn at any angle without
|
|
200
|
+
* snapping to fixed increments.
|
|
201
|
+
*
|
|
202
|
+
* @examplePrompt Turn off angle snapping
|
|
203
|
+
* @examplePrompt Stop lines snapping to fixed angles
|
|
204
|
+
* @examplePrompt Disable the angle snap so I can draw at any angle
|
|
205
|
+
* @examplePrompt Remove angle snapping while sketching
|
|
206
|
+
*
|
|
207
|
+
* # Example
|
|
208
|
+
* ```ts
|
|
209
|
+
* await snaptrude.core.project.settings.snaps.disableAngle()
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
public abstract disableAngle(): PluginApiReturn<boolean>
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Turn parallel snapping on, so drawing snaps when the cursor lines up
|
|
216
|
+
* parallel to existing edges.
|
|
217
|
+
*
|
|
218
|
+
* @examplePrompt Turn on parallel snapping
|
|
219
|
+
* @examplePrompt Enable snapping to parallel lines
|
|
220
|
+
* @examplePrompt Help me draw walls parallel to existing ones
|
|
221
|
+
* @examplePrompt Snap to parallel edges when drawing
|
|
222
|
+
*
|
|
223
|
+
* # Example
|
|
224
|
+
* ```ts
|
|
225
|
+
* await snaptrude.core.project.settings.snaps.enableParallel()
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
public abstract enableParallel(): PluginApiReturn<boolean>
|
|
229
|
+
/**
|
|
230
|
+
* Turn parallel snapping off, so drawing no longer snaps to directions
|
|
231
|
+
* parallel to existing edges.
|
|
232
|
+
*
|
|
233
|
+
* @examplePrompt Turn off parallel snapping
|
|
234
|
+
* @examplePrompt Stop snapping to parallel edges
|
|
235
|
+
* @examplePrompt Disable the parallel snap guide
|
|
236
|
+
* @examplePrompt I don't want my lines snapping parallel anymore
|
|
237
|
+
*
|
|
238
|
+
* # Example
|
|
239
|
+
* ```ts
|
|
240
|
+
* await snaptrude.core.project.settings.snaps.disableParallel()
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
public abstract disableParallel(): PluginApiReturn<boolean>
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Turn normal (perpendicular) snapping on, so drawing snaps when the cursor
|
|
247
|
+
* is at a right angle to existing edges.
|
|
248
|
+
*
|
|
249
|
+
* @examplePrompt Turn on perpendicular snapping
|
|
250
|
+
* @examplePrompt Enable the normal snap so lines snap at right angles
|
|
251
|
+
* @examplePrompt Snap to perpendicular when I draw walls
|
|
252
|
+
* @examplePrompt Help me draw at 90 degrees to existing edges
|
|
253
|
+
*
|
|
254
|
+
* # Example
|
|
255
|
+
* ```ts
|
|
256
|
+
* await snaptrude.core.project.settings.snaps.enableNormal()
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
public abstract enableNormal(): PluginApiReturn<boolean>
|
|
260
|
+
/**
|
|
261
|
+
* Turn normal (perpendicular) snapping off, so drawing no longer snaps at
|
|
262
|
+
* right angles to existing edges.
|
|
263
|
+
*
|
|
264
|
+
* @examplePrompt Turn off perpendicular snapping
|
|
265
|
+
* @examplePrompt Disable the normal snap
|
|
266
|
+
* @examplePrompt Stop snapping at right angles to edges
|
|
267
|
+
* @examplePrompt Remove the 90 degree snap guide
|
|
268
|
+
*
|
|
269
|
+
* # Example
|
|
270
|
+
* ```ts
|
|
271
|
+
* await snaptrude.core.project.settings.snaps.disableNormal()
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
public abstract disableNormal(): PluginApiReturn<boolean>
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Turn magnetic snapping on, so the cursor is pulled to nearby geometry
|
|
278
|
+
* while drawing.
|
|
279
|
+
*
|
|
280
|
+
* @examplePrompt Turn on magnetic snapping
|
|
281
|
+
* @examplePrompt Enable the magnet snap
|
|
282
|
+
* @examplePrompt Make the cursor stick to nearby geometry when drawing
|
|
283
|
+
* @examplePrompt Switch magnetic snap back on
|
|
284
|
+
*
|
|
285
|
+
* # Example
|
|
286
|
+
* ```ts
|
|
287
|
+
* await snaptrude.core.project.settings.snaps.enableMagnetic()
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
public abstract enableMagnetic(): PluginApiReturn<boolean>
|
|
291
|
+
/**
|
|
292
|
+
* Turn magnetic snapping off, so the cursor is no longer pulled to nearby
|
|
293
|
+
* geometry while drawing.
|
|
294
|
+
*
|
|
295
|
+
* @examplePrompt Turn off magnetic snapping
|
|
296
|
+
* @examplePrompt Disable the magnet snap
|
|
297
|
+
* @examplePrompt Stop the cursor sticking to nearby objects
|
|
298
|
+
* @examplePrompt The magnetic snap is annoying, switch it off
|
|
299
|
+
*
|
|
300
|
+
* # Example
|
|
301
|
+
* ```ts
|
|
302
|
+
* await snaptrude.core.project.settings.snaps.disableMagnetic()
|
|
303
|
+
* ```
|
|
304
|
+
*/
|
|
305
|
+
public abstract disableMagnetic(): PluginApiReturn<boolean>
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Grid controls — the visual snap-to grid.
|
|
310
|
+
*
|
|
311
|
+
* Accessed via `snaptrude.core.project.settings.grid`.
|
|
312
|
+
*/
|
|
313
|
+
export abstract class PluginGridApi {
|
|
314
|
+
constructor() {}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Turn the grid on, showing the visual snap-to grid in the canvas.
|
|
318
|
+
*
|
|
319
|
+
* @examplePrompt Turn on the grid
|
|
320
|
+
* @examplePrompt Show the grid in my project
|
|
321
|
+
* @examplePrompt Enable the drawing grid
|
|
322
|
+
* @examplePrompt Switch the snap grid back on
|
|
323
|
+
*
|
|
324
|
+
* # Example
|
|
325
|
+
* ```ts
|
|
326
|
+
* await snaptrude.core.project.settings.grid.enable()
|
|
327
|
+
* ```
|
|
328
|
+
*/
|
|
329
|
+
public abstract enable(): PluginApiReturn<boolean>
|
|
330
|
+
/**
|
|
331
|
+
* Turn the grid off, hiding the visual snap-to grid in the canvas.
|
|
332
|
+
*
|
|
333
|
+
* @examplePrompt Turn off the grid
|
|
334
|
+
* @examplePrompt Hide the grid
|
|
335
|
+
* @examplePrompt Disable the background grid in the canvas
|
|
336
|
+
* @examplePrompt Remove the drawing grid from view
|
|
337
|
+
*
|
|
338
|
+
* # Example
|
|
339
|
+
* ```ts
|
|
340
|
+
* await snaptrude.core.project.settings.grid.disable()
|
|
341
|
+
* ```
|
|
342
|
+
*/
|
|
343
|
+
public abstract disable(): PluginApiReturn<boolean>
|
|
344
|
+
/**
|
|
345
|
+
* Set the grid cell value — the size of each cell in the visual snap-to
|
|
346
|
+
* grid.
|
|
347
|
+
*
|
|
348
|
+
* @param value - The grid cell value.
|
|
349
|
+
*
|
|
350
|
+
* @examplePrompt Set the grid spacing to 1 metre
|
|
351
|
+
* @examplePrompt Change the grid cell size to 500mm
|
|
352
|
+
* @examplePrompt Make the grid squares 2 feet wide
|
|
353
|
+
* @examplePrompt Adjust the grid size in this project
|
|
354
|
+
*
|
|
355
|
+
* # Example
|
|
356
|
+
* ```ts
|
|
357
|
+
* await snaptrude.core.project.settings.grid.setValue(1)
|
|
358
|
+
* await snaptrude.core.project.settings.grid.enable()
|
|
359
|
+
* ```
|
|
360
|
+
*/
|
|
361
|
+
public abstract setValue(value: number): PluginApiReturn<boolean>
|
|
362
|
+
/**
|
|
363
|
+
* Get the current grid cell value — the size of each cell in the visual
|
|
364
|
+
* snap-to grid.
|
|
365
|
+
*
|
|
366
|
+
* @examplePrompt What is the grid spacing?
|
|
367
|
+
* @examplePrompt Check the current grid cell size
|
|
368
|
+
* @examplePrompt How big are the grid squares?
|
|
369
|
+
* @examplePrompt Show me the grid size setting
|
|
370
|
+
*
|
|
371
|
+
* # Example
|
|
372
|
+
* ```ts
|
|
373
|
+
* const cellSize = await snaptrude.core.project.settings.grid.getValue()
|
|
374
|
+
* console.log(cellSize)
|
|
375
|
+
* ```
|
|
376
|
+
*/
|
|
377
|
+
public abstract getValue(): PluginApiReturn<number>
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Arguments for the snap-threshold setters
|
|
382
|
+
* ({@linkcode PluginSnapsApi.setDimension} / {@linkcode PluginSnapsApi.setAngle}).
|
|
383
|
+
*
|
|
384
|
+
* | Property | Type | Description |
|
|
385
|
+
* |---|---|---|
|
|
386
|
+
* | `value` | `number` | The snap threshold (distance, or degrees for angle) |
|
|
387
|
+
*/
|
|
388
|
+
export const PluginSnapValueArgs = z.object({
|
|
389
|
+
value: z.number(),
|
|
390
|
+
})
|
|
391
|
+
|
|
392
|
+
export type PluginSnapValueArgs = z.infer<typeof PluginSnapValueArgs>
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Arguments for {@linkcode PluginGridApi.setValue}.
|
|
396
|
+
*
|
|
397
|
+
* | Property | Type | Description |
|
|
398
|
+
* |---|---|---|
|
|
399
|
+
* | `value` | `number` | The grid cell value |
|
|
400
|
+
*/
|
|
401
|
+
export const PluginGridValueArgs = z.object({
|
|
402
|
+
value: z.number(),
|
|
403
|
+
})
|
|
404
|
+
|
|
405
|
+
export type PluginGridValueArgs = z.infer<typeof PluginGridValueArgs>
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Arguments for {@linkcode PluginProjectSettingsApi.setTolerance}.
|
|
409
|
+
*
|
|
410
|
+
* | Property | Type | Description |
|
|
411
|
+
* |---|---|---|
|
|
412
|
+
* | `value` | `number` | Target tolerance magnitude; snaps to the nearest allowed option |
|
|
413
|
+
*/
|
|
414
|
+
export const PluginToleranceArgs = z.object({
|
|
415
|
+
value: z.number(),
|
|
416
|
+
})
|
|
417
|
+
|
|
418
|
+
export type PluginToleranceArgs = z.infer<typeof PluginToleranceArgs>
|