@snaptrude/plugin-core 0.3.0 → 0.6.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 (302) hide show
  1. package/AGENTS.md +130 -48
  2. package/CHANGELOG.md +163 -0
  3. package/api-manifest.full.json +5600 -0
  4. package/api-manifest.json +5502 -0
  5. package/dist/api/analysis/heatmaps.d.ts +234 -0
  6. package/dist/api/analysis/heatmaps.d.ts.map +1 -0
  7. package/dist/api/analysis/illuminance.d.ts +145 -0
  8. package/dist/api/analysis/illuminance.d.ts.map +1 -0
  9. package/dist/api/analysis/index.d.ts +44 -0
  10. package/dist/api/analysis/index.d.ts.map +1 -0
  11. package/dist/api/analysis/shadows.d.ts +165 -0
  12. package/dist/api/analysis/shadows.d.ts.map +1 -0
  13. package/dist/api/analysis/sunlightHours.d.ts +208 -0
  14. package/dist/api/analysis/sunlightHours.d.ts.map +1 -0
  15. package/dist/api/analysis/sunpath.d.ts +80 -0
  16. package/dist/api/analysis/sunpath.d.ts.map +1 -0
  17. package/dist/api/core/buildings.d.ts +427 -0
  18. package/dist/api/core/buildings.d.ts.map +1 -0
  19. package/dist/api/core/comment/index.d.ts +230 -0
  20. package/dist/api/core/comment/index.d.ts.map +1 -0
  21. package/dist/api/core/geom/create/index.d.ts +247 -0
  22. package/dist/api/core/geom/create/index.d.ts.map +1 -0
  23. package/dist/api/core/geom/delete/index.d.ts +72 -0
  24. package/dist/api/core/geom/delete/index.d.ts.map +1 -0
  25. package/dist/api/core/geom/index.d.ts +24 -23
  26. package/dist/api/core/geom/index.d.ts.map +1 -1
  27. package/dist/api/core/geom/query/arc.d.ts +169 -0
  28. package/dist/api/core/geom/query/arc.d.ts.map +1 -0
  29. package/dist/api/core/geom/query/brep.d.ts +402 -0
  30. package/dist/api/core/geom/query/brep.d.ts.map +1 -0
  31. package/dist/api/core/geom/query/circle.d.ts +378 -0
  32. package/dist/api/core/geom/query/circle.d.ts.map +1 -0
  33. package/dist/api/core/geom/query/contour.d.ts +450 -0
  34. package/dist/api/core/geom/query/contour.d.ts.map +1 -0
  35. package/dist/api/core/geom/query/curve.d.ts +918 -0
  36. package/dist/api/core/geom/query/curve.d.ts.map +1 -0
  37. package/dist/api/core/geom/query/edge.d.ts +128 -0
  38. package/dist/api/core/geom/query/edge.d.ts.map +1 -0
  39. package/dist/api/core/geom/query/face.d.ts +363 -0
  40. package/dist/api/core/geom/query/face.d.ts.map +1 -0
  41. package/dist/api/core/geom/query/halfedge.d.ts +206 -0
  42. package/dist/api/core/geom/query/halfedge.d.ts.map +1 -0
  43. package/dist/api/core/geom/query/index.d.ts +61 -0
  44. package/dist/api/core/geom/query/index.d.ts.map +1 -0
  45. package/dist/api/core/geom/query/profile.d.ts +410 -0
  46. package/dist/api/core/geom/query/profile.d.ts.map +1 -0
  47. package/dist/api/core/geom/query/vertex.d.ts +187 -0
  48. package/dist/api/core/geom/query/vertex.d.ts.map +1 -0
  49. package/dist/api/core/geom/update/contour.d.ts +272 -0
  50. package/dist/api/core/geom/update/contour.d.ts.map +1 -0
  51. package/dist/api/core/geom/update/curve.d.ts +180 -0
  52. package/dist/api/core/geom/update/curve.d.ts.map +1 -0
  53. package/dist/api/core/geom/update/index.d.ts +27 -0
  54. package/dist/api/core/geom/update/index.d.ts.map +1 -0
  55. package/dist/api/core/geom/update/profile.d.ts +329 -0
  56. package/dist/api/core/geom/update/profile.d.ts.map +1 -0
  57. package/dist/api/core/groups.d.ts +485 -0
  58. package/dist/api/core/groups.d.ts.map +1 -0
  59. package/dist/api/core/history/index.d.ts +78 -0
  60. package/dist/api/core/history/index.d.ts.map +1 -0
  61. package/dist/api/core/index.d.ts +51 -1
  62. package/dist/api/core/index.d.ts.map +1 -1
  63. package/dist/api/core/io/import/index.d.ts +392 -0
  64. package/dist/api/core/io/import/index.d.ts.map +1 -0
  65. package/dist/api/core/io/index.d.ts +35 -0
  66. package/dist/api/core/io/index.d.ts.map +1 -0
  67. package/dist/api/core/io/job/index.d.ts +139 -0
  68. package/dist/api/core/io/job/index.d.ts.map +1 -0
  69. package/dist/api/core/io/query/index.d.ts +74 -0
  70. package/dist/api/core/io/query/index.d.ts.map +1 -0
  71. package/dist/api/core/io/terrain/index.d.ts +206 -0
  72. package/dist/api/core/io/terrain/index.d.ts.map +1 -0
  73. package/dist/api/core/io/underlay/index.d.ts +286 -0
  74. package/dist/api/core/io/underlay/index.d.ts.map +1 -0
  75. package/dist/api/core/layers.d.ts +402 -0
  76. package/dist/api/core/layers.d.ts.map +1 -0
  77. package/dist/api/core/math/quat.d.ts +111 -128
  78. package/dist/api/core/math/quat.d.ts.map +1 -1
  79. package/dist/api/core/math/vec3.d.ts +120 -102
  80. package/dist/api/core/math/vec3.d.ts.map +1 -1
  81. package/dist/api/core/project/index.d.ts +399 -0
  82. package/dist/api/core/project/index.d.ts.map +1 -0
  83. package/dist/api/core/tags.d.ts +755 -0
  84. package/dist/api/core/tags.d.ts.map +1 -0
  85. package/dist/api/core/units/index.d.ts +175 -0
  86. package/dist/api/core/units/index.d.ts.map +1 -0
  87. package/dist/api/core/zoom/index.d.ts +45 -0
  88. package/dist/api/core/zoom/index.d.ts.map +1 -0
  89. package/dist/api/design/boolean/index.d.ts +168 -0
  90. package/dist/api/design/boolean/index.d.ts.map +1 -0
  91. package/dist/api/design/create/index.d.ts +837 -0
  92. package/dist/api/design/create/index.d.ts.map +1 -0
  93. package/dist/api/design/delete/index.d.ts +63 -0
  94. package/dist/api/design/delete/index.d.ts.map +1 -0
  95. package/dist/api/design/doors/index.d.ts +268 -0
  96. package/dist/api/design/doors/index.d.ts.map +1 -0
  97. package/dist/api/design/edit/index.d.ts +49 -0
  98. package/dist/api/design/edit/index.d.ts.map +1 -0
  99. package/dist/api/design/erase/index.d.ts +160 -0
  100. package/dist/api/design/erase/index.d.ts.map +1 -0
  101. package/dist/api/design/furniture/index.d.ts +123 -0
  102. package/dist/api/design/furniture/index.d.ts.map +1 -0
  103. package/dist/api/design/index.d.ts +153 -0
  104. package/dist/api/design/index.d.ts.map +1 -0
  105. package/dist/api/design/lock.d.ts +41 -0
  106. package/dist/api/design/lock.d.ts.map +1 -0
  107. package/dist/api/design/materials/index.d.ts +297 -0
  108. package/dist/api/design/materials/index.d.ts.map +1 -0
  109. package/dist/api/design/query/geometry/index.d.ts +140 -0
  110. package/dist/api/design/query/geometry/index.d.ts.map +1 -0
  111. package/dist/api/design/query/index.d.ts +1011 -0
  112. package/dist/api/design/query/index.d.ts.map +1 -0
  113. package/dist/api/design/query/spaces.d.ts +221 -0
  114. package/dist/api/design/query/spaces.d.ts.map +1 -0
  115. package/dist/api/design/selection/index.d.ts +282 -0
  116. package/dist/api/design/selection/index.d.ts.map +1 -0
  117. package/dist/api/design/shared.d.ts +38 -0
  118. package/dist/api/design/shared.d.ts.map +1 -0
  119. package/dist/api/design/transform/index.d.ts +87 -0
  120. package/dist/api/design/transform/index.d.ts.map +1 -0
  121. package/dist/api/design/update/index.d.ts +178 -0
  122. package/dist/api/design/update/index.d.ts.map +1 -0
  123. package/dist/api/design/windows/index.d.ts +189 -0
  124. package/dist/api/design/windows/index.d.ts.map +1 -0
  125. package/dist/api/entity/buildableEnvelope.d.ts +261 -0
  126. package/dist/api/entity/buildableEnvelope.d.ts.map +1 -0
  127. package/dist/api/entity/department.d.ts +0 -98
  128. package/dist/api/entity/department.d.ts.map +1 -1
  129. package/dist/api/entity/index.d.ts +9 -9
  130. package/dist/api/entity/index.d.ts.map +1 -1
  131. package/dist/api/entity/referenceLine.d.ts +49 -106
  132. package/dist/api/entity/referenceLine.d.ts.map +1 -1
  133. package/dist/api/entity/space.d.ts +484 -251
  134. package/dist/api/entity/space.d.ts.map +1 -1
  135. package/dist/api/entity/story.d.ts +49 -39
  136. package/dist/api/entity/story.d.ts.map +1 -1
  137. package/dist/api/index.d.ts +22 -12
  138. package/dist/api/index.d.ts.map +1 -1
  139. package/dist/api/presentation/aiInspiration.d.ts +440 -0
  140. package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
  141. package/dist/api/presentation/diagrams.d.ts +81 -0
  142. package/dist/api/presentation/diagrams.d.ts.map +1 -0
  143. package/dist/api/presentation/import.d.ts +113 -0
  144. package/dist/api/presentation/import.d.ts.map +1 -0
  145. package/dist/api/presentation/index.d.ts +46 -0
  146. package/dist/api/presentation/index.d.ts.map +1 -0
  147. package/dist/api/presentation/sheets.d.ts +176 -0
  148. package/dist/api/presentation/sheets.d.ts.map +1 -0
  149. package/dist/api/presentation/views.d.ts +296 -0
  150. package/dist/api/presentation/views.d.ts.map +1 -0
  151. package/dist/api/program/adjacency.d.ts +155 -0
  152. package/dist/api/program/adjacency.d.ts.map +1 -0
  153. package/dist/api/program/areas.d.ts +360 -0
  154. package/dist/api/program/areas.d.ts.map +1 -0
  155. package/dist/api/program/classification.d.ts +135 -0
  156. package/dist/api/program/classification.d.ts.map +1 -0
  157. package/dist/api/program/cores.d.ts +174 -0
  158. package/dist/api/program/cores.d.ts.map +1 -0
  159. package/dist/api/program/departments.d.ts +431 -0
  160. package/dist/api/program/departments.d.ts.map +1 -0
  161. package/dist/api/program/index.d.ts +69 -0
  162. package/dist/api/program/index.d.ts.map +1 -0
  163. package/dist/api/program/layout.d.ts +63 -0
  164. package/dist/api/program/layout.d.ts.map +1 -0
  165. package/dist/api/program/metrics.d.ts +108 -0
  166. package/dist/api/program/metrics.d.ts.map +1 -0
  167. package/dist/api/program/site.d.ts +451 -0
  168. package/dist/api/program/site.d.ts.map +1 -0
  169. package/dist/api/program/spreadsheet.d.ts +2041 -0
  170. package/dist/api/program/spreadsheet.d.ts.map +1 -0
  171. package/dist/handles.d.ts +171 -0
  172. package/dist/handles.d.ts.map +1 -0
  173. package/dist/host-utils.d.ts +7 -5
  174. package/dist/host-utils.d.ts.map +1 -1
  175. package/dist/index.cjs +4344 -899
  176. package/dist/index.cjs.map +1 -1
  177. package/dist/index.d.ts +1 -0
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +3682 -865
  180. package/dist/index.js.map +1 -1
  181. package/package.json +6 -2
  182. package/scripts/generate-manifest.mjs +193 -0
  183. package/scripts/generate-manifest.test.mjs +215 -0
  184. package/src/api/analysis/heatmaps.ts +256 -0
  185. package/src/api/analysis/illuminance.ts +155 -0
  186. package/src/api/analysis/index.ts +46 -0
  187. package/src/api/analysis/shadows.ts +183 -0
  188. package/src/api/analysis/sunlightHours.ts +211 -0
  189. package/src/api/analysis/sunpath.ts +83 -0
  190. package/src/api/core/buildings.ts +485 -0
  191. package/src/api/core/comment/index.ts +258 -0
  192. package/src/api/core/geom/create/index.ts +293 -0
  193. package/src/api/core/geom/delete/index.ts +78 -0
  194. package/src/api/core/geom/index.ts +24 -23
  195. package/src/api/core/geom/query/arc.ts +169 -0
  196. package/src/api/core/geom/query/brep.ts +444 -0
  197. package/src/api/core/geom/query/circle.ts +404 -0
  198. package/src/api/core/geom/query/contour.ts +540 -0
  199. package/src/api/core/geom/query/curve.ts +1078 -0
  200. package/src/api/core/geom/query/edge.ts +130 -0
  201. package/src/api/core/geom/query/face.ts +403 -0
  202. package/src/api/core/geom/query/halfedge.ts +210 -0
  203. package/src/api/core/geom/query/index.ts +63 -0
  204. package/src/api/core/geom/query/profile.ts +473 -0
  205. package/src/api/core/geom/query/vertex.ts +205 -0
  206. package/src/api/core/geom/update/contour.ts +315 -0
  207. package/src/api/core/geom/update/curve.ts +209 -0
  208. package/src/api/core/geom/update/index.ts +29 -0
  209. package/src/api/core/geom/update/profile.ts +377 -0
  210. package/src/api/core/groups.ts +521 -0
  211. package/src/api/core/history/index.ts +84 -0
  212. package/src/api/core/index.ts +51 -1
  213. package/src/api/core/io/import/index.ts +432 -0
  214. package/src/api/core/io/index.ts +37 -0
  215. package/src/api/core/io/job/index.ts +140 -0
  216. package/src/api/core/io/query/index.ts +71 -0
  217. package/src/api/core/io/terrain/index.ts +214 -0
  218. package/src/api/core/io/underlay/index.ts +295 -0
  219. package/src/api/core/layers.ts +333 -0
  220. package/src/api/core/math/quat.ts +112 -235
  221. package/src/api/core/math/vec3.ts +124 -159
  222. package/src/api/core/project/index.ts +418 -0
  223. package/src/api/core/tags.ts +808 -0
  224. package/src/api/core/units/index.ts +164 -0
  225. package/src/api/core/zoom/index.ts +47 -0
  226. package/src/api/design/boolean/index.ts +179 -0
  227. package/src/api/design/create/index.ts +895 -0
  228. package/src/api/design/delete/index.ts +67 -0
  229. package/src/api/design/doors/index.ts +285 -0
  230. package/src/api/design/edit/index.ts +54 -0
  231. package/src/api/design/erase/index.ts +151 -0
  232. package/src/api/design/furniture/index.ts +130 -0
  233. package/src/api/design/index.ts +162 -0
  234. package/src/api/design/lock.ts +42 -0
  235. package/src/api/design/materials/index.ts +301 -0
  236. package/src/api/design/query/geometry/index.ts +166 -0
  237. package/src/api/design/query/index.ts +937 -0
  238. package/src/api/design/query/spaces.ts +132 -0
  239. package/src/api/design/selection/index.ts +273 -0
  240. package/src/api/design/shared.ts +40 -0
  241. package/src/api/design/transform/index.ts +93 -0
  242. package/src/api/design/update/index.ts +117 -0
  243. package/src/api/design/windows/index.ts +207 -0
  244. package/src/api/entity/buildableEnvelope.ts +318 -0
  245. package/src/api/entity/department.ts +0 -113
  246. package/src/api/entity/index.ts +9 -9
  247. package/src/api/entity/referenceLine.ts +50 -38
  248. package/src/api/entity/space.ts +285 -226
  249. package/src/api/entity/story.ts +53 -42
  250. package/src/api/index.ts +22 -12
  251. package/src/api/presentation/aiInspiration.ts +362 -0
  252. package/src/api/presentation/diagrams.ts +84 -0
  253. package/src/api/presentation/import.ts +112 -0
  254. package/src/api/presentation/index.ts +48 -0
  255. package/src/api/presentation/sheets.ts +198 -0
  256. package/src/api/presentation/views.ts +303 -0
  257. package/src/api/program/adjacency.ts +164 -0
  258. package/src/api/program/areas.ts +335 -0
  259. package/src/api/program/classification.ts +138 -0
  260. package/src/api/program/cores.ts +171 -0
  261. package/src/api/program/departments.ts +465 -0
  262. package/src/api/program/index.ts +71 -0
  263. package/src/api/program/layout.ts +68 -0
  264. package/src/api/program/metrics.ts +120 -0
  265. package/src/api/program/site.ts +419 -0
  266. package/src/api/program/spreadsheet.ts +2075 -0
  267. package/src/handles.ts +194 -0
  268. package/src/host-utils.ts +10 -6
  269. package/src/index.ts +1 -0
  270. package/dist/api/core/geom/arc.d.ts +0 -81
  271. package/dist/api/core/geom/arc.d.ts.map +0 -1
  272. package/dist/api/core/geom/curve.d.ts +0 -70
  273. package/dist/api/core/geom/curve.d.ts.map +0 -1
  274. package/dist/api/core/geom/line.d.ts +0 -56
  275. package/dist/api/core/geom/line.d.ts.map +0 -1
  276. package/dist/api/core/geom/profile.d.ts +0 -121
  277. package/dist/api/core/geom/profile.d.ts.map +0 -1
  278. package/dist/api/tools/copy.d.ts +0 -59
  279. package/dist/api/tools/copy.d.ts.map +0 -1
  280. package/dist/api/tools/index.d.ts +0 -33
  281. package/dist/api/tools/index.d.ts.map +0 -1
  282. package/dist/api/tools/material.d.ts +0 -51
  283. package/dist/api/tools/material.d.ts.map +0 -1
  284. package/dist/api/tools/offset.d.ts +0 -43
  285. package/dist/api/tools/offset.d.ts.map +0 -1
  286. package/dist/api/tools/selection.d.ts +0 -48
  287. package/dist/api/tools/selection.d.ts.map +0 -1
  288. package/dist/api/tools/transform.d.ts +0 -114
  289. package/dist/api/tools/transform.d.ts.map +0 -1
  290. package/dist/api/units/index.d.ts +0 -163
  291. package/dist/api/units/index.d.ts.map +0 -1
  292. package/src/api/core/geom/arc.ts +0 -70
  293. package/src/api/core/geom/curve.ts +0 -41
  294. package/src/api/core/geom/line.ts +0 -53
  295. package/src/api/core/geom/profile.ts +0 -94
  296. package/src/api/tools/copy.ts +0 -55
  297. package/src/api/tools/index.ts +0 -39
  298. package/src/api/tools/material.ts +0 -49
  299. package/src/api/tools/offset.ts +0 -43
  300. package/src/api/tools/selection.ts +0 -51
  301. package/src/api/tools/transform.ts +0 -117
  302. package/src/api/units/index.ts +0 -163
@@ -0,0 +1,410 @@
1
+ import * as z from "zod";
2
+ import { PluginApiReturn } from "../../../../types";
3
+ import { ProfileHandle, Vec3Handle, CurveHandle, Vec3Components, BBoxComponents } from "../../../../handles";
4
+ /**
5
+ * Profile queries — read-only geometric questions about a profile (an ordered
6
+ * loop or chain of curves) and the relationships between two profiles
7
+ * (all-handle model, §11).
8
+ *
9
+ * Every method takes an opaque {@linkcode ProfileHandle} (plus point handles
10
+ * {@linkcode Vec3Handle} where relevant) and returns plain values — points as
11
+ * {@linkcode Vec3Components}, areas/perimeters/distances as `number`, predicates
12
+ * as `boolean`, the bounding box as {@linkcode BBoxComponents}. Methods that
13
+ * enumerate the profile's child curves return fresh {@linkcode CurveHandle}`[]`.
14
+ * No query mutates its inputs.
15
+ *
16
+ * Accessed via `snaptrude.core.geom.query.profile`.
17
+ */
18
+ export declare abstract class PluginGeomQueryProfileApi {
19
+ constructor();
20
+ /**
21
+ * List the tessellated points along a profile.
22
+ * @param profile The profile to query
23
+ * @returns The profile points as {@linkcode Vec3Components}`[]`
24
+ *
25
+ * @examplePrompt Give me the corner coordinates of this shape
26
+ * @examplePrompt List the vertex points along this outline
27
+ *
28
+ * # Example
29
+ * ```ts
30
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
31
+ * const points = await snaptrude.core.geom.query.profile.listPoints(rect)
32
+ * for (const p of points) console.log(p.x, p.y, p.z)
33
+ * ```
34
+ */
35
+ abstract listPoints(profile: ProfileHandle): PluginApiReturn<Vec3Components[]>;
36
+ /**
37
+ * List the curves that make up a profile. Host API call — mints fresh handles.
38
+ * @param profile The profile to query
39
+ * @returns The profile's curves as {@linkcode CurveHandle}`[]`
40
+ *
41
+ * # Example
42
+ * ```ts
43
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
44
+ * const curves = await snaptrude.core.geom.query.profile.listCurves(rect)
45
+ * for (const c of curves) console.log(await snaptrude.core.geom.query.curve.getLength(c))
46
+ * ```
47
+ */
48
+ abstract listCurves(profile: ProfileHandle): PluginApiReturn<CurveHandle[]>;
49
+ /**
50
+ * Get the (approximate) enclosed area of a profile.
51
+ * @param profile The profile to query
52
+ * @returns The area as a `number`
53
+ *
54
+ * @examplePrompt What is the area enclosed by this outline?
55
+ * @examplePrompt Measure the area of this shape
56
+ *
57
+ * # Example
58
+ * ```ts
59
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
60
+ * const area = await snaptrude.core.geom.query.profile.getArea(rect) // 12
61
+ * ```
62
+ */
63
+ abstract getArea(profile: ProfileHandle): PluginApiReturn<number>;
64
+ /**
65
+ * Get the perimeter (total curve length) of a profile.
66
+ * @param profile The profile to query
67
+ * @returns The perimeter as a `number`
68
+ *
69
+ * @examplePrompt How long is the boundary of this shape in total?
70
+ * @examplePrompt Measure the perimeter of this outline
71
+ *
72
+ * # Example
73
+ * ```ts
74
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
75
+ * const perimeter = await snaptrude.core.geom.query.profile.getPerimeter(rect) // 14
76
+ * ```
77
+ */
78
+ abstract getPerimeter(profile: ProfileHandle): PluginApiReturn<number>;
79
+ /**
80
+ * Get the axis-aligned bounding box of a profile.
81
+ * @param profile The profile to query
82
+ * @returns The bounding box as {@linkcode BBoxComponents}
83
+ *
84
+ * @examplePrompt How wide and long is this outline overall?
85
+ *
86
+ * # Example
87
+ * ```ts
88
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
89
+ * const { min, max } = await snaptrude.core.geom.query.profile.getBoundingBox(rect)
90
+ * console.log(max.x - min.x, max.z - min.z) // 4 3
91
+ * ```
92
+ */
93
+ abstract getBoundingBox(profile: ProfileHandle): PluginApiReturn<BBoxComponents>;
94
+ /**
95
+ * Get the unit normal vector of a profile's plane.
96
+ * @param profile The profile to query
97
+ * @returns The normal as {@linkcode Vec3Components}, or `null` if the profile has no well-defined normal
98
+ *
99
+ * # Example
100
+ * ```ts
101
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
102
+ * const normal = await snaptrude.core.geom.query.profile.getNormal(rect)
103
+ * if (normal) console.log(normal.x, normal.y, normal.z)
104
+ * ```
105
+ */
106
+ abstract getNormal(profile: ProfileHandle): PluginApiReturn<Vec3Components | null>;
107
+ /**
108
+ * Get the point on a profile nearest to an arbitrary point.
109
+ * @param profile The profile to query
110
+ * @param point The reference point
111
+ * @returns The nearest point on the profile as {@linkcode Vec3Components}
112
+ *
113
+ * @examplePrompt Find the closest point on this outline to a given point
114
+ *
115
+ * # Example
116
+ * ```ts
117
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
118
+ * const point = await snaptrude.core.math.vec3.new(5, 0, 0)
119
+ * const nearest = await snaptrude.core.geom.query.profile.getNearestPoint(rect, point)
120
+ * console.log(nearest.x, nearest.y, nearest.z) // 2 0 0
121
+ * ```
122
+ */
123
+ abstract getNearestPoint(profile: ProfileHandle, point: Vec3Handle): PluginApiReturn<Vec3Components>;
124
+ /**
125
+ * Test whether a point lies inside a profile.
126
+ * @param profile The profile to query
127
+ * @param point The point to test
128
+ * @returns `true` if the point is inside the profile, otherwise `false`
129
+ *
130
+ * @examplePrompt Does this point fall inside the outline?
131
+ * @examplePrompt Check if the column location lies within this room boundary
132
+ *
133
+ * # Example
134
+ * ```ts
135
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
136
+ * const point = await snaptrude.core.math.vec3.new(1, 0, 1)
137
+ * const inside = await snaptrude.core.geom.query.profile.hasPoint(rect, point) // true
138
+ * ```
139
+ */
140
+ abstract hasPoint(profile: ProfileHandle, point: Vec3Handle): PluginApiReturn<boolean>;
141
+ /**
142
+ * Test whether a point lies on a profile's boundary.
143
+ * @param profile The profile to query
144
+ * @param point The point to test
145
+ * @returns `true` if the point is on the boundary, otherwise `false`
146
+ *
147
+ * # Example
148
+ * ```ts
149
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
150
+ * const point = await snaptrude.core.math.vec3.new(2, 0, 0)
151
+ * const onEdge = await snaptrude.core.geom.query.profile.isOnBoundary(rect, point) // true
152
+ * ```
153
+ */
154
+ abstract isOnBoundary(profile: ProfileHandle, point: Vec3Handle): PluginApiReturn<boolean>;
155
+ /**
156
+ * Test whether a profile forms a closed loop.
157
+ * @param profile The profile to query
158
+ * @returns `true` if the profile is closed, otherwise `false`
159
+ *
160
+ * @examplePrompt Is my sketch outline closed or still open?
161
+ * @examplePrompt Check whether this boundary forms a complete loop
162
+ *
163
+ * # Example
164
+ * ```ts
165
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
166
+ * const closed = await snaptrude.core.geom.query.profile.isClosed(rect) // true
167
+ * ```
168
+ */
169
+ abstract isClosed(profile: ProfileHandle): PluginApiReturn<boolean>;
170
+ /**
171
+ * Test whether a profile is planar.
172
+ * @param profile The profile to query
173
+ * @returns `true` if the profile is planar, otherwise `false`
174
+ *
175
+ * # Example
176
+ * ```ts
177
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
178
+ * const planar = await snaptrude.core.geom.query.profile.isPlanar(rect) // true
179
+ * ```
180
+ */
181
+ abstract isPlanar(profile: ProfileHandle): PluginApiReturn<boolean>;
182
+ /**
183
+ * Test whether a profile is wound clockwise on the XZ plane.
184
+ * @param profile The profile to query
185
+ * @returns `true` if the profile is clockwise, otherwise `false`
186
+ *
187
+ * # Example
188
+ * ```ts
189
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
190
+ * const clockwise = await snaptrude.core.geom.query.profile.isClockwise(rect)
191
+ * ```
192
+ */
193
+ abstract isClockwise(profile: ProfileHandle): PluginApiReturn<boolean>;
194
+ /**
195
+ * Test whether a profile intersects itself.
196
+ * @param profile The profile to query
197
+ * @returns `true` if the profile is self-intersecting, otherwise `false`
198
+ *
199
+ * # Example
200
+ * ```ts
201
+ * const a = await snaptrude.core.math.vec3.new(0, 0, 0)
202
+ * const b = await snaptrude.core.math.vec3.new(2, 0, 2)
203
+ * const c = await snaptrude.core.math.vec3.new(2, 0, 0)
204
+ * const d = await snaptrude.core.math.vec3.new(0, 0, 2)
205
+ * const bowtie = await snaptrude.core.geom.create.profileFromLinePoints([a, b, c, d])
206
+ * const crossed = await snaptrude.core.geom.query.profile.isSelfIntersecting(bowtie) // true
207
+ * ```
208
+ */
209
+ abstract isSelfIntersecting(profile: ProfileHandle): PluginApiReturn<boolean>;
210
+ /**
211
+ * Test whether a profile contains no curves.
212
+ * @param profile The profile to query
213
+ * @returns `true` if the profile is empty, otherwise `false`
214
+ *
215
+ * # Example
216
+ * ```ts
217
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
218
+ * const empty = await snaptrude.core.geom.query.profile.isEmpty(rect) // false
219
+ * ```
220
+ */
221
+ abstract isEmpty(profile: ProfileHandle): PluginApiReturn<boolean>;
222
+ /**
223
+ * Test whether two profiles are geometrically equal.
224
+ * @param profileA First profile
225
+ * @param profileB Second profile
226
+ * @returns `true` if the profiles are equal, otherwise `false`
227
+ *
228
+ * # Example
229
+ * ```ts
230
+ * const a = await snaptrude.core.geom.create.profileRect(4, 3)
231
+ * const b = await snaptrude.core.geom.create.profileRect(4, 3)
232
+ * const same = await snaptrude.core.geom.query.profile.isEqual(a, b) // true
233
+ * ```
234
+ */
235
+ abstract isEqual(profileA: ProfileHandle, profileB: ProfileHandle): PluginApiReturn<boolean>;
236
+ }
237
+ /**
238
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.listPoints}.
239
+ *
240
+ * | Property | Type | Description |
241
+ * |---|---|---|
242
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
243
+ */
244
+ export declare const PluginGeomQueryProfileListPointsArgs: z.ZodObject<{
245
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
246
+ }, z.core.$strip>;
247
+ export type PluginGeomQueryProfileListPointsArgs = z.infer<typeof PluginGeomQueryProfileListPointsArgs>;
248
+ /**
249
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.listCurves}.
250
+ *
251
+ * | Property | Type | Description |
252
+ * |---|---|---|
253
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
254
+ */
255
+ export declare const PluginGeomQueryProfileListCurvesArgs: z.ZodObject<{
256
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
257
+ }, z.core.$strip>;
258
+ export type PluginGeomQueryProfileListCurvesArgs = z.infer<typeof PluginGeomQueryProfileListCurvesArgs>;
259
+ /**
260
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.getArea}.
261
+ *
262
+ * | Property | Type | Description |
263
+ * |---|---|---|
264
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
265
+ */
266
+ export declare const PluginGeomQueryProfileGetAreaArgs: z.ZodObject<{
267
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
268
+ }, z.core.$strip>;
269
+ export type PluginGeomQueryProfileGetAreaArgs = z.infer<typeof PluginGeomQueryProfileGetAreaArgs>;
270
+ /**
271
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.getPerimeter}.
272
+ *
273
+ * | Property | Type | Description |
274
+ * |---|---|---|
275
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
276
+ */
277
+ export declare const PluginGeomQueryProfileGetPerimeterArgs: z.ZodObject<{
278
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
279
+ }, z.core.$strip>;
280
+ export type PluginGeomQueryProfileGetPerimeterArgs = z.infer<typeof PluginGeomQueryProfileGetPerimeterArgs>;
281
+ /**
282
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.getBoundingBox}.
283
+ *
284
+ * | Property | Type | Description |
285
+ * |---|---|---|
286
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
287
+ */
288
+ export declare const PluginGeomQueryProfileGetBoundingBoxArgs: z.ZodObject<{
289
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
290
+ }, z.core.$strip>;
291
+ export type PluginGeomQueryProfileGetBoundingBoxArgs = z.infer<typeof PluginGeomQueryProfileGetBoundingBoxArgs>;
292
+ /**
293
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.getNormal}.
294
+ *
295
+ * | Property | Type | Description |
296
+ * |---|---|---|
297
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
298
+ */
299
+ export declare const PluginGeomQueryProfileGetNormalArgs: z.ZodObject<{
300
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
301
+ }, z.core.$strip>;
302
+ export type PluginGeomQueryProfileGetNormalArgs = z.infer<typeof PluginGeomQueryProfileGetNormalArgs>;
303
+ /**
304
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.getNearestPoint}.
305
+ *
306
+ * | Property | Type | Description |
307
+ * |---|---|---|
308
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
309
+ * | `point` | {@linkcode Vec3Handle} | The reference point |
310
+ */
311
+ export declare const PluginGeomQueryProfileGetNearestPointArgs: z.ZodObject<{
312
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
313
+ point: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vec3">, string>>;
314
+ }, z.core.$strip>;
315
+ export type PluginGeomQueryProfileGetNearestPointArgs = z.infer<typeof PluginGeomQueryProfileGetNearestPointArgs>;
316
+ /**
317
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.hasPoint}.
318
+ *
319
+ * | Property | Type | Description |
320
+ * |---|---|---|
321
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
322
+ * | `point` | {@linkcode Vec3Handle} | The point to test |
323
+ */
324
+ export declare const PluginGeomQueryProfileHasPointArgs: z.ZodObject<{
325
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
326
+ point: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vec3">, string>>;
327
+ }, z.core.$strip>;
328
+ export type PluginGeomQueryProfileHasPointArgs = z.infer<typeof PluginGeomQueryProfileHasPointArgs>;
329
+ /**
330
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.isOnBoundary}.
331
+ *
332
+ * | Property | Type | Description |
333
+ * |---|---|---|
334
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
335
+ * | `point` | {@linkcode Vec3Handle} | The point to test |
336
+ */
337
+ export declare const PluginGeomQueryProfileIsOnBoundaryArgs: z.ZodObject<{
338
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
339
+ point: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vec3">, string>>;
340
+ }, z.core.$strip>;
341
+ export type PluginGeomQueryProfileIsOnBoundaryArgs = z.infer<typeof PluginGeomQueryProfileIsOnBoundaryArgs>;
342
+ /**
343
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.isClosed}.
344
+ *
345
+ * | Property | Type | Description |
346
+ * |---|---|---|
347
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
348
+ */
349
+ export declare const PluginGeomQueryProfileIsClosedArgs: z.ZodObject<{
350
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
351
+ }, z.core.$strip>;
352
+ export type PluginGeomQueryProfileIsClosedArgs = z.infer<typeof PluginGeomQueryProfileIsClosedArgs>;
353
+ /**
354
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.isPlanar}.
355
+ *
356
+ * | Property | Type | Description |
357
+ * |---|---|---|
358
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
359
+ */
360
+ export declare const PluginGeomQueryProfileIsPlanarArgs: z.ZodObject<{
361
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
362
+ }, z.core.$strip>;
363
+ export type PluginGeomQueryProfileIsPlanarArgs = z.infer<typeof PluginGeomQueryProfileIsPlanarArgs>;
364
+ /**
365
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.isClockwise}.
366
+ *
367
+ * | Property | Type | Description |
368
+ * |---|---|---|
369
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
370
+ */
371
+ export declare const PluginGeomQueryProfileIsClockwiseArgs: z.ZodObject<{
372
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
373
+ }, z.core.$strip>;
374
+ export type PluginGeomQueryProfileIsClockwiseArgs = z.infer<typeof PluginGeomQueryProfileIsClockwiseArgs>;
375
+ /**
376
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.isSelfIntersecting}.
377
+ *
378
+ * | Property | Type | Description |
379
+ * |---|---|---|
380
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
381
+ */
382
+ export declare const PluginGeomQueryProfileIsSelfIntersectingArgs: z.ZodObject<{
383
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
384
+ }, z.core.$strip>;
385
+ export type PluginGeomQueryProfileIsSelfIntersectingArgs = z.infer<typeof PluginGeomQueryProfileIsSelfIntersectingArgs>;
386
+ /**
387
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.isEmpty}.
388
+ *
389
+ * | Property | Type | Description |
390
+ * |---|---|---|
391
+ * | `profile` | {@linkcode ProfileHandle} | The profile to query |
392
+ */
393
+ export declare const PluginGeomQueryProfileIsEmptyArgs: z.ZodObject<{
394
+ profile: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
395
+ }, z.core.$strip>;
396
+ export type PluginGeomQueryProfileIsEmptyArgs = z.infer<typeof PluginGeomQueryProfileIsEmptyArgs>;
397
+ /**
398
+ * Arguments for {@linkcode PluginGeomQueryProfileApi.isEqual}.
399
+ *
400
+ * | Property | Type | Description |
401
+ * |---|---|---|
402
+ * | `profileA` | {@linkcode ProfileHandle} | First profile |
403
+ * | `profileB` | {@linkcode ProfileHandle} | Second profile |
404
+ */
405
+ export declare const PluginGeomQueryProfileIsEqualArgs: z.ZodObject<{
406
+ profileA: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
407
+ profileB: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"profile">, string>>;
408
+ }, z.core.$strip>;
409
+ export type PluginGeomQueryProfileIsEqualArgs = z.infer<typeof PluginGeomQueryProfileIsEqualArgs>;
410
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/query/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import * as z from "zod";
2
+ import { PluginApiReturn } from "../../../../types";
3
+ import { BrepHandle, VertexHandle, HalfEdgeHandle, EdgeHandle, FaceHandle, Vec3Components } from "../../../../handles";
4
+ /**
5
+ * Vertex queries — read a single BREP vertex's topology and position (all-handle
6
+ * model, §11). A {@linkcode VertexHandle} is minted by walking from a brep/face/edge
7
+ * handle; it is session-ephemeral and goes stale on undo/redo/re-topologize.
8
+ *
9
+ * Position lives on the parent brep (indexed by the vertex), so
10
+ * {@linkcode PluginGeomQueryVertexApi.getPosition} takes both handles. No query
11
+ * mutates its inputs.
12
+ *
13
+ * Accessed via `snaptrude.core.geom.query.vertex`.
14
+ */
15
+ export declare abstract class PluginGeomQueryVertexApi {
16
+ constructor();
17
+ /**
18
+ * Get the index of a vertex within its brep.
19
+ * @param vertex The vertex to query
20
+ * @returns The index as a `number` (`-1` if unindexed)
21
+ *
22
+ * # Example
23
+ * ```ts
24
+ * const [wall] = await snaptrude.design.query.listWalls()
25
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
26
+ * if (brep) {
27
+ * const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
28
+ * const index = await snaptrude.core.geom.query.vertex.getIndex(vertex)
29
+ * }
30
+ * ```
31
+ */
32
+ abstract getIndex(vertex: VertexHandle): PluginApiReturn<number>;
33
+ /**
34
+ * Get a seed half-edge emanating from a vertex.
35
+ * @param vertex The vertex to query
36
+ * @returns The half-edge as a {@linkcode HalfEdgeHandle}, or `null` if uninitialized
37
+ *
38
+ * # Example
39
+ * ```ts
40
+ * const [wall] = await snaptrude.design.query.listWalls()
41
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
42
+ * if (brep) {
43
+ * const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
44
+ * const halfEdge = await snaptrude.core.geom.query.vertex.getHalfEdge(vertex)
45
+ * if (halfEdge) {
46
+ * const edge = await snaptrude.core.geom.query.halfedge.getEdge(halfEdge)
47
+ * }
48
+ * }
49
+ * ```
50
+ */
51
+ abstract getHalfEdge(vertex: VertexHandle): PluginApiReturn<HalfEdgeHandle | null>;
52
+ /**
53
+ * Get the position of a vertex (needs the parent brep for coordinates).
54
+ * @param brep The parent brep (source of coordinates)
55
+ * @param vertex The vertex whose position to read
56
+ * @returns The position as {@linkcode Vec3Components}
57
+ *
58
+ * @examplePrompt What are the coordinates of this corner point?
59
+ * @examplePrompt Get the exact x, y, z position of the selected vertex
60
+ *
61
+ * # Example
62
+ * ```ts
63
+ * const [wall] = await snaptrude.design.query.listWalls()
64
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
65
+ * if (brep) {
66
+ * const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
67
+ * const pos = await snaptrude.core.geom.query.vertex.getPosition(brep, vertex)
68
+ * console.log(pos.x, pos.y, pos.z)
69
+ * }
70
+ * ```
71
+ */
72
+ abstract getPosition(brep: BrepHandle, vertex: VertexHandle): PluginApiReturn<Vec3Components>;
73
+ /**
74
+ * List the half-edges around a vertex.
75
+ * @param vertex The vertex to query
76
+ * @returns The half-edges as {@linkcode HalfEdgeHandle}`[]`
77
+ *
78
+ * # Example
79
+ * ```ts
80
+ * const [wall] = await snaptrude.design.query.listWalls()
81
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
82
+ * if (brep) {
83
+ * const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
84
+ * const halfEdges = await snaptrude.core.geom.query.vertex.listHalfEdges(vertex)
85
+ * console.log("half-edges at this vertex:", halfEdges.length)
86
+ * }
87
+ * ```
88
+ */
89
+ abstract listHalfEdges(vertex: VertexHandle): PluginApiReturn<HalfEdgeHandle[]>;
90
+ /**
91
+ * List the edges around a vertex.
92
+ * @param vertex The vertex to query
93
+ * @returns The edges as {@linkcode EdgeHandle}`[]`
94
+ *
95
+ * # Example
96
+ * ```ts
97
+ * const [wall] = await snaptrude.design.query.listWalls()
98
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
99
+ * if (brep) {
100
+ * const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
101
+ * const edges = await snaptrude.core.geom.query.vertex.listEdges(vertex)
102
+ * console.log("edges meeting at this corner:", edges.length)
103
+ * }
104
+ * ```
105
+ */
106
+ abstract listEdges(vertex: VertexHandle): PluginApiReturn<EdgeHandle[]>;
107
+ /**
108
+ * List the faces around a vertex.
109
+ * @param vertex The vertex to query
110
+ * @returns The faces as {@linkcode FaceHandle}`[]`
111
+ *
112
+ * # Example
113
+ * ```ts
114
+ * const [wall] = await snaptrude.design.query.listWalls()
115
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
116
+ * if (brep) {
117
+ * const [vertex] = await snaptrude.core.geom.query.brep.listVertices(brep)
118
+ * const faces = await snaptrude.core.geom.query.vertex.listFaces(vertex)
119
+ * console.log("faces sharing this corner:", faces.length)
120
+ * }
121
+ * ```
122
+ */
123
+ abstract listFaces(vertex: VertexHandle): PluginApiReturn<FaceHandle[]>;
124
+ /**
125
+ * List the neighbouring vertices of a vertex.
126
+ * @param vertex The vertex to query
127
+ * @returns The neighbours as {@linkcode VertexHandle}`[]`
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 neighbors = await snaptrude.core.geom.query.vertex.listNeighbors(vertex)
136
+ * for (const n of neighbors) {
137
+ * const pos = await snaptrude.core.geom.query.vertex.getPosition(brep, n)
138
+ * }
139
+ * }
140
+ * ```
141
+ */
142
+ abstract listNeighbors(vertex: VertexHandle): PluginApiReturn<VertexHandle[]>;
143
+ }
144
+ /** Arguments for {@linkcode PluginGeomQueryVertexApi.getIndex}. `{ vertex: VertexHandle }` */
145
+ export declare const PluginGeomQueryVertexGetIndexArgs: z.ZodObject<{
146
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
147
+ }, z.core.$strip>;
148
+ export type PluginGeomQueryVertexGetIndexArgs = z.infer<typeof PluginGeomQueryVertexGetIndexArgs>;
149
+ /** Arguments for {@linkcode PluginGeomQueryVertexApi.getHalfEdge}. `{ vertex: VertexHandle }` */
150
+ export declare const PluginGeomQueryVertexGetHalfEdgeArgs: z.ZodObject<{
151
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
152
+ }, z.core.$strip>;
153
+ export type PluginGeomQueryVertexGetHalfEdgeArgs = z.infer<typeof PluginGeomQueryVertexGetHalfEdgeArgs>;
154
+ /**
155
+ * Arguments for {@linkcode PluginGeomQueryVertexApi.getPosition}.
156
+ *
157
+ * | Property | Type | Description |
158
+ * |---|---|---|
159
+ * | `brep` | {@linkcode BrepHandle} | The parent brep (source of coordinates) |
160
+ * | `vertex` | {@linkcode VertexHandle} | The vertex whose position to read |
161
+ */
162
+ export declare const PluginGeomQueryVertexGetPositionArgs: z.ZodObject<{
163
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
164
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
165
+ }, z.core.$strip>;
166
+ export type PluginGeomQueryVertexGetPositionArgs = z.infer<typeof PluginGeomQueryVertexGetPositionArgs>;
167
+ /** Arguments for {@linkcode PluginGeomQueryVertexApi.listHalfEdges}. `{ vertex: VertexHandle }` */
168
+ export declare const PluginGeomQueryVertexListHalfEdgesArgs: z.ZodObject<{
169
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
170
+ }, z.core.$strip>;
171
+ export type PluginGeomQueryVertexListHalfEdgesArgs = z.infer<typeof PluginGeomQueryVertexListHalfEdgesArgs>;
172
+ /** Arguments for {@linkcode PluginGeomQueryVertexApi.listEdges}. `{ vertex: VertexHandle }` */
173
+ export declare const PluginGeomQueryVertexListEdgesArgs: z.ZodObject<{
174
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
175
+ }, z.core.$strip>;
176
+ export type PluginGeomQueryVertexListEdgesArgs = z.infer<typeof PluginGeomQueryVertexListEdgesArgs>;
177
+ /** Arguments for {@linkcode PluginGeomQueryVertexApi.listFaces}. `{ vertex: VertexHandle }` */
178
+ export declare const PluginGeomQueryVertexListFacesArgs: z.ZodObject<{
179
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
180
+ }, z.core.$strip>;
181
+ export type PluginGeomQueryVertexListFacesArgs = z.infer<typeof PluginGeomQueryVertexListFacesArgs>;
182
+ /** Arguments for {@linkcode PluginGeomQueryVertexApi.listNeighbors}. `{ vertex: VertexHandle }` */
183
+ export declare const PluginGeomQueryVertexListNeighborsArgs: z.ZodObject<{
184
+ vertex: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vertex">, string>>;
185
+ }, z.core.$strip>;
186
+ export type PluginGeomQueryVertexListNeighborsArgs = z.infer<typeof PluginGeomQueryVertexListNeighborsArgs>;
187
+ //# sourceMappingURL=vertex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/query/vertex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACf,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;GAUG;AACH,8BAAsB,wBAAwB;;IAG5C;;;;;;;;;;;;;;OAcG;aACa,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;IAEvE;;;;;;;;;;;;;;;;;OAiBG;aACa,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC;IAEzF;;;;;;;;;;;;;;;;;;;OAmBG;aACa,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,eAAe,CAAC,cAAc,CAAC;IAElC;;;;;;;;;;;;;;;OAeG;aACa,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;IAEtF;;;;;;;;;;;;;;;OAeG;aACa,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;IAE9E;;;;;;;;;;;;;;;OAeG;aACa,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;IAE9E;;;;;;;;;;;;;;;;;OAiBG;aACa,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;CACrF;AAID,8FAA8F;AAC9F,eAAO,MAAM,iCAAiC;;iBAAY,CAAA;AAC1D,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAA;AAEjG,iGAAiG;AACjG,eAAO,MAAM,oCAAoC;;iBAAY,CAAA;AAC7D,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAA;AAEvG;;;;;;;GAOG;AACH,eAAO,MAAM,oCAAoC;;;iBAG/C,CAAA;AACF,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAA;AAEvG,mGAAmG;AACnG,eAAO,MAAM,sCAAsC;;iBAAY,CAAA;AAC/D,MAAM,MAAM,sCAAsC,GAAG,CAAC,CAAC,KAAK,CAC1D,OAAO,sCAAsC,CAC9C,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,kCAAkC;;iBAAY,CAAA;AAC3D,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAEnG,+FAA+F;AAC/F,eAAO,MAAM,kCAAkC;;iBAAY,CAAA;AAC3D,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAEnG,mGAAmG;AACnG,eAAO,MAAM,sCAAsC;;iBAAY,CAAA;AAC/D,MAAM,MAAM,sCAAsC,GAAG,CAAC,CAAC,KAAK,CAC1D,OAAO,sCAAsC,CAC9C,CAAA"}