@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.
Files changed (266) hide show
  1. package/AGENTS.md +130 -48
  2. package/CHANGELOG.md +111 -0
  3. package/api-manifest.full.json +3999 -0
  4. package/api-manifest.json +3845 -0
  5. package/dist/api/core/buildings.d.ts +427 -0
  6. package/dist/api/core/buildings.d.ts.map +1 -0
  7. package/dist/api/core/comment/index.d.ts +230 -0
  8. package/dist/api/core/comment/index.d.ts.map +1 -0
  9. package/dist/api/core/geom/create/index.d.ts +247 -0
  10. package/dist/api/core/geom/create/index.d.ts.map +1 -0
  11. package/dist/api/core/geom/delete/index.d.ts +72 -0
  12. package/dist/api/core/geom/delete/index.d.ts.map +1 -0
  13. package/dist/api/core/geom/index.d.ts +24 -23
  14. package/dist/api/core/geom/index.d.ts.map +1 -1
  15. package/dist/api/core/geom/query/arc.d.ts +169 -0
  16. package/dist/api/core/geom/query/arc.d.ts.map +1 -0
  17. package/dist/api/core/geom/query/brep.d.ts +402 -0
  18. package/dist/api/core/geom/query/brep.d.ts.map +1 -0
  19. package/dist/api/core/geom/query/circle.d.ts +378 -0
  20. package/dist/api/core/geom/query/circle.d.ts.map +1 -0
  21. package/dist/api/core/geom/query/contour.d.ts +450 -0
  22. package/dist/api/core/geom/query/contour.d.ts.map +1 -0
  23. package/dist/api/core/geom/query/curve.d.ts +918 -0
  24. package/dist/api/core/geom/query/curve.d.ts.map +1 -0
  25. package/dist/api/core/geom/query/edge.d.ts +128 -0
  26. package/dist/api/core/geom/query/edge.d.ts.map +1 -0
  27. package/dist/api/core/geom/query/face.d.ts +363 -0
  28. package/dist/api/core/geom/query/face.d.ts.map +1 -0
  29. package/dist/api/core/geom/query/halfedge.d.ts +206 -0
  30. package/dist/api/core/geom/query/halfedge.d.ts.map +1 -0
  31. package/dist/api/core/geom/query/index.d.ts +61 -0
  32. package/dist/api/core/geom/query/index.d.ts.map +1 -0
  33. package/dist/api/core/geom/query/profile.d.ts +410 -0
  34. package/dist/api/core/geom/query/profile.d.ts.map +1 -0
  35. package/dist/api/core/geom/query/vertex.d.ts +187 -0
  36. package/dist/api/core/geom/query/vertex.d.ts.map +1 -0
  37. package/dist/api/core/geom/update/contour.d.ts +272 -0
  38. package/dist/api/core/geom/update/contour.d.ts.map +1 -0
  39. package/dist/api/core/geom/update/curve.d.ts +180 -0
  40. package/dist/api/core/geom/update/curve.d.ts.map +1 -0
  41. package/dist/api/core/geom/update/index.d.ts +27 -0
  42. package/dist/api/core/geom/update/index.d.ts.map +1 -0
  43. package/dist/api/core/geom/update/profile.d.ts +329 -0
  44. package/dist/api/core/geom/update/profile.d.ts.map +1 -0
  45. package/dist/api/core/groups.d.ts +485 -0
  46. package/dist/api/core/groups.d.ts.map +1 -0
  47. package/dist/api/core/history/index.d.ts +78 -0
  48. package/dist/api/core/history/index.d.ts.map +1 -0
  49. package/dist/api/core/index.d.ts +46 -1
  50. package/dist/api/core/index.d.ts.map +1 -1
  51. package/dist/api/core/layers.d.ts +402 -0
  52. package/dist/api/core/layers.d.ts.map +1 -0
  53. package/dist/api/core/math/quat.d.ts +111 -128
  54. package/dist/api/core/math/quat.d.ts.map +1 -1
  55. package/dist/api/core/math/vec3.d.ts +120 -102
  56. package/dist/api/core/math/vec3.d.ts.map +1 -1
  57. package/dist/api/core/project/index.d.ts +399 -0
  58. package/dist/api/core/project/index.d.ts.map +1 -0
  59. package/dist/api/core/tags.d.ts +755 -0
  60. package/dist/api/core/tags.d.ts.map +1 -0
  61. package/dist/api/core/units/index.d.ts +175 -0
  62. package/dist/api/core/units/index.d.ts.map +1 -0
  63. package/dist/api/core/zoom/index.d.ts +45 -0
  64. package/dist/api/core/zoom/index.d.ts.map +1 -0
  65. package/dist/api/design/boolean/index.d.ts +168 -0
  66. package/dist/api/design/boolean/index.d.ts.map +1 -0
  67. package/dist/api/design/create/index.d.ts +828 -0
  68. package/dist/api/design/create/index.d.ts.map +1 -0
  69. package/dist/api/design/delete/index.d.ts +63 -0
  70. package/dist/api/design/delete/index.d.ts.map +1 -0
  71. package/dist/api/design/doors/index.d.ts +268 -0
  72. package/dist/api/design/doors/index.d.ts.map +1 -0
  73. package/dist/api/design/edit/index.d.ts +49 -0
  74. package/dist/api/design/edit/index.d.ts.map +1 -0
  75. package/dist/api/design/erase/index.d.ts +160 -0
  76. package/dist/api/design/erase/index.d.ts.map +1 -0
  77. package/dist/api/design/furniture/index.d.ts +123 -0
  78. package/dist/api/design/furniture/index.d.ts.map +1 -0
  79. package/dist/api/design/index.d.ts +153 -0
  80. package/dist/api/design/index.d.ts.map +1 -0
  81. package/dist/api/design/lock.d.ts +41 -0
  82. package/dist/api/design/lock.d.ts.map +1 -0
  83. package/dist/api/design/materials/index.d.ts +297 -0
  84. package/dist/api/design/materials/index.d.ts.map +1 -0
  85. package/dist/api/design/query/geometry/index.d.ts +140 -0
  86. package/dist/api/design/query/geometry/index.d.ts.map +1 -0
  87. package/dist/api/design/query/index.d.ts +1011 -0
  88. package/dist/api/design/query/index.d.ts.map +1 -0
  89. package/dist/api/design/query/spaces.d.ts +221 -0
  90. package/dist/api/design/query/spaces.d.ts.map +1 -0
  91. package/dist/api/design/selection/index.d.ts +138 -0
  92. package/dist/api/design/selection/index.d.ts.map +1 -0
  93. package/dist/api/design/shared.d.ts +38 -0
  94. package/dist/api/design/shared.d.ts.map +1 -0
  95. package/dist/api/design/transform/index.d.ts +87 -0
  96. package/dist/api/design/transform/index.d.ts.map +1 -0
  97. package/dist/api/design/update/index.d.ts +178 -0
  98. package/dist/api/design/update/index.d.ts.map +1 -0
  99. package/dist/api/design/windows/index.d.ts +189 -0
  100. package/dist/api/design/windows/index.d.ts.map +1 -0
  101. package/dist/api/entity/buildableEnvelope.d.ts +261 -0
  102. package/dist/api/entity/buildableEnvelope.d.ts.map +1 -0
  103. package/dist/api/entity/department.d.ts +0 -98
  104. package/dist/api/entity/department.d.ts.map +1 -1
  105. package/dist/api/entity/index.d.ts +9 -9
  106. package/dist/api/entity/index.d.ts.map +1 -1
  107. package/dist/api/entity/referenceLine.d.ts +49 -106
  108. package/dist/api/entity/referenceLine.d.ts.map +1 -1
  109. package/dist/api/entity/space.d.ts +482 -249
  110. package/dist/api/entity/space.d.ts.map +1 -1
  111. package/dist/api/entity/story.d.ts +49 -39
  112. package/dist/api/entity/story.d.ts.map +1 -1
  113. package/dist/api/index.d.ts +17 -12
  114. package/dist/api/index.d.ts.map +1 -1
  115. package/dist/api/presentation/aiInspiration.d.ts +440 -0
  116. package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
  117. package/dist/api/presentation/diagrams.d.ts +81 -0
  118. package/dist/api/presentation/diagrams.d.ts.map +1 -0
  119. package/dist/api/presentation/import.d.ts +113 -0
  120. package/dist/api/presentation/import.d.ts.map +1 -0
  121. package/dist/api/presentation/index.d.ts +46 -0
  122. package/dist/api/presentation/index.d.ts.map +1 -0
  123. package/dist/api/presentation/sheets.d.ts +176 -0
  124. package/dist/api/presentation/sheets.d.ts.map +1 -0
  125. package/dist/api/presentation/views.d.ts +296 -0
  126. package/dist/api/presentation/views.d.ts.map +1 -0
  127. package/dist/api/program/adjacency.d.ts +155 -0
  128. package/dist/api/program/adjacency.d.ts.map +1 -0
  129. package/dist/api/program/areas.d.ts +360 -0
  130. package/dist/api/program/areas.d.ts.map +1 -0
  131. package/dist/api/program/classification.d.ts +135 -0
  132. package/dist/api/program/classification.d.ts.map +1 -0
  133. package/dist/api/program/cores.d.ts +174 -0
  134. package/dist/api/program/cores.d.ts.map +1 -0
  135. package/dist/api/program/departments.d.ts +431 -0
  136. package/dist/api/program/departments.d.ts.map +1 -0
  137. package/dist/api/program/index.d.ts +69 -0
  138. package/dist/api/program/index.d.ts.map +1 -0
  139. package/dist/api/program/layout.d.ts +63 -0
  140. package/dist/api/program/layout.d.ts.map +1 -0
  141. package/dist/api/program/metrics.d.ts +108 -0
  142. package/dist/api/program/metrics.d.ts.map +1 -0
  143. package/dist/api/program/site.d.ts +367 -0
  144. package/dist/api/program/site.d.ts.map +1 -0
  145. package/dist/api/program/spreadsheet.d.ts +2041 -0
  146. package/dist/api/program/spreadsheet.d.ts.map +1 -0
  147. package/dist/handles.d.ts +138 -0
  148. package/dist/handles.d.ts.map +1 -0
  149. package/dist/host-utils.d.ts +7 -5
  150. package/dist/host-utils.d.ts.map +1 -1
  151. package/dist/index.cjs +4001 -904
  152. package/dist/index.cjs.map +1 -1
  153. package/dist/index.d.ts +1 -0
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +3392 -870
  156. package/dist/index.js.map +1 -1
  157. package/package.json +6 -2
  158. package/scripts/generate-manifest.mjs +193 -0
  159. package/scripts/generate-manifest.test.mjs +193 -0
  160. package/src/api/core/buildings.ts +485 -0
  161. package/src/api/core/comment/index.ts +258 -0
  162. package/src/api/core/geom/create/index.ts +293 -0
  163. package/src/api/core/geom/delete/index.ts +78 -0
  164. package/src/api/core/geom/index.ts +24 -23
  165. package/src/api/core/geom/query/arc.ts +169 -0
  166. package/src/api/core/geom/query/brep.ts +444 -0
  167. package/src/api/core/geom/query/circle.ts +404 -0
  168. package/src/api/core/geom/query/contour.ts +540 -0
  169. package/src/api/core/geom/query/curve.ts +1078 -0
  170. package/src/api/core/geom/query/edge.ts +130 -0
  171. package/src/api/core/geom/query/face.ts +403 -0
  172. package/src/api/core/geom/query/halfedge.ts +210 -0
  173. package/src/api/core/geom/query/index.ts +63 -0
  174. package/src/api/core/geom/query/profile.ts +473 -0
  175. package/src/api/core/geom/query/vertex.ts +205 -0
  176. package/src/api/core/geom/update/contour.ts +315 -0
  177. package/src/api/core/geom/update/curve.ts +209 -0
  178. package/src/api/core/geom/update/index.ts +29 -0
  179. package/src/api/core/geom/update/profile.ts +377 -0
  180. package/src/api/core/groups.ts +521 -0
  181. package/src/api/core/history/index.ts +84 -0
  182. package/src/api/core/index.ts +46 -1
  183. package/src/api/core/layers.ts +333 -0
  184. package/src/api/core/math/quat.ts +112 -235
  185. package/src/api/core/math/vec3.ts +124 -159
  186. package/src/api/core/project/index.ts +418 -0
  187. package/src/api/core/tags.ts +808 -0
  188. package/src/api/core/units/index.ts +164 -0
  189. package/src/api/core/zoom/index.ts +47 -0
  190. package/src/api/design/boolean/index.ts +179 -0
  191. package/src/api/design/create/index.ts +886 -0
  192. package/src/api/design/delete/index.ts +67 -0
  193. package/src/api/design/doors/index.ts +285 -0
  194. package/src/api/design/edit/index.ts +54 -0
  195. package/src/api/design/erase/index.ts +151 -0
  196. package/src/api/design/furniture/index.ts +130 -0
  197. package/src/api/design/index.ts +162 -0
  198. package/src/api/design/lock.ts +42 -0
  199. package/src/api/design/materials/index.ts +301 -0
  200. package/src/api/design/query/geometry/index.ts +166 -0
  201. package/src/api/design/query/index.ts +937 -0
  202. package/src/api/design/query/spaces.ts +132 -0
  203. package/src/api/design/selection/index.ts +144 -0
  204. package/src/api/design/shared.ts +40 -0
  205. package/src/api/design/transform/index.ts +93 -0
  206. package/src/api/design/update/index.ts +117 -0
  207. package/src/api/design/windows/index.ts +207 -0
  208. package/src/api/entity/buildableEnvelope.ts +318 -0
  209. package/src/api/entity/department.ts +0 -113
  210. package/src/api/entity/index.ts +9 -9
  211. package/src/api/entity/referenceLine.ts +50 -38
  212. package/src/api/entity/space.ts +285 -226
  213. package/src/api/entity/story.ts +53 -42
  214. package/src/api/index.ts +17 -12
  215. package/src/api/presentation/aiInspiration.ts +362 -0
  216. package/src/api/presentation/diagrams.ts +84 -0
  217. package/src/api/presentation/import.ts +112 -0
  218. package/src/api/presentation/index.ts +48 -0
  219. package/src/api/presentation/sheets.ts +198 -0
  220. package/src/api/presentation/views.ts +303 -0
  221. package/src/api/program/adjacency.ts +164 -0
  222. package/src/api/program/areas.ts +335 -0
  223. package/src/api/program/classification.ts +138 -0
  224. package/src/api/program/cores.ts +171 -0
  225. package/src/api/program/departments.ts +465 -0
  226. package/src/api/program/index.ts +71 -0
  227. package/src/api/program/layout.ts +68 -0
  228. package/src/api/program/metrics.ts +120 -0
  229. package/src/api/program/site.ts +326 -0
  230. package/src/api/program/spreadsheet.ts +2075 -0
  231. package/src/handles.ts +148 -0
  232. package/src/host-utils.ts +10 -6
  233. package/src/index.ts +1 -0
  234. package/dist/api/core/geom/arc.d.ts +0 -81
  235. package/dist/api/core/geom/arc.d.ts.map +0 -1
  236. package/dist/api/core/geom/curve.d.ts +0 -70
  237. package/dist/api/core/geom/curve.d.ts.map +0 -1
  238. package/dist/api/core/geom/line.d.ts +0 -56
  239. package/dist/api/core/geom/line.d.ts.map +0 -1
  240. package/dist/api/core/geom/profile.d.ts +0 -121
  241. package/dist/api/core/geom/profile.d.ts.map +0 -1
  242. package/dist/api/tools/copy.d.ts +0 -59
  243. package/dist/api/tools/copy.d.ts.map +0 -1
  244. package/dist/api/tools/index.d.ts +0 -33
  245. package/dist/api/tools/index.d.ts.map +0 -1
  246. package/dist/api/tools/material.d.ts +0 -51
  247. package/dist/api/tools/material.d.ts.map +0 -1
  248. package/dist/api/tools/offset.d.ts +0 -43
  249. package/dist/api/tools/offset.d.ts.map +0 -1
  250. package/dist/api/tools/selection.d.ts +0 -48
  251. package/dist/api/tools/selection.d.ts.map +0 -1
  252. package/dist/api/tools/transform.d.ts +0 -114
  253. package/dist/api/tools/transform.d.ts.map +0 -1
  254. package/dist/api/units/index.d.ts +0 -163
  255. package/dist/api/units/index.d.ts.map +0 -1
  256. package/src/api/core/geom/arc.ts +0 -70
  257. package/src/api/core/geom/curve.ts +0 -41
  258. package/src/api/core/geom/line.ts +0 -53
  259. package/src/api/core/geom/profile.ts +0 -94
  260. package/src/api/tools/copy.ts +0 -55
  261. package/src/api/tools/index.ts +0 -39
  262. package/src/api/tools/material.ts +0 -49
  263. package/src/api/tools/offset.ts +0 -43
  264. package/src/api/tools/selection.ts +0 -51
  265. package/src/api/tools/transform.ts +0 -117
  266. package/src/api/units/index.ts +0 -163
@@ -0,0 +1,402 @@
1
+ import * as z from "zod";
2
+ import { PluginApiReturn } from "../../../../types";
3
+ import { BrepHandle, FaceHandle, EdgeHandle, VertexHandle, HalfEdgeHandle, Vec3Components, BBoxComponents } from "../../../../handles";
4
+ /**
5
+ * BREP queries — read the topology and geometry of a boundary-representation mesh
6
+ * as plain values / child handles (all-handle model, §11). A {@linkcode BrepHandle}
7
+ * is a session-ephemeral resource handle obtained from `design.query.geometry.getBrep`;
8
+ * it goes stale on undo/redo/re-topologize.
9
+ *
10
+ * Enumerations mint fresh child topology handles ({@linkcode FaceHandle},
11
+ * {@linkcode EdgeHandle}, {@linkcode VertexHandle}, {@linkcode HalfEdgeHandle}); the
12
+ * registry dedupes by identity, so re-enumeration returns the same handles. Position
13
+ * reads return {@linkcode Vec3Components}. No query mutates its inputs.
14
+ *
15
+ * Accessed via `snaptrude.core.geom.query.brep`.
16
+ */
17
+ export declare abstract class PluginGeomQueryBrepApi {
18
+ constructor();
19
+ /**
20
+ * List the faces of a brep.
21
+ * @param brep The brep to query
22
+ * @returns The faces as {@linkcode FaceHandle}`[]`
23
+ *
24
+ * # Example
25
+ * ```ts
26
+ * const [wall] = await snaptrude.design.query.listWalls()
27
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
28
+ * if (brep) {
29
+ * const faces = await snaptrude.core.geom.query.brep.listFaces(brep)
30
+ * }
31
+ * ```
32
+ */
33
+ abstract listFaces(brep: BrepHandle): PluginApiReturn<FaceHandle[]>;
34
+ /**
35
+ * List the edges of a brep.
36
+ * @param brep The brep to query
37
+ * @returns The edges as {@linkcode EdgeHandle}`[]`
38
+ *
39
+ * # Example
40
+ * ```ts
41
+ * const [wall] = await snaptrude.design.query.listWalls()
42
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
43
+ * if (brep) {
44
+ * const edges = await snaptrude.core.geom.query.brep.listEdges(brep)
45
+ * }
46
+ * ```
47
+ */
48
+ abstract listEdges(brep: BrepHandle): PluginApiReturn<EdgeHandle[]>;
49
+ /**
50
+ * List the vertices of a brep.
51
+ * @param brep The brep to query
52
+ * @returns The vertices as {@linkcode VertexHandle}`[]`
53
+ *
54
+ * # Example
55
+ * ```ts
56
+ * const [mass] = await snaptrude.design.query.listMasses()
57
+ * const brep = await snaptrude.design.query.geometry.getBrep(mass)
58
+ * if (brep) {
59
+ * const vertices = await snaptrude.core.geom.query.brep.listVertices(brep)
60
+ * }
61
+ * ```
62
+ */
63
+ abstract listVertices(brep: BrepHandle): PluginApiReturn<VertexHandle[]>;
64
+ /**
65
+ * List the half-edges of a brep.
66
+ * @param brep The brep to query
67
+ * @returns The half-edges as {@linkcode HalfEdgeHandle}`[]`
68
+ *
69
+ * # Example
70
+ * ```ts
71
+ * const [wall] = await snaptrude.design.query.listWalls()
72
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
73
+ * if (brep) {
74
+ * const halfEdges = await snaptrude.core.geom.query.brep.listHalfEdges(brep)
75
+ * }
76
+ * ```
77
+ */
78
+ abstract listHalfEdges(brep: BrepHandle): PluginApiReturn<HalfEdgeHandle[]>;
79
+ /**
80
+ * Get the edge connecting two vertices (by their brep vertex indices).
81
+ * @param brep The brep to query
82
+ * @param vertexIndexA First vertex index
83
+ * @param vertexIndexB Second vertex index
84
+ * @returns The edge as an {@linkcode EdgeHandle}, or `null` if no such edge exists
85
+ *
86
+ * # Example
87
+ * ```ts
88
+ * const [wall] = await snaptrude.design.query.listWalls()
89
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
90
+ * if (brep) {
91
+ * const [va, vb] = await snaptrude.core.geom.query.brep.listVertices(brep)
92
+ * const ia = await snaptrude.core.geom.query.vertex.getIndex(va)
93
+ * const ib = await snaptrude.core.geom.query.vertex.getIndex(vb)
94
+ * const edge = await snaptrude.core.geom.query.brep.getEdge(brep, ia, ib)
95
+ * if (edge) console.log("those two vertices are connected")
96
+ * }
97
+ * ```
98
+ */
99
+ abstract getEdge(brep: BrepHandle, vertexIndexA: number, vertexIndexB: number): PluginApiReturn<EdgeHandle | null>;
100
+ /**
101
+ * Test whether an edge connects two vertices (by their brep vertex indices).
102
+ * @param brep The brep to query
103
+ * @param vertexIndexA First vertex index
104
+ * @param vertexIndexB Second vertex index
105
+ * @returns `true` if such an edge exists, otherwise `false`
106
+ *
107
+ * # Example
108
+ * ```ts
109
+ * const [wall] = await snaptrude.design.query.listWalls()
110
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
111
+ * if (brep) {
112
+ * // brep vertex indices (get one from core.geom.query.vertex.getIndex)
113
+ * const connected = await snaptrude.core.geom.query.brep.hasEdge(brep, 0, 1)
114
+ * }
115
+ * ```
116
+ */
117
+ abstract hasEdge(brep: BrepHandle, vertexIndexA: number, vertexIndexB: number): PluginApiReturn<boolean>;
118
+ /**
119
+ * List every edge connecting two vertices (by their brep vertex indices).
120
+ * @param brep The brep to query
121
+ * @param vertexIndexA First vertex index
122
+ * @param vertexIndexB Second vertex index
123
+ * @returns The edges as {@linkcode EdgeHandle}`[]`
124
+ *
125
+ * # Example
126
+ * ```ts
127
+ * const [wall] = await snaptrude.design.query.listWalls()
128
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
129
+ * if (brep) {
130
+ * // brep vertex indices (get one from core.geom.query.vertex.getIndex)
131
+ * const edges = await snaptrude.core.geom.query.brep.listEdgesBetween(brep, 0, 1)
132
+ * console.log("edges between vertices 0 and 1:", edges.length)
133
+ * }
134
+ * ```
135
+ */
136
+ abstract listEdgesBetween(brep: BrepHandle, vertexIndexA: number, vertexIndexB: number): PluginApiReturn<EdgeHandle[]>;
137
+ /**
138
+ * Get the position of a vertex within a brep.
139
+ * @param brep The brep to query
140
+ * @param vertex The vertex whose position to read
141
+ * @returns The position as {@linkcode Vec3Components}
142
+ *
143
+ * # Example
144
+ * ```ts
145
+ * const [wall] = await snaptrude.design.query.listWalls()
146
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
147
+ * if (brep) {
148
+ * const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
149
+ * const { x, y, z } = await snaptrude.core.geom.query.brep.getVertexPosition(brep, vertex)
150
+ * }
151
+ * ```
152
+ */
153
+ abstract getVertexPosition(brep: BrepHandle, vertex: VertexHandle): PluginApiReturn<Vec3Components>;
154
+ /**
155
+ * List the positions of all vertices in a brep (ordered as {@linkcode PluginGeomQueryBrepApi.listVertices}).
156
+ * @param brep The brep to query
157
+ * @returns The positions as {@linkcode Vec3Components}`[]`
158
+ *
159
+ * @examplePrompt Get the coordinates of every corner of this shape
160
+ * @examplePrompt Give me all the corner points of the selected mass as XYZ coordinates
161
+ *
162
+ * # Example
163
+ * ```ts
164
+ * const [mass] = await snaptrude.design.query.listMasses()
165
+ * const brep = await snaptrude.design.query.geometry.getBrep(mass)
166
+ * if (brep) {
167
+ * const positions = await snaptrude.core.geom.query.brep.listVertexPositions(brep)
168
+ * for (const p of positions) console.log(p.x, p.y, p.z)
169
+ * }
170
+ * ```
171
+ */
172
+ abstract listVertexPositions(brep: BrepHandle): PluginApiReturn<Vec3Components[]>;
173
+ /**
174
+ * Get the centroid (mean of all vertex positions) of a brep.
175
+ * @param brep The brep to query
176
+ * @returns The centroid as {@linkcode Vec3Components}
177
+ *
178
+ * @examplePrompt Find the centre point of this shape
179
+ * @examplePrompt What is the centroid of the selected object?
180
+ *
181
+ * # Example
182
+ * ```ts
183
+ * const [mass] = await snaptrude.design.query.listMasses()
184
+ * const brep = await snaptrude.design.query.geometry.getBrep(mass)
185
+ * if (brep) {
186
+ * const centroid = await snaptrude.core.geom.query.brep.getCentroid(brep)
187
+ * console.log(centroid.x, centroid.y, centroid.z)
188
+ * }
189
+ * ```
190
+ */
191
+ abstract getCentroid(brep: BrepHandle): PluginApiReturn<Vec3Components>;
192
+ /**
193
+ * Get the number of faces in a brep.
194
+ * @param brep The brep to query
195
+ * @returns The face count as a `number`
196
+ *
197
+ * # Example
198
+ * ```ts
199
+ * const [wall] = await snaptrude.design.query.listWalls()
200
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
201
+ * if (brep) {
202
+ * const faceCount = await snaptrude.core.geom.query.brep.getFaceCount(brep)
203
+ * }
204
+ * ```
205
+ */
206
+ abstract getFaceCount(brep: BrepHandle): PluginApiReturn<number>;
207
+ /**
208
+ * Get the number of edges in a brep.
209
+ * @param brep The brep to query
210
+ * @returns The edge count as a `number`
211
+ *
212
+ * # Example
213
+ * ```ts
214
+ * const [wall] = await snaptrude.design.query.listWalls()
215
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
216
+ * if (brep) {
217
+ * const edgeCount = await snaptrude.core.geom.query.brep.getEdgeCount(brep)
218
+ * }
219
+ * ```
220
+ */
221
+ abstract getEdgeCount(brep: BrepHandle): PluginApiReturn<number>;
222
+ /**
223
+ * Get the number of vertices in a brep.
224
+ * @param brep The brep to query
225
+ * @returns The vertex count as a `number`
226
+ *
227
+ * # Example
228
+ * ```ts
229
+ * const [mass] = await snaptrude.design.query.listMasses()
230
+ * const brep = await snaptrude.design.query.geometry.getBrep(mass)
231
+ * if (brep) {
232
+ * const vertexCount = await snaptrude.core.geom.query.brep.getVertexCount(brep)
233
+ * }
234
+ * ```
235
+ */
236
+ abstract getVertexCount(brep: BrepHandle): PluginApiReturn<number>;
237
+ /**
238
+ * Get the number of half-edges in a brep.
239
+ * @param brep The brep to query
240
+ * @returns The half-edge count as a `number`
241
+ *
242
+ * # Example
243
+ * ```ts
244
+ * const [mass] = await snaptrude.design.query.listMasses()
245
+ * const brep = await snaptrude.design.query.geometry.getBrep(mass)
246
+ * if (brep) {
247
+ * const halfEdgeCount = await snaptrude.core.geom.query.brep.getHalfEdgeCount(brep)
248
+ * }
249
+ * ```
250
+ */
251
+ abstract getHalfEdgeCount(brep: BrepHandle): PluginApiReturn<number>;
252
+ /**
253
+ * Get the axis-aligned bounding box of a brep.
254
+ * @param brep The brep to query
255
+ * @returns The bounding box as {@linkcode BBoxComponents}
256
+ *
257
+ * @examplePrompt What is the bounding box of this shape?
258
+ * @examplePrompt How big is this object overall — give me its min and max extents
259
+ *
260
+ * # Example
261
+ * ```ts
262
+ * const [mass] = await snaptrude.design.query.listMasses()
263
+ * const brep = await snaptrude.design.query.geometry.getBrep(mass)
264
+ * if (brep) {
265
+ * const { min, max } = await snaptrude.core.geom.query.brep.getBoundingBox(brep)
266
+ * console.log("size:", max.x - min.x, max.y - min.y, max.z - min.z)
267
+ * }
268
+ * ```
269
+ */
270
+ abstract getBoundingBox(brep: BrepHandle): PluginApiReturn<BBoxComponents>;
271
+ /**
272
+ * Test whether two breps are geometrically equal.
273
+ * @param brepA First brep
274
+ * @param brepB Second brep
275
+ * @returns `true` if the breps are equal, otherwise `false`
276
+ *
277
+ * @examplePrompt Are these two shapes geometrically identical?
278
+ * @examplePrompt Check whether these two objects have the same geometry
279
+ *
280
+ * # Example
281
+ * ```ts
282
+ * const [a, b] = await snaptrude.design.query.listMasses()
283
+ * const brepA = await snaptrude.design.query.geometry.getBrep(a)
284
+ * const brepB = await snaptrude.design.query.geometry.getBrep(b)
285
+ * if (brepA && brepB) {
286
+ * const same = await snaptrude.core.geom.query.brep.isEqual(brepA, brepB)
287
+ * }
288
+ * ```
289
+ */
290
+ abstract isEqual(brepA: BrepHandle, brepB: BrepHandle): PluginApiReturn<boolean>;
291
+ }
292
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.listFaces}. `{ brep: BrepHandle }` */
293
+ export declare const PluginGeomQueryBrepListFacesArgs: z.ZodObject<{
294
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
295
+ }, z.core.$strip>;
296
+ export type PluginGeomQueryBrepListFacesArgs = z.infer<typeof PluginGeomQueryBrepListFacesArgs>;
297
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.listEdges}. `{ brep: BrepHandle }` */
298
+ export declare const PluginGeomQueryBrepListEdgesArgs: z.ZodObject<{
299
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
300
+ }, z.core.$strip>;
301
+ export type PluginGeomQueryBrepListEdgesArgs = z.infer<typeof PluginGeomQueryBrepListEdgesArgs>;
302
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.listVertices}. `{ brep: BrepHandle }` */
303
+ export declare const PluginGeomQueryBrepListVerticesArgs: z.ZodObject<{
304
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
305
+ }, z.core.$strip>;
306
+ export type PluginGeomQueryBrepListVerticesArgs = z.infer<typeof PluginGeomQueryBrepListVerticesArgs>;
307
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.listHalfEdges}. `{ brep: BrepHandle }` */
308
+ export declare const PluginGeomQueryBrepListHalfEdgesArgs: z.ZodObject<{
309
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
310
+ }, z.core.$strip>;
311
+ export type PluginGeomQueryBrepListHalfEdgesArgs = z.infer<typeof PluginGeomQueryBrepListHalfEdgesArgs>;
312
+ /**
313
+ * Arguments for {@linkcode PluginGeomQueryBrepApi.getEdge}.
314
+ *
315
+ * | Property | Type | Description |
316
+ * |---|---|---|
317
+ * | `brep` | {@linkcode BrepHandle} | The brep to query |
318
+ * | `vertexIndexA` | `number` | First vertex index |
319
+ * | `vertexIndexB` | `number` | Second vertex index |
320
+ */
321
+ export declare const PluginGeomQueryBrepGetEdgeArgs: z.ZodObject<{
322
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
323
+ vertexIndexA: z.ZodNumber;
324
+ vertexIndexB: z.ZodNumber;
325
+ }, z.core.$strip>;
326
+ export type PluginGeomQueryBrepGetEdgeArgs = z.infer<typeof PluginGeomQueryBrepGetEdgeArgs>;
327
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.hasEdge}. `{ brep, vertexIndexA, vertexIndexB }` */
328
+ export declare const PluginGeomQueryBrepHasEdgeArgs: z.ZodObject<{
329
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
330
+ vertexIndexA: z.ZodNumber;
331
+ vertexIndexB: z.ZodNumber;
332
+ }, z.core.$strip>;
333
+ export type PluginGeomQueryBrepHasEdgeArgs = z.infer<typeof PluginGeomQueryBrepHasEdgeArgs>;
334
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.listEdgesBetween}. `{ brep, vertexIndexA, vertexIndexB }` */
335
+ export declare const PluginGeomQueryBrepListEdgesBetweenArgs: z.ZodObject<{
336
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
337
+ vertexIndexA: z.ZodNumber;
338
+ vertexIndexB: z.ZodNumber;
339
+ }, z.core.$strip>;
340
+ export type PluginGeomQueryBrepListEdgesBetweenArgs = z.infer<typeof PluginGeomQueryBrepListEdgesBetweenArgs>;
341
+ /**
342
+ * Arguments for {@linkcode PluginGeomQueryBrepApi.getVertexPosition}.
343
+ *
344
+ * | Property | Type | Description |
345
+ * |---|---|---|
346
+ * | `brep` | {@linkcode BrepHandle} | The brep to query |
347
+ * | `vertex` | {@linkcode VertexHandle} | The vertex whose position to read |
348
+ */
349
+ export declare const PluginGeomQueryBrepGetVertexPositionArgs: z.ZodObject<{
350
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
351
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
352
+ }, z.core.$strip>;
353
+ export type PluginGeomQueryBrepGetVertexPositionArgs = z.infer<typeof PluginGeomQueryBrepGetVertexPositionArgs>;
354
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.listVertexPositions}. `{ brep: BrepHandle }` */
355
+ export declare const PluginGeomQueryBrepListVertexPositionsArgs: z.ZodObject<{
356
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
357
+ }, z.core.$strip>;
358
+ export type PluginGeomQueryBrepListVertexPositionsArgs = z.infer<typeof PluginGeomQueryBrepListVertexPositionsArgs>;
359
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.getCentroid}. `{ brep: BrepHandle }` */
360
+ export declare const PluginGeomQueryBrepGetCentroidArgs: z.ZodObject<{
361
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
362
+ }, z.core.$strip>;
363
+ export type PluginGeomQueryBrepGetCentroidArgs = z.infer<typeof PluginGeomQueryBrepGetCentroidArgs>;
364
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.getFaceCount}. `{ brep: BrepHandle }` */
365
+ export declare const PluginGeomQueryBrepGetFaceCountArgs: z.ZodObject<{
366
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
367
+ }, z.core.$strip>;
368
+ export type PluginGeomQueryBrepGetFaceCountArgs = z.infer<typeof PluginGeomQueryBrepGetFaceCountArgs>;
369
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.getEdgeCount}. `{ brep: BrepHandle }` */
370
+ export declare const PluginGeomQueryBrepGetEdgeCountArgs: z.ZodObject<{
371
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
372
+ }, z.core.$strip>;
373
+ export type PluginGeomQueryBrepGetEdgeCountArgs = z.infer<typeof PluginGeomQueryBrepGetEdgeCountArgs>;
374
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.getVertexCount}. `{ brep: BrepHandle }` */
375
+ export declare const PluginGeomQueryBrepGetVertexCountArgs: z.ZodObject<{
376
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
377
+ }, z.core.$strip>;
378
+ export type PluginGeomQueryBrepGetVertexCountArgs = z.infer<typeof PluginGeomQueryBrepGetVertexCountArgs>;
379
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.getHalfEdgeCount}. `{ brep: BrepHandle }` */
380
+ export declare const PluginGeomQueryBrepGetHalfEdgeCountArgs: z.ZodObject<{
381
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
382
+ }, z.core.$strip>;
383
+ export type PluginGeomQueryBrepGetHalfEdgeCountArgs = z.infer<typeof PluginGeomQueryBrepGetHalfEdgeCountArgs>;
384
+ /** Arguments for {@linkcode PluginGeomQueryBrepApi.getBoundingBox}. `{ brep: BrepHandle }` */
385
+ export declare const PluginGeomQueryBrepGetBoundingBoxArgs: z.ZodObject<{
386
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
387
+ }, z.core.$strip>;
388
+ export type PluginGeomQueryBrepGetBoundingBoxArgs = z.infer<typeof PluginGeomQueryBrepGetBoundingBoxArgs>;
389
+ /**
390
+ * Arguments for {@linkcode PluginGeomQueryBrepApi.isEqual}.
391
+ *
392
+ * | Property | Type | Description |
393
+ * |---|---|---|
394
+ * | `brepA` | {@linkcode BrepHandle} | First brep |
395
+ * | `brepB` | {@linkcode BrepHandle} | Second brep |
396
+ */
397
+ export declare const PluginGeomQueryBrepIsEqualArgs: z.ZodObject<{
398
+ brepA: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
399
+ brepB: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
400
+ }, z.core.$strip>;
401
+ export type PluginGeomQueryBrepIsEqualArgs = z.infer<typeof PluginGeomQueryBrepIsEqualArgs>;
402
+ //# sourceMappingURL=brep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brep.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/query/brep.ts"],"names":[],"mappings":"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"}