@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,450 @@
1
+ import * as z from "zod";
2
+ import { PluginApiReturn } from "../../../../types";
3
+ import { ContourHandle, ProfileHandle, Vec3Handle, Vec3Components, BBoxComponents } from "../../../../handles";
4
+ /**
5
+ * Contour queries — read-only geometric questions about a contour (an outer
6
+ * {@linkcode ProfileHandle} plus zero or more inner profiles that act as holes)
7
+ * and the relationships between two contours (all-handle model, §11).
8
+ *
9
+ * Every method takes an opaque {@linkcode ContourHandle} (plus point handles
10
+ * {@linkcode Vec3Handle} where relevant) and returns plain values — points as
11
+ * {@linkcode Vec3Components}, areas/perimeters/counts as `number`, predicates as
12
+ * `boolean`, the bounding box as {@linkcode BBoxComponents}. Methods that
13
+ * enumerate the contour's child profiles return fresh {@linkcode ProfileHandle}s.
14
+ * No query mutates its inputs.
15
+ *
16
+ * Accessed via `snaptrude.core.geom.query.contour`.
17
+ */
18
+ export declare abstract class PluginGeomQueryContourApi {
19
+ constructor();
20
+ /**
21
+ * Get the outer (boundary) profile of a contour. Host API call — mints a fresh handle.
22
+ * @param contour The contour to query
23
+ * @returns The outer profile as a {@linkcode ProfileHandle}, or `null` if the contour has no outer profile
24
+ *
25
+ * # Example
26
+ * ```ts
27
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
28
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
29
+ * const outer = await snaptrude.core.geom.query.contour.getOuterProfile(contour)
30
+ * if (outer) console.log(await snaptrude.core.geom.query.profile.getPerimeter(outer))
31
+ * ```
32
+ */
33
+ abstract getOuterProfile(contour: ContourHandle): PluginApiReturn<ProfileHandle | null>;
34
+ /**
35
+ * List the inner profiles (holes) of a contour. Host API call — mints fresh handles.
36
+ * @param contour The contour to query
37
+ * @returns The contour's holes as {@linkcode ProfileHandle}`[]`
38
+ *
39
+ * # Example
40
+ * ```ts
41
+ * const outer = await snaptrude.core.geom.create.profileRect(6, 4)
42
+ * const hole = await snaptrude.core.geom.create.profileRect(2, 1)
43
+ * const contour = await snaptrude.core.geom.create.contourFromProfiles(outer, [hole])
44
+ * const holes = await snaptrude.core.geom.query.contour.listHoles(contour)
45
+ * for (const h of holes) console.log(await snaptrude.core.geom.query.profile.getArea(h))
46
+ * ```
47
+ */
48
+ abstract listHoles(contour: ContourHandle): PluginApiReturn<ProfileHandle[]>;
49
+ /**
50
+ * Get the number of inner profiles (holes) in a contour.
51
+ * @param contour The contour to query
52
+ * @returns The hole count as a `number`
53
+ *
54
+ * @examplePrompt How many holes does this shape have?
55
+ * @examplePrompt Count the openings in this slab outline
56
+ *
57
+ * # Example
58
+ * ```ts
59
+ * const outer = await snaptrude.core.geom.create.profileRect(6, 4)
60
+ * const hole = await snaptrude.core.geom.create.profileRect(2, 1)
61
+ * const contour = await snaptrude.core.geom.create.contourFromProfiles(outer, [hole])
62
+ * const count = await snaptrude.core.geom.query.contour.getHoleCount(contour) // 1
63
+ * ```
64
+ */
65
+ abstract getHoleCount(contour: ContourHandle): PluginApiReturn<number>;
66
+ /**
67
+ * Get the (approximate) net enclosed area of a contour — the outer profile area
68
+ * minus the area of every hole.
69
+ * @param contour The contour to query
70
+ * @returns The area as a `number`
71
+ *
72
+ * @examplePrompt What is the area of this shape?
73
+ * @examplePrompt Calculate the usable area of this outline after subtracting its holes
74
+ *
75
+ * # Example
76
+ * ```ts
77
+ * const outer = await snaptrude.core.geom.create.profileRect(6, 4)
78
+ * const hole = await snaptrude.core.geom.create.profileRect(2, 1)
79
+ * const contour = await snaptrude.core.geom.create.contourFromProfiles(outer, [hole])
80
+ * const area = await snaptrude.core.geom.query.contour.getArea(contour) // 24 - 2 = 22
81
+ * ```
82
+ */
83
+ abstract getArea(contour: ContourHandle): PluginApiReturn<number>;
84
+ /**
85
+ * Get the perimeter (total length of every curve) of a contour, including holes.
86
+ * @param contour The contour to query
87
+ * @returns The perimeter as a `number`
88
+ *
89
+ * @examplePrompt What is the perimeter of this shape?
90
+ * @examplePrompt How long is the boundary of this outline, including its holes?
91
+ *
92
+ * # Example
93
+ * ```ts
94
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
95
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
96
+ * const perimeter = await snaptrude.core.geom.query.contour.getPerimeter(contour) // 14
97
+ * ```
98
+ */
99
+ abstract getPerimeter(contour: ContourHandle): PluginApiReturn<number>;
100
+ /**
101
+ * Get the axis-aligned bounding box of a contour.
102
+ * @param contour The contour to query
103
+ * @returns The bounding box as {@linkcode BBoxComponents}
104
+ *
105
+ * @examplePrompt What are the overall extents of this shape?
106
+ *
107
+ * # Example
108
+ * ```ts
109
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
110
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
111
+ * const { min, max } = await snaptrude.core.geom.query.contour.getBoundingBox(contour)
112
+ * console.log(max.x - min.x, max.z - min.z) // 4 3
113
+ * ```
114
+ */
115
+ abstract getBoundingBox(contour: ContourHandle): PluginApiReturn<BBoxComponents>;
116
+ /**
117
+ * Get the unit normal vector of a contour's plane.
118
+ * @param contour The contour to query
119
+ * @returns The normal as {@linkcode Vec3Components}, or `null` if the contour has no well-defined normal
120
+ *
121
+ * # Example
122
+ * ```ts
123
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
124
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
125
+ * const normal = await snaptrude.core.geom.query.contour.getNormal(contour)
126
+ * if (normal) console.log(normal.x, normal.y, normal.z)
127
+ * ```
128
+ */
129
+ abstract getNormal(contour: ContourHandle): PluginApiReturn<Vec3Components | null>;
130
+ /**
131
+ * Get the point on a contour nearest to an arbitrary point.
132
+ * @param contour The contour to query
133
+ * @param point The reference point
134
+ * @returns The nearest point on the contour as {@linkcode Vec3Components}
135
+ *
136
+ * @examplePrompt Find the point on this boundary closest to a given location
137
+ *
138
+ * # Example
139
+ * ```ts
140
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
141
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
142
+ * const point = await snaptrude.core.math.vec3.new(5, 0, 0)
143
+ * const nearest = await snaptrude.core.geom.query.contour.getNearestPoint(contour, point)
144
+ * console.log(nearest.x, nearest.y, nearest.z) // 2 0 0
145
+ * ```
146
+ */
147
+ abstract getNearestPoint(contour: ContourHandle, point: Vec3Handle): PluginApiReturn<Vec3Components>;
148
+ /**
149
+ * Test whether a point lies inside a contour (inside the outer profile and
150
+ * outside every hole).
151
+ * @param contour The contour to query
152
+ * @param point The point to test
153
+ * @returns `true` if the point is inside the contour, otherwise `false`
154
+ *
155
+ * @examplePrompt Is this point inside the shape?
156
+ * @examplePrompt Check whether a location falls within this boundary but not in a hole
157
+ *
158
+ * # Example
159
+ * ```ts
160
+ * const outer = await snaptrude.core.geom.create.profileRect(6, 4)
161
+ * const hole = await snaptrude.core.geom.create.profileRect(2, 1)
162
+ * const contour = await snaptrude.core.geom.create.contourFromProfiles(outer, [hole])
163
+ * const point = await snaptrude.core.math.vec3.new(2.5, 0, 1.5)
164
+ * const inside = await snaptrude.core.geom.query.contour.hasPoint(contour, point) // true — outside the hole
165
+ * ```
166
+ */
167
+ abstract hasPoint(contour: ContourHandle, point: Vec3Handle): PluginApiReturn<boolean>;
168
+ /**
169
+ * Test whether a point lies on a contour's boundary (any of its curves).
170
+ * @param contour The contour to query
171
+ * @param point The point to test
172
+ * @returns `true` if the point is on the boundary, otherwise `false`
173
+ *
174
+ * # Example
175
+ * ```ts
176
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
177
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
178
+ * const point = await snaptrude.core.math.vec3.new(2, 0, 0)
179
+ * const onEdge = await snaptrude.core.geom.query.contour.isOnBoundary(contour, point) // true
180
+ * ```
181
+ */
182
+ abstract isOnBoundary(contour: ContourHandle, point: Vec3Handle): PluginApiReturn<boolean>;
183
+ /**
184
+ * Test whether a contour's outer profile is wound clockwise on the XZ plane.
185
+ * @param contour The contour to query
186
+ * @returns `true` if the contour is clockwise, otherwise `false`
187
+ *
188
+ * # Example
189
+ * ```ts
190
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
191
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
192
+ * const clockwise = await snaptrude.core.geom.query.contour.isClockwise(contour)
193
+ * ```
194
+ */
195
+ abstract isClockwise(contour: ContourHandle): PluginApiReturn<boolean>;
196
+ /**
197
+ * Test whether a contour is planar.
198
+ * @param contour The contour to query
199
+ * @returns `true` if the contour is planar, otherwise `false`
200
+ *
201
+ * # Example
202
+ * ```ts
203
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
204
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
205
+ * const planar = await snaptrude.core.geom.query.contour.isPlanar(contour) // true
206
+ * ```
207
+ */
208
+ abstract isPlanar(contour: ContourHandle): PluginApiReturn<boolean>;
209
+ /**
210
+ * Test whether a contour is empty (its outer profile contains no curves).
211
+ * @param contour The contour to query
212
+ * @returns `true` if the contour is empty, otherwise `false`
213
+ *
214
+ * # Example
215
+ * ```ts
216
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
217
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
218
+ * const empty = await snaptrude.core.geom.query.contour.isEmpty(contour) // false
219
+ * ```
220
+ */
221
+ abstract isEmpty(contour: ContourHandle): PluginApiReturn<boolean>;
222
+ /**
223
+ * Test whether a contour intersects itself.
224
+ * @param contour The contour to query
225
+ * @returns `true` if the contour is self-intersecting, otherwise `false`
226
+ *
227
+ * # Example
228
+ * ```ts
229
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
230
+ * const contour = await snaptrude.core.geom.create.contourFromProfile(rect)
231
+ * const crossed = await snaptrude.core.geom.query.contour.isSelfIntersecting(contour) // false
232
+ * ```
233
+ */
234
+ abstract isSelfIntersecting(contour: ContourHandle): PluginApiReturn<boolean>;
235
+ /**
236
+ * Test whether a contour's orientation is valid (outer profile and holes are
237
+ * wound consistently).
238
+ * @param contour The contour to query
239
+ * @returns `true` if the orientation is valid, otherwise `false`
240
+ *
241
+ * # Example
242
+ * ```ts
243
+ * const outer = await snaptrude.core.geom.create.profileRect(6, 4)
244
+ * const hole = await snaptrude.core.geom.create.profileRect(2, 1)
245
+ * const contour = await snaptrude.core.geom.create.contourFromProfiles(outer, [hole])
246
+ * const valid = await snaptrude.core.geom.query.contour.isOrientationValid(contour)
247
+ * ```
248
+ */
249
+ abstract isOrientationValid(contour: ContourHandle): PluginApiReturn<boolean>;
250
+ /**
251
+ * Test whether two contours are geometrically equal.
252
+ * @param contourA First contour
253
+ * @param contourB Second contour
254
+ * @returns `true` if the contours are equal, otherwise `false`
255
+ *
256
+ * # Example
257
+ * ```ts
258
+ * const rect = await snaptrude.core.geom.create.profileRect(4, 3)
259
+ * const a = await snaptrude.core.geom.create.contourFromProfile(rect)
260
+ * const b = await snaptrude.core.geom.create.contourFromProfile(rect)
261
+ * const same = await snaptrude.core.geom.query.contour.isEqual(a, b) // true
262
+ * ```
263
+ */
264
+ abstract isEqual(contourA: ContourHandle, contourB: ContourHandle): PluginApiReturn<boolean>;
265
+ }
266
+ /**
267
+ * Arguments for {@linkcode PluginGeomQueryContourApi.getOuterProfile}.
268
+ *
269
+ * | Property | Type | Description |
270
+ * |---|---|---|
271
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
272
+ */
273
+ export declare const PluginGeomQueryContourGetOuterProfileArgs: z.ZodObject<{
274
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
275
+ }, z.core.$strip>;
276
+ export type PluginGeomQueryContourGetOuterProfileArgs = z.infer<typeof PluginGeomQueryContourGetOuterProfileArgs>;
277
+ /**
278
+ * Arguments for {@linkcode PluginGeomQueryContourApi.listHoles}.
279
+ *
280
+ * | Property | Type | Description |
281
+ * |---|---|---|
282
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
283
+ */
284
+ export declare const PluginGeomQueryContourListHolesArgs: z.ZodObject<{
285
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
286
+ }, z.core.$strip>;
287
+ export type PluginGeomQueryContourListHolesArgs = z.infer<typeof PluginGeomQueryContourListHolesArgs>;
288
+ /**
289
+ * Arguments for {@linkcode PluginGeomQueryContourApi.getHoleCount}.
290
+ *
291
+ * | Property | Type | Description |
292
+ * |---|---|---|
293
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
294
+ */
295
+ export declare const PluginGeomQueryContourGetHoleCountArgs: z.ZodObject<{
296
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
297
+ }, z.core.$strip>;
298
+ export type PluginGeomQueryContourGetHoleCountArgs = z.infer<typeof PluginGeomQueryContourGetHoleCountArgs>;
299
+ /**
300
+ * Arguments for {@linkcode PluginGeomQueryContourApi.getArea}.
301
+ *
302
+ * | Property | Type | Description |
303
+ * |---|---|---|
304
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
305
+ */
306
+ export declare const PluginGeomQueryContourGetAreaArgs: z.ZodObject<{
307
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
308
+ }, z.core.$strip>;
309
+ export type PluginGeomQueryContourGetAreaArgs = z.infer<typeof PluginGeomQueryContourGetAreaArgs>;
310
+ /**
311
+ * Arguments for {@linkcode PluginGeomQueryContourApi.getPerimeter}.
312
+ *
313
+ * | Property | Type | Description |
314
+ * |---|---|---|
315
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
316
+ */
317
+ export declare const PluginGeomQueryContourGetPerimeterArgs: z.ZodObject<{
318
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
319
+ }, z.core.$strip>;
320
+ export type PluginGeomQueryContourGetPerimeterArgs = z.infer<typeof PluginGeomQueryContourGetPerimeterArgs>;
321
+ /**
322
+ * Arguments for {@linkcode PluginGeomQueryContourApi.getBoundingBox}.
323
+ *
324
+ * | Property | Type | Description |
325
+ * |---|---|---|
326
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
327
+ */
328
+ export declare const PluginGeomQueryContourGetBoundingBoxArgs: z.ZodObject<{
329
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
330
+ }, z.core.$strip>;
331
+ export type PluginGeomQueryContourGetBoundingBoxArgs = z.infer<typeof PluginGeomQueryContourGetBoundingBoxArgs>;
332
+ /**
333
+ * Arguments for {@linkcode PluginGeomQueryContourApi.getNormal}.
334
+ *
335
+ * | Property | Type | Description |
336
+ * |---|---|---|
337
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
338
+ */
339
+ export declare const PluginGeomQueryContourGetNormalArgs: z.ZodObject<{
340
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
341
+ }, z.core.$strip>;
342
+ export type PluginGeomQueryContourGetNormalArgs = z.infer<typeof PluginGeomQueryContourGetNormalArgs>;
343
+ /**
344
+ * Arguments for {@linkcode PluginGeomQueryContourApi.getNearestPoint}.
345
+ *
346
+ * | Property | Type | Description |
347
+ * |---|---|---|
348
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
349
+ * | `point` | {@linkcode Vec3Handle} | The reference point |
350
+ */
351
+ export declare const PluginGeomQueryContourGetNearestPointArgs: z.ZodObject<{
352
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
353
+ point: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vec3">, string>>;
354
+ }, z.core.$strip>;
355
+ export type PluginGeomQueryContourGetNearestPointArgs = z.infer<typeof PluginGeomQueryContourGetNearestPointArgs>;
356
+ /**
357
+ * Arguments for {@linkcode PluginGeomQueryContourApi.hasPoint}.
358
+ *
359
+ * | Property | Type | Description |
360
+ * |---|---|---|
361
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
362
+ * | `point` | {@linkcode Vec3Handle} | The point to test |
363
+ */
364
+ export declare const PluginGeomQueryContourHasPointArgs: z.ZodObject<{
365
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
366
+ point: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vec3">, string>>;
367
+ }, z.core.$strip>;
368
+ export type PluginGeomQueryContourHasPointArgs = z.infer<typeof PluginGeomQueryContourHasPointArgs>;
369
+ /**
370
+ * Arguments for {@linkcode PluginGeomQueryContourApi.isOnBoundary}.
371
+ *
372
+ * | Property | Type | Description |
373
+ * |---|---|---|
374
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
375
+ * | `point` | {@linkcode Vec3Handle} | The point to test |
376
+ */
377
+ export declare const PluginGeomQueryContourIsOnBoundaryArgs: z.ZodObject<{
378
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
379
+ point: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"vec3">, string>>;
380
+ }, z.core.$strip>;
381
+ export type PluginGeomQueryContourIsOnBoundaryArgs = z.infer<typeof PluginGeomQueryContourIsOnBoundaryArgs>;
382
+ /**
383
+ * Arguments for {@linkcode PluginGeomQueryContourApi.isClockwise}.
384
+ *
385
+ * | Property | Type | Description |
386
+ * |---|---|---|
387
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
388
+ */
389
+ export declare const PluginGeomQueryContourIsClockwiseArgs: z.ZodObject<{
390
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
391
+ }, z.core.$strip>;
392
+ export type PluginGeomQueryContourIsClockwiseArgs = z.infer<typeof PluginGeomQueryContourIsClockwiseArgs>;
393
+ /**
394
+ * Arguments for {@linkcode PluginGeomQueryContourApi.isPlanar}.
395
+ *
396
+ * | Property | Type | Description |
397
+ * |---|---|---|
398
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
399
+ */
400
+ export declare const PluginGeomQueryContourIsPlanarArgs: z.ZodObject<{
401
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
402
+ }, z.core.$strip>;
403
+ export type PluginGeomQueryContourIsPlanarArgs = z.infer<typeof PluginGeomQueryContourIsPlanarArgs>;
404
+ /**
405
+ * Arguments for {@linkcode PluginGeomQueryContourApi.isEmpty}.
406
+ *
407
+ * | Property | Type | Description |
408
+ * |---|---|---|
409
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
410
+ */
411
+ export declare const PluginGeomQueryContourIsEmptyArgs: z.ZodObject<{
412
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
413
+ }, z.core.$strip>;
414
+ export type PluginGeomQueryContourIsEmptyArgs = z.infer<typeof PluginGeomQueryContourIsEmptyArgs>;
415
+ /**
416
+ * Arguments for {@linkcode PluginGeomQueryContourApi.isSelfIntersecting}.
417
+ *
418
+ * | Property | Type | Description |
419
+ * |---|---|---|
420
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
421
+ */
422
+ export declare const PluginGeomQueryContourIsSelfIntersectingArgs: z.ZodObject<{
423
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
424
+ }, z.core.$strip>;
425
+ export type PluginGeomQueryContourIsSelfIntersectingArgs = z.infer<typeof PluginGeomQueryContourIsSelfIntersectingArgs>;
426
+ /**
427
+ * Arguments for {@linkcode PluginGeomQueryContourApi.isOrientationValid}.
428
+ *
429
+ * | Property | Type | Description |
430
+ * |---|---|---|
431
+ * | `contour` | {@linkcode ContourHandle} | The contour to query |
432
+ */
433
+ export declare const PluginGeomQueryContourIsOrientationValidArgs: z.ZodObject<{
434
+ contour: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
435
+ }, z.core.$strip>;
436
+ export type PluginGeomQueryContourIsOrientationValidArgs = z.infer<typeof PluginGeomQueryContourIsOrientationValidArgs>;
437
+ /**
438
+ * Arguments for {@linkcode PluginGeomQueryContourApi.isEqual}.
439
+ *
440
+ * | Property | Type | Description |
441
+ * |---|---|---|
442
+ * | `contourA` | {@linkcode ContourHandle} | First contour |
443
+ * | `contourB` | {@linkcode ContourHandle} | Second contour |
444
+ */
445
+ export declare const PluginGeomQueryContourIsEqualArgs: z.ZodObject<{
446
+ contourA: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
447
+ contourB: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
448
+ }, z.core.$strip>;
449
+ export type PluginGeomQueryContourIsEqualArgs = z.infer<typeof PluginGeomQueryContourIsEqualArgs>;
450
+ //# sourceMappingURL=contour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/query/contour.ts"],"names":[],"mappings":"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"}