@snaptrude/plugin-core 0.2.9 → 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 (269) hide show
  1. package/AGENTS.md +128 -50
  2. package/CHANGELOG.md +52 -6
  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 +51 -23
  102. package/dist/api/entity/buildableEnvelope.d.ts.map +1 -1
  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 +4 -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 +76 -828
  110. package/dist/api/entity/space.d.ts.map +1 -1
  111. package/dist/api/entity/story.d.ts +47 -37
  112. package/dist/api/entity/story.d.ts.map +1 -1
  113. package/dist/api/index.d.ts +17 -17
  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 +3897 -1542
  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 +3326 -1462
  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 +64 -23
  209. package/src/api/entity/department.ts +0 -113
  210. package/src/api/entity/index.ts +4 -9
  211. package/src/api/entity/referenceLine.ts +50 -38
  212. package/src/api/entity/space.ts +84 -440
  213. package/src/api/entity/story.ts +53 -42
  214. package/src/api/index.ts +17 -17
  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/documentation/aiInspiration.d.ts +0 -2155
  243. package/dist/api/documentation/aiInspiration.d.ts.map +0 -1
  244. package/dist/api/documentation/index.d.ts +0 -13
  245. package/dist/api/documentation/index.d.ts.map +0 -1
  246. package/dist/api/tools/copy.d.ts +0 -59
  247. package/dist/api/tools/copy.d.ts.map +0 -1
  248. package/dist/api/tools/index.d.ts +0 -29
  249. package/dist/api/tools/index.d.ts.map +0 -1
  250. package/dist/api/tools/offset.d.ts +0 -43
  251. package/dist/api/tools/offset.d.ts.map +0 -1
  252. package/dist/api/tools/selection.d.ts +0 -48
  253. package/dist/api/tools/selection.d.ts.map +0 -1
  254. package/dist/api/tools/transform.d.ts +0 -114
  255. package/dist/api/tools/transform.d.ts.map +0 -1
  256. package/dist/api/units/index.d.ts +0 -163
  257. package/dist/api/units/index.d.ts.map +0 -1
  258. package/src/api/core/geom/arc.ts +0 -70
  259. package/src/api/core/geom/curve.ts +0 -41
  260. package/src/api/core/geom/line.ts +0 -53
  261. package/src/api/core/geom/profile.ts +0 -94
  262. package/src/api/documentation/aiInspiration.ts +0 -871
  263. package/src/api/documentation/index.ts +0 -15
  264. package/src/api/tools/copy.ts +0 -55
  265. package/src/api/tools/index.ts +0 -35
  266. package/src/api/tools/offset.ts +0 -43
  267. package/src/api/tools/selection.ts +0 -51
  268. package/src/api/tools/transform.ts +0 -117
  269. package/src/api/units/index.ts +0 -163
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curve.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/query/curve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import * as z from "zod";
2
+ import { PluginApiReturn } from "../../../../types";
3
+ import { EdgeHandle, VertexHandle, HalfEdgeHandle, FaceHandle, CurveHandle } from "../../../../handles";
4
+ /**
5
+ * Edge queries — read a single BREP edge's topology and geometry (all-handle model,
6
+ * §11). An {@linkcode EdgeHandle} is minted by walking from a brep/face/vertex handle;
7
+ * it is session-ephemeral and goes stale on undo/redo/re-topologize.
8
+ *
9
+ * Accessed via `snaptrude.core.geom.query.edge`.
10
+ */
11
+ export declare abstract class PluginGeomQueryEdgeApi {
12
+ constructor();
13
+ /**
14
+ * Get the index of an edge within its brep.
15
+ * @param edge The edge to query
16
+ * @returns The index as a `number` (`-1` if unindexed)
17
+ *
18
+ * # Example
19
+ * ```ts
20
+ * const [wall] = await snaptrude.design.query.listWalls()
21
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
22
+ * if (brep) {
23
+ * const [edge] = await snaptrude.core.geom.query.brep.listEdges(brep)
24
+ * const index = await snaptrude.core.geom.query.edge.getIndex(edge)
25
+ * }
26
+ * ```
27
+ */
28
+ abstract getIndex(edge: EdgeHandle): PluginApiReturn<number>;
29
+ /**
30
+ * Get the primary half-edge of an edge.
31
+ * @param edge The edge to query
32
+ * @returns The half-edge as a {@linkcode HalfEdgeHandle}, or `null` if uninitialized
33
+ *
34
+ * # Example
35
+ * ```ts
36
+ * const [wall] = await snaptrude.design.query.listWalls()
37
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
38
+ * if (brep) {
39
+ * const [edge] = await snaptrude.core.geom.query.brep.listEdges(brep)
40
+ * const halfEdge = await snaptrude.core.geom.query.edge.getHalfEdge(edge)
41
+ * if (halfEdge) {
42
+ * const face = await snaptrude.core.geom.query.halfedge.getFace(halfEdge)
43
+ * }
44
+ * }
45
+ * ```
46
+ */
47
+ abstract getHalfEdge(edge: EdgeHandle): PluginApiReturn<HalfEdgeHandle | null>;
48
+ /**
49
+ * List the two endpoint vertices of an edge.
50
+ * @param edge The edge to query
51
+ * @returns The endpoints as {@linkcode VertexHandle}`[]`
52
+ *
53
+ * # Example
54
+ * ```ts
55
+ * const [wall] = await snaptrude.design.query.listWalls()
56
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
57
+ * if (brep) {
58
+ * const [edge] = await snaptrude.core.geom.query.brep.listEdges(brep)
59
+ * const [a, b] = await snaptrude.core.geom.query.edge.listVertices(edge)
60
+ * const start = await snaptrude.core.geom.query.vertex.getPosition(brep, a)
61
+ * const end = await snaptrude.core.geom.query.vertex.getPosition(brep, b)
62
+ * }
63
+ * ```
64
+ */
65
+ abstract listVertices(edge: EdgeHandle): PluginApiReturn<VertexHandle[]>;
66
+ /**
67
+ * Get the underlying curve geometry of an edge (a line or arc).
68
+ * @param edge The edge to query
69
+ * @returns The curve as a {@linkcode CurveHandle}, or `null` if it is a circle or unset
70
+ *
71
+ * # Example
72
+ * ```ts
73
+ * const [wall] = await snaptrude.design.query.listWalls()
74
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
75
+ * if (brep) {
76
+ * const [edge] = await snaptrude.core.geom.query.brep.listEdges(brep)
77
+ * const curve = await snaptrude.core.geom.query.edge.getCurve(edge)
78
+ * if (curve) {
79
+ * const length = await snaptrude.core.geom.query.curve.getLength(curve)
80
+ * }
81
+ * }
82
+ * ```
83
+ */
84
+ abstract getCurve(edge: EdgeHandle): PluginApiReturn<CurveHandle | null>;
85
+ /**
86
+ * List the faces bordering an edge (one or two).
87
+ * @param edge The edge to query
88
+ * @returns The bordering faces as {@linkcode FaceHandle}`[]`
89
+ *
90
+ * # Example
91
+ * ```ts
92
+ * const [wall] = await snaptrude.design.query.listWalls()
93
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
94
+ * if (brep) {
95
+ * const [edge] = await snaptrude.core.geom.query.brep.listEdges(brep)
96
+ * const faces = await snaptrude.core.geom.query.edge.listFaces(edge)
97
+ * console.log(faces.length === 1 ? "boundary edge" : "interior edge")
98
+ * }
99
+ * ```
100
+ */
101
+ abstract listFaces(edge: EdgeHandle): PluginApiReturn<FaceHandle[]>;
102
+ }
103
+ /** Arguments for {@linkcode PluginGeomQueryEdgeApi.getIndex}. `{ edge: EdgeHandle }` */
104
+ export declare const PluginGeomQueryEdgeGetIndexArgs: z.ZodObject<{
105
+ edge: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"edge">, string>>;
106
+ }, z.core.$strip>;
107
+ export type PluginGeomQueryEdgeGetIndexArgs = z.infer<typeof PluginGeomQueryEdgeGetIndexArgs>;
108
+ /** Arguments for {@linkcode PluginGeomQueryEdgeApi.getHalfEdge}. `{ edge: EdgeHandle }` */
109
+ export declare const PluginGeomQueryEdgeGetHalfEdgeArgs: z.ZodObject<{
110
+ edge: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"edge">, string>>;
111
+ }, z.core.$strip>;
112
+ export type PluginGeomQueryEdgeGetHalfEdgeArgs = z.infer<typeof PluginGeomQueryEdgeGetHalfEdgeArgs>;
113
+ /** Arguments for {@linkcode PluginGeomQueryEdgeApi.listVertices}. `{ edge: EdgeHandle }` */
114
+ export declare const PluginGeomQueryEdgeListVerticesArgs: z.ZodObject<{
115
+ edge: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"edge">, string>>;
116
+ }, z.core.$strip>;
117
+ export type PluginGeomQueryEdgeListVerticesArgs = z.infer<typeof PluginGeomQueryEdgeListVerticesArgs>;
118
+ /** Arguments for {@linkcode PluginGeomQueryEdgeApi.getCurve}. `{ edge: EdgeHandle }` */
119
+ export declare const PluginGeomQueryEdgeGetCurveArgs: z.ZodObject<{
120
+ edge: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"edge">, string>>;
121
+ }, z.core.$strip>;
122
+ export type PluginGeomQueryEdgeGetCurveArgs = z.infer<typeof PluginGeomQueryEdgeGetCurveArgs>;
123
+ /** Arguments for {@linkcode PluginGeomQueryEdgeApi.listFaces}. `{ edge: EdgeHandle }` */
124
+ export declare const PluginGeomQueryEdgeListFacesArgs: z.ZodObject<{
125
+ edge: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"edge">, string>>;
126
+ }, z.core.$strip>;
127
+ export type PluginGeomQueryEdgeListFacesArgs = z.infer<typeof PluginGeomQueryEdgeListFacesArgs>;
128
+ //# sourceMappingURL=edge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/query/edge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEvG;;;;;;GAMG;AACH,8BAAsB,sBAAsB;;IAG1C;;;;;;;;;;;;;;OAcG;aACa,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC;IAEnE;;;;;;;;;;;;;;;;;OAiBG;aACa,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC;IAErF;;;;;;;;;;;;;;;;OAgBG;aACa,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;IAE/E;;;;;;;;;;;;;;;;;OAiBG;aACa,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC;IAE/E;;;;;;;;;;;;;;;OAeG;aACa,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;CAC3E;AAID,wFAAwF;AACxF,eAAO,MAAM,+BAA+B;;iBAAU,CAAA;AACtD,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F,2FAA2F;AAC3F,eAAO,MAAM,kCAAkC;;iBAAU,CAAA;AACzD,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAEnG,4FAA4F;AAC5F,eAAO,MAAM,mCAAmC;;iBAAU,CAAA;AAC1D,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAA;AAErG,wFAAwF;AACxF,eAAO,MAAM,+BAA+B;;iBAAU,CAAA;AACtD,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F,yFAAyF;AACzF,eAAO,MAAM,gCAAgC;;iBAAU,CAAA;AACvD,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA"}
@@ -0,0 +1,363 @@
1
+ import * as z from "zod";
2
+ import { PluginApiReturn } from "../../../../types";
3
+ import { BrepHandle, FaceHandle, EdgeHandle, VertexHandle, HalfEdgeHandle, Vec3Components } from "../../../../handles";
4
+ /**
5
+ * Face queries — read the topology and boundary geometry of a single BREP face
6
+ * (all-handle model, §11). A {@linkcode FaceHandle} is minted by walking from a
7
+ * {@linkcode BrepHandle}; it is session-ephemeral and goes stale on
8
+ * undo/redo/re-topologize.
9
+ *
10
+ * Traversals mint fresh child topology handles; position reads return
11
+ * {@linkcode Vec3Components}. Holes are modelled per-loop: {@linkcode PluginGeomQueryFaceApi.listHoles}
12
+ * returns one seed half-edge per hole, and {@linkcode PluginGeomQueryFaceApi.listHoleHalfEdges}
13
+ * returns the full (flat) half-edge loop of one hole by index. No query mutates its inputs.
14
+ *
15
+ * Accessed via `snaptrude.core.geom.query.face`.
16
+ */
17
+ export declare abstract class PluginGeomQueryFaceApi {
18
+ constructor();
19
+ /**
20
+ * Get the index of a face within its brep.
21
+ * @param face The face to query
22
+ * @returns The index as a `number` (`-1` if unindexed)
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 [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
30
+ * const index = await snaptrude.core.geom.query.face.getIndex(face)
31
+ * }
32
+ * ```
33
+ */
34
+ abstract getIndex(face: FaceHandle): PluginApiReturn<number>;
35
+ /**
36
+ * Get the raw (unmapped) material index of a face.
37
+ * @param face The face to query
38
+ * @returns The material index as a `number`
39
+ *
40
+ * # Example
41
+ * ```ts
42
+ * const [wall] = await snaptrude.design.query.listWalls()
43
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
44
+ * if (brep) {
45
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
46
+ * const materialIndex = await snaptrude.core.geom.query.face.getMaterialIndex(face)
47
+ * }
48
+ * ```
49
+ */
50
+ abstract getMaterialIndex(face: FaceHandle): PluginApiReturn<number>;
51
+ /**
52
+ * Get a seed half-edge of a face's outer loop.
53
+ * @param face The face to query
54
+ * @returns The half-edge as a {@linkcode HalfEdgeHandle}, or `null` for a degenerate face
55
+ *
56
+ * # Example
57
+ * ```ts
58
+ * const [wall] = await snaptrude.design.query.listWalls()
59
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
60
+ * if (brep) {
61
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
62
+ * const seed = await snaptrude.core.geom.query.face.getHalfEdge(face)
63
+ * if (seed) {
64
+ * const next = await snaptrude.core.geom.query.halfedge.getNext(seed)
65
+ * }
66
+ * }
67
+ * ```
68
+ */
69
+ abstract getHalfEdge(face: FaceHandle): PluginApiReturn<HalfEdgeHandle | null>;
70
+ /**
71
+ * List the edges of a face's outer loop.
72
+ * @param face The face to query
73
+ * @returns The edges as {@linkcode EdgeHandle}`[]`
74
+ *
75
+ * # Example
76
+ * ```ts
77
+ * const [wall] = await snaptrude.design.query.listWalls()
78
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
79
+ * if (brep) {
80
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
81
+ * const edges = await snaptrude.core.geom.query.face.listEdges(face)
82
+ * }
83
+ * ```
84
+ */
85
+ abstract listEdges(face: FaceHandle): PluginApiReturn<EdgeHandle[]>;
86
+ /**
87
+ * List the half-edges of a face's outer loop.
88
+ * @param face The face to query
89
+ * @returns The half-edges as {@linkcode HalfEdgeHandle}`[]`
90
+ *
91
+ * # Example
92
+ * ```ts
93
+ * const [wall] = await snaptrude.design.query.listWalls()
94
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
95
+ * if (brep) {
96
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
97
+ * const halfEdges = await snaptrude.core.geom.query.face.listHalfEdges(face)
98
+ * }
99
+ * ```
100
+ */
101
+ abstract listHalfEdges(face: FaceHandle): PluginApiReturn<HalfEdgeHandle[]>;
102
+ /**
103
+ * List the vertices of a face's outer loop.
104
+ * @param face The face to query
105
+ * @returns The vertices as {@linkcode VertexHandle}`[]`
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
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
113
+ * const vertices = await snaptrude.core.geom.query.face.listVertices(face)
114
+ * }
115
+ * ```
116
+ */
117
+ abstract listVertices(face: FaceHandle): PluginApiReturn<VertexHandle[]>;
118
+ /**
119
+ * List a face's holes as one seed half-edge per hole loop.
120
+ * @param face The face to query
121
+ * @returns The hole seeds as {@linkcode HalfEdgeHandle}`[]`
122
+ *
123
+ * # Example
124
+ * ```ts
125
+ * const [wall] = await snaptrude.design.query.listWalls()
126
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
127
+ * if (brep) {
128
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
129
+ * const holeSeeds = await snaptrude.core.geom.query.face.listHoles(face)
130
+ * console.log("holes in this face:", holeSeeds.length)
131
+ * }
132
+ * ```
133
+ */
134
+ abstract listHoles(face: FaceHandle): PluginApiReturn<HalfEdgeHandle[]>;
135
+ /**
136
+ * Get the number of holes in a face.
137
+ * @param face The face to query
138
+ * @returns The hole count as a `number`
139
+ *
140
+ * # Example
141
+ * ```ts
142
+ * const [wall] = await snaptrude.design.query.listWalls()
143
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
144
+ * if (brep) {
145
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
146
+ * const holeCount = await snaptrude.core.geom.query.face.getHoleCount(face)
147
+ * }
148
+ * ```
149
+ */
150
+ abstract getHoleCount(face: FaceHandle): PluginApiReturn<number>;
151
+ /**
152
+ * List the half-edge loop of one hole of a face (by hole index).
153
+ * @param face The face to query
154
+ * @param holeIndex Index of the hole (`0..getHoleCount-1`)
155
+ * @returns The hole's half-edges as {@linkcode HalfEdgeHandle}`[]` (`[]` if the index is out of range)
156
+ *
157
+ * # Example
158
+ * ```ts
159
+ * const [wall] = await snaptrude.design.query.listWalls()
160
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
161
+ * if (brep) {
162
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
163
+ * const holeCount = await snaptrude.core.geom.query.face.getHoleCount(face)
164
+ * if (holeCount > 0) {
165
+ * const loop = await snaptrude.core.geom.query.face.listHoleHalfEdges(face, 0)
166
+ * }
167
+ * }
168
+ * ```
169
+ */
170
+ abstract listHoleHalfEdges(face: FaceHandle, holeIndex: number): PluginApiReturn<HalfEdgeHandle[]>;
171
+ /**
172
+ * Test whether a face has any holes.
173
+ * @param face The face to query
174
+ * @returns `true` if the face has at least one hole, otherwise `false`
175
+ *
176
+ * @examplePrompt Does this face have any holes cut into it?
177
+ *
178
+ * # Example
179
+ * ```ts
180
+ * const [wall] = await snaptrude.design.query.listWalls()
181
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
182
+ * if (brep) {
183
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
184
+ * const pierced = await snaptrude.core.geom.query.face.hasHoles(face)
185
+ * }
186
+ * ```
187
+ */
188
+ abstract hasHoles(face: FaceHandle): PluginApiReturn<boolean>;
189
+ /**
190
+ * Get the seed half-edge of the hole loop containing a given half-edge.
191
+ * @param face The face to query
192
+ * @param halfEdge The half-edge to locate
193
+ * @returns The hole seed as a {@linkcode HalfEdgeHandle}, or `null` if not in any hole
194
+ *
195
+ * # Example
196
+ * ```ts
197
+ * const [wall] = await snaptrude.design.query.listWalls()
198
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
199
+ * if (brep) {
200
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
201
+ * const [he] = await snaptrude.core.geom.query.face.listHoleHalfEdges(face, 0)
202
+ * if (he) {
203
+ * const seed = await snaptrude.core.geom.query.face.getHoleContainingHalfEdge(face, he)
204
+ * }
205
+ * }
206
+ * ```
207
+ */
208
+ abstract getHoleContainingHalfEdge(face: FaceHandle, halfEdge: HalfEdgeHandle): PluginApiReturn<HalfEdgeHandle | null>;
209
+ /**
210
+ * List the positions of a face's outer-loop vertices (needs the parent brep for coordinates).
211
+ * @param face The face to query
212
+ * @param brep The parent brep (source of vertex coordinates)
213
+ * @returns The positions as {@linkcode Vec3Components}`[]`
214
+ *
215
+ * @examplePrompt What are the corner coordinates of this face?
216
+ * @examplePrompt Get the boundary points of the selected face
217
+ *
218
+ * # Example
219
+ * ```ts
220
+ * const [wall] = await snaptrude.design.query.listWalls()
221
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
222
+ * if (brep) {
223
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
224
+ * const corners = await snaptrude.core.geom.query.face.listVertexPositions(face, brep)
225
+ * for (const p of corners) console.log(p.x, p.y, p.z)
226
+ * }
227
+ * ```
228
+ */
229
+ abstract listVertexPositions(face: FaceHandle, brep: BrepHandle): PluginApiReturn<Vec3Components[]>;
230
+ /**
231
+ * List the tessellated boundary points of a face's outer loop (arcs sampled,
232
+ * sense-corrected). Not cardinality-equal to {@linkcode PluginGeomQueryFaceApi.listVertexPositions}.
233
+ * @param face The face to query
234
+ * @returns The boundary points as {@linkcode Vec3Components}`[]`
235
+ *
236
+ * @examplePrompt Trace the outline of this face including its curved edges
237
+ *
238
+ * # Example
239
+ * ```ts
240
+ * const [wall] = await snaptrude.design.query.listWalls()
241
+ * const brep = await snaptrude.design.query.geometry.getBrep(wall)
242
+ * if (brep) {
243
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
244
+ * const outline = await snaptrude.core.geom.query.face.listVertexPositionsWithCurves(face)
245
+ * }
246
+ * ```
247
+ */
248
+ abstract listVertexPositionsWithCurves(face: FaceHandle): PluginApiReturn<Vec3Components[]>;
249
+ /**
250
+ * List the faces adjacent to a face (sharing an edge). Boundary edges are skipped.
251
+ * @param face The face to query
252
+ * @returns The adjacent faces as {@linkcode FaceHandle}`[]`
253
+ *
254
+ * @examplePrompt Which faces are next to this one?
255
+ * @examplePrompt Find the faces that share an edge with the selected face
256
+ *
257
+ * # Example
258
+ * ```ts
259
+ * const [mass] = await snaptrude.design.query.listMasses()
260
+ * const brep = await snaptrude.design.query.geometry.getBrep(mass)
261
+ * if (brep) {
262
+ * const [face] = await snaptrude.core.geom.query.brep.listFaces(brep)
263
+ * const neighbours = await snaptrude.core.geom.query.face.listAdjacentFaces(face)
264
+ * }
265
+ * ```
266
+ */
267
+ abstract listAdjacentFaces(face: FaceHandle): PluginApiReturn<FaceHandle[]>;
268
+ }
269
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.getIndex}. `{ face: FaceHandle }` */
270
+ export declare const PluginGeomQueryFaceGetIndexArgs: z.ZodObject<{
271
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
272
+ }, z.core.$strip>;
273
+ export type PluginGeomQueryFaceGetIndexArgs = z.infer<typeof PluginGeomQueryFaceGetIndexArgs>;
274
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.getMaterialIndex}. `{ face: FaceHandle }` */
275
+ export declare const PluginGeomQueryFaceGetMaterialIndexArgs: z.ZodObject<{
276
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
277
+ }, z.core.$strip>;
278
+ export type PluginGeomQueryFaceGetMaterialIndexArgs = z.infer<typeof PluginGeomQueryFaceGetMaterialIndexArgs>;
279
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.getHalfEdge}. `{ face: FaceHandle }` */
280
+ export declare const PluginGeomQueryFaceGetHalfEdgeArgs: z.ZodObject<{
281
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
282
+ }, z.core.$strip>;
283
+ export type PluginGeomQueryFaceGetHalfEdgeArgs = z.infer<typeof PluginGeomQueryFaceGetHalfEdgeArgs>;
284
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.listEdges}. `{ face: FaceHandle }` */
285
+ export declare const PluginGeomQueryFaceListEdgesArgs: z.ZodObject<{
286
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
287
+ }, z.core.$strip>;
288
+ export type PluginGeomQueryFaceListEdgesArgs = z.infer<typeof PluginGeomQueryFaceListEdgesArgs>;
289
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.listHalfEdges}. `{ face: FaceHandle }` */
290
+ export declare const PluginGeomQueryFaceListHalfEdgesArgs: z.ZodObject<{
291
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
292
+ }, z.core.$strip>;
293
+ export type PluginGeomQueryFaceListHalfEdgesArgs = z.infer<typeof PluginGeomQueryFaceListHalfEdgesArgs>;
294
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.listVertices}. `{ face: FaceHandle }` */
295
+ export declare const PluginGeomQueryFaceListVerticesArgs: z.ZodObject<{
296
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
297
+ }, z.core.$strip>;
298
+ export type PluginGeomQueryFaceListVerticesArgs = z.infer<typeof PluginGeomQueryFaceListVerticesArgs>;
299
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.listHoles}. `{ face: FaceHandle }` */
300
+ export declare const PluginGeomQueryFaceListHolesArgs: z.ZodObject<{
301
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
302
+ }, z.core.$strip>;
303
+ export type PluginGeomQueryFaceListHolesArgs = z.infer<typeof PluginGeomQueryFaceListHolesArgs>;
304
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.getHoleCount}. `{ face: FaceHandle }` */
305
+ export declare const PluginGeomQueryFaceGetHoleCountArgs: z.ZodObject<{
306
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
307
+ }, z.core.$strip>;
308
+ export type PluginGeomQueryFaceGetHoleCountArgs = z.infer<typeof PluginGeomQueryFaceGetHoleCountArgs>;
309
+ /**
310
+ * Arguments for {@linkcode PluginGeomQueryFaceApi.listHoleHalfEdges}.
311
+ *
312
+ * | Property | Type | Description |
313
+ * |---|---|---|
314
+ * | `face` | {@linkcode FaceHandle} | The face to query |
315
+ * | `holeIndex` | `number` | Index of the hole (`0..getHoleCount-1`) |
316
+ */
317
+ export declare const PluginGeomQueryFaceListHoleHalfEdgesArgs: z.ZodObject<{
318
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
319
+ holeIndex: z.ZodNumber;
320
+ }, z.core.$strip>;
321
+ export type PluginGeomQueryFaceListHoleHalfEdgesArgs = z.infer<typeof PluginGeomQueryFaceListHoleHalfEdgesArgs>;
322
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.hasHoles}. `{ face: FaceHandle }` */
323
+ export declare const PluginGeomQueryFaceHasHolesArgs: z.ZodObject<{
324
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
325
+ }, z.core.$strip>;
326
+ export type PluginGeomQueryFaceHasHolesArgs = z.infer<typeof PluginGeomQueryFaceHasHolesArgs>;
327
+ /**
328
+ * Arguments for {@linkcode PluginGeomQueryFaceApi.getHoleContainingHalfEdge}.
329
+ *
330
+ * | Property | Type | Description |
331
+ * |---|---|---|
332
+ * | `face` | {@linkcode FaceHandle} | The face to query |
333
+ * | `halfEdge` | {@linkcode HalfEdgeHandle} | The half-edge to locate |
334
+ */
335
+ export declare const PluginGeomQueryFaceGetHoleContainingHalfEdgeArgs: z.ZodObject<{
336
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
337
+ halfEdge: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"halfedge">, string>>;
338
+ }, z.core.$strip>;
339
+ export type PluginGeomQueryFaceGetHoleContainingHalfEdgeArgs = z.infer<typeof PluginGeomQueryFaceGetHoleContainingHalfEdgeArgs>;
340
+ /**
341
+ * Arguments for {@linkcode PluginGeomQueryFaceApi.listVertexPositions}.
342
+ *
343
+ * | Property | Type | Description |
344
+ * |---|---|---|
345
+ * | `face` | {@linkcode FaceHandle} | The face to query |
346
+ * | `brep` | {@linkcode BrepHandle} | The parent brep (source of vertex coordinates) |
347
+ */
348
+ export declare const PluginGeomQueryFaceListVertexPositionsArgs: z.ZodObject<{
349
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
350
+ brep: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
351
+ }, z.core.$strip>;
352
+ export type PluginGeomQueryFaceListVertexPositionsArgs = z.infer<typeof PluginGeomQueryFaceListVertexPositionsArgs>;
353
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.listVertexPositionsWithCurves}. `{ face: FaceHandle }` */
354
+ export declare const PluginGeomQueryFaceListVertexPositionsWithCurvesArgs: z.ZodObject<{
355
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
356
+ }, z.core.$strip>;
357
+ export type PluginGeomQueryFaceListVertexPositionsWithCurvesArgs = z.infer<typeof PluginGeomQueryFaceListVertexPositionsWithCurvesArgs>;
358
+ /** Arguments for {@linkcode PluginGeomQueryFaceApi.listAdjacentFaces}. `{ face: FaceHandle }` */
359
+ export declare const PluginGeomQueryFaceListAdjacentFacesArgs: z.ZodObject<{
360
+ face: z.ZodPipe<z.ZodString, z.ZodTransform<import("../../../..").Handle<"face">, string>>;
361
+ }, z.core.$strip>;
362
+ export type PluginGeomQueryFaceListAdjacentFacesArgs = z.infer<typeof PluginGeomQueryFaceListAdjacentFacesArgs>;
363
+ //# sourceMappingURL=face.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/query/face.ts"],"names":[],"mappings":"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"}