@snaptrude/plugin-core 0.9.17 → 0.9.18-edgesetbacks-20261021.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/AGENTS.md +231 -231
- package/CHANGELOG.md +408 -408
- package/CLAUDE.md +11 -11
- package/api-manifest.json +1428 -712
- package/dist/api/analysis/daylight.d.ts +5 -5
- package/dist/api/analysis/solar.d.ts +2 -2
- package/dist/api/core/camera/index.d.ts +29 -0
- package/dist/api/core/camera/index.d.ts.map +1 -1
- package/dist/api/core/geom/create/index.d.ts +7 -1
- package/dist/api/core/geom/create/index.d.ts.map +1 -1
- package/dist/api/core/geom/update/contour.d.ts +8 -2
- package/dist/api/core/geom/update/contour.d.ts.map +1 -1
- package/dist/api/core/storeys/index.d.ts +5 -2
- package/dist/api/core/storeys/index.d.ts.map +1 -1
- package/dist/api/core/zoom/index.d.ts +13 -0
- package/dist/api/core/zoom/index.d.ts.map +1 -1
- package/dist/api/design/bim.d.ts +299 -0
- package/dist/api/design/bim.d.ts.map +1 -0
- package/dist/api/design/boolean/index.d.ts +2 -0
- package/dist/api/design/boolean/index.d.ts.map +1 -1
- package/dist/api/design/catalog.d.ts +320 -0
- package/dist/api/design/catalog.d.ts.map +1 -0
- package/dist/api/design/create/bulk-items.d.ts +65 -25
- package/dist/api/design/create/bulk-items.d.ts.map +1 -1
- package/dist/api/design/create/index.d.ts +299 -100
- package/dist/api/design/create/index.d.ts.map +1 -1
- package/dist/api/design/create/opening-fields.d.ts +13 -12
- package/dist/api/design/create/opening-fields.d.ts.map +1 -1
- package/dist/api/design/delete/index.d.ts +1 -0
- package/dist/api/design/delete/index.d.ts.map +1 -1
- package/dist/api/design/doors/index.d.ts +18 -24
- package/dist/api/design/doors/index.d.ts.map +1 -1
- package/dist/api/design/family.d.ts +813 -35
- package/dist/api/design/family.d.ts.map +1 -1
- package/dist/api/design/index.d.ts +16 -0
- package/dist/api/design/index.d.ts.map +1 -1
- package/dist/api/design/networks.d.ts +1703 -0
- package/dist/api/design/networks.d.ts.map +1 -0
- package/dist/api/design/query/grids.d.ts +2 -2
- package/dist/api/design/query/index.d.ts +42 -32
- package/dist/api/design/query/index.d.ts.map +1 -1
- package/dist/api/design/selection/index.d.ts +10 -10
- package/dist/api/design/types/index.d.ts +40 -24
- package/dist/api/design/types/index.d.ts.map +1 -1
- package/dist/api/design/update/index.d.ts +111 -6
- package/dist/api/design/update/index.d.ts.map +1 -1
- package/dist/api/design/windows/index.d.ts +8 -8
- package/dist/api/design/windows/index.d.ts.map +1 -1
- package/dist/api/entity/buildableEnvelope.d.ts +84 -2
- package/dist/api/entity/buildableEnvelope.d.ts.map +1 -1
- package/dist/api/presentation/aiInspiration.d.ts +10 -10
- package/dist/api/presentation/annotate.d.ts +38 -22
- package/dist/api/presentation/annotate.d.ts.map +1 -1
- package/dist/api/presentation/drawingContract.d.ts +32 -0
- package/dist/api/presentation/drawingContract.d.ts.map +1 -0
- package/dist/api/presentation/drawings.d.ts +3523 -0
- package/dist/api/presentation/drawings.d.ts.map +1 -0
- package/dist/api/presentation/export.d.ts +23 -5
- package/dist/api/presentation/export.d.ts.map +1 -1
- package/dist/api/presentation/index.d.ts +32 -12
- package/dist/api/presentation/index.d.ts.map +1 -1
- package/dist/api/presentation/placedViews.d.ts +106 -6
- package/dist/api/presentation/placedViews.d.ts.map +1 -1
- package/dist/api/presentation/shapes.d.ts +2 -2
- package/dist/api/presentation/sheets.d.ts +175 -19
- package/dist/api/presentation/sheets.d.ts.map +1 -1
- package/dist/api/presentation/viewPresets.d.ts +222 -0
- package/dist/api/presentation/viewPresets.d.ts.map +1 -0
- package/dist/api/presentation/views.d.ts +141 -8
- package/dist/api/presentation/views.d.ts.map +1 -1
- package/dist/api/presentation/walkthroughs.d.ts +6 -6
- package/dist/errors/codes.d.ts +3 -1
- package/dist/errors/codes.d.ts.map +1 -1
- package/dist/index.cjs +3831 -2444
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3705 -2444
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/check-dist-fresh.mjs +22 -22
- package/scripts/generate-manifest.mjs +243 -238
- package/scripts/generate-manifest.test.mjs +303 -303
- package/src/api/analysis/daylight.ts +470 -470
- package/src/api/analysis/heatmaps.ts +683 -683
- package/src/api/analysis/illuminance.ts +155 -155
- package/src/api/analysis/index.ts +61 -61
- package/src/api/analysis/shadows.ts +183 -183
- package/src/api/analysis/solar.ts +237 -237
- package/src/api/analysis/sunlightHours.ts +211 -211
- package/src/api/analysis/sunpath.ts +83 -83
- package/src/api/analysis/weather.ts +179 -179
- package/src/api/core/buildings.ts +485 -485
- package/src/api/core/camera/index.ts +696 -667
- package/src/api/core/comment/index.ts +376 -376
- package/src/api/core/geom/create/index.ts +2139 -2133
- package/src/api/core/geom/delete/index.ts +84 -84
- package/src/api/core/geom/index.ts +35 -35
- package/src/api/core/geom/query/arc.ts +169 -169
- package/src/api/core/geom/query/brep.ts +621 -621
- package/src/api/core/geom/query/circle.ts +404 -404
- package/src/api/core/geom/query/contour.ts +540 -540
- package/src/api/core/geom/query/curve.ts +1102 -1102
- package/src/api/core/geom/query/edge.ts +130 -130
- package/src/api/core/geom/query/face.ts +508 -508
- package/src/api/core/geom/query/halfedge.ts +210 -210
- package/src/api/core/geom/query/index.ts +63 -63
- package/src/api/core/geom/query/profile.ts +473 -473
- package/src/api/core/geom/query/vertex.ts +205 -205
- package/src/api/core/geom/update/contour.ts +323 -317
- package/src/api/core/geom/update/curve.ts +209 -209
- package/src/api/core/geom/update/index.ts +29 -29
- package/src/api/core/geom/update/profile.ts +379 -379
- package/src/api/core/groups.ts +521 -521
- package/src/api/core/handles/index.ts +234 -234
- package/src/api/core/history/index.ts +84 -84
- package/src/api/core/index.ts +99 -99
- package/src/api/core/io/export/index.ts +126 -126
- package/src/api/core/io/import/index.ts +504 -504
- package/src/api/core/io/index.ts +42 -42
- package/src/api/core/io/job/index.ts +140 -140
- package/src/api/core/io/query/index.ts +71 -71
- package/src/api/core/io/terrain/index.ts +360 -360
- package/src/api/core/io/underlay/index.ts +705 -705
- package/src/api/core/layers.ts +540 -540
- package/src/api/core/math/index.ts +20 -20
- package/src/api/core/math/quat.ts +172 -172
- package/src/api/core/math/vec3.ts +179 -179
- package/src/api/core/mode/index.ts +108 -108
- package/src/api/core/project/index.ts +479 -479
- package/src/api/core/proposals/index.ts +570 -570
- package/src/api/core/storeys/index.ts +311 -308
- package/src/api/core/storeys/layers.ts +339 -339
- package/src/api/core/tags.ts +911 -911
- package/src/api/core/units/index.ts +164 -164
- package/src/api/core/user.ts +46 -46
- package/src/api/core/zoom/index.ts +64 -51
- package/src/api/design/bim.ts +210 -0
- package/src/api/design/boolean/index.ts +181 -179
- package/src/api/design/catalog.ts +203 -0
- package/src/api/design/create/bulk-items.ts +294 -254
- package/src/api/design/create/grids.ts +137 -137
- package/src/api/design/create/index.ts +2178 -1980
- package/src/api/design/create/opening-fields.ts +40 -37
- package/src/api/design/delete/index.ts +75 -74
- package/src/api/design/dimensions.ts +453 -453
- package/src/api/design/doors/index.ts +516 -500
- package/src/api/design/edit/index.ts +54 -54
- package/src/api/design/erase/index.ts +151 -151
- package/src/api/design/family.ts +1342 -704
- package/src/api/design/furniture/index.ts +319 -319
- package/src/api/design/grids.ts +237 -237
- package/src/api/design/index.ts +304 -274
- package/src/api/design/lock.ts +69 -69
- package/src/api/design/materials/index.ts +608 -608
- package/src/api/design/networks.ts +607 -0
- package/src/api/design/query/geometry/index.ts +319 -319
- package/src/api/design/query/grids.ts +197 -197
- package/src/api/design/query/index.ts +1236 -1226
- package/src/api/design/query/referenceLines.ts +52 -52
- package/src/api/design/query/spaces.ts +275 -275
- package/src/api/design/selection/index.ts +273 -273
- package/src/api/design/shared.ts +40 -40
- package/src/api/design/transform/index.ts +254 -254
- package/src/api/design/types/index.ts +163 -156
- package/src/api/design/update/index.ts +1096 -983
- package/src/api/design/visibility.ts +143 -143
- package/src/api/design/windows/index.ts +351 -333
- package/src/api/entity/buildableEnvelope.ts +397 -322
- package/src/api/entity/index.ts +30 -30
- package/src/api/entity/referenceLine.ts +235 -235
- package/src/api/entity/space.ts +612 -612
- package/src/api/entity/story.ts +517 -517
- package/src/api/index.ts +47 -47
- package/src/api/presentation/aiInspiration.ts +1116 -1116
- package/src/api/presentation/annotate.ts +417 -385
- package/src/api/presentation/camera.ts +289 -289
- package/src/api/presentation/diagrams.ts +194 -194
- package/src/api/presentation/drawingContract.ts +70 -0
- package/src/api/presentation/drawings.ts +1179 -0
- package/src/api/presentation/export.ts +134 -108
- package/src/api/presentation/import.ts +159 -159
- package/src/api/presentation/index.ts +160 -135
- package/src/api/presentation/placedViews.ts +1211 -1120
- package/src/api/presentation/sections.ts +420 -420
- package/src/api/presentation/shapes.ts +274 -274
- package/src/api/presentation/sheets.ts +746 -585
- package/src/api/presentation/slideshow.ts +134 -134
- package/src/api/presentation/tables.ts +84 -84
- package/src/api/presentation/viewPresets.ts +241 -0
- package/src/api/presentation/views.ts +742 -673
- package/src/api/presentation/walkthroughs.ts +1201 -1201
- package/src/api/program/adjacency.ts +164 -164
- package/src/api/program/areas.ts +408 -408
- package/src/api/program/classification.ts +138 -138
- package/src/api/program/cores.ts +83 -83
- package/src/api/program/departments.ts +517 -517
- package/src/api/program/index.ts +73 -73
- package/src/api/program/labels.ts +332 -332
- package/src/api/program/layout.ts +422 -422
- package/src/api/program/metadata.ts +364 -364
- package/src/api/program/metrics.ts +120 -120
- package/src/api/program/site.ts +748 -748
- package/src/api/program/spreadsheet.ts +2698 -2698
- package/src/api/workspace/index.ts +612 -612
- package/src/errors/codes.ts +143 -136
- package/src/errors/envelope.ts +75 -75
- package/src/errors/index.ts +21 -21
- package/src/errors/plugin-error.ts +134 -134
- package/src/handles.ts +297 -297
- package/src/host-utils.ts +67 -67
- package/src/index.ts +7 -7
- package/src/massParameters.ops.ts +246 -246
- package/src/massParameters.ts +427 -427
- package/src/types.ts +16 -16
- package/test/drawingContract.test.mjs +288 -0
- package/test/errors.test.mjs +185 -184
- package/test/massParameters.test.mjs +952 -952
- package/test/presentationViewSettings.test.mjs +85 -0
- package/tsconfig.json +22 -22
- package/tsup.config.ts +12 -12
|
@@ -1,205 +1,205 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import { PluginApiReturn } from "../../../../types"
|
|
3
|
-
import {
|
|
4
|
-
BrepHandle,
|
|
5
|
-
VertexHandle,
|
|
6
|
-
HalfEdgeHandle,
|
|
7
|
-
EdgeHandle,
|
|
8
|
-
FaceHandle,
|
|
9
|
-
Vec3Components,
|
|
10
|
-
} from "../../../../handles"
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Vertex queries — read a single BREP vertex's topology and position (all-handle
|
|
14
|
-
* model, §11). A {@linkcode VertexHandle} is minted by walking from a brep/face/edge
|
|
15
|
-
* handle; it is session-ephemeral and goes stale on undo/redo/re-topologize.
|
|
16
|
-
*
|
|
17
|
-
* Position lives on the parent brep (indexed by the vertex), so
|
|
18
|
-
* {@linkcode PluginGeomQueryVertexApi.getPosition} takes both handles. No query
|
|
19
|
-
* mutates its inputs.
|
|
20
|
-
*
|
|
21
|
-
* Accessed via `snaptrude.core.geom.query.vertex`.
|
|
22
|
-
*/
|
|
23
|
-
export abstract class PluginGeomQueryVertexApi {
|
|
24
|
-
constructor() {}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Get the index of a vertex within its brep.
|
|
28
|
-
* @param vertex The vertex to query
|
|
29
|
-
* @returns The index as a `number` (`-1` if unindexed)
|
|
30
|
-
*
|
|
31
|
-
* # Example
|
|
32
|
-
* ```ts
|
|
33
|
-
* const [wall] = await snaptrude.design.query.listWalls()
|
|
34
|
-
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
35
|
-
* if (brep) {
|
|
36
|
-
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
37
|
-
* const index = await snaptrude.core.geom.query.vertex.getIndex(vertex)
|
|
38
|
-
* }
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
public abstract getIndex(vertex: VertexHandle): PluginApiReturn<number>
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Get a seed half-edge emanating from a vertex.
|
|
45
|
-
* @param vertex The vertex to query
|
|
46
|
-
* @returns The half-edge as a {@linkcode HalfEdgeHandle}, or `null` if uninitialized
|
|
47
|
-
*
|
|
48
|
-
* # Example
|
|
49
|
-
* ```ts
|
|
50
|
-
* const [wall] = await snaptrude.design.query.listWalls()
|
|
51
|
-
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
52
|
-
* if (brep) {
|
|
53
|
-
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
54
|
-
* const halfEdge = await snaptrude.core.geom.query.vertex.getHalfEdge(vertex)
|
|
55
|
-
* if (halfEdge) {
|
|
56
|
-
* const edge = await snaptrude.core.geom.query.halfedge.getEdge(halfEdge)
|
|
57
|
-
* }
|
|
58
|
-
* }
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
public abstract getHalfEdge(vertex: VertexHandle): PluginApiReturn<HalfEdgeHandle | null>
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Get the position of a vertex (needs the parent brep for coordinates).
|
|
65
|
-
* @param brep The parent brep (source of coordinates)
|
|
66
|
-
* @param vertex The vertex whose position to read
|
|
67
|
-
* @returns The position as {@linkcode Vec3Components}
|
|
68
|
-
*
|
|
69
|
-
* @examplePrompt What are the coordinates of this corner point?
|
|
70
|
-
* @examplePrompt Get the exact x, y, z position of the selected vertex
|
|
71
|
-
*
|
|
72
|
-
* # Example
|
|
73
|
-
* ```ts
|
|
74
|
-
* const [wall] = await snaptrude.design.query.listWalls()
|
|
75
|
-
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
76
|
-
* if (brep) {
|
|
77
|
-
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
78
|
-
* const pos = await snaptrude.core.geom.query.vertex.getPosition(brep, vertex)
|
|
79
|
-
* console.log(pos.x, pos.y, pos.z)
|
|
80
|
-
* }
|
|
81
|
-
* ```
|
|
82
|
-
*/
|
|
83
|
-
public abstract getPosition(
|
|
84
|
-
brep: BrepHandle,
|
|
85
|
-
vertex: VertexHandle
|
|
86
|
-
): PluginApiReturn<Vec3Components>
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* List the half-edges around a vertex.
|
|
90
|
-
* @param vertex The vertex to query
|
|
91
|
-
* @returns The half-edges as {@linkcode HalfEdgeHandle}`[]`
|
|
92
|
-
*
|
|
93
|
-
* # Example
|
|
94
|
-
* ```ts
|
|
95
|
-
* const [wall] = await snaptrude.design.query.listWalls()
|
|
96
|
-
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
97
|
-
* if (brep) {
|
|
98
|
-
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
99
|
-
* const halfEdges = await snaptrude.core.geom.query.vertex.listHalfEdges(vertex)
|
|
100
|
-
* console.log("half-edges at this vertex:", halfEdges.length)
|
|
101
|
-
* }
|
|
102
|
-
* ```
|
|
103
|
-
*/
|
|
104
|
-
public abstract listHalfEdges(vertex: VertexHandle): PluginApiReturn<HalfEdgeHandle[]>
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* List the edges around a vertex.
|
|
108
|
-
* @param vertex The vertex to query
|
|
109
|
-
* @returns The edges as {@linkcode EdgeHandle}`[]`
|
|
110
|
-
*
|
|
111
|
-
* # Example
|
|
112
|
-
* ```ts
|
|
113
|
-
* const [wall] = await snaptrude.design.query.listWalls()
|
|
114
|
-
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
115
|
-
* if (brep) {
|
|
116
|
-
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
117
|
-
* const edges = await snaptrude.core.geom.query.vertex.listEdges(vertex)
|
|
118
|
-
* console.log("edges meeting at this corner:", edges.length)
|
|
119
|
-
* }
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
public abstract listEdges(vertex: VertexHandle): PluginApiReturn<EdgeHandle[]>
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* List the faces around a vertex.
|
|
126
|
-
* @param vertex The vertex to query
|
|
127
|
-
* @returns The faces as {@linkcode FaceHandle}`[]`
|
|
128
|
-
*
|
|
129
|
-
* # Example
|
|
130
|
-
* ```ts
|
|
131
|
-
* const [wall] = await snaptrude.design.query.listWalls()
|
|
132
|
-
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
133
|
-
* if (brep) {
|
|
134
|
-
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
135
|
-
* const faces = await snaptrude.core.geom.query.vertex.listFaces(vertex)
|
|
136
|
-
* console.log("faces sharing this corner:", faces.length)
|
|
137
|
-
* }
|
|
138
|
-
* ```
|
|
139
|
-
*/
|
|
140
|
-
public abstract listFaces(vertex: VertexHandle): PluginApiReturn<FaceHandle[]>
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* List the neighbouring vertices of a vertex.
|
|
144
|
-
* @param vertex The vertex to query
|
|
145
|
-
* @returns The neighbours as {@linkcode VertexHandle}`[]`
|
|
146
|
-
*
|
|
147
|
-
* # Example
|
|
148
|
-
* ```ts
|
|
149
|
-
* const [wall] = await snaptrude.design.query.listWalls()
|
|
150
|
-
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
151
|
-
* if (brep) {
|
|
152
|
-
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
153
|
-
* const neighbors = await snaptrude.core.geom.query.vertex.listNeighbors(vertex)
|
|
154
|
-
* for (const n of neighbors) {
|
|
155
|
-
* const pos = await snaptrude.core.geom.query.vertex.getPosition(brep, n)
|
|
156
|
-
* }
|
|
157
|
-
* }
|
|
158
|
-
* ```
|
|
159
|
-
*/
|
|
160
|
-
public abstract listNeighbors(vertex: VertexHandle): PluginApiReturn<VertexHandle[]>
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
const vertexArg = z.object({ vertex: VertexHandle })
|
|
164
|
-
|
|
165
|
-
/** Arguments for {@linkcode PluginGeomQueryVertexApi.getIndex}. `{ vertex: VertexHandle }` */
|
|
166
|
-
export const PluginGeomQueryVertexGetIndexArgs = vertexArg
|
|
167
|
-
export type PluginGeomQueryVertexGetIndexArgs = z.infer<typeof PluginGeomQueryVertexGetIndexArgs>
|
|
168
|
-
|
|
169
|
-
/** Arguments for {@linkcode PluginGeomQueryVertexApi.getHalfEdge}. `{ vertex: VertexHandle }` */
|
|
170
|
-
export const PluginGeomQueryVertexGetHalfEdgeArgs = vertexArg
|
|
171
|
-
export type PluginGeomQueryVertexGetHalfEdgeArgs = z.infer<typeof PluginGeomQueryVertexGetHalfEdgeArgs>
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Arguments for {@linkcode PluginGeomQueryVertexApi.getPosition}.
|
|
175
|
-
*
|
|
176
|
-
* | Property | Type | Description |
|
|
177
|
-
* |---|---|---|
|
|
178
|
-
* | `brep` | {@linkcode BrepHandle} | The parent brep (source of coordinates) |
|
|
179
|
-
* | `vertex` | {@linkcode VertexHandle} | The vertex whose position to read |
|
|
180
|
-
*/
|
|
181
|
-
export const PluginGeomQueryVertexGetPositionArgs = z.object({
|
|
182
|
-
brep: BrepHandle,
|
|
183
|
-
vertex: VertexHandle,
|
|
184
|
-
})
|
|
185
|
-
export type PluginGeomQueryVertexGetPositionArgs = z.infer<typeof PluginGeomQueryVertexGetPositionArgs>
|
|
186
|
-
|
|
187
|
-
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listHalfEdges}. `{ vertex: VertexHandle }` */
|
|
188
|
-
export const PluginGeomQueryVertexListHalfEdgesArgs = vertexArg
|
|
189
|
-
export type PluginGeomQueryVertexListHalfEdgesArgs = z.infer<
|
|
190
|
-
typeof PluginGeomQueryVertexListHalfEdgesArgs
|
|
191
|
-
>
|
|
192
|
-
|
|
193
|
-
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listEdges}. `{ vertex: VertexHandle }` */
|
|
194
|
-
export const PluginGeomQueryVertexListEdgesArgs = vertexArg
|
|
195
|
-
export type PluginGeomQueryVertexListEdgesArgs = z.infer<typeof PluginGeomQueryVertexListEdgesArgs>
|
|
196
|
-
|
|
197
|
-
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listFaces}. `{ vertex: VertexHandle }` */
|
|
198
|
-
export const PluginGeomQueryVertexListFacesArgs = vertexArg
|
|
199
|
-
export type PluginGeomQueryVertexListFacesArgs = z.infer<typeof PluginGeomQueryVertexListFacesArgs>
|
|
200
|
-
|
|
201
|
-
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listNeighbors}. `{ vertex: VertexHandle }` */
|
|
202
|
-
export const PluginGeomQueryVertexListNeighborsArgs = vertexArg
|
|
203
|
-
export type PluginGeomQueryVertexListNeighborsArgs = z.infer<
|
|
204
|
-
typeof PluginGeomQueryVertexListNeighborsArgs
|
|
205
|
-
>
|
|
1
|
+
import * as z from "zod"
|
|
2
|
+
import { PluginApiReturn } from "../../../../types"
|
|
3
|
+
import {
|
|
4
|
+
BrepHandle,
|
|
5
|
+
VertexHandle,
|
|
6
|
+
HalfEdgeHandle,
|
|
7
|
+
EdgeHandle,
|
|
8
|
+
FaceHandle,
|
|
9
|
+
Vec3Components,
|
|
10
|
+
} from "../../../../handles"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Vertex queries — read a single BREP vertex's topology and position (all-handle
|
|
14
|
+
* model, §11). A {@linkcode VertexHandle} is minted by walking from a brep/face/edge
|
|
15
|
+
* handle; it is session-ephemeral and goes stale on undo/redo/re-topologize.
|
|
16
|
+
*
|
|
17
|
+
* Position lives on the parent brep (indexed by the vertex), so
|
|
18
|
+
* {@linkcode PluginGeomQueryVertexApi.getPosition} takes both handles. No query
|
|
19
|
+
* mutates its inputs.
|
|
20
|
+
*
|
|
21
|
+
* Accessed via `snaptrude.core.geom.query.vertex`.
|
|
22
|
+
*/
|
|
23
|
+
export abstract class PluginGeomQueryVertexApi {
|
|
24
|
+
constructor() {}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Get the index of a vertex within its brep.
|
|
28
|
+
* @param vertex The vertex to query
|
|
29
|
+
* @returns The index as a `number` (`-1` if unindexed)
|
|
30
|
+
*
|
|
31
|
+
* # Example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const [wall] = await snaptrude.design.query.listWalls()
|
|
34
|
+
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
35
|
+
* if (brep) {
|
|
36
|
+
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
37
|
+
* const index = await snaptrude.core.geom.query.vertex.getIndex(vertex)
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
public abstract getIndex(vertex: VertexHandle): PluginApiReturn<number>
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get a seed half-edge emanating from a vertex.
|
|
45
|
+
* @param vertex The vertex to query
|
|
46
|
+
* @returns The half-edge as a {@linkcode HalfEdgeHandle}, or `null` if uninitialized
|
|
47
|
+
*
|
|
48
|
+
* # Example
|
|
49
|
+
* ```ts
|
|
50
|
+
* const [wall] = await snaptrude.design.query.listWalls()
|
|
51
|
+
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
52
|
+
* if (brep) {
|
|
53
|
+
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
54
|
+
* const halfEdge = await snaptrude.core.geom.query.vertex.getHalfEdge(vertex)
|
|
55
|
+
* if (halfEdge) {
|
|
56
|
+
* const edge = await snaptrude.core.geom.query.halfedge.getEdge(halfEdge)
|
|
57
|
+
* }
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
public abstract getHalfEdge(vertex: VertexHandle): PluginApiReturn<HalfEdgeHandle | null>
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Get the position of a vertex (needs the parent brep for coordinates).
|
|
65
|
+
* @param brep The parent brep (source of coordinates)
|
|
66
|
+
* @param vertex The vertex whose position to read
|
|
67
|
+
* @returns The position as {@linkcode Vec3Components}
|
|
68
|
+
*
|
|
69
|
+
* @examplePrompt What are the coordinates of this corner point?
|
|
70
|
+
* @examplePrompt Get the exact x, y, z position of the selected vertex
|
|
71
|
+
*
|
|
72
|
+
* # Example
|
|
73
|
+
* ```ts
|
|
74
|
+
* const [wall] = await snaptrude.design.query.listWalls()
|
|
75
|
+
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
76
|
+
* if (brep) {
|
|
77
|
+
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
78
|
+
* const pos = await snaptrude.core.geom.query.vertex.getPosition(brep, vertex)
|
|
79
|
+
* console.log(pos.x, pos.y, pos.z)
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
public abstract getPosition(
|
|
84
|
+
brep: BrepHandle,
|
|
85
|
+
vertex: VertexHandle
|
|
86
|
+
): PluginApiReturn<Vec3Components>
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* List the half-edges around a vertex.
|
|
90
|
+
* @param vertex The vertex to query
|
|
91
|
+
* @returns The half-edges as {@linkcode HalfEdgeHandle}`[]`
|
|
92
|
+
*
|
|
93
|
+
* # Example
|
|
94
|
+
* ```ts
|
|
95
|
+
* const [wall] = await snaptrude.design.query.listWalls()
|
|
96
|
+
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
97
|
+
* if (brep) {
|
|
98
|
+
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
99
|
+
* const halfEdges = await snaptrude.core.geom.query.vertex.listHalfEdges(vertex)
|
|
100
|
+
* console.log("half-edges at this vertex:", halfEdges.length)
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
public abstract listHalfEdges(vertex: VertexHandle): PluginApiReturn<HalfEdgeHandle[]>
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* List the edges around a vertex.
|
|
108
|
+
* @param vertex The vertex to query
|
|
109
|
+
* @returns The edges as {@linkcode EdgeHandle}`[]`
|
|
110
|
+
*
|
|
111
|
+
* # Example
|
|
112
|
+
* ```ts
|
|
113
|
+
* const [wall] = await snaptrude.design.query.listWalls()
|
|
114
|
+
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
115
|
+
* if (brep) {
|
|
116
|
+
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
117
|
+
* const edges = await snaptrude.core.geom.query.vertex.listEdges(vertex)
|
|
118
|
+
* console.log("edges meeting at this corner:", edges.length)
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
public abstract listEdges(vertex: VertexHandle): PluginApiReturn<EdgeHandle[]>
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* List the faces around a vertex.
|
|
126
|
+
* @param vertex The vertex to query
|
|
127
|
+
* @returns The faces as {@linkcode FaceHandle}`[]`
|
|
128
|
+
*
|
|
129
|
+
* # Example
|
|
130
|
+
* ```ts
|
|
131
|
+
* const [wall] = await snaptrude.design.query.listWalls()
|
|
132
|
+
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
133
|
+
* if (brep) {
|
|
134
|
+
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
135
|
+
* const faces = await snaptrude.core.geom.query.vertex.listFaces(vertex)
|
|
136
|
+
* console.log("faces sharing this corner:", faces.length)
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
public abstract listFaces(vertex: VertexHandle): PluginApiReturn<FaceHandle[]>
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* List the neighbouring vertices of a vertex.
|
|
144
|
+
* @param vertex The vertex to query
|
|
145
|
+
* @returns The neighbours as {@linkcode VertexHandle}`[]`
|
|
146
|
+
*
|
|
147
|
+
* # Example
|
|
148
|
+
* ```ts
|
|
149
|
+
* const [wall] = await snaptrude.design.query.listWalls()
|
|
150
|
+
* const brep = await snaptrude.design.query.geometry.getBrep(wall)
|
|
151
|
+
* if (brep) {
|
|
152
|
+
* const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
|
|
153
|
+
* const neighbors = await snaptrude.core.geom.query.vertex.listNeighbors(vertex)
|
|
154
|
+
* for (const n of neighbors) {
|
|
155
|
+
* const pos = await snaptrude.core.geom.query.vertex.getPosition(brep, n)
|
|
156
|
+
* }
|
|
157
|
+
* }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
public abstract listNeighbors(vertex: VertexHandle): PluginApiReturn<VertexHandle[]>
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const vertexArg = z.object({ vertex: VertexHandle })
|
|
164
|
+
|
|
165
|
+
/** Arguments for {@linkcode PluginGeomQueryVertexApi.getIndex}. `{ vertex: VertexHandle }` */
|
|
166
|
+
export const PluginGeomQueryVertexGetIndexArgs = vertexArg
|
|
167
|
+
export type PluginGeomQueryVertexGetIndexArgs = z.infer<typeof PluginGeomQueryVertexGetIndexArgs>
|
|
168
|
+
|
|
169
|
+
/** Arguments for {@linkcode PluginGeomQueryVertexApi.getHalfEdge}. `{ vertex: VertexHandle }` */
|
|
170
|
+
export const PluginGeomQueryVertexGetHalfEdgeArgs = vertexArg
|
|
171
|
+
export type PluginGeomQueryVertexGetHalfEdgeArgs = z.infer<typeof PluginGeomQueryVertexGetHalfEdgeArgs>
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Arguments for {@linkcode PluginGeomQueryVertexApi.getPosition}.
|
|
175
|
+
*
|
|
176
|
+
* | Property | Type | Description |
|
|
177
|
+
* |---|---|---|
|
|
178
|
+
* | `brep` | {@linkcode BrepHandle} | The parent brep (source of coordinates) |
|
|
179
|
+
* | `vertex` | {@linkcode VertexHandle} | The vertex whose position to read |
|
|
180
|
+
*/
|
|
181
|
+
export const PluginGeomQueryVertexGetPositionArgs = z.object({
|
|
182
|
+
brep: BrepHandle,
|
|
183
|
+
vertex: VertexHandle,
|
|
184
|
+
})
|
|
185
|
+
export type PluginGeomQueryVertexGetPositionArgs = z.infer<typeof PluginGeomQueryVertexGetPositionArgs>
|
|
186
|
+
|
|
187
|
+
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listHalfEdges}. `{ vertex: VertexHandle }` */
|
|
188
|
+
export const PluginGeomQueryVertexListHalfEdgesArgs = vertexArg
|
|
189
|
+
export type PluginGeomQueryVertexListHalfEdgesArgs = z.infer<
|
|
190
|
+
typeof PluginGeomQueryVertexListHalfEdgesArgs
|
|
191
|
+
>
|
|
192
|
+
|
|
193
|
+
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listEdges}. `{ vertex: VertexHandle }` */
|
|
194
|
+
export const PluginGeomQueryVertexListEdgesArgs = vertexArg
|
|
195
|
+
export type PluginGeomQueryVertexListEdgesArgs = z.infer<typeof PluginGeomQueryVertexListEdgesArgs>
|
|
196
|
+
|
|
197
|
+
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listFaces}. `{ vertex: VertexHandle }` */
|
|
198
|
+
export const PluginGeomQueryVertexListFacesArgs = vertexArg
|
|
199
|
+
export type PluginGeomQueryVertexListFacesArgs = z.infer<typeof PluginGeomQueryVertexListFacesArgs>
|
|
200
|
+
|
|
201
|
+
/** Arguments for {@linkcode PluginGeomQueryVertexApi.listNeighbors}. `{ vertex: VertexHandle }` */
|
|
202
|
+
export const PluginGeomQueryVertexListNeighborsArgs = vertexArg
|
|
203
|
+
export type PluginGeomQueryVertexListNeighborsArgs = z.infer<
|
|
204
|
+
typeof PluginGeomQueryVertexListNeighborsArgs
|
|
205
|
+
>
|