fluidcad 0.0.2

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 (773) hide show
  1. package/LICENSE.txt +504 -0
  2. package/README.md +175 -0
  3. package/bin/fluidcad.js +94 -0
  4. package/bin/watcher.js +55 -0
  5. package/lib/dist/common/edge.d.ts +14 -0
  6. package/lib/dist/common/edge.js +32 -0
  7. package/lib/dist/common/face.d.ts +31 -0
  8. package/lib/dist/common/face.js +83 -0
  9. package/lib/dist/common/materials.d.ts +7 -0
  10. package/lib/dist/common/materials.js +22 -0
  11. package/lib/dist/common/scene-object.d.ts +111 -0
  12. package/lib/dist/common/scene-object.js +380 -0
  13. package/lib/dist/common/shape-factory.d.ts +8 -0
  14. package/lib/dist/common/shape-factory.js +31 -0
  15. package/lib/dist/common/shape-type.d.ts +1 -0
  16. package/lib/dist/common/shape-type.js +1 -0
  17. package/lib/dist/common/shape.d.ts +43 -0
  18. package/lib/dist/common/shape.js +95 -0
  19. package/lib/dist/common/shapes.d.ts +6 -0
  20. package/lib/dist/common/shapes.js +6 -0
  21. package/lib/dist/common/solid-face.d.ts +9 -0
  22. package/lib/dist/common/solid-face.js +22 -0
  23. package/lib/dist/common/solid.d.ts +20 -0
  24. package/lib/dist/common/solid.js +68 -0
  25. package/lib/dist/common/vertex.d.ts +17 -0
  26. package/lib/dist/common/vertex.js +44 -0
  27. package/lib/dist/common/wire.d.ts +22 -0
  28. package/lib/dist/common/wire.js +97 -0
  29. package/lib/dist/constraints/constraint.d.ts +11 -0
  30. package/lib/dist/constraints/constraint.js +51 -0
  31. package/lib/dist/constraints/outside.d.ts +3 -0
  32. package/lib/dist/constraints/outside.js +4 -0
  33. package/lib/dist/core/2d/aline.d.ts +28 -0
  34. package/lib/dist/core/2d/aline.js +26 -0
  35. package/lib/dist/core/2d/arc.d.ts +77 -0
  36. package/lib/dist/core/2d/arc.js +49 -0
  37. package/lib/dist/core/2d/aslot.d.ts +12 -0
  38. package/lib/dist/core/2d/aslot.js +40 -0
  39. package/lib/dist/core/2d/bezier.d.ts +16 -0
  40. package/lib/dist/core/2d/bezier.js +15 -0
  41. package/lib/dist/core/2d/circle.d.ts +24 -0
  42. package/lib/dist/core/2d/circle.js +44 -0
  43. package/lib/dist/core/2d/connect.d.ts +11 -0
  44. package/lib/dist/core/2d/connect.js +10 -0
  45. package/lib/dist/core/2d/crect.d.ts +12 -0
  46. package/lib/dist/core/2d/crect.js +74 -0
  47. package/lib/dist/core/2d/face-driller.d.ts +8 -0
  48. package/lib/dist/core/2d/face-driller.js +70 -0
  49. package/lib/dist/core/2d/face-maker.d.ts +13 -0
  50. package/lib/dist/core/2d/face-maker.js +119 -0
  51. package/lib/dist/core/2d/face-maker2.d.ts +6 -0
  52. package/lib/dist/core/2d/face-maker2.js +54 -0
  53. package/lib/dist/core/2d/hline.d.ts +33 -0
  54. package/lib/dist/core/2d/hline.js +37 -0
  55. package/lib/dist/core/2d/hmove.d.ts +9 -0
  56. package/lib/dist/core/2d/hmove.js +11 -0
  57. package/lib/dist/core/2d/index.d.ts +22 -0
  58. package/lib/dist/core/2d/index.js +22 -0
  59. package/lib/dist/core/2d/line.d.ts +24 -0
  60. package/lib/dist/core/2d/line.js +40 -0
  61. package/lib/dist/core/2d/move.d.ts +13 -0
  62. package/lib/dist/core/2d/move.js +13 -0
  63. package/lib/dist/core/2d/offset.d.ts +21 -0
  64. package/lib/dist/core/2d/offset.js +24 -0
  65. package/lib/dist/core/2d/pmove.d.ts +11 -0
  66. package/lib/dist/core/2d/pmove.js +12 -0
  67. package/lib/dist/core/2d/polygon.d.ts +38 -0
  68. package/lib/dist/core/2d/polygon.js +63 -0
  69. package/lib/dist/core/2d/project.d.ts +17 -0
  70. package/lib/dist/core/2d/project.js +20 -0
  71. package/lib/dist/core/2d/rect.d.ts +27 -0
  72. package/lib/dist/core/2d/rect.js +58 -0
  73. package/lib/dist/core/2d/rmove.d.ts +17 -0
  74. package/lib/dist/core/2d/rmove.js +14 -0
  75. package/lib/dist/core/2d/slot.d.ts +49 -0
  76. package/lib/dist/core/2d/slot.js +65 -0
  77. package/lib/dist/core/2d/tarc.d.ts +46 -0
  78. package/lib/dist/core/2d/tarc.js +61 -0
  79. package/lib/dist/core/2d/tcircle.d.ts +15 -0
  80. package/lib/dist/core/2d/tcircle.js +24 -0
  81. package/lib/dist/core/2d/tline.d.ts +24 -0
  82. package/lib/dist/core/2d/tline.js +30 -0
  83. package/lib/dist/core/2d/vline.d.ts +33 -0
  84. package/lib/dist/core/2d/vline.js +37 -0
  85. package/lib/dist/core/2d/vmove.d.ts +9 -0
  86. package/lib/dist/core/2d/vmove.js +11 -0
  87. package/lib/dist/core/2d/wire.d.ts +11 -0
  88. package/lib/dist/core/2d/wire.js +29 -0
  89. package/lib/dist/core/axis.d.ts +41 -0
  90. package/lib/dist/core/axis.js +104 -0
  91. package/lib/dist/core/chamfer.d.ts +31 -0
  92. package/lib/dist/core/chamfer.js +32 -0
  93. package/lib/dist/core/color.d.ts +16 -0
  94. package/lib/dist/core/color.js +19 -0
  95. package/lib/dist/core/common.d.ts +12 -0
  96. package/lib/dist/core/common.js +36 -0
  97. package/lib/dist/core/copy.d.ts +58 -0
  98. package/lib/dist/core/copy.js +49 -0
  99. package/lib/dist/core/cut.d.ts +46 -0
  100. package/lib/dist/core/cut.js +53 -0
  101. package/lib/dist/core/cylinder.d.ts +11 -0
  102. package/lib/dist/core/cylinder.js +10 -0
  103. package/lib/dist/core/extrude.d.ts +36 -0
  104. package/lib/dist/core/extrude.js +55 -0
  105. package/lib/dist/core/fillet.d.ts +33 -0
  106. package/lib/dist/core/fillet.js +58 -0
  107. package/lib/dist/core/fuse.d.ts +14 -0
  108. package/lib/dist/core/fuse.js +36 -0
  109. package/lib/dist/core/index.d.ts +32 -0
  110. package/lib/dist/core/index.js +30 -0
  111. package/lib/dist/core/interfaces.d.ts +411 -0
  112. package/lib/dist/core/interfaces.js +1 -0
  113. package/lib/dist/core/load.d.ts +10 -0
  114. package/lib/dist/core/load.js +10 -0
  115. package/lib/dist/core/loft.d.ts +10 -0
  116. package/lib/dist/core/loft.js +21 -0
  117. package/lib/dist/core/mirror.d.ts +40 -0
  118. package/lib/dist/core/mirror.js +95 -0
  119. package/lib/dist/core/part.d.ts +7 -0
  120. package/lib/dist/core/part.js +29 -0
  121. package/lib/dist/core/plane.d.ts +56 -0
  122. package/lib/dist/core/plane.js +111 -0
  123. package/lib/dist/core/region.d.ts +13 -0
  124. package/lib/dist/core/region.js +18 -0
  125. package/lib/dist/core/remove.d.ts +10 -0
  126. package/lib/dist/core/remove.js +10 -0
  127. package/lib/dist/core/repeat.d.ts +41 -0
  128. package/lib/dist/core/repeat.js +146 -0
  129. package/lib/dist/core/revolve.d.ts +19 -0
  130. package/lib/dist/core/revolve.js +39 -0
  131. package/lib/dist/core/rotate.d.ts +34 -0
  132. package/lib/dist/core/rotate.js +48 -0
  133. package/lib/dist/core/select.d.ts +12 -0
  134. package/lib/dist/core/select.js +21 -0
  135. package/lib/dist/core/shell.d.ts +16 -0
  136. package/lib/dist/core/shell.js +28 -0
  137. package/lib/dist/core/sketch.d.ts +18 -0
  138. package/lib/dist/core/sketch.js +34 -0
  139. package/lib/dist/core/sphere.d.ts +16 -0
  140. package/lib/dist/core/sphere.js +11 -0
  141. package/lib/dist/core/split.d.ts +12 -0
  142. package/lib/dist/core/split.js +26 -0
  143. package/lib/dist/core/subtract.d.ts +11 -0
  144. package/lib/dist/core/subtract.js +10 -0
  145. package/lib/dist/core/sweep.d.ts +16 -0
  146. package/lib/dist/core/sweep.js +29 -0
  147. package/lib/dist/core/translate.d.ts +64 -0
  148. package/lib/dist/core/translate.js +39 -0
  149. package/lib/dist/core/trim.d.ts +13 -0
  150. package/lib/dist/core/trim.js +18 -0
  151. package/lib/dist/core/use.d.ts +5 -0
  152. package/lib/dist/core/use.js +22 -0
  153. package/lib/dist/features/2d/aline.d.ts +18 -0
  154. package/lib/dist/features/2d/aline.js +78 -0
  155. package/lib/dist/features/2d/amove.d.ts +14 -0
  156. package/lib/dist/features/2d/amove.js +33 -0
  157. package/lib/dist/features/2d/arc-from-center.d.ts +16 -0
  158. package/lib/dist/features/2d/arc-from-center.js +69 -0
  159. package/lib/dist/features/2d/arc-to-point.d.ts +17 -0
  160. package/lib/dist/features/2d/arc-to-point.js +95 -0
  161. package/lib/dist/features/2d/arc.d.ts +19 -0
  162. package/lib/dist/features/2d/arc.js +94 -0
  163. package/lib/dist/features/2d/bezier.d.ts +15 -0
  164. package/lib/dist/features/2d/bezier.js +77 -0
  165. package/lib/dist/features/2d/circle.d.ts +17 -0
  166. package/lib/dist/features/2d/circle.js +58 -0
  167. package/lib/dist/features/2d/connect.d.ts +12 -0
  168. package/lib/dist/features/2d/connect.js +105 -0
  169. package/lib/dist/features/2d/constraints/constraint.d.ts +11 -0
  170. package/lib/dist/features/2d/constraints/constraint.js +49 -0
  171. package/lib/dist/features/2d/constraints/geometry-qualifier.d.ts +6 -0
  172. package/lib/dist/features/2d/constraints/geometry-qualifier.js +13 -0
  173. package/lib/dist/features/2d/constraints/outside.d.ts +3 -0
  174. package/lib/dist/features/2d/constraints/outside.js +4 -0
  175. package/lib/dist/features/2d/constraints/qualified-geometry.d.ts +16 -0
  176. package/lib/dist/features/2d/constraints/qualified-geometry.js +36 -0
  177. package/lib/dist/features/2d/extrudable-base.d.ts +15 -0
  178. package/lib/dist/features/2d/extrudable-base.js +27 -0
  179. package/lib/dist/features/2d/geometry.d.ts +20 -0
  180. package/lib/dist/features/2d/geometry.js +77 -0
  181. package/lib/dist/features/2d/hline.d.ts +16 -0
  182. package/lib/dist/features/2d/hline.js +66 -0
  183. package/lib/dist/features/2d/hmove.d.ts +14 -0
  184. package/lib/dist/features/2d/hmove.js +37 -0
  185. package/lib/dist/features/2d/line.d.ts +15 -0
  186. package/lib/dist/features/2d/line.js +59 -0
  187. package/lib/dist/features/2d/move.d.ts +15 -0
  188. package/lib/dist/features/2d/move.js +36 -0
  189. package/lib/dist/features/2d/offset.d.ts +18 -0
  190. package/lib/dist/features/2d/offset.js +117 -0
  191. package/lib/dist/features/2d/pmove.d.ts +16 -0
  192. package/lib/dist/features/2d/pmove.js +40 -0
  193. package/lib/dist/features/2d/polygon.d.ts +25 -0
  194. package/lib/dist/features/2d/polygon.js +107 -0
  195. package/lib/dist/features/2d/projection.d.ts +15 -0
  196. package/lib/dist/features/2d/projection.js +94 -0
  197. package/lib/dist/features/2d/rect.d.ts +45 -0
  198. package/lib/dist/features/2d/rect.js +262 -0
  199. package/lib/dist/features/2d/rmove.d.ts +17 -0
  200. package/lib/dist/features/2d/rmove.js +39 -0
  201. package/lib/dist/features/2d/sketch.d.ts +34 -0
  202. package/lib/dist/features/2d/sketch.js +171 -0
  203. package/lib/dist/features/2d/slot-from-edge.d.ts +19 -0
  204. package/lib/dist/features/2d/slot-from-edge.js +66 -0
  205. package/lib/dist/features/2d/slot.d.ts +24 -0
  206. package/lib/dist/features/2d/slot.js +119 -0
  207. package/lib/dist/features/2d/tarc-constrained.d.ts +20 -0
  208. package/lib/dist/features/2d/tarc-constrained.js +64 -0
  209. package/lib/dist/features/2d/tarc-to-point-tangent.d.ts +15 -0
  210. package/lib/dist/features/2d/tarc-to-point-tangent.js +86 -0
  211. package/lib/dist/features/2d/tarc-to-point.d.ts +13 -0
  212. package/lib/dist/features/2d/tarc-to-point.js +86 -0
  213. package/lib/dist/features/2d/tarc-two-circles.d.ts +18 -0
  214. package/lib/dist/features/2d/tarc-two-circles.js +61 -0
  215. package/lib/dist/features/2d/tarc-with-tangent.d.ts +17 -0
  216. package/lib/dist/features/2d/tarc-with-tangent.js +71 -0
  217. package/lib/dist/features/2d/tarc.d.ts +13 -0
  218. package/lib/dist/features/2d/tarc.js +71 -0
  219. package/lib/dist/features/2d/tcircle-constrained.d.ts +14 -0
  220. package/lib/dist/features/2d/tcircle-constrained.js +37 -0
  221. package/lib/dist/features/2d/tcircle-three-tan.d.ts +13 -0
  222. package/lib/dist/features/2d/tcircle-three-tan.js +33 -0
  223. package/lib/dist/features/2d/tcircle-two-tan.d.ts +13 -0
  224. package/lib/dist/features/2d/tcircle-two-tan.js +33 -0
  225. package/lib/dist/features/2d/tline-constrained.d.ts +27 -0
  226. package/lib/dist/features/2d/tline-constrained.js +82 -0
  227. package/lib/dist/features/2d/tline.d.ts +12 -0
  228. package/lib/dist/features/2d/tline.js +49 -0
  229. package/lib/dist/features/2d/vline.d.ts +16 -0
  230. package/lib/dist/features/2d/vline.js +65 -0
  231. package/lib/dist/features/2d/vmove.d.ts +14 -0
  232. package/lib/dist/features/2d/vmove.js +37 -0
  233. package/lib/dist/features/2d/wire.d.ts +12 -0
  234. package/lib/dist/features/2d/wire.js +76 -0
  235. package/lib/dist/features/Extrude.d.ts +1 -0
  236. package/lib/dist/features/Extrude.js +1 -0
  237. package/lib/dist/features/axis-from-edge.d.ts +15 -0
  238. package/lib/dist/features/axis-from-edge.js +82 -0
  239. package/lib/dist/features/axis-mid.d.ts +16 -0
  240. package/lib/dist/features/axis-mid.js +59 -0
  241. package/lib/dist/features/axis-renderable-base.d.ts +8 -0
  242. package/lib/dist/features/axis-renderable-base.js +12 -0
  243. package/lib/dist/features/axis.d.ts +14 -0
  244. package/lib/dist/features/axis.js +43 -0
  245. package/lib/dist/features/chamfer.d.ts +20 -0
  246. package/lib/dist/features/chamfer.js +129 -0
  247. package/lib/dist/features/color.d.ts +11 -0
  248. package/lib/dist/features/color.js +93 -0
  249. package/lib/dist/features/common.d.ts +12 -0
  250. package/lib/dist/features/common.js +70 -0
  251. package/lib/dist/features/common2d.d.ts +15 -0
  252. package/lib/dist/features/common2d.js +96 -0
  253. package/lib/dist/features/copy-circular.d.ts +23 -0
  254. package/lib/dist/features/copy-circular.js +73 -0
  255. package/lib/dist/features/copy-circular2d.d.ts +15 -0
  256. package/lib/dist/features/copy-circular2d.js +84 -0
  257. package/lib/dist/features/copy-linear.d.ts +23 -0
  258. package/lib/dist/features/copy-linear.js +101 -0
  259. package/lib/dist/features/copy-linear2d.d.ts +15 -0
  260. package/lib/dist/features/copy-linear2d.js +108 -0
  261. package/lib/dist/features/cut-base.d.ts +49 -0
  262. package/lib/dist/features/cut-base.js +312 -0
  263. package/lib/dist/features/cut-symmetric.d.ts +23 -0
  264. package/lib/dist/features/cut-symmetric.js +119 -0
  265. package/lib/dist/features/cut-two-distances.d.ts +24 -0
  266. package/lib/dist/features/cut-two-distances.js +110 -0
  267. package/lib/dist/features/cut.d.ts +27 -0
  268. package/lib/dist/features/cut.js +101 -0
  269. package/lib/dist/features/cylinder.d.ts +13 -0
  270. package/lib/dist/features/cylinder.js +33 -0
  271. package/lib/dist/features/extrude-base.d.ts +56 -0
  272. package/lib/dist/features/extrude-base.js +331 -0
  273. package/lib/dist/features/extrude-options.d.ts +8 -0
  274. package/lib/dist/features/extrude-options.js +1 -0
  275. package/lib/dist/features/extrude-symmetric.d.ts +28 -0
  276. package/lib/dist/features/extrude-symmetric.js +177 -0
  277. package/lib/dist/features/extrude-to-face.d.ts +35 -0
  278. package/lib/dist/features/extrude-to-face.js +275 -0
  279. package/lib/dist/features/extrude-two-distances.d.ts +21 -0
  280. package/lib/dist/features/extrude-two-distances.js +116 -0
  281. package/lib/dist/features/extrude.d.ts +25 -0
  282. package/lib/dist/features/extrude.js +182 -0
  283. package/lib/dist/features/fillet.d.ts +24 -0
  284. package/lib/dist/features/fillet.js +125 -0
  285. package/lib/dist/features/fillet2d.d.ts +16 -0
  286. package/lib/dist/features/fillet2d.js +98 -0
  287. package/lib/dist/features/fuse.d.ts +10 -0
  288. package/lib/dist/features/fuse.js +63 -0
  289. package/lib/dist/features/fuse2d.d.ts +13 -0
  290. package/lib/dist/features/fuse2d.js +86 -0
  291. package/lib/dist/features/infinite-extrude.d.ts +10 -0
  292. package/lib/dist/features/infinite-extrude.js +44 -0
  293. package/lib/dist/features/lazy-scene-object.d.ts +16 -0
  294. package/lib/dist/features/lazy-scene-object.js +52 -0
  295. package/lib/dist/features/lazy-vertex.d.ts +19 -0
  296. package/lib/dist/features/lazy-vertex.js +62 -0
  297. package/lib/dist/features/load.d.ts +9 -0
  298. package/lib/dist/features/load.js +31 -0
  299. package/lib/dist/features/loft.d.ts +27 -0
  300. package/lib/dist/features/loft.js +273 -0
  301. package/lib/dist/features/mirror-feature.d.ts +15 -0
  302. package/lib/dist/features/mirror-feature.js +39 -0
  303. package/lib/dist/features/mirror-shape.d.ts +14 -0
  304. package/lib/dist/features/mirror-shape.js +86 -0
  305. package/lib/dist/features/mirror-shape2d.d.ts +18 -0
  306. package/lib/dist/features/mirror-shape2d.js +110 -0
  307. package/lib/dist/features/part.d.ts +12 -0
  308. package/lib/dist/features/part.js +36 -0
  309. package/lib/dist/features/plane-from-object.d.ts +29 -0
  310. package/lib/dist/features/plane-from-object.js +103 -0
  311. package/lib/dist/features/plane-mid.d.ts +18 -0
  312. package/lib/dist/features/plane-mid.js +54 -0
  313. package/lib/dist/features/plane-renderable-base.d.ts +9 -0
  314. package/lib/dist/features/plane-renderable-base.js +15 -0
  315. package/lib/dist/features/plane.d.ts +21 -0
  316. package/lib/dist/features/plane.js +64 -0
  317. package/lib/dist/features/region2d.d.ts +25 -0
  318. package/lib/dist/features/region2d.js +185 -0
  319. package/lib/dist/features/remove.d.ts +9 -0
  320. package/lib/dist/features/remove.js +33 -0
  321. package/lib/dist/features/repeat-circular.d.ts +23 -0
  322. package/lib/dist/features/repeat-circular.js +47 -0
  323. package/lib/dist/features/repeat-circular2d.d.ts +17 -0
  324. package/lib/dist/features/repeat-circular2d.js +90 -0
  325. package/lib/dist/features/repeat-linear.d.ts +23 -0
  326. package/lib/dist/features/repeat-linear.js +52 -0
  327. package/lib/dist/features/repeat-linear2d.d.ts +17 -0
  328. package/lib/dist/features/repeat-linear2d.js +114 -0
  329. package/lib/dist/features/revolve-options.d.ts +6 -0
  330. package/lib/dist/features/revolve-options.js +1 -0
  331. package/lib/dist/features/revolve.d.ts +23 -0
  332. package/lib/dist/features/revolve.js +150 -0
  333. package/lib/dist/features/rotate.d.ts +16 -0
  334. package/lib/dist/features/rotate.js +89 -0
  335. package/lib/dist/features/rotate2d.d.ts +15 -0
  336. package/lib/dist/features/rotate2d.js +83 -0
  337. package/lib/dist/features/select.d.ts +26 -0
  338. package/lib/dist/features/select.js +113 -0
  339. package/lib/dist/features/shell.d.ts +24 -0
  340. package/lib/dist/features/shell.js +214 -0
  341. package/lib/dist/features/simple-extruder.d.ts +22 -0
  342. package/lib/dist/features/simple-extruder.js +108 -0
  343. package/lib/dist/features/sphere.d.ts +13 -0
  344. package/lib/dist/features/sphere.js +33 -0
  345. package/lib/dist/features/split.d.ts +14 -0
  346. package/lib/dist/features/split.js +74 -0
  347. package/lib/dist/features/split2d.d.ts +13 -0
  348. package/lib/dist/features/split2d.js +69 -0
  349. package/lib/dist/features/state-scene-object.d.ts +15 -0
  350. package/lib/dist/features/state-scene-object.js +44 -0
  351. package/lib/dist/features/state-select.d.ts +21 -0
  352. package/lib/dist/features/state-select.js +73 -0
  353. package/lib/dist/features/static-scene-object.d.ts +10 -0
  354. package/lib/dist/features/static-scene-object.js +21 -0
  355. package/lib/dist/features/subtract.d.ts +13 -0
  356. package/lib/dist/features/subtract.js +56 -0
  357. package/lib/dist/features/sweep.d.ts +22 -0
  358. package/lib/dist/features/sweep.js +129 -0
  359. package/lib/dist/features/translate.d.ts +17 -0
  360. package/lib/dist/features/translate.js +76 -0
  361. package/lib/dist/features/translate2d.d.ts +16 -0
  362. package/lib/dist/features/translate2d.js +61 -0
  363. package/lib/dist/features/trim2d.d.ts +15 -0
  364. package/lib/dist/features/trim2d.js +154 -0
  365. package/lib/dist/filters/all-filter.d.ts +8 -0
  366. package/lib/dist/filters/all-filter.js +12 -0
  367. package/lib/dist/filters/edge/at-index.d.ts +21 -0
  368. package/lib/dist/filters/edge/at-index.js +82 -0
  369. package/lib/dist/filters/edge/circle-filter.d.ts +17 -0
  370. package/lib/dist/filters/edge/circle-filter.js +34 -0
  371. package/lib/dist/filters/edge/curve-filter.d.ts +17 -0
  372. package/lib/dist/filters/edge/curve-filter.js +34 -0
  373. package/lib/dist/filters/edge/edge-filter.d.ts +22 -0
  374. package/lib/dist/filters/edge/edge-filter.js +169 -0
  375. package/lib/dist/filters/edge/line-filter.d.ts +14 -0
  376. package/lib/dist/filters/edge/line-filter.js +27 -0
  377. package/lib/dist/filters/edge/on-plane.d.ts +20 -0
  378. package/lib/dist/filters/edge/on-plane.js +70 -0
  379. package/lib/dist/filters/edge/parallel.d.ts +18 -0
  380. package/lib/dist/filters/edge/parallel.js +41 -0
  381. package/lib/dist/filters/edge/vertical-plane.d.ts +18 -0
  382. package/lib/dist/filters/edge/vertical-plane.js +41 -0
  383. package/lib/dist/filters/face/at-index.d.ts +21 -0
  384. package/lib/dist/filters/face/at-index.js +89 -0
  385. package/lib/dist/filters/face/circle-filter.d.ts +17 -0
  386. package/lib/dist/filters/face/circle-filter.js +34 -0
  387. package/lib/dist/filters/face/cone-filter.d.ts +15 -0
  388. package/lib/dist/filters/face/cone-filter.js +30 -0
  389. package/lib/dist/filters/face/cylinder-curve.d.ts +17 -0
  390. package/lib/dist/filters/face/cylinder-curve.js +34 -0
  391. package/lib/dist/filters/face/cylinder.d.ts +17 -0
  392. package/lib/dist/filters/face/cylinder.js +34 -0
  393. package/lib/dist/filters/face/face-filter.d.ts +21 -0
  394. package/lib/dist/filters/face/face-filter.js +134 -0
  395. package/lib/dist/filters/face/on-plane.d.ts +18 -0
  396. package/lib/dist/filters/face/on-plane.js +41 -0
  397. package/lib/dist/filters/face/parallel.d.ts +18 -0
  398. package/lib/dist/filters/face/parallel.js +41 -0
  399. package/lib/dist/filters/filter-base.d.ts +8 -0
  400. package/lib/dist/filters/filter-base.js +2 -0
  401. package/lib/dist/filters/filter-builder-base.d.ts +10 -0
  402. package/lib/dist/filters/filter-builder-base.js +31 -0
  403. package/lib/dist/filters/filter.d.ts +8 -0
  404. package/lib/dist/filters/filter.js +33 -0
  405. package/lib/dist/filters/index.d.ts +4 -0
  406. package/lib/dist/filters/index.js +8 -0
  407. package/lib/dist/filters/near-point-filter.d.ts +11 -0
  408. package/lib/dist/filters/near-point-filter.js +33 -0
  409. package/lib/dist/helpers/clone-transform.d.ts +3 -0
  410. package/lib/dist/helpers/clone-transform.js +46 -0
  411. package/lib/dist/helpers/cut-helpers.d.ts +13 -0
  412. package/lib/dist/helpers/cut-helpers.js +79 -0
  413. package/lib/dist/helpers/math-helpers.d.ts +2 -0
  414. package/lib/dist/helpers/math-helpers.js +6 -0
  415. package/lib/dist/helpers/normalize.d.ts +12 -0
  416. package/lib/dist/helpers/normalize.js +118 -0
  417. package/lib/dist/helpers/resolve-filters.d.ts +6 -0
  418. package/lib/dist/helpers/resolve-filters.js +25 -0
  419. package/lib/dist/helpers/resolve.d.ts +8 -0
  420. package/lib/dist/helpers/resolve.js +45 -0
  421. package/lib/dist/helpers/scene-helpers.d.ts +17 -0
  422. package/lib/dist/helpers/scene-helpers.js +67 -0
  423. package/lib/dist/helpers/types.d.ts +27 -0
  424. package/lib/dist/helpers/types.js +1 -0
  425. package/lib/dist/index.d.ts +37 -0
  426. package/lib/dist/index.js +75 -0
  427. package/lib/dist/io/file-export.d.ts +30 -0
  428. package/lib/dist/io/file-export.js +45 -0
  429. package/lib/dist/io/file-import.d.ts +8 -0
  430. package/lib/dist/io/file-import.js +81 -0
  431. package/lib/dist/load.d.ts +1 -0
  432. package/lib/dist/load.js +1 -0
  433. package/lib/dist/math/axis.d.ts +72 -0
  434. package/lib/dist/math/axis.js +157 -0
  435. package/lib/dist/math/axis.test.d.ts +1 -0
  436. package/lib/dist/math/axis.test.js +287 -0
  437. package/lib/dist/math/convert.d.ts +2 -0
  438. package/lib/dist/math/convert.js +1 -0
  439. package/lib/dist/math/coordinate-system.d.ts +43 -0
  440. package/lib/dist/math/coordinate-system.js +140 -0
  441. package/lib/dist/math/coordinate-system.test.d.ts +1 -0
  442. package/lib/dist/math/coordinate-system.test.js +308 -0
  443. package/lib/dist/math/index.d.ts +8 -0
  444. package/lib/dist/math/index.js +8 -0
  445. package/lib/dist/math/matrix4.d.ts +53 -0
  446. package/lib/dist/math/matrix4.js +336 -0
  447. package/lib/dist/math/matrix4.test.d.ts +1 -0
  448. package/lib/dist/math/matrix4.test.js +357 -0
  449. package/lib/dist/math/plane.d.ts +60 -0
  450. package/lib/dist/math/plane.js +243 -0
  451. package/lib/dist/math/plane.test.d.ts +1 -0
  452. package/lib/dist/math/plane.test.js +398 -0
  453. package/lib/dist/math/point.d.ts +73 -0
  454. package/lib/dist/math/point.js +227 -0
  455. package/lib/dist/math/point.test.d.ts +1 -0
  456. package/lib/dist/math/point.test.js +385 -0
  457. package/lib/dist/math/quaternion.d.ts +37 -0
  458. package/lib/dist/math/quaternion.js +234 -0
  459. package/lib/dist/math/quaternion.test.d.ts +1 -0
  460. package/lib/dist/math/quaternion.test.js +278 -0
  461. package/lib/dist/math/vector3d.d.ts +43 -0
  462. package/lib/dist/math/vector3d.js +143 -0
  463. package/lib/dist/math/vector3d.test.d.ts +1 -0
  464. package/lib/dist/math/vector3d.test.js +276 -0
  465. package/lib/dist/oc/boolean-ops.d.ts +36 -0
  466. package/lib/dist/oc/boolean-ops.js +337 -0
  467. package/lib/dist/oc/constraint-resolver.d.ts +7 -0
  468. package/lib/dist/oc/constraint-resolver.js +31 -0
  469. package/lib/dist/oc/constraints/constraint-helpers.d.ts +33 -0
  470. package/lib/dist/oc/constraints/constraint-helpers.js +252 -0
  471. package/lib/dist/oc/constraints/constraint-solver-adaptor.d.ts +22 -0
  472. package/lib/dist/oc/constraints/constraint-solver-adaptor.js +62 -0
  473. package/lib/dist/oc/constraints/constraint-solver.d.ts +18 -0
  474. package/lib/dist/oc/constraints/constraint-solver.js +2 -0
  475. package/lib/dist/oc/constraints/create-solver.d.ts +2 -0
  476. package/lib/dist/oc/constraints/create-solver.js +6 -0
  477. package/lib/dist/oc/constraints/curve/curve-constraint-solver.d.ts +13 -0
  478. package/lib/dist/oc/constraints/curve/curve-constraint-solver.js +18 -0
  479. package/lib/dist/oc/constraints/curve/tangent-circle-solver.d.ts +16 -0
  480. package/lib/dist/oc/constraints/curve/tangent-circle-solver.js +112 -0
  481. package/lib/dist/oc/constraints/curve/tangent-line-solver.d.ts +19 -0
  482. package/lib/dist/oc/constraints/curve/tangent-line-solver.js +83 -0
  483. package/lib/dist/oc/constraints/curve-constraint-solver.d.ts +1 -0
  484. package/lib/dist/oc/constraints/curve-constraint-solver.js +2 -0
  485. package/lib/dist/oc/constraints/geometric/geometric-constraint-solver.d.ts +12 -0
  486. package/lib/dist/oc/constraints/geometric/geometric-constraint-solver.js +17 -0
  487. package/lib/dist/oc/constraints/geometric/tangent-circle-solver.d.ts +21 -0
  488. package/lib/dist/oc/constraints/geometric/tangent-circle-solver.js +220 -0
  489. package/lib/dist/oc/constraints/geometric/tangent-line-solver.d.ts +19 -0
  490. package/lib/dist/oc/constraints/geometric/tangent-line-solver.js +92 -0
  491. package/lib/dist/oc/constraints/geometric-constraint-solver.d.ts +1 -0
  492. package/lib/dist/oc/constraints/geometric-constraint-solver.js +5 -0
  493. package/lib/dist/oc/convert.d.ts +42 -0
  494. package/lib/dist/oc/convert.js +231 -0
  495. package/lib/dist/oc/edge-ops.d.ts +37 -0
  496. package/lib/dist/oc/edge-ops.js +306 -0
  497. package/lib/dist/oc/edge-props.d.ts +11 -0
  498. package/lib/dist/oc/edge-props.js +45 -0
  499. package/lib/dist/oc/edge-query.d.ts +44 -0
  500. package/lib/dist/oc/edge-query.js +235 -0
  501. package/lib/dist/oc/explorer.d.ts +34 -0
  502. package/lib/dist/oc/explorer.js +179 -0
  503. package/lib/dist/oc/extrude-ops.d.ts +22 -0
  504. package/lib/dist/oc/extrude-ops.js +149 -0
  505. package/lib/dist/oc/face-maker.d.ts +14 -0
  506. package/lib/dist/oc/face-maker.js +191 -0
  507. package/lib/dist/oc/face-maker2.d.ts +10 -0
  508. package/lib/dist/oc/face-maker2.js +139 -0
  509. package/lib/dist/oc/face-ops.d.ts +28 -0
  510. package/lib/dist/oc/face-ops.js +252 -0
  511. package/lib/dist/oc/face-props.d.ts +12 -0
  512. package/lib/dist/oc/face-props.js +81 -0
  513. package/lib/dist/oc/face-query.d.ts +35 -0
  514. package/lib/dist/oc/face-query.js +341 -0
  515. package/lib/dist/oc/fillet-ops.d.ts +13 -0
  516. package/lib/dist/oc/fillet-ops.js +153 -0
  517. package/lib/dist/oc/geometry.d.ts +22 -0
  518. package/lib/dist/oc/geometry.js +231 -0
  519. package/lib/dist/oc/hit-test.d.ts +11 -0
  520. package/lib/dist/oc/hit-test.js +85 -0
  521. package/lib/dist/oc/index.d.ts +24 -0
  522. package/lib/dist/oc/index.js +21 -0
  523. package/lib/dist/oc/init.d.ts +3 -0
  524. package/lib/dist/oc/init.js +17 -0
  525. package/lib/dist/oc/intersection.d.ts +10 -0
  526. package/lib/dist/oc/intersection.js +107 -0
  527. package/lib/dist/oc/io.d.ts +49 -0
  528. package/lib/dist/oc/io.js +417 -0
  529. package/lib/dist/oc/loft-ops.d.ts +5 -0
  530. package/lib/dist/oc/loft-ops.js +26 -0
  531. package/lib/dist/oc/measure.d.ts +21 -0
  532. package/lib/dist/oc/measure.js +256 -0
  533. package/lib/dist/oc/mesh.d.ts +15 -0
  534. package/lib/dist/oc/mesh.js +110 -0
  535. package/lib/dist/oc/primitives.d.ts +5 -0
  536. package/lib/dist/oc/primitives.js +19 -0
  537. package/lib/dist/oc/props.d.ts +13 -0
  538. package/lib/dist/oc/props.js +18 -0
  539. package/lib/dist/oc/shape-ops.d.ts +34 -0
  540. package/lib/dist/oc/shape-ops.js +208 -0
  541. package/lib/dist/oc/shell-ops.d.ts +5 -0
  542. package/lib/dist/oc/shell-ops.js +25 -0
  543. package/lib/dist/oc/sweep-ops.d.ts +12 -0
  544. package/lib/dist/oc/sweep-ops.js +39 -0
  545. package/lib/dist/oc/tangent-circle-solver.d.ts +17 -0
  546. package/lib/dist/oc/tangent-circle-solver.js +72 -0
  547. package/lib/dist/oc/tangent-line-solver.d.ts +17 -0
  548. package/lib/dist/oc/tangent-line-solver.js +83 -0
  549. package/lib/dist/oc/tangent-solver.d.ts +14 -0
  550. package/lib/dist/oc/tangent-solver.js +199 -0
  551. package/lib/dist/oc/vertex-ops.d.ts +11 -0
  552. package/lib/dist/oc/vertex-ops.js +39 -0
  553. package/lib/dist/oc/wire-ops.d.ts +21 -0
  554. package/lib/dist/oc/wire-ops.js +176 -0
  555. package/lib/dist/rendering/builder-context.d.ts +16 -0
  556. package/lib/dist/rendering/builder-context.js +63 -0
  557. package/lib/dist/rendering/mesh-builder.d.ts +5 -0
  558. package/lib/dist/rendering/mesh-builder.js +43 -0
  559. package/lib/dist/rendering/render-edge.d.ts +3 -0
  560. package/lib/dist/rendering/render-edge.js +4 -0
  561. package/lib/dist/rendering/render-face.d.ts +2 -0
  562. package/lib/dist/rendering/render-face.js +5 -0
  563. package/lib/dist/rendering/render-solid.d.ts +3 -0
  564. package/lib/dist/rendering/render-solid.js +61 -0
  565. package/lib/dist/rendering/render-wire.d.ts +6 -0
  566. package/lib/dist/rendering/render-wire.js +27 -0
  567. package/lib/dist/rendering/render.d.ts +3 -0
  568. package/lib/dist/rendering/render.js +183 -0
  569. package/lib/dist/rendering/scene-compare.d.ts +4 -0
  570. package/lib/dist/rendering/scene-compare.js +41 -0
  571. package/lib/dist/rendering/scene.d.ts +81 -0
  572. package/lib/dist/rendering/scene.js +206 -0
  573. package/lib/dist/scene-manager.d.ts +32 -0
  574. package/lib/dist/scene-manager.js +120 -0
  575. package/lib/dist/tests/extrude.test.d.ts +1 -0
  576. package/lib/dist/tests/extrude.test.js +48 -0
  577. package/lib/dist/tests/features/2d/arc.test.d.ts +1 -0
  578. package/lib/dist/tests/features/2d/arc.test.js +40 -0
  579. package/lib/dist/tests/features/2d/circle.test.d.ts +1 -0
  580. package/lib/dist/tests/features/2d/circle.test.js +64 -0
  581. package/lib/dist/tests/features/2d/constrained.test.d.ts +1 -0
  582. package/lib/dist/tests/features/2d/constrained.test.js +202 -0
  583. package/lib/dist/tests/features/2d/line.test.d.ts +1 -0
  584. package/lib/dist/tests/features/2d/line.test.js +86 -0
  585. package/lib/dist/tests/features/2d/move.test.d.ts +1 -0
  586. package/lib/dist/tests/features/2d/move.test.js +74 -0
  587. package/lib/dist/tests/features/2d/offset.test.d.ts +1 -0
  588. package/lib/dist/tests/features/2d/offset.test.js +111 -0
  589. package/lib/dist/tests/features/2d/pmove.test.d.ts +1 -0
  590. package/lib/dist/tests/features/2d/pmove.test.js +43 -0
  591. package/lib/dist/tests/features/2d/polygon.test.d.ts +1 -0
  592. package/lib/dist/tests/features/2d/polygon.test.js +150 -0
  593. package/lib/dist/tests/features/2d/project.test.d.ts +1 -0
  594. package/lib/dist/tests/features/2d/project.test.js +22 -0
  595. package/lib/dist/tests/features/2d/rect.test.d.ts +1 -0
  596. package/lib/dist/tests/features/2d/rect.test.js +66 -0
  597. package/lib/dist/tests/features/2d/rmove.test.d.ts +1 -0
  598. package/lib/dist/tests/features/2d/rmove.test.js +29 -0
  599. package/lib/dist/tests/features/2d/slot-from-edge.test.d.ts +1 -0
  600. package/lib/dist/tests/features/2d/slot-from-edge.test.js +35 -0
  601. package/lib/dist/tests/features/2d/slot.test.d.ts +1 -0
  602. package/lib/dist/tests/features/2d/slot.test.js +44 -0
  603. package/lib/dist/tests/features/2d/tarc.test.d.ts +1 -0
  604. package/lib/dist/tests/features/2d/tarc.test.js +237 -0
  605. package/lib/dist/tests/features/2d/tcircle.test.d.ts +1 -0
  606. package/lib/dist/tests/features/2d/tcircle.test.js +28 -0
  607. package/lib/dist/tests/features/2d/tline.test.d.ts +1 -0
  608. package/lib/dist/tests/features/2d/tline.test.js +34 -0
  609. package/lib/dist/tests/features/axis.test.d.ts +1 -0
  610. package/lib/dist/tests/features/axis.test.js +143 -0
  611. package/lib/dist/tests/features/chamfer.test.d.ts +1 -0
  612. package/lib/dist/tests/features/chamfer.test.js +159 -0
  613. package/lib/dist/tests/features/color.test.d.ts +1 -0
  614. package/lib/dist/tests/features/color.test.js +96 -0
  615. package/lib/dist/tests/features/common2d.test.d.ts +1 -0
  616. package/lib/dist/tests/features/common2d.test.js +113 -0
  617. package/lib/dist/tests/features/copy-circular-2d.test.d.ts +1 -0
  618. package/lib/dist/tests/features/copy-circular-2d.test.js +40 -0
  619. package/lib/dist/tests/features/copy-circular.test.d.ts +1 -0
  620. package/lib/dist/tests/features/copy-circular.test.js +44 -0
  621. package/lib/dist/tests/features/copy-linear-2d.test.d.ts +1 -0
  622. package/lib/dist/tests/features/copy-linear-2d.test.js +35 -0
  623. package/lib/dist/tests/features/copy-linear.test.d.ts +1 -0
  624. package/lib/dist/tests/features/copy-linear.test.js +95 -0
  625. package/lib/dist/tests/features/copy.test.d.ts +1 -0
  626. package/lib/dist/tests/features/copy.test.js +158 -0
  627. package/lib/dist/tests/features/cut-symmetric.test.d.ts +1 -0
  628. package/lib/dist/tests/features/cut-symmetric.test.js +120 -0
  629. package/lib/dist/tests/features/cut-two-distances.test.d.ts +1 -0
  630. package/lib/dist/tests/features/cut-two-distances.test.js +125 -0
  631. package/lib/dist/tests/features/cut.test.d.ts +1 -0
  632. package/lib/dist/tests/features/cut.test.js +311 -0
  633. package/lib/dist/tests/features/dispose.test.d.ts +1 -0
  634. package/lib/dist/tests/features/dispose.test.js +189 -0
  635. package/lib/dist/tests/features/extrude-symmetric.test.d.ts +1 -0
  636. package/lib/dist/tests/features/extrude-symmetric.test.js +240 -0
  637. package/lib/dist/tests/features/extrude-to-face.test.d.ts +1 -0
  638. package/lib/dist/tests/features/extrude-to-face.test.js +256 -0
  639. package/lib/dist/tests/features/extrude-two-distances.test.d.ts +1 -0
  640. package/lib/dist/tests/features/extrude-two-distances.test.js +264 -0
  641. package/lib/dist/tests/features/extrude.test.d.ts +1 -0
  642. package/lib/dist/tests/features/extrude.test.js +640 -0
  643. package/lib/dist/tests/features/fillet.test.d.ts +1 -0
  644. package/lib/dist/tests/features/fillet.test.js +163 -0
  645. package/lib/dist/tests/features/fillet2d.test.d.ts +1 -0
  646. package/lib/dist/tests/features/fillet2d.test.js +69 -0
  647. package/lib/dist/tests/features/fuse.test.d.ts +1 -0
  648. package/lib/dist/tests/features/fuse.test.js +122 -0
  649. package/lib/dist/tests/features/fuse2d.test.d.ts +1 -0
  650. package/lib/dist/tests/features/fuse2d.test.js +80 -0
  651. package/lib/dist/tests/features/loft.test.d.ts +1 -0
  652. package/lib/dist/tests/features/loft.test.js +283 -0
  653. package/lib/dist/tests/features/mirror.test.d.ts +1 -0
  654. package/lib/dist/tests/features/mirror.test.js +112 -0
  655. package/lib/dist/tests/features/mirror2d.test.d.ts +1 -0
  656. package/lib/dist/tests/features/mirror2d.test.js +75 -0
  657. package/lib/dist/tests/features/part-pick.test.d.ts +1 -0
  658. package/lib/dist/tests/features/part-pick.test.js +73 -0
  659. package/lib/dist/tests/features/part-repeat.test.d.ts +1 -0
  660. package/lib/dist/tests/features/part-repeat.test.js +109 -0
  661. package/lib/dist/tests/features/part.test.d.ts +1 -0
  662. package/lib/dist/tests/features/part.test.js +356 -0
  663. package/lib/dist/tests/features/plane.test.d.ts +1 -0
  664. package/lib/dist/tests/features/plane.test.js +154 -0
  665. package/lib/dist/tests/features/repeat-circular.test.d.ts +1 -0
  666. package/lib/dist/tests/features/repeat-circular.test.js +114 -0
  667. package/lib/dist/tests/features/repeat-linear.test.d.ts +1 -0
  668. package/lib/dist/tests/features/repeat-linear.test.js +138 -0
  669. package/lib/dist/tests/features/revolve.test.d.ts +1 -0
  670. package/lib/dist/tests/features/revolve.test.js +205 -0
  671. package/lib/dist/tests/features/rotate.test.d.ts +1 -0
  672. package/lib/dist/tests/features/rotate.test.js +133 -0
  673. package/lib/dist/tests/features/rotate2d.test.d.ts +1 -0
  674. package/lib/dist/tests/features/rotate2d.test.js +74 -0
  675. package/lib/dist/tests/features/select.test.d.ts +1 -0
  676. package/lib/dist/tests/features/select.test.js +337 -0
  677. package/lib/dist/tests/features/shell.test.d.ts +1 -0
  678. package/lib/dist/tests/features/shell.test.js +230 -0
  679. package/lib/dist/tests/features/subtract.test.d.ts +1 -0
  680. package/lib/dist/tests/features/subtract.test.js +103 -0
  681. package/lib/dist/tests/features/sweep.test.d.ts +1 -0
  682. package/lib/dist/tests/features/sweep.test.js +312 -0
  683. package/lib/dist/tests/features/translate.test.d.ts +1 -0
  684. package/lib/dist/tests/features/translate.test.js +117 -0
  685. package/lib/dist/tests/global-setup.d.ts +1 -0
  686. package/lib/dist/tests/global-setup.js +5 -0
  687. package/lib/dist/tests/math/axis.test.d.ts +1 -0
  688. package/lib/dist/tests/math/axis.test.js +287 -0
  689. package/lib/dist/tests/math/coordinate-system.test.d.ts +1 -0
  690. package/lib/dist/tests/math/coordinate-system.test.js +308 -0
  691. package/lib/dist/tests/math/matrix4.test.d.ts +1 -0
  692. package/lib/dist/tests/math/matrix4.test.js +357 -0
  693. package/lib/dist/tests/math/plane.test.d.ts +1 -0
  694. package/lib/dist/tests/math/plane.test.js +398 -0
  695. package/lib/dist/tests/math/point.test.d.ts +1 -0
  696. package/lib/dist/tests/math/point.test.js +385 -0
  697. package/lib/dist/tests/math/quaternion.test.d.ts +1 -0
  698. package/lib/dist/tests/math/quaternion.test.js +278 -0
  699. package/lib/dist/tests/math/vector3d.test.d.ts +1 -0
  700. package/lib/dist/tests/math/vector3d.test.js +276 -0
  701. package/lib/dist/tests/setup.d.ts +5 -0
  702. package/lib/dist/tests/setup.js +14 -0
  703. package/lib/dist/tests/utils.d.ts +12 -0
  704. package/lib/dist/tests/utils.js +36 -0
  705. package/lib/dist/tsconfig.tsbuildinfo +1 -0
  706. package/package.json +83 -0
  707. package/server/dist/fluidcad-server.d.ts +32 -0
  708. package/server/dist/fluidcad-server.js +150 -0
  709. package/server/dist/index.d.ts +1 -0
  710. package/server/dist/index.js +290 -0
  711. package/server/dist/routes/actions.d.ts +3 -0
  712. package/server/dist/routes/actions.js +100 -0
  713. package/server/dist/routes/export.d.ts +3 -0
  714. package/server/dist/routes/export.js +55 -0
  715. package/server/dist/routes/properties.d.ts +3 -0
  716. package/server/dist/routes/properties.js +46 -0
  717. package/server/dist/routes/screenshot.d.ts +2 -0
  718. package/server/dist/routes/screenshot.js +76 -0
  719. package/server/dist/vite-manager.d.ts +10 -0
  720. package/server/dist/vite-manager.js +64 -0
  721. package/server/dist/ws-protocol.d.ts +138 -0
  722. package/server/dist/ws-protocol.js +4 -0
  723. package/ui/dist/assets/index-DXW2yo2v.css +2 -0
  724. package/ui/dist/assets/index-qqJ_mWi7.js +4732 -0
  725. package/ui/dist/icons/aline.png +0 -0
  726. package/ui/dist/icons/arc.png +0 -0
  727. package/ui/dist/icons/aslot.png +0 -0
  728. package/ui/dist/icons/axis.png +0 -0
  729. package/ui/dist/icons/box.png +0 -0
  730. package/ui/dist/icons/chamfer.png +0 -0
  731. package/ui/dist/icons/circle.png +0 -0
  732. package/ui/dist/icons/color.png +0 -0
  733. package/ui/dist/icons/common.png +0 -0
  734. package/ui/dist/icons/cone.png +0 -0
  735. package/ui/dist/icons/connect.png +0 -0
  736. package/ui/dist/icons/copy-circular.png +0 -0
  737. package/ui/dist/icons/copy-circular2d.png +0 -0
  738. package/ui/dist/icons/copy-linear.png +0 -0
  739. package/ui/dist/icons/copy-linear2d.png +0 -0
  740. package/ui/dist/icons/cut.png +0 -0
  741. package/ui/dist/icons/cylinder.png +0 -0
  742. package/ui/dist/icons/edge.png +0 -0
  743. package/ui/dist/icons/extrude.png +0 -0
  744. package/ui/dist/icons/fillet.png +0 -0
  745. package/ui/dist/icons/fillet2d.png +0 -0
  746. package/ui/dist/icons/fuse.png +0 -0
  747. package/ui/dist/icons/hline.png +0 -0
  748. package/ui/dist/icons/hole.png +0 -0
  749. package/ui/dist/icons/line.png +0 -0
  750. package/ui/dist/icons/load.png +0 -0
  751. package/ui/dist/icons/mirror.png +0 -0
  752. package/ui/dist/icons/mirror2d.png +0 -0
  753. package/ui/dist/icons/move.png +0 -0
  754. package/ui/dist/icons/plane.png +0 -0
  755. package/ui/dist/icons/polygon.png +0 -0
  756. package/ui/dist/icons/rect.png +0 -0
  757. package/ui/dist/icons/revolve.png +0 -0
  758. package/ui/dist/icons/rotate.png +0 -0
  759. package/ui/dist/icons/rotate2d.png +0 -0
  760. package/ui/dist/icons/select.png +0 -0
  761. package/ui/dist/icons/shell.png +0 -0
  762. package/ui/dist/icons/sketch.png +0 -0
  763. package/ui/dist/icons/slot.png +0 -0
  764. package/ui/dist/icons/solid.png +0 -0
  765. package/ui/dist/icons/sphere.png +0 -0
  766. package/ui/dist/icons/subtract.png +0 -0
  767. package/ui/dist/icons/tarc.png +0 -0
  768. package/ui/dist/icons/tline.png +0 -0
  769. package/ui/dist/icons/translate.png +0 -0
  770. package/ui/dist/icons/vline.png +0 -0
  771. package/ui/dist/icons/wire.png +0 -0
  772. package/ui/dist/index.html +13 -0
  773. package/ui/dist/logo.png +0 -0
@@ -0,0 +1,231 @@
1
+ import { getOC } from "./init.js";
2
+ import { Point, Point2D } from "../math/point.js";
3
+ import { Vector3d } from "../math/vector3d.js";
4
+ import { Axis } from "../math/axis.js";
5
+ import { Plane } from "../math/plane.js";
6
+ import { CoordinateSystem } from "../math/coordinate-system.js";
7
+ import { Matrix4 } from "../math/matrix4.js";
8
+ import { Quaternion } from "../math/quaternion.js";
9
+ export class Convert {
10
+ static toGpPnt(point) {
11
+ const oc = getOC();
12
+ const result = new oc.gp_Pnt(point.x, point.y, point.z);
13
+ return [result, () => result.delete()];
14
+ }
15
+ static toPoint(gpPnt, deleteSource = false) {
16
+ const result = new Point(gpPnt.X(), gpPnt.Y(), gpPnt.Z());
17
+ if (deleteSource) {
18
+ gpPnt.delete();
19
+ }
20
+ return result;
21
+ }
22
+ static toGpPnt2d(point) {
23
+ const oc = getOC();
24
+ const result = new oc.gp_Pnt2d(point.x, point.y);
25
+ return [result, () => result.delete()];
26
+ }
27
+ static toPoint2D(gpPnt2d, deleteSource = false) {
28
+ const result = new Point2D(gpPnt2d.X(), gpPnt2d.Y());
29
+ if (deleteSource) {
30
+ gpPnt2d.delete();
31
+ }
32
+ return result;
33
+ }
34
+ static toGpPntFrom2D(point) {
35
+ const oc = getOC();
36
+ const result = new oc.gp_Pnt(point.x, point.y, 0);
37
+ return [result, () => result.delete()];
38
+ }
39
+ static toPoint2DFromGpPnt(gpPnt, deleteSource = false) {
40
+ const result = new Point2D(gpPnt.X(), gpPnt.Y());
41
+ if (deleteSource) {
42
+ gpPnt.delete();
43
+ }
44
+ return result;
45
+ }
46
+ static toGpVec(vector) {
47
+ const oc = getOC();
48
+ const result = new oc.gp_Vec(vector.x, vector.y, vector.z);
49
+ return [result, () => result.delete()];
50
+ }
51
+ static toVector3d(gpVec, deleteSource = false) {
52
+ const result = new Vector3d(gpVec.X(), gpVec.Y(), gpVec.Z());
53
+ if (deleteSource) {
54
+ gpVec.delete();
55
+ }
56
+ return result;
57
+ }
58
+ static toGpDir(vector) {
59
+ const oc = getOC();
60
+ const result = new oc.gp_Dir(vector.x, vector.y, vector.z);
61
+ return [result, () => result.delete()];
62
+ }
63
+ static toVector3dFromGpDir(gpDir, deleteSource = false) {
64
+ const result = new Vector3d(gpDir.X(), gpDir.Y(), gpDir.Z());
65
+ if (deleteSource) {
66
+ gpDir.delete();
67
+ }
68
+ return result;
69
+ }
70
+ static toGpVecFromPoint(point) {
71
+ const oc = getOC();
72
+ const result = new oc.gp_Vec(point.x, point.y, point.z);
73
+ return [result, () => result.delete()];
74
+ }
75
+ static toVector3dFromGpPnt(gpPnt, deleteSource = false) {
76
+ const result = new Vector3d(gpPnt.X(), gpPnt.Y(), gpPnt.Z());
77
+ if (deleteSource) {
78
+ gpPnt.delete();
79
+ }
80
+ return result;
81
+ }
82
+ static toGpAx1(axis) {
83
+ const oc = getOC();
84
+ const [pnt, disposePnt] = Convert.toGpPnt(axis.origin);
85
+ const [dir, disposeDir] = Convert.toGpDir(axis.direction);
86
+ const result = new oc.gp_Ax1(pnt, dir);
87
+ return [result, () => { result.delete(); disposePnt(); disposeDir(); }];
88
+ }
89
+ static toAxis(gpAx1, deleteSource = false) {
90
+ const origin = Convert.toPoint(gpAx1.Location(), true);
91
+ const direction = Convert.toVector3dFromGpDir(gpAx1.Direction(), true);
92
+ if (deleteSource) {
93
+ gpAx1.delete();
94
+ }
95
+ return new Axis(origin, direction);
96
+ }
97
+ static toGpAx2(cs) {
98
+ const oc = getOC();
99
+ const [pnt, disposePnt] = Convert.toGpPnt(cs.origin);
100
+ const [mainDir, disposeMainDir] = Convert.toGpDir(cs.mainDirection);
101
+ const [xDir, disposeXDir] = Convert.toGpDir(cs.xDirection);
102
+ const result = new oc.gp_Ax2(pnt, mainDir, xDir);
103
+ return [result, () => { result.delete(); disposePnt(); disposeMainDir(); disposeXDir(); }];
104
+ }
105
+ static toCoordinateSystem(gpAx2, deleteSource = false) {
106
+ const origin = Convert.toPoint(gpAx2.Location(), true);
107
+ const mainDirection = Convert.toVector3dFromGpDir(gpAx2.Direction(), true);
108
+ const xDirection = Convert.toVector3dFromGpDir(gpAx2.XDirection(), true);
109
+ if (deleteSource) {
110
+ gpAx2.delete();
111
+ }
112
+ return new CoordinateSystem(origin, mainDirection, xDirection);
113
+ }
114
+ static toGpAx3(cs) {
115
+ const oc = getOC();
116
+ const [pnt, disposePnt] = Convert.toGpPnt(cs.origin);
117
+ const [mainDir, disposeMainDir] = Convert.toGpDir(cs.mainDirection);
118
+ const [xDir, disposeXDir] = Convert.toGpDir(cs.xDirection);
119
+ const result = new oc.gp_Ax3(pnt, mainDir, xDir);
120
+ return [result, () => { result.delete(); disposePnt(); disposeMainDir(); disposeXDir(); }];
121
+ }
122
+ static toCoordinateSystemFromGpAx3(gpAx3, deleteSource = false) {
123
+ const origin = Convert.toPoint(gpAx3.Location(), true);
124
+ const mainDirection = Convert.toVector3dFromGpDir(gpAx3.Direction(), true);
125
+ const xDirection = Convert.toVector3dFromGpDir(gpAx3.XDirection(), true);
126
+ if (deleteSource) {
127
+ gpAx3.delete();
128
+ }
129
+ return new CoordinateSystem(origin, mainDirection, xDirection);
130
+ }
131
+ static toGpPln(plane) {
132
+ const oc = getOC();
133
+ const [pnt, disposePnt] = Convert.toGpPnt(plane.origin);
134
+ const [normalDir, disposeNormalDir] = Convert.toGpDir(plane.normal);
135
+ const [xDir, disposeXDir] = Convert.toGpDir(plane.xDirection);
136
+ const ax3 = new oc.gp_Ax3(pnt, normalDir, xDir);
137
+ const result = new oc.gp_Pln(ax3);
138
+ return [result, () => { result.delete(); ax3.delete(); disposePnt(); disposeNormalDir(); disposeXDir(); }];
139
+ }
140
+ static toPlane(gpPln, deleteSource = false) {
141
+ const origin = Convert.toPoint(gpPln.Location(), true);
142
+ const xDirection = Convert.toVector3dFromGpDir(gpPln.XAxis().Direction(), true);
143
+ const normal = Convert.toVector3dFromGpDir(gpPln.Axis().Direction(), true);
144
+ if (deleteSource) {
145
+ gpPln.delete();
146
+ }
147
+ return new Plane(origin, xDirection, normal);
148
+ }
149
+ static toGpTrsf(matrix) {
150
+ const oc = getOC();
151
+ const trsf = new oc.gp_Trsf();
152
+ const m = matrix.elements;
153
+ trsf.SetValues(m[0], m[4], m[8], m[12], m[1], m[5], m[9], m[13], m[2], m[6], m[10], m[14]);
154
+ return [trsf, () => trsf.delete()];
155
+ }
156
+ static toMatrix4(gpTrsf, deleteSource = false) {
157
+ const elements = [
158
+ gpTrsf.Value(1, 1), gpTrsf.Value(2, 1), gpTrsf.Value(3, 1), 0,
159
+ gpTrsf.Value(1, 2), gpTrsf.Value(2, 2), gpTrsf.Value(3, 2), 0,
160
+ gpTrsf.Value(1, 3), gpTrsf.Value(2, 3), gpTrsf.Value(3, 3), 0,
161
+ gpTrsf.Value(1, 4), gpTrsf.Value(2, 4), gpTrsf.Value(3, 4), 1,
162
+ ];
163
+ if (deleteSource) {
164
+ gpTrsf.delete();
165
+ }
166
+ return new Matrix4(elements);
167
+ }
168
+ static toGpQuaternion(quaternion) {
169
+ const oc = getOC();
170
+ const result = new oc.gp_Quaternion(quaternion.x, quaternion.y, quaternion.z, quaternion.w);
171
+ return [result, () => result.delete()];
172
+ }
173
+ static toQuaternion(gpQuaternion, deleteSource = false) {
174
+ const result = new Quaternion(gpQuaternion.X(), gpQuaternion.Y(), gpQuaternion.Z(), gpQuaternion.W());
175
+ if (deleteSource) {
176
+ gpQuaternion.delete();
177
+ }
178
+ return result;
179
+ }
180
+ static toGpTrsfTranslation(dx, dy, dz) {
181
+ const oc = getOC();
182
+ const trsf = new oc.gp_Trsf();
183
+ const vec = new oc.gp_Vec(dx, dy, dz);
184
+ trsf.SetTranslation(vec);
185
+ return [trsf, () => { trsf.delete(); vec.delete(); }];
186
+ }
187
+ static toGpTrsfTranslationVec(vector) {
188
+ const oc = getOC();
189
+ const trsf = new oc.gp_Trsf();
190
+ const [vec, disposeVec] = Convert.toGpVec(vector);
191
+ trsf.SetTranslation(vec);
192
+ return [trsf, () => { trsf.delete(); disposeVec(); }];
193
+ }
194
+ static toGpTrsfRotation(axis, angle) {
195
+ const oc = getOC();
196
+ const trsf = new oc.gp_Trsf();
197
+ const [ax1, disposeAx1] = Convert.toGpAx1(axis);
198
+ trsf.SetRotation(ax1, angle);
199
+ return [trsf, () => { trsf.delete(); disposeAx1(); }];
200
+ }
201
+ static toGpTrsfScale(center, factor) {
202
+ const oc = getOC();
203
+ const trsf = new oc.gp_Trsf();
204
+ const [pnt, disposePnt] = Convert.toGpPnt(center);
205
+ trsf.SetScale(pnt, factor);
206
+ return [trsf, () => { trsf.delete(); disposePnt(); }];
207
+ }
208
+ static toGpTrsfMirrorPoint(point) {
209
+ const oc = getOC();
210
+ const trsf = new oc.gp_Trsf();
211
+ const [pnt, disposePnt] = Convert.toGpPnt(point);
212
+ trsf.SetMirror(pnt);
213
+ return [trsf, () => { trsf.delete(); disposePnt(); }];
214
+ }
215
+ static toGpTrsfMirrorAxis(axis) {
216
+ const oc = getOC();
217
+ const trsf = new oc.gp_Trsf();
218
+ const [ax1, disposeAx1] = Convert.toGpAx1(axis);
219
+ trsf.SetMirror(ax1);
220
+ return [trsf, () => { trsf.delete(); disposeAx1(); }];
221
+ }
222
+ static toGpTrsfMirrorPlane(plane) {
223
+ const oc = getOC();
224
+ const trsf = new oc.gp_Trsf();
225
+ const [pnt, disposePnt] = Convert.toGpPnt(plane.origin);
226
+ const [dir, disposeDir] = Convert.toGpDir(plane.normal);
227
+ const ax2 = new oc.gp_Ax2(pnt, dir);
228
+ trsf.SetMirror(ax2);
229
+ return [trsf, () => { trsf.delete(); ax2.delete(); disposePnt(); disposeDir(); }];
230
+ }
231
+ }
@@ -0,0 +1,37 @@
1
+ import type { TopoDS_Edge, TopoDS_Vertex } from "occjs-wrapper";
2
+ import { Axis } from "../math/axis.js";
3
+ import { Point } from "../math/point.js";
4
+ import { Vector3d } from "../math/vector3d.js";
5
+ import { Edge } from "../common/edge.js";
6
+ import { Vertex } from "../common/vertex.js";
7
+ export declare class EdgeOps {
8
+ static getFirstVertex(edge: Edge): Vertex;
9
+ static getLastVertex(edge: Edge): Vertex;
10
+ static edgeToAxis(edge: Edge): Axis;
11
+ static axisToEdge(axis: Axis): Edge;
12
+ static getVertexPoint(vertex: Vertex): Point;
13
+ static getEdgeMidPoint(edge: Edge): Point;
14
+ static reverseEdge(edge: Edge): Edge;
15
+ static getEdgeOrientation(edge: Edge): number;
16
+ static getEdgeTangentAtEnd(edge: Edge): Vector3d;
17
+ static makeEdgeFromCurveAndVertices(curve: any, v1: Vertex, v2: Vertex): Edge;
18
+ static getFirstVertexRaw(edge: TopoDS_Edge): TopoDS_Vertex;
19
+ static getLastVertexRaw(edge: TopoDS_Edge): TopoDS_Vertex;
20
+ static edgeToAxisRaw(edge: TopoDS_Edge): Axis;
21
+ static axisToEdgeRaw(axis: Axis): TopoDS_Edge;
22
+ static edgeMiddlePoint(edge: TopoDS_Edge): import("occjs-wrapper").gp_Pnt;
23
+ static getVertexPointRaw(vertex: TopoDS_Vertex): Point;
24
+ static getEdgeMidPointRaw(edge: TopoDS_Edge): Point;
25
+ static reverseEdgeRaw(edge: TopoDS_Edge): TopoDS_Edge;
26
+ static getEdgeOrientationRaw(edge: TopoDS_Edge): number;
27
+ static getEdgeTangentAtEndRaw(edge: TopoDS_Edge): Vector3d;
28
+ static makeEdgeFromCurveAndVerticesRaw(curve: any, v1: TopoDS_Vertex, v2: TopoDS_Vertex): TopoDS_Edge;
29
+ static splitEdges(edges: Edge[]): Edge[];
30
+ static splitEdgesWithMapping(edges: Edge[]): {
31
+ edges: Edge[];
32
+ sourceIndex: number[];
33
+ };
34
+ static findNearestEdgeIndex(edges: Edge[], point: Point, tolerance?: number): number;
35
+ static findNearestEdgeIndices(edges: Edge[], point: Point, tolerance?: number): number[];
36
+ static isClosed(edge: Edge): boolean;
37
+ }
@@ -0,0 +1,306 @@
1
+ import { getOC } from "./init.js";
2
+ import { Convert } from "./convert.js";
3
+ import { Axis } from "../math/axis.js";
4
+ import { Point } from "../math/point.js";
5
+ import { Edge } from "../common/edge.js";
6
+ import { Vertex } from "../common/vertex.js";
7
+ import { Explorer } from "./explorer.js";
8
+ export class EdgeOps {
9
+ // Wrapper methods (public API for external callers)
10
+ static getFirstVertex(edge) {
11
+ return Vertex.fromTopoDSVertex(EdgeOps.getFirstVertexRaw(edge.getShape()));
12
+ }
13
+ static getLastVertex(edge) {
14
+ return Vertex.fromTopoDSVertex(EdgeOps.getLastVertexRaw(edge.getShape()));
15
+ }
16
+ static edgeToAxis(edge) {
17
+ return EdgeOps.edgeToAxisRaw(edge.getShape());
18
+ }
19
+ static axisToEdge(axis) {
20
+ return Edge.fromTopoDSEdge(EdgeOps.axisToEdgeRaw(axis));
21
+ }
22
+ static getVertexPoint(vertex) {
23
+ return EdgeOps.getVertexPointRaw(vertex.getShape());
24
+ }
25
+ static getEdgeMidPoint(edge) {
26
+ return EdgeOps.getEdgeMidPointRaw(edge.getShape());
27
+ }
28
+ static reverseEdge(edge) {
29
+ return Edge.fromTopoDSEdge(EdgeOps.reverseEdgeRaw(edge.getShape()));
30
+ }
31
+ static getEdgeOrientation(edge) {
32
+ return EdgeOps.getEdgeOrientationRaw(edge.getShape());
33
+ }
34
+ static getEdgeTangentAtEnd(edge) {
35
+ return EdgeOps.getEdgeTangentAtEndRaw(edge.getShape());
36
+ }
37
+ static makeEdgeFromCurveAndVertices(curve, v1, v2) {
38
+ return Edge.fromTopoDSEdge(EdgeOps.makeEdgeFromCurveAndVerticesRaw(curve, v1.getShape(), v2.getShape()));
39
+ }
40
+ // Raw methods (for oc-internal and common/ use)
41
+ static getFirstVertexRaw(edge) {
42
+ const oc = getOC();
43
+ return oc.TopExp.FirstVertex(edge, true);
44
+ }
45
+ static getLastVertexRaw(edge) {
46
+ const oc = getOC();
47
+ return oc.TopExp.LastVertex(edge, true);
48
+ }
49
+ static edgeToAxisRaw(edge) {
50
+ const oc = getOC();
51
+ const topoEdge = oc.TopoDS.Edge(edge);
52
+ const curveAdaptor = new oc.BRepAdaptor_Curve(topoEdge);
53
+ if (curveAdaptor.GetType() === oc.GeomAbs_CurveType.GeomAbs_Line) {
54
+ const line = curveAdaptor.Line();
55
+ const axis = line.Position();
56
+ curveAdaptor.delete();
57
+ line.delete();
58
+ const axisLocation = axis.Location();
59
+ const axisDirection = axis.Direction();
60
+ const result = new Axis(Convert.toPoint(axisLocation), Convert.toVector3dFromGpDir(axisDirection));
61
+ axisLocation.delete();
62
+ axisDirection.delete();
63
+ axis.delete();
64
+ return result;
65
+ }
66
+ curveAdaptor.delete();
67
+ throw new Error("Edge does not represent a line and cannot be converted to an axis");
68
+ }
69
+ static axisToEdgeRaw(axis) {
70
+ const oc = getOC();
71
+ const length = 300;
72
+ const start = new oc.gp_Pnt(axis.origin.x + (axis.direction.x * -length), axis.origin.y + (axis.direction.y * -length), axis.origin.z + (axis.direction.z * -length));
73
+ const end = new oc.gp_Pnt(axis.origin.x + (axis.direction.x * length), axis.origin.y + (axis.direction.y * length), axis.origin.z + (axis.direction.z * length));
74
+ const edgeMaker = new oc.BRepBuilderAPI_MakeEdge(start, end);
75
+ const edge = edgeMaker.Edge();
76
+ edgeMaker.delete();
77
+ return edge;
78
+ }
79
+ static edgeMiddlePoint(edge) {
80
+ const oc = getOC();
81
+ const curveAdaptor = new oc.BRepAdaptor_Curve(oc.TopoDS.Edge(edge));
82
+ const curve = curveAdaptor.Curve();
83
+ const midParam = (curve.FirstParameter() + curve.LastParameter()) / 2.0;
84
+ const midPoint = curve.Value(midParam);
85
+ const result = new oc.gp_Pnt(midPoint.X(), midPoint.Y(), midPoint.Z());
86
+ curveAdaptor.delete();
87
+ return result;
88
+ }
89
+ static getVertexPointRaw(vertex) {
90
+ const oc = getOC();
91
+ const pnt = oc.BRep_Tool.Pnt(vertex);
92
+ const result = new Point(pnt.X(), pnt.Y(), pnt.Z());
93
+ pnt.delete();
94
+ return result;
95
+ }
96
+ static getEdgeMidPointRaw(edge) {
97
+ const oc = getOC();
98
+ const adaptor = new oc.BRepAdaptor_Curve(edge);
99
+ const mid = adaptor.Value((adaptor.FirstParameter() + adaptor.LastParameter()) / 2);
100
+ const result = new Point(mid.X(), mid.Y(), mid.Z());
101
+ mid.delete();
102
+ adaptor.delete();
103
+ return result;
104
+ }
105
+ static reverseEdgeRaw(edge) {
106
+ const oc = getOC();
107
+ return oc.TopoDS.Edge(edge.Reversed());
108
+ }
109
+ static getEdgeOrientationRaw(edge) {
110
+ const oc = getOC();
111
+ return edge.Orientation() === oc.TopAbs_Orientation.TopAbs_REVERSED ? -1 : 1;
112
+ }
113
+ static getEdgeTangentAtEndRaw(edge) {
114
+ const oc = getOC();
115
+ const isReversed = edge.Orientation() === oc.TopAbs_Orientation.TopAbs_REVERSED;
116
+ const curveHandle = oc.BRep_Tool.Curve(edge, 0, 1);
117
+ const curve = curveHandle.get();
118
+ const param = isReversed ? curve.FirstParameter() : curve.LastParameter();
119
+ const edgeSign = isReversed ? -1 : 1;
120
+ const tangentVec = new oc.gp_Vec();
121
+ const pnt = new oc.gp_Pnt();
122
+ curve.D1(param, pnt, tangentVec);
123
+ const result = Convert.toVector3d(tangentVec, true).multiply(edgeSign);
124
+ pnt.delete();
125
+ return result;
126
+ }
127
+ static makeEdgeFromCurveAndVerticesRaw(curve, v1, v2) {
128
+ const oc = getOC();
129
+ const handle = new oc.Handle_Geom_Curve(curve);
130
+ const edgeMaker = new oc.BRepBuilderAPI_MakeEdge(handle, v1, v2);
131
+ const edge = edgeMaker.Edge();
132
+ edgeMaker.delete();
133
+ handle.delete();
134
+ return edge;
135
+ }
136
+ static splitEdges(edges) {
137
+ return EdgeOps.splitEdgesWithMapping(edges).edges;
138
+ }
139
+ static splitEdgesWithMapping(edges) {
140
+ const oc = getOC();
141
+ const tol = 1e-7;
142
+ // Extract individual edges (expand wires passed at runtime)
143
+ const allEdges = [];
144
+ const inputIndex = []; // maps allEdges index → original edges[] index
145
+ for (let ei = 0; ei < edges.length; ei++) {
146
+ const shape = edges[ei].getShape();
147
+ if (shape.ShapeType() === oc.TopAbs_ShapeEnum.TopAbs_WIRE) {
148
+ const wireEdges = Explorer.findShapes(shape, oc.TopAbs_ShapeEnum.TopAbs_EDGE);
149
+ for (const we of wireEdges) {
150
+ allEdges.push(we);
151
+ inputIndex.push(ei);
152
+ }
153
+ }
154
+ else {
155
+ allEdges.push(shape);
156
+ inputIndex.push(ei);
157
+ }
158
+ }
159
+ // Gather split parameters for each edge via IntTools_EdgeEdge
160
+ const splitParams = allEdges.map(() => []);
161
+ for (let i = 0; i < allEdges.length; i++) {
162
+ for (let j = i + 1; j < allEdges.length; j++) {
163
+ const tool = new oc.IntTools_EdgeEdge(allEdges[i], allEdges[j]);
164
+ tool.Perform();
165
+ if (tool.IsDone()) {
166
+ const parts = tool.CommonParts();
167
+ for (let k = 1; k <= parts.Length(); k++) {
168
+ const cp = parts.Value(k);
169
+ if (cp.Type() === oc.TopAbs_ShapeEnum.TopAbs_VERTEX) {
170
+ splitParams[i].push(cp.VertexParameter1());
171
+ splitParams[j].push(cp.VertexParameter2());
172
+ }
173
+ }
174
+ }
175
+ tool.delete();
176
+ }
177
+ }
178
+ // Split each edge at its collected intersection parameters
179
+ const result = [];
180
+ const sourceIndex = [];
181
+ for (let i = 0; i < allEdges.length; i++) {
182
+ const edge = allEdges[i];
183
+ const params = splitParams[i];
184
+ const srcIdx = inputIndex[i];
185
+ if (params.length === 0) {
186
+ result.push(Edge.fromTopoDSEdge(edge));
187
+ sourceIndex.push(srcIdx);
188
+ continue;
189
+ }
190
+ const adaptor = new oc.BRepAdaptor_Curve(edge);
191
+ const first = adaptor.FirstParameter();
192
+ const last = adaptor.LastParameter();
193
+ const isClosed = adaptor.IsClosed();
194
+ adaptor.delete();
195
+ // Deduplicate and sort
196
+ const sorted = [...params].sort((a, b) => a - b);
197
+ const unique = [];
198
+ for (const p of sorted) {
199
+ if (unique.length === 0 || Math.abs(p - unique[unique.length - 1]) > tol) {
200
+ unique.push(p);
201
+ }
202
+ }
203
+ // For closed curves, deduplicate wrap-around (e.g. params near 0 and 2π are the same point)
204
+ if (isClosed && unique.length >= 2) {
205
+ const period = last - first;
206
+ if (Math.abs(unique[unique.length - 1] - unique[0] - period) < tol) {
207
+ unique.pop();
208
+ }
209
+ }
210
+ // Filter out params at edge boundaries (skip for closed curves — their boundaries are the seam, not real endpoints)
211
+ const interior = isClosed
212
+ ? unique
213
+ : unique.filter(p => p > first + tol && p < last - tol);
214
+ if (interior.length === 0) {
215
+ result.push(Edge.fromTopoDSEdge(edge));
216
+ sourceIndex.push(srcIdx);
217
+ continue;
218
+ }
219
+ // Get the underlying curve for creating sub-edges
220
+ const curveHandle = oc.BRep_Tool.Curve(edge, 0, 1);
221
+ const curve = curveHandle.get();
222
+ const handle = new oc.Handle_Geom_Curve(curve);
223
+ if (isClosed && interior.length >= 2) {
224
+ // Closed curve: N split points → N arcs (no seam split)
225
+ const period = last - first;
226
+ for (let k = 0; k < interior.length; k++) {
227
+ const u1 = interior[k];
228
+ const u2 = k < interior.length - 1 ? interior[k + 1] : interior[0] + period;
229
+ const maker = new oc.BRepBuilderAPI_MakeEdge(handle, u1, u2);
230
+ if (maker.IsDone()) {
231
+ result.push(Edge.fromTopoDSEdge(maker.Edge()));
232
+ sourceIndex.push(srcIdx);
233
+ }
234
+ maker.delete();
235
+ }
236
+ }
237
+ else if (!isClosed) {
238
+ // Open curve: include edge endpoints as boundaries
239
+ const allParams = [first, ...interior, last];
240
+ for (let k = 0; k < allParams.length - 1; k++) {
241
+ const maker = new oc.BRepBuilderAPI_MakeEdge(handle, allParams[k], allParams[k + 1]);
242
+ if (maker.IsDone()) {
243
+ result.push(Edge.fromTopoDSEdge(maker.Edge()));
244
+ sourceIndex.push(srcIdx);
245
+ }
246
+ maker.delete();
247
+ }
248
+ }
249
+ else {
250
+ // Closed curve with < 2 split points: return as-is
251
+ result.push(Edge.fromTopoDSEdge(edge));
252
+ sourceIndex.push(srcIdx);
253
+ }
254
+ handle.delete();
255
+ }
256
+ return { edges: result, sourceIndex };
257
+ }
258
+ static findNearestEdgeIndex(edges, point, tolerance = -1) {
259
+ const indices = EdgeOps.findNearestEdgeIndices(edges, point, tolerance);
260
+ return indices.length > 0 ? indices[0] : -1;
261
+ }
262
+ static findNearestEdgeIndices(edges, point, tolerance = -1) {
263
+ const oc = getOC();
264
+ const DISTANCE_EPSILON = 1e-6;
265
+ const gpPnt = new oc.gp_Pnt(point.x, point.y, point.z);
266
+ const vertexMaker = new oc.BRepBuilderAPI_MakeVertex(gpPnt);
267
+ const vertexShape = vertexMaker.Shape();
268
+ gpPnt.delete();
269
+ let minDist = Infinity;
270
+ const distances = [];
271
+ const progress = new oc.Message_ProgressRange();
272
+ for (let i = 0; i < edges.length; i++) {
273
+ const distCalc = new oc.BRepExtrema_DistShapeShape(vertexShape, edges[i].getShape(), oc.Extrema_ExtFlag.Extrema_ExtFlag_MIN, oc.Extrema_ExtAlgo.Extrema_ExtAlgo_Grad, progress);
274
+ if (distCalc.IsDone()) {
275
+ const d = distCalc.Value();
276
+ distances[i] = d;
277
+ if (d < minDist) {
278
+ minDist = d;
279
+ }
280
+ }
281
+ else {
282
+ distances[i] = Infinity;
283
+ }
284
+ distCalc.delete();
285
+ }
286
+ progress.delete();
287
+ vertexMaker.delete();
288
+ if (tolerance >= 0 && minDist > tolerance) {
289
+ return [];
290
+ }
291
+ const result = [];
292
+ for (let i = 0; i < edges.length; i++) {
293
+ if (distances[i] <= minDist + DISTANCE_EPSILON) {
294
+ result.push(i);
295
+ }
296
+ }
297
+ return result;
298
+ }
299
+ static isClosed(edge) {
300
+ const oc = getOC();
301
+ const adaptor = new oc.BRepAdaptor_Curve(edge.getShape());
302
+ const closed = adaptor.IsClosed();
303
+ adaptor.delete();
304
+ return closed;
305
+ }
306
+ }
@@ -0,0 +1,11 @@
1
+ import type { TopoDS_Shape } from "occjs-wrapper";
2
+ export interface EdgeProperties {
3
+ curveType: 'line' | 'circle' | 'arc' | 'ellipse' | 'other';
4
+ length?: number;
5
+ radius?: number;
6
+ majorRadius?: number;
7
+ minorRadius?: number;
8
+ }
9
+ export declare class EdgeProps {
10
+ static getProperties(edge: TopoDS_Shape): EdgeProperties;
11
+ }
@@ -0,0 +1,45 @@
1
+ import { getOC } from "./init.js";
2
+ export class EdgeProps {
3
+ static getProperties(edge) {
4
+ const oc = getOC();
5
+ const ocEdge = oc.TopoDS.Edge(edge);
6
+ const adaptor = new oc.BRepAdaptor_Curve(ocEdge);
7
+ const curveType = adaptor.GetType();
8
+ const first = adaptor.FirstParameter();
9
+ const last = adaptor.LastParameter();
10
+ if (curveType === oc.GeomAbs_CurveType.GeomAbs_Line) {
11
+ const length = Math.abs(last - first);
12
+ adaptor.delete();
13
+ return { curveType: 'line', length };
14
+ }
15
+ if (curveType === oc.GeomAbs_CurveType.GeomAbs_Circle) {
16
+ const circle = adaptor.Circle();
17
+ const radius = circle.Radius();
18
+ circle.delete();
19
+ if (adaptor.IsClosed()) {
20
+ adaptor.delete();
21
+ return { curveType: 'circle', radius };
22
+ }
23
+ else {
24
+ const length = radius * Math.abs(last - first);
25
+ adaptor.delete();
26
+ return { curveType: 'arc', radius, length };
27
+ }
28
+ }
29
+ if (curveType === oc.GeomAbs_CurveType.GeomAbs_Ellipse) {
30
+ const ellipse = adaptor.Ellipse();
31
+ const majorRadius = ellipse.MajorRadius();
32
+ const minorRadius = ellipse.MinorRadius();
33
+ ellipse.delete();
34
+ adaptor.delete();
35
+ return { curveType: 'ellipse', majorRadius, minorRadius };
36
+ }
37
+ adaptor.delete();
38
+ // Fallback: use BRepGProp.LinearProperties for length
39
+ const linearProps = new oc.GProp_GProps();
40
+ oc.BRepGProp.LinearProperties(ocEdge, linearProps, false, false);
41
+ const length = linearProps.Mass();
42
+ linearProps.delete();
43
+ return { curveType: 'other', length };
44
+ }
45
+ }
@@ -0,0 +1,44 @@
1
+ import type { gp_Pln, gp_Vec, TopoDS_Edge, TopoDS_Shape } from "occjs-wrapper";
2
+ import { Point } from "../math/point.js";
3
+ import { Vector3d } from "../math/vector3d.js";
4
+ import { Plane } from "../math/plane.js";
5
+ import { Shape } from "../common/shape.js";
6
+ import { Edge } from "../common/edge.js";
7
+ export declare class EdgeQuery {
8
+ static isCircleEdge(edge: Shape, diameter?: number): boolean;
9
+ static isArcEdge(edge: Shape, radius?: number): boolean;
10
+ static isLineEdge(edge: Shape): boolean;
11
+ static isEdgeOnPlane(edge: Shape, plane: Plane): boolean;
12
+ static isEdgeParallelToPlane(edge: Shape, planeNormal: Vector3d): boolean;
13
+ static isEdgeAlignedWithNormal(edge: Shape, planeNormal: Vector3d): boolean;
14
+ static isEdgeClosedCurve(edge: Edge): boolean;
15
+ static getEdgeCurveType(edge: Edge): "line" | "circle" | "other";
16
+ static getEdgeCurveParams(edge: Edge): {
17
+ first: number;
18
+ last: number;
19
+ };
20
+ static sampleEdgeCurvePoint(edge: Edge, param: number): Point;
21
+ static getCircleDataFromEdge(edge: Edge): {
22
+ center: Point;
23
+ radius: number;
24
+ axisDirection: Vector3d;
25
+ };
26
+ static isCircleEdgeRaw(edge: TopoDS_Shape, diameter?: number): boolean;
27
+ static isArcEdgeRaw(edge: TopoDS_Shape, radius?: number): boolean;
28
+ static isLineEdgeRaw(edge: TopoDS_Shape): boolean;
29
+ static isEdgeOnPlaneRaw(edge: TopoDS_Shape, plane: gp_Pln): boolean;
30
+ static isEdgeParallelToPlaneRaw(edge: TopoDS_Shape, planeNormal: gp_Vec): boolean;
31
+ static isEdgeAlignedWithNormalRaw(edge: TopoDS_Shape, planeNormal: gp_Vec): boolean;
32
+ static isEdgeClosedCurveRaw(edge: TopoDS_Edge): boolean;
33
+ static getEdgeCurveTypeRaw(edge: TopoDS_Edge): "line" | "circle" | "other";
34
+ static getEdgeCurveParamsRaw(edge: TopoDS_Edge): {
35
+ first: number;
36
+ last: number;
37
+ };
38
+ static sampleEdgeCurvePointRaw(edge: TopoDS_Edge, param: number): Point;
39
+ static getCircleDataFromEdgeRaw(edge: TopoDS_Edge): {
40
+ center: Point;
41
+ radius: number;
42
+ axisDirection: Vector3d;
43
+ };
44
+ }