chili3d 0.6.1

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 (472) hide show
  1. package/.github/workflows/main.yml +26 -0
  2. package/.vscode/c_cpp_properties.json +30 -0
  3. package/.vscode/launch.json +21 -0
  4. package/.vscode/settings.json +8 -0
  5. package/Dockerfile +7 -0
  6. package/LICENSE +661 -0
  7. package/README.md +184 -0
  8. package/biome.json +67 -0
  9. package/compose.yml +7 -0
  10. package/cpp/CMakeLists.txt +96 -0
  11. package/cpp/CMakePresets.json +43 -0
  12. package/cpp/README.md +21 -0
  13. package/cpp/src/converter.cpp +413 -0
  14. package/cpp/src/factory.cpp +612 -0
  15. package/cpp/src/geometry.cpp +204 -0
  16. package/cpp/src/mesher.cpp +330 -0
  17. package/cpp/src/opencascade.cpp +414 -0
  18. package/cpp/src/shape.cpp +447 -0
  19. package/cpp/src/shared.cpp +83 -0
  20. package/cpp/src/shared.hpp +211 -0
  21. package/cpp/src/transient.cpp +29 -0
  22. package/cpp/src/utils.cpp +114 -0
  23. package/cpp/src/utils.hpp +25 -0
  24. package/cpp/test/index.html +146 -0
  25. package/package.json +49 -0
  26. package/packages/chili/package.json +11 -0
  27. package/packages/chili/src/application.ts +200 -0
  28. package/packages/chili/src/bodys/arc.ts +61 -0
  29. package/packages/chili/src/bodys/boolean.ts +32 -0
  30. package/packages/chili/src/bodys/box.ts +73 -0
  31. package/packages/chili/src/bodys/circle.ts +57 -0
  32. package/packages/chili/src/bodys/cone.ts +64 -0
  33. package/packages/chili/src/bodys/cylinder.ts +69 -0
  34. package/packages/chili/src/bodys/ellipse.ts +85 -0
  35. package/packages/chili/src/bodys/face.ts +72 -0
  36. package/packages/chili/src/bodys/fuse.ts +44 -0
  37. package/packages/chili/src/bodys/index.ts +16 -0
  38. package/packages/chili/src/bodys/line.ts +48 -0
  39. package/packages/chili/src/bodys/polygon.ts +40 -0
  40. package/packages/chili/src/bodys/prism.ts +49 -0
  41. package/packages/chili/src/bodys/pyramid.ts +64 -0
  42. package/packages/chili/src/bodys/rect.ts +69 -0
  43. package/packages/chili/src/bodys/revolve.ts +54 -0
  44. package/packages/chili/src/bodys/sphere.ts +48 -0
  45. package/packages/chili/src/bodys/sweep.ts +67 -0
  46. package/packages/chili/src/bodys/wire.ts +36 -0
  47. package/packages/chili/src/commands/application/index.ts +10 -0
  48. package/packages/chili/src/commands/application/newDocument.ts +17 -0
  49. package/packages/chili/src/commands/application/openDocument.ts +35 -0
  50. package/packages/chili/src/commands/application/performanceTest.ts +64 -0
  51. package/packages/chili/src/commands/application/saveDocument.ts +24 -0
  52. package/packages/chili/src/commands/application/toFile.ts +35 -0
  53. package/packages/chili/src/commands/application/toggleDynamicWorkplane.ts +15 -0
  54. package/packages/chili/src/commands/application/wechatGroup.ts +42 -0
  55. package/packages/chili/src/commands/boolean.ts +109 -0
  56. package/packages/chili/src/commands/create/arc.ts +110 -0
  57. package/packages/chili/src/commands/create/bezier.ts +116 -0
  58. package/packages/chili/src/commands/create/box.ts +59 -0
  59. package/packages/chili/src/commands/create/circle.ts +54 -0
  60. package/packages/chili/src/commands/create/cone.ts +104 -0
  61. package/packages/chili/src/commands/create/converter.ts +159 -0
  62. package/packages/chili/src/commands/create/copySubShape.ts +37 -0
  63. package/packages/chili/src/commands/create/curveProjection.ts +61 -0
  64. package/packages/chili/src/commands/create/cylinder.ts +96 -0
  65. package/packages/chili/src/commands/create/ellipse.ts +95 -0
  66. package/packages/chili/src/commands/create/group.ts +205 -0
  67. package/packages/chili/src/commands/create/index.ts +26 -0
  68. package/packages/chili/src/commands/create/line.ts +61 -0
  69. package/packages/chili/src/commands/create/loft.ts +149 -0
  70. package/packages/chili/src/commands/create/offset.ts +131 -0
  71. package/packages/chili/src/commands/create/polygon.ts +104 -0
  72. package/packages/chili/src/commands/create/prism.ts +52 -0
  73. package/packages/chili/src/commands/create/pyramid.ts +56 -0
  74. package/packages/chili/src/commands/create/rect.ts +105 -0
  75. package/packages/chili/src/commands/create/revolve.ts +62 -0
  76. package/packages/chili/src/commands/create/section.ts +31 -0
  77. package/packages/chili/src/commands/create/sphere.ts +48 -0
  78. package/packages/chili/src/commands/create/sweep.ts +39 -0
  79. package/packages/chili/src/commands/create/thickSolid.ts +50 -0
  80. package/packages/chili/src/commands/createActCommand.ts +26 -0
  81. package/packages/chili/src/commands/createCommand.ts +41 -0
  82. package/packages/chili/src/commands/delete.ts +38 -0
  83. package/packages/chili/src/commands/folder.ts +18 -0
  84. package/packages/chili/src/commands/importExport.ts +97 -0
  85. package/packages/chili/src/commands/index.ts +17 -0
  86. package/packages/chili/src/commands/measure/angle.ts +130 -0
  87. package/packages/chili/src/commands/measure/index.ts +6 -0
  88. package/packages/chili/src/commands/measure/length.ts +57 -0
  89. package/packages/chili/src/commands/measure/select.module.css +68 -0
  90. package/packages/chili/src/commands/measure/select.ts +228 -0
  91. package/packages/chili/src/commands/modify/array.ts +447 -0
  92. package/packages/chili/src/commands/modify/break.ts +78 -0
  93. package/packages/chili/src/commands/modify/brush.ts +100 -0
  94. package/packages/chili/src/commands/modify/chamfer.ts +70 -0
  95. package/packages/chili/src/commands/modify/explode.ts +91 -0
  96. package/packages/chili/src/commands/modify/fillet.ts +69 -0
  97. package/packages/chili/src/commands/modify/index.ts +16 -0
  98. package/packages/chili/src/commands/modify/mirror.ts +49 -0
  99. package/packages/chili/src/commands/modify/move.ts +39 -0
  100. package/packages/chili/src/commands/modify/removeFeature.ts +56 -0
  101. package/packages/chili/src/commands/modify/removeSubShapes.ts +44 -0
  102. package/packages/chili/src/commands/modify/rotate.ts +112 -0
  103. package/packages/chili/src/commands/modify/split.ts +81 -0
  104. package/packages/chili/src/commands/modify/transformedCommand.ts +100 -0
  105. package/packages/chili/src/commands/modify/trim.ts +254 -0
  106. package/packages/chili/src/commands/multistepCommand.ts +125 -0
  107. package/packages/chili/src/commands/redo.ts +16 -0
  108. package/packages/chili/src/commands/undo.ts +16 -0
  109. package/packages/chili/src/commands/workingPlane.ts +150 -0
  110. package/packages/chili/src/comparers/NumberEqualityComparer.ts +12 -0
  111. package/packages/chili/src/comparers/XYZEqualityComparer.ts +12 -0
  112. package/packages/chili/src/comparers/index.ts +5 -0
  113. package/packages/chili/src/document.ts +145 -0
  114. package/packages/chili/src/editEventHandler.ts +20 -0
  115. package/packages/chili/src/index.ts +12 -0
  116. package/packages/chili/src/selection.ts +178 -0
  117. package/packages/chili/src/services/commandService.ts +105 -0
  118. package/packages/chili/src/services/editorService.ts +46 -0
  119. package/packages/chili/src/services/hotkeyService.ts +102 -0
  120. package/packages/chili/src/services/index.ts +6 -0
  121. package/packages/chili/src/snap/dimension.ts +33 -0
  122. package/packages/chili/src/snap/handlers/angleSnapEventHandler.ts +60 -0
  123. package/packages/chili/src/snap/handlers/index.ts +7 -0
  124. package/packages/chili/src/snap/handlers/lengthSnapEventHandler.ts +117 -0
  125. package/packages/chili/src/snap/handlers/pointSnapEventHandler.ts +176 -0
  126. package/packages/chili/src/snap/handlers/snapEventHandler.ts +288 -0
  127. package/packages/chili/src/snap/index.ts +6 -0
  128. package/packages/chili/src/snap/snap.ts +50 -0
  129. package/packages/chili/src/snap/snaps/axisSnap.ts +57 -0
  130. package/packages/chili/src/snap/snaps/baseSnap.ts +69 -0
  131. package/packages/chili/src/snap/snaps/featurePointStrategy.ts +64 -0
  132. package/packages/chili/src/snap/snaps/index.ts +7 -0
  133. package/packages/chili/src/snap/snaps/objectSnap.ts +264 -0
  134. package/packages/chili/src/snap/snaps/planeSnap.ts +55 -0
  135. package/packages/chili/src/snap/snaps/pointOnCurveSnap.ts +24 -0
  136. package/packages/chili/src/snap/tracking/axis.ts +32 -0
  137. package/packages/chili/src/snap/tracking/axisTracking.ts +46 -0
  138. package/packages/chili/src/snap/tracking/index.ts +6 -0
  139. package/packages/chili/src/snap/tracking/objectTracking.ts +90 -0
  140. package/packages/chili/src/snap/tracking/trackingBase.ts +40 -0
  141. package/packages/chili/src/snap/tracking/trackingSnap.ts +201 -0
  142. package/packages/chili/src/step/angleStep.ts +32 -0
  143. package/packages/chili/src/step/index.ts +8 -0
  144. package/packages/chili/src/step/lengthStep.ts +32 -0
  145. package/packages/chili/src/step/pointStep.ts +87 -0
  146. package/packages/chili/src/step/selectStep.ts +130 -0
  147. package/packages/chili/src/step/step.ts +55 -0
  148. package/packages/chili/src/utils.ts +19 -0
  149. package/packages/chili/test/command.test.ts +4 -0
  150. package/packages/chili-builder/package.json +13 -0
  151. package/packages/chili-builder/src/additionalModule.ts +15 -0
  152. package/packages/chili-builder/src/appBuilder.ts +176 -0
  153. package/packages/chili-builder/src/defaultDataExchange.ts +152 -0
  154. package/packages/chili-builder/src/index.ts +5 -0
  155. package/packages/chili-builder/src/ribbon.ts +129 -0
  156. package/packages/chili-controls/package.json +9 -0
  157. package/packages/chili-controls/src/collection.ts +96 -0
  158. package/packages/chili-controls/src/controls.ts +83 -0
  159. package/packages/chili-controls/src/converters/colorConverter.ts +39 -0
  160. package/packages/chili-controls/src/converters/index.ts +8 -0
  161. package/packages/chili-controls/src/converters/numberConverter.ts +15 -0
  162. package/packages/chili-controls/src/converters/stringConverter.ts +13 -0
  163. package/packages/chili-controls/src/converters/urlConverter.ts +10 -0
  164. package/packages/chili-controls/src/converters/xyzConverter.ts +28 -0
  165. package/packages/chili-controls/src/expander/expander.module.css +38 -0
  166. package/packages/chili-controls/src/expander/expander.ts +59 -0
  167. package/packages/chili-controls/src/expander/index.ts +4 -0
  168. package/packages/chili-controls/src/htmlProps.ts +10 -0
  169. package/packages/chili-controls/src/index.ts +10 -0
  170. package/packages/chili-controls/src/radioGroup.module.css +20 -0
  171. package/packages/chili-controls/src/radioGroup.ts +54 -0
  172. package/packages/chili-controls/src/utils.ts +20 -0
  173. package/packages/chili-controls/test/converter.test.ts +70 -0
  174. package/packages/chili-controls/test/styleMock.js +4 -0
  175. package/packages/chili-core/package.json +7 -0
  176. package/packages/chili-core/src/application.ts +38 -0
  177. package/packages/chili-core/src/command/command.ts +154 -0
  178. package/packages/chili-core/src/command/commandKeys.ts +8 -0
  179. package/packages/chili-core/src/command/decarator.ts +43 -0
  180. package/packages/chili-core/src/command/index.ts +6 -0
  181. package/packages/chili-core/src/config.ts +145 -0
  182. package/packages/chili-core/src/constants.ts +8 -0
  183. package/packages/chili-core/src/dataExchange.ts +12 -0
  184. package/packages/chili-core/src/document.ts +25 -0
  185. package/packages/chili-core/src/editor.ts +12 -0
  186. package/packages/chili-core/src/foundation/asyncController.ts +55 -0
  187. package/packages/chili-core/src/foundation/binding.ts +132 -0
  188. package/packages/chili-core/src/foundation/collection.ts +208 -0
  189. package/packages/chili-core/src/foundation/converter.ts +9 -0
  190. package/packages/chili-core/src/foundation/deepObserver.ts +154 -0
  191. package/packages/chili-core/src/foundation/disposable.ts +18 -0
  192. package/packages/chili-core/src/foundation/dto/index.ts +9 -0
  193. package/packages/chili-core/src/foundation/equalityComparer.ts +6 -0
  194. package/packages/chili-core/src/foundation/gc.ts +36 -0
  195. package/packages/chili-core/src/foundation/history.ts +237 -0
  196. package/packages/chili-core/src/foundation/id.ts +25 -0
  197. package/packages/chili-core/src/foundation/index.ts +26 -0
  198. package/packages/chili-core/src/foundation/lazy.ts +18 -0
  199. package/packages/chili-core/src/foundation/linkedList.ts +141 -0
  200. package/packages/chili-core/src/foundation/logger.ts +45 -0
  201. package/packages/chili-core/src/foundation/messageType.ts +8 -0
  202. package/packages/chili-core/src/foundation/objectStorage.ts +50 -0
  203. package/packages/chili-core/src/foundation/observer.ts +147 -0
  204. package/packages/chili-core/src/foundation/precision.ts +8 -0
  205. package/packages/chili-core/src/foundation/pubsub.ts +74 -0
  206. package/packages/chili-core/src/foundation/result.ts +69 -0
  207. package/packages/chili-core/src/foundation/storage.ts +10 -0
  208. package/packages/chili-core/src/foundation/transaction.ts +77 -0
  209. package/packages/chili-core/src/foundation/utils/debounce.ts +15 -0
  210. package/packages/chili-core/src/foundation/utils/download.ts +16 -0
  211. package/packages/chili-core/src/foundation/utils/index.ts +6 -0
  212. package/packages/chili-core/src/foundation/utils/readFileAsync.ts +84 -0
  213. package/packages/chili-core/src/i18n/i18n.ts +107 -0
  214. package/packages/chili-core/src/i18n/index.ts +5 -0
  215. package/packages/chili-core/src/i18n/keys.ts +265 -0
  216. package/packages/chili-core/src/index.ts +26 -0
  217. package/packages/chili-core/src/material.ts +269 -0
  218. package/packages/chili-core/src/math/boundingBox.ts +226 -0
  219. package/packages/chili-core/src/math/index.ts +14 -0
  220. package/packages/chili-core/src/math/line.ts +55 -0
  221. package/packages/chili-core/src/math/lineSegment.ts +166 -0
  222. package/packages/chili-core/src/math/mathUtils.ts +45 -0
  223. package/packages/chili-core/src/math/matrix4.ts +414 -0
  224. package/packages/chili-core/src/math/plane.ts +96 -0
  225. package/packages/chili-core/src/math/planeAngle.ts +53 -0
  226. package/packages/chili-core/src/math/quaternion.ts +131 -0
  227. package/packages/chili-core/src/math/ray.ts +30 -0
  228. package/packages/chili-core/src/math/xy.ts +104 -0
  229. package/packages/chili-core/src/math/xyz.ts +181 -0
  230. package/packages/chili-core/src/model/component.ts +305 -0
  231. package/packages/chili-core/src/model/facebaseNode.ts +17 -0
  232. package/packages/chili-core/src/model/folderNode.ts +289 -0
  233. package/packages/chili-core/src/model/geometryNode.ts +185 -0
  234. package/packages/chili-core/src/model/groupNode.ts +19 -0
  235. package/packages/chili-core/src/model/index.ts +12 -0
  236. package/packages/chili-core/src/model/meshNode.ts +53 -0
  237. package/packages/chili-core/src/model/node.ts +315 -0
  238. package/packages/chili-core/src/model/shapeNode.ts +195 -0
  239. package/packages/chili-core/src/model/visualNode.ts +39 -0
  240. package/packages/chili-core/src/modelManager.ts +147 -0
  241. package/packages/chili-core/src/navigation.ts +58 -0
  242. package/packages/chili-core/src/property.ts +60 -0
  243. package/packages/chili-core/src/selection.ts +33 -0
  244. package/packages/chili-core/src/selectionFilter.ts +28 -0
  245. package/packages/chili-core/src/serialize/index.ts +4 -0
  246. package/packages/chili-core/src/serialize/serializer.ts +231 -0
  247. package/packages/chili-core/src/service.ts +10 -0
  248. package/packages/chili-core/src/shape/curve.ts +174 -0
  249. package/packages/chili-core/src/shape/geometry.ts +17 -0
  250. package/packages/chili-core/src/shape/index.ts +12 -0
  251. package/packages/chili-core/src/shape/lineType.ts +7 -0
  252. package/packages/chili-core/src/shape/meshData.ts +347 -0
  253. package/packages/chili-core/src/shape/shape.ts +104 -0
  254. package/packages/chili-core/src/shape/shapeConverter.ts +17 -0
  255. package/packages/chili-core/src/shape/shapeFactory.ts +58 -0
  256. package/packages/chili-core/src/shape/shapeType.ts +75 -0
  257. package/packages/chili-core/src/shape/surface.ts +154 -0
  258. package/packages/chili-core/src/snapType.ts +32 -0
  259. package/packages/chili-core/src/ui/button.ts +16 -0
  260. package/packages/chili-core/src/ui/combobox.ts +27 -0
  261. package/packages/chili-core/src/ui/dialog.ts +7 -0
  262. package/packages/chili-core/src/ui/index.ts +8 -0
  263. package/packages/chili-core/src/ui/ribbon.ts +15 -0
  264. package/packages/chili-core/src/ui/window.ts +13 -0
  265. package/packages/chili-core/src/visual/act.ts +59 -0
  266. package/packages/chili-core/src/visual/cameraController.ts +22 -0
  267. package/packages/chili-core/src/visual/cursorType.ts +4 -0
  268. package/packages/chili-core/src/visual/detectedData.ts +14 -0
  269. package/packages/chili-core/src/visual/eventHandler.ts +15 -0
  270. package/packages/chili-core/src/visual/highlighter.ts +16 -0
  271. package/packages/chili-core/src/visual/index.ts +20 -0
  272. package/packages/chili-core/src/visual/meshExporter.ts +11 -0
  273. package/packages/chili-core/src/visual/meshUtils.ts +276 -0
  274. package/packages/chili-core/src/visual/textGenerator.ts +8 -0
  275. package/packages/chili-core/src/visual/view.ts +80 -0
  276. package/packages/chili-core/src/visual/viewGizmo.ts +8 -0
  277. package/packages/chili-core/src/visual/viewport.ts +10 -0
  278. package/packages/chili-core/src/visual/visual.ts +24 -0
  279. package/packages/chili-core/src/visual/visualContext.ts +29 -0
  280. package/packages/chili-core/src/visual/visualFactory.ts +10 -0
  281. package/packages/chili-core/src/visual/visualObject.ts +25 -0
  282. package/packages/chili-core/src/visual/visualShape.ts +30 -0
  283. package/packages/chili-core/test/binding.test.ts +95 -0
  284. package/packages/chili-core/test/boundingBox.test.ts +60 -0
  285. package/packages/chili-core/test/collection.test.ts +53 -0
  286. package/packages/chili-core/test/history.test.ts +42 -0
  287. package/packages/chili-core/test/line.test.ts +75 -0
  288. package/packages/chili-core/test/linesegment.test.ts +98 -0
  289. package/packages/chili-core/test/linkedList.test.ts +82 -0
  290. package/packages/chili-core/test/math.test.ts +34 -0
  291. package/packages/chili-core/test/matrix.test.ts +129 -0
  292. package/packages/chili-core/test/node.test.ts +122 -0
  293. package/packages/chili-core/test/nodeList.test.ts +247 -0
  294. package/packages/chili-core/test/observer.test.ts +91 -0
  295. package/packages/chili-core/test/plane.test.ts +31 -0
  296. package/packages/chili-core/test/quaternion.test.ts +14 -0
  297. package/packages/chili-core/test/result.test.ts +24 -0
  298. package/packages/chili-core/test/serializer.test.ts +58 -0
  299. package/packages/chili-core/test/snapType.test.ts +10 -0
  300. package/packages/chili-core/test/task.test.ts +41 -0
  301. package/packages/chili-core/test/testDocument.ts +70 -0
  302. package/packages/chili-core/test/transaction.test.ts +42 -0
  303. package/packages/chili-core/test/visual.test.ts +42 -0
  304. package/packages/chili-core/test/xyz.test.ts +260 -0
  305. package/packages/chili-geo/package.json +9 -0
  306. package/packages/chili-geo/src/index.ts +4 -0
  307. package/packages/chili-geo/src/utils.ts +113 -0
  308. package/packages/chili-i18n/package.json +9 -0
  309. package/packages/chili-i18n/src/en.ts +270 -0
  310. package/packages/chili-i18n/src/index.ts +8 -0
  311. package/packages/chili-i18n/src/pt-br.ts +67 -0
  312. package/packages/chili-i18n/src/zh-cn.ts +269 -0
  313. package/packages/chili-storage/package.json +9 -0
  314. package/packages/chili-storage/src/index.ts +4 -0
  315. package/packages/chili-storage/src/indexedDBStorage.ts +150 -0
  316. package/packages/chili-three/package.json +13 -0
  317. package/packages/chili-three/src/cameraController.ts +335 -0
  318. package/packages/chili-three/src/common.ts +65 -0
  319. package/packages/chili-three/src/constants.ts +12 -0
  320. package/packages/chili-three/src/highlightable.ts +13 -0
  321. package/packages/chili-three/src/index.ts +4 -0
  322. package/packages/chili-three/src/meshExporter.ts +69 -0
  323. package/packages/chili-three/src/outlinePass.js +340 -0
  324. package/packages/chili-three/src/texture_points.jpg +0 -0
  325. package/packages/chili-three/src/threeGeometry.ts +207 -0
  326. package/packages/chili-three/src/threeGeometryFactory.ts +120 -0
  327. package/packages/chili-three/src/threeHelper.ts +174 -0
  328. package/packages/chili-three/src/threeHighlighter.ts +257 -0
  329. package/packages/chili-three/src/threeView.module.css +39 -0
  330. package/packages/chili-three/src/threeView.ts +669 -0
  331. package/packages/chili-three/src/threeViewEventHandler.ts +193 -0
  332. package/packages/chili-three/src/threeVisual.ts +92 -0
  333. package/packages/chili-three/src/threeVisualContext.ts +435 -0
  334. package/packages/chili-three/src/threeVisualFactory.ts +12 -0
  335. package/packages/chili-three/src/threeVisualObject.ts +442 -0
  336. package/packages/chili-three/src/viewGizmo.ts +305 -0
  337. package/packages/chili-three/test/cameraControls.ts +10 -0
  338. package/packages/chili-three/test/testDocument.ts +68 -0
  339. package/packages/chili-three/test/testEdge.ts +171 -0
  340. package/packages/chili-three/test/testView.ts +78 -0
  341. package/packages/chili-three/test/three.test.ts +44 -0
  342. package/packages/chili-three/test/viewGizmo.ts +12 -0
  343. package/packages/chili-ui/package.json +12 -0
  344. package/packages/chili-ui/src/cursor/draw.cur +0 -0
  345. package/packages/chili-ui/src/cursor/index.ts +17 -0
  346. package/packages/chili-ui/src/dialog.module.css +63 -0
  347. package/packages/chili-ui/src/dialog.ts +42 -0
  348. package/packages/chili-ui/src/editor.module.css +83 -0
  349. package/packages/chili-ui/src/editor.ts +142 -0
  350. package/packages/chili-ui/src/home/home.module.css +301 -0
  351. package/packages/chili-ui/src/home/home.ts +243 -0
  352. package/packages/chili-ui/src/home/index.ts +4 -0
  353. package/packages/chili-ui/src/home/languageSelector.ts +27 -0
  354. package/packages/chili-ui/src/home/navigation3DSelector.ts +27 -0
  355. package/packages/chili-ui/src/home/themeSelector.ts +34 -0
  356. package/packages/chili-ui/src/index.ts +5 -0
  357. package/packages/chili-ui/src/mainWindow.module.css +144 -0
  358. package/packages/chili-ui/src/mainWindow.ts +154 -0
  359. package/packages/chili-ui/src/okCancel.module.css +54 -0
  360. package/packages/chili-ui/src/okCancel.ts +58 -0
  361. package/packages/chili-ui/src/permanent.module.css +44 -0
  362. package/packages/chili-ui/src/permanent.ts +31 -0
  363. package/packages/chili-ui/src/project/index.ts +4 -0
  364. package/packages/chili-ui/src/project/projectView.module.css +37 -0
  365. package/packages/chili-ui/src/project/projectView.ts +77 -0
  366. package/packages/chili-ui/src/project/toolBar.module.css +16 -0
  367. package/packages/chili-ui/src/project/toolBar.ts +73 -0
  368. package/packages/chili-ui/src/project/tree/index.ts +5 -0
  369. package/packages/chili-ui/src/project/tree/tree.module.css +16 -0
  370. package/packages/chili-ui/src/project/tree/tree.ts +265 -0
  371. package/packages/chili-ui/src/project/tree/treeItem.module.css +21 -0
  372. package/packages/chili-ui/src/project/tree/treeItem.ts +89 -0
  373. package/packages/chili-ui/src/project/tree/treeItemGroup.module.css +33 -0
  374. package/packages/chili-ui/src/project/tree/treeItemGroup.ts +85 -0
  375. package/packages/chili-ui/src/project/tree/treeModel.module.css +11 -0
  376. package/packages/chili-ui/src/project/tree/treeModel.ts +20 -0
  377. package/packages/chili-ui/src/property/check.ts +39 -0
  378. package/packages/chili-ui/src/property/colorPorperty.module.css +6 -0
  379. package/packages/chili-ui/src/property/colorProperty.ts +63 -0
  380. package/packages/chili-ui/src/property/common.module.css +14 -0
  381. package/packages/chili-ui/src/property/index.ts +4 -0
  382. package/packages/chili-ui/src/property/input.module.css +19 -0
  383. package/packages/chili-ui/src/property/input.ts +140 -0
  384. package/packages/chili-ui/src/property/material/index.ts +5 -0
  385. package/packages/chili-ui/src/property/material/materialDataContent.ts +44 -0
  386. package/packages/chili-ui/src/property/material/materialEditor.module.css +98 -0
  387. package/packages/chili-ui/src/property/material/materialEditor.ts +147 -0
  388. package/packages/chili-ui/src/property/material/textureEditor.module.css +46 -0
  389. package/packages/chili-ui/src/property/material/textureEditor.ts +61 -0
  390. package/packages/chili-ui/src/property/materialProperty.module.css +30 -0
  391. package/packages/chili-ui/src/property/materialProperty.ts +86 -0
  392. package/packages/chili-ui/src/property/matrixProperty.ts +147 -0
  393. package/packages/chili-ui/src/property/propertyBase.module.css +3 -0
  394. package/packages/chili-ui/src/property/propertyBase.ts +14 -0
  395. package/packages/chili-ui/src/property/propertyView.module.css +36 -0
  396. package/packages/chili-ui/src/property/propertyView.ts +115 -0
  397. package/packages/chili-ui/src/property/utils.ts +48 -0
  398. package/packages/chili-ui/src/ribbon/commandContext.module.css +73 -0
  399. package/packages/chili-ui/src/ribbon/commandContext.ts +239 -0
  400. package/packages/chili-ui/src/ribbon/index.ts +4 -0
  401. package/packages/chili-ui/src/ribbon/ribbon.module.css +286 -0
  402. package/packages/chili-ui/src/ribbon/ribbon.ts +288 -0
  403. package/packages/chili-ui/src/ribbon/ribbonButton.module.css +75 -0
  404. package/packages/chili-ui/src/ribbon/ribbonButton.ts +88 -0
  405. package/packages/chili-ui/src/ribbon/ribbonData.ts +66 -0
  406. package/packages/chili-ui/src/ribbon/ribbonStack.module.css +6 -0
  407. package/packages/chili-ui/src/ribbon/ribbonStack.ts +13 -0
  408. package/packages/chili-ui/src/ribbon/ribbonToggleButton.module.css +3 -0
  409. package/packages/chili-ui/src/ribbon/ribbonToggleButton.ts +6 -0
  410. package/packages/chili-ui/src/statusbar/index.ts +4 -0
  411. package/packages/chili-ui/src/statusbar/snapConfig.module.css +25 -0
  412. package/packages/chili-ui/src/statusbar/snapConfig.ts +92 -0
  413. package/packages/chili-ui/src/statusbar/statusbar.module.css +28 -0
  414. package/packages/chili-ui/src/statusbar/statusbar.ts +54 -0
  415. package/packages/chili-ui/src/toast/index.ts +4 -0
  416. package/packages/chili-ui/src/toast/toast.module.css +27 -0
  417. package/packages/chili-ui/src/toast/toast.ts +39 -0
  418. package/packages/chili-ui/src/viewport/flyout/flyout.module.css +9 -0
  419. package/packages/chili-ui/src/viewport/flyout/flyout.ts +77 -0
  420. package/packages/chili-ui/src/viewport/flyout/index.ts +6 -0
  421. package/packages/chili-ui/src/viewport/flyout/input.module.css +21 -0
  422. package/packages/chili-ui/src/viewport/flyout/input.ts +89 -0
  423. package/packages/chili-ui/src/viewport/flyout/tip.module.css +21 -0
  424. package/packages/chili-ui/src/viewport/flyout/tip.ts +45 -0
  425. package/packages/chili-ui/src/viewport/index.ts +4 -0
  426. package/packages/chili-ui/src/viewport/layoutViewport.module.css +21 -0
  427. package/packages/chili-ui/src/viewport/layoutViewport.ts +76 -0
  428. package/packages/chili-ui/src/viewport/viewport.module.css +179 -0
  429. package/packages/chili-ui/src/viewport/viewport.ts +296 -0
  430. package/packages/chili-vis/package.json +9 -0
  431. package/packages/chili-vis/src/index.ts +7 -0
  432. package/packages/chili-vis/src/nodeSelectionEventHandler.ts +122 -0
  433. package/packages/chili-vis/src/selectionEventHandler.ts +145 -0
  434. package/packages/chili-vis/src/shapeSelectionEventHandler.ts +176 -0
  435. package/packages/chili-vis/src/viewUtils.ts +64 -0
  436. package/packages/chili-wasm/lib/chili-wasm.d.ts +827 -0
  437. package/packages/chili-wasm/lib/chili-wasm.js +5275 -0
  438. package/packages/chili-wasm/lib/chili-wasm.wasm +0 -0
  439. package/packages/chili-wasm/package.json +10 -0
  440. package/packages/chili-wasm/src/converter.ts +124 -0
  441. package/packages/chili-wasm/src/curve.ts +589 -0
  442. package/packages/chili-wasm/src/factory.ts +331 -0
  443. package/packages/chili-wasm/src/geometry.ts +51 -0
  444. package/packages/chili-wasm/src/helper.ts +435 -0
  445. package/packages/chili-wasm/src/index.ts +5 -0
  446. package/packages/chili-wasm/src/mesher.ts +114 -0
  447. package/packages/chili-wasm/src/shape.ts +481 -0
  448. package/packages/chili-wasm/src/surface.ts +510 -0
  449. package/packages/chili-wasm/src/wasm.ts +13 -0
  450. package/packages/chili-web/package.json +9 -0
  451. package/packages/chili-web/src/index.ts +33 -0
  452. package/packages/chili-web/src/loading.ts +67 -0
  453. package/packages/global.d.ts +31 -0
  454. package/public/favicon.svg +10 -0
  455. package/public/fonts/fzhei.json +46120 -0
  456. package/public/iconfont.js +1 -0
  457. package/public/images/wechat.jpg +0 -0
  458. package/public/index.css +13 -0
  459. package/public/index.html +24 -0
  460. package/rspack.config.ts +93 -0
  461. package/rstest.config.ts +27 -0
  462. package/screenshots/screenshot.png +0 -0
  463. package/scripts/add_copyright.mjs +59 -0
  464. package/scripts/build-npm.mjs +105 -0
  465. package/scripts/common.mjs +24 -0
  466. package/scripts/release.mjs +92 -0
  467. package/scripts/restore-package-json.mjs +27 -0
  468. package/scripts/setup_wasm_deps.mjs +97 -0
  469. package/scripts/update-package-json.mjs +27 -0
  470. package/tsconfig.build.json +14 -0
  471. package/tsconfig.build.tsbuildinfo +1 -0
  472. package/tsconfig.json +19 -0
@@ -0,0 +1,72 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IEdge,
8
+ type IShape,
9
+ type IWire,
10
+ ParameterShapeNode,
11
+ Result,
12
+ Serializer,
13
+ ShapeType,
14
+ } from "chili-core";
15
+
16
+ @Serializer.register(["document", "shapes"])
17
+ export class FaceNode extends ParameterShapeNode {
18
+ override display(): I18nKeys {
19
+ return "body.face";
20
+ }
21
+
22
+ @Serializer.serialze()
23
+ get shapes(): IEdge[] | IWire[] {
24
+ return this.getPrivateValue("shapes");
25
+ }
26
+ set shapes(values: IEdge[] | IWire[]) {
27
+ this.setPropertyEmitShapeChanged("shapes", values);
28
+ }
29
+
30
+ constructor(document: IDocument, shapes: IEdge[] | IWire[]) {
31
+ super(document);
32
+ this.setPrivateValue("shapes", shapes);
33
+ }
34
+
35
+ private isAllClosed(): boolean {
36
+ return this.shapes.every((shape) => shape.isClosed() || shape.shapeType === ShapeType.Wire);
37
+ }
38
+
39
+ private getWires(): IWire[] {
40
+ const wires: IWire[] = [];
41
+ if (this.isAllClosed()) {
42
+ this.addClosedEdges(wires);
43
+ } else {
44
+ this.addUnclosedEdges(wires, this.shapes as IEdge[]);
45
+ }
46
+
47
+ return wires;
48
+ }
49
+
50
+ private addClosedEdges(wires: IWire[]): void {
51
+ for (const shape of this.shapes) {
52
+ if (shape.shapeType === ShapeType.Wire) {
53
+ wires.push(shape as IWire);
54
+ } else {
55
+ this.addUnclosedEdges(wires, [shape as IEdge]);
56
+ }
57
+ }
58
+ }
59
+
60
+ private addUnclosedEdges(wires: IWire[], edges: IEdge[]): void {
61
+ const wire = this.document.application.shapeFactory.wire(edges);
62
+ if (!wire.isOk) throw new Error("Cannot create wire from open shapes");
63
+ wires.push(wire.value);
64
+ }
65
+
66
+ override generateShape(): Result<IShape> {
67
+ if (this.shapes.length === 0) return Result.err("No shapes to create face");
68
+
69
+ const wires = this.getWires();
70
+ return this.document.application.shapeFactory.face(wires);
71
+ }
72
+ }
@@ -0,0 +1,44 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IShape,
8
+ ParameterShapeNode,
9
+ type Result,
10
+ Serializer,
11
+ } from "chili-core";
12
+
13
+ @Serializer.register(["document", "bottom", "top"])
14
+ export class FuseNode extends ParameterShapeNode {
15
+ override display(): I18nKeys {
16
+ return "body.fuse";
17
+ }
18
+
19
+ @Serializer.serialze()
20
+ get bottom(): IShape {
21
+ return this.getPrivateValue("bottom");
22
+ }
23
+ set bottom(value: IShape) {
24
+ this.setPropertyEmitShapeChanged("bottom", value);
25
+ }
26
+
27
+ @Serializer.serialze()
28
+ get top(): IShape {
29
+ return this.getPrivateValue("top");
30
+ }
31
+ set top(value: IShape) {
32
+ this.setPropertyEmitShapeChanged("top", value);
33
+ }
34
+
35
+ constructor(document: IDocument, bottom: IShape, top: IShape) {
36
+ super(document);
37
+ this.setPrivateValue("bottom", bottom);
38
+ this.setPrivateValue("top", top);
39
+ }
40
+
41
+ override generateShape(): Result<IShape> {
42
+ throw new Error("Method not implemented.");
43
+ }
44
+ }
@@ -0,0 +1,16 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ export * from "./box";
5
+ export * from "./circle";
6
+ export * from "./cone";
7
+ export * from "./cylinder";
8
+ export * from "./ellipse";
9
+ export * from "./line";
10
+ export * from "./polygon";
11
+ export * from "./prism";
12
+ export * from "./pyramid";
13
+ export * from "./rect";
14
+ export * from "./revolve";
15
+ export * from "./sphere";
16
+ export * from "./sweep";
@@ -0,0 +1,48 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IShape,
8
+ ParameterShapeNode,
9
+ Property,
10
+ type Result,
11
+ Serializer,
12
+ type XYZ,
13
+ } from "chili-core";
14
+
15
+ @Serializer.register(["document", "start", "end"])
16
+ export class LineNode extends ParameterShapeNode {
17
+ override display(): I18nKeys {
18
+ return "body.line";
19
+ }
20
+
21
+ @Serializer.serialze()
22
+ @Property.define("line.start")
23
+ get start() {
24
+ return this.getPrivateValue("start");
25
+ }
26
+ set start(pnt: XYZ) {
27
+ this.setPropertyEmitShapeChanged("start", pnt);
28
+ }
29
+
30
+ @Serializer.serialze()
31
+ @Property.define("line.end")
32
+ get end() {
33
+ return this.getPrivateValue("end");
34
+ }
35
+ set end(pnt: XYZ) {
36
+ this.setPropertyEmitShapeChanged("end", pnt);
37
+ }
38
+
39
+ constructor(document: IDocument, start: XYZ, end: XYZ) {
40
+ super(document);
41
+ this.setPrivateValue("start", start);
42
+ this.setPrivateValue("end", end);
43
+ }
44
+
45
+ generateShape(): Result<IShape, string> {
46
+ return this.document.application.shapeFactory.line(this.start, this.end);
47
+ }
48
+ }
@@ -0,0 +1,40 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ FacebaseNode,
6
+ type I18nKeys,
7
+ type IDocument,
8
+ type IShape,
9
+ Property,
10
+ type Result,
11
+ Serializer,
12
+ type XYZ,
13
+ } from "chili-core";
14
+
15
+ @Serializer.register(["document", "points"])
16
+ export class PolygonNode extends FacebaseNode {
17
+ override display(): I18nKeys {
18
+ return "body.polygon";
19
+ }
20
+
21
+ @Serializer.serialze()
22
+ @Property.define("polygon.points")
23
+ get points() {
24
+ return this.getPrivateValue("points");
25
+ }
26
+ set points(value: XYZ[]) {
27
+ this.setPropertyEmitShapeChanged("points", value);
28
+ }
29
+
30
+ constructor(document: IDocument, points: XYZ[]) {
31
+ super(document);
32
+ this.setPrivateValue("points", points);
33
+ }
34
+
35
+ generateShape(): Result<IShape, string> {
36
+ const wire = this.document.application.shapeFactory.polygon(this.points);
37
+ if (!wire.isOk || !this.isFace) return wire;
38
+ return wire.value.toFace();
39
+ }
40
+ }
@@ -0,0 +1,49 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IShape,
8
+ ParameterShapeNode,
9
+ Property,
10
+ type Result,
11
+ Serializer,
12
+ } from "chili-core";
13
+ import { GeoUtils } from "chili-geo";
14
+
15
+ @Serializer.register(["document", "section", "length"])
16
+ export class PrismNode extends ParameterShapeNode {
17
+ override display(): I18nKeys {
18
+ return "body.prism";
19
+ }
20
+
21
+ @Serializer.serialze()
22
+ get section(): IShape {
23
+ return this.getPrivateValue("section");
24
+ }
25
+ set section(value: IShape) {
26
+ this.setPropertyEmitShapeChanged("section", value);
27
+ }
28
+
29
+ @Serializer.serialze()
30
+ @Property.define("common.length")
31
+ get length(): number {
32
+ return this.getPrivateValue("length");
33
+ }
34
+ set length(value: number) {
35
+ this.setPropertyEmitShapeChanged("length", value);
36
+ }
37
+
38
+ constructor(document: IDocument, face: IShape, length: number) {
39
+ super(document);
40
+ this.setPrivateValue("section", face);
41
+ this.setPrivateValue("length", length);
42
+ }
43
+
44
+ override generateShape(): Result<IShape> {
45
+ const normal = GeoUtils.normal(this.section as any);
46
+ const vec = normal.multiply(this.length);
47
+ return this.document.application.shapeFactory.prism(this.section, vec);
48
+ }
49
+ }
@@ -0,0 +1,64 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IShape,
8
+ ParameterShapeNode,
9
+ type Plane,
10
+ Property,
11
+ type Result,
12
+ Serializer,
13
+ } from "chili-core";
14
+
15
+ @Serializer.register(["document", "plane", "dx", "dy", "dz"])
16
+ export class PyramidNode extends ParameterShapeNode {
17
+ override display(): I18nKeys {
18
+ return "body.pyramid";
19
+ }
20
+
21
+ @Serializer.serialze()
22
+ @Property.define("box.dx")
23
+ get dx() {
24
+ return this.getPrivateValue("dx");
25
+ }
26
+ set dx(dx: number) {
27
+ this.setPropertyEmitShapeChanged("dx", dx);
28
+ }
29
+
30
+ @Serializer.serialze()
31
+ @Property.define("box.dy")
32
+ get dy() {
33
+ return this.getPrivateValue("dy");
34
+ }
35
+ set dy(dy: number) {
36
+ this.setPropertyEmitShapeChanged("dy", dy);
37
+ }
38
+
39
+ @Serializer.serialze()
40
+ @Property.define("box.dz")
41
+ get dz() {
42
+ return this.getPrivateValue("dz");
43
+ }
44
+ set dz(dz: number) {
45
+ this.setPropertyEmitShapeChanged("dz", dz);
46
+ }
47
+
48
+ @Serializer.serialze()
49
+ get plane(): Plane {
50
+ return this.getPrivateValue("plane");
51
+ }
52
+
53
+ constructor(document: IDocument, plane: Plane, dx: number, dy: number, dz: number) {
54
+ super(document);
55
+ this.setPrivateValue("plane", plane);
56
+ this.setPrivateValue("dx", dx);
57
+ this.setPrivateValue("dy", dy);
58
+ this.setPrivateValue("dz", dz);
59
+ }
60
+
61
+ generateShape(): Result<IShape> {
62
+ return this.document.application.shapeFactory.pyramid(this.plane, this.dx, this.dy, this.dz);
63
+ }
64
+ }
@@ -0,0 +1,69 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ FacebaseNode,
6
+ type I18nKeys,
7
+ type IDocument,
8
+ type IShape,
9
+ type Plane,
10
+ Property,
11
+ type Result,
12
+ Serializer,
13
+ type XYZ,
14
+ } from "chili-core";
15
+
16
+ @Serializer.register(["document", "plane", "dx", "dy"])
17
+ export class RectNode extends FacebaseNode {
18
+ override display(): I18nKeys {
19
+ return "body.rect";
20
+ }
21
+
22
+ @Serializer.serialze()
23
+ @Property.define("rect.dx")
24
+ get dx() {
25
+ return this.getPrivateValue("dx");
26
+ }
27
+ set dx(dx: number) {
28
+ this.setPropertyEmitShapeChanged("dx", dx);
29
+ }
30
+
31
+ @Serializer.serialze()
32
+ @Property.define("rect.dy")
33
+ get dy() {
34
+ return this.getPrivateValue("dy");
35
+ }
36
+ set dy(dy: number) {
37
+ this.setPropertyEmitShapeChanged("dy", dy);
38
+ }
39
+
40
+ @Serializer.serialze()
41
+ get plane(): Plane {
42
+ return this.getPrivateValue("plane");
43
+ }
44
+
45
+ constructor(document: IDocument, plane: Plane, dx: number, dy: number) {
46
+ super(document);
47
+ this.setPrivateValue("plane", plane);
48
+ this.setPrivateValue("dx", dx);
49
+ this.setPrivateValue("dy", dy);
50
+ }
51
+
52
+ generateShape(): Result<IShape, string> {
53
+ const points = RectNode.points(this.plane, this.dx, this.dy);
54
+ const wire = this.document.application.shapeFactory.polygon(points);
55
+ if (!wire.isOk || !this.isFace) return wire;
56
+ return wire.value.toFace();
57
+ }
58
+
59
+ static points(plane: Plane, dx: number, dy: number): XYZ[] {
60
+ const start = plane.origin;
61
+ return [
62
+ start,
63
+ start.add(plane.xvec.multiply(dx)),
64
+ start.add(plane.xvec.multiply(dx)).add(plane.yvec.multiply(dy)),
65
+ start.add(plane.yvec.multiply(dy)),
66
+ start,
67
+ ];
68
+ }
69
+ }
@@ -0,0 +1,54 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IShape,
8
+ type Line,
9
+ ParameterShapeNode,
10
+ type Result,
11
+ Serializer,
12
+ } from "chili-core";
13
+
14
+ @Serializer.register(["document", "profile", "axis", "angle"])
15
+ export class RevolvedNode extends ParameterShapeNode {
16
+ override display(): I18nKeys {
17
+ return "body.revol";
18
+ }
19
+
20
+ @Serializer.serialze()
21
+ get profile() {
22
+ return this.getPrivateValue("profile");
23
+ }
24
+ set profile(value: IShape) {
25
+ this.setPropertyEmitShapeChanged("profile", value);
26
+ }
27
+
28
+ @Serializer.serialze()
29
+ get axis() {
30
+ return this.getPrivateValue("axis");
31
+ }
32
+ set axis(value: Line) {
33
+ this.setPropertyEmitShapeChanged("axis", value);
34
+ }
35
+
36
+ @Serializer.serialze()
37
+ get angle() {
38
+ return this.getPrivateValue("angle");
39
+ }
40
+ set angle(value: number) {
41
+ this.setPropertyEmitShapeChanged("angle", value);
42
+ }
43
+
44
+ constructor(document: IDocument, profile: IShape, axis: Line, angle: number) {
45
+ super(document);
46
+ this.setPrivateValue("profile", profile);
47
+ this.setPrivateValue("axis", axis);
48
+ this.setPrivateValue("angle", angle);
49
+ }
50
+
51
+ override generateShape(): Result<IShape> {
52
+ return this.document.application.shapeFactory.revolve(this.profile, this.axis, this.angle);
53
+ }
54
+ }
@@ -0,0 +1,48 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IShape,
8
+ ParameterShapeNode,
9
+ Property,
10
+ type Result,
11
+ Serializer,
12
+ type XYZ,
13
+ } from "chili-core";
14
+
15
+ @Serializer.register(["document", "center", "radius"])
16
+ export class SphereNode extends ParameterShapeNode {
17
+ override display(): I18nKeys {
18
+ return "body.sphere";
19
+ }
20
+
21
+ @Serializer.serialze()
22
+ @Property.define("circle.center")
23
+ get center() {
24
+ return this.getPrivateValue("center");
25
+ }
26
+ set center(center: XYZ) {
27
+ this.setPropertyEmitShapeChanged("center", center);
28
+ }
29
+
30
+ @Serializer.serialze()
31
+ @Property.define("circle.radius")
32
+ get radius() {
33
+ return this.getPrivateValue("radius");
34
+ }
35
+ set radius(value: number) {
36
+ this.setPropertyEmitShapeChanged("radius", value);
37
+ }
38
+
39
+ constructor(document: IDocument, center: XYZ, radius: number) {
40
+ super(document);
41
+ this.setPrivateValue("center", center);
42
+ this.setPrivateValue("radius", radius);
43
+ }
44
+
45
+ generateShape(): Result<IShape> {
46
+ return this.document.application.shapeFactory.sphere(this.center, this.radius);
47
+ }
48
+ }
@@ -0,0 +1,67 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IEdge,
8
+ type IShape,
9
+ type IWire,
10
+ ParameterShapeNode,
11
+ type Result,
12
+ Serializer,
13
+ ShapeType,
14
+ } from "chili-core";
15
+
16
+ @Serializer.register(["document", "profile", "path", "round"])
17
+ export class SweepedNode extends ParameterShapeNode {
18
+ override display(): I18nKeys {
19
+ return "body.sweep";
20
+ }
21
+
22
+ @Serializer.serialze()
23
+ get profile() {
24
+ return this.getPrivateValue("profile");
25
+ }
26
+ set profile(value: IShape[]) {
27
+ this.setPropertyEmitShapeChanged("profile", value);
28
+ }
29
+
30
+ @Serializer.serialze()
31
+ get path() {
32
+ return this.getPrivateValue("path");
33
+ }
34
+ set path(value: IWire) {
35
+ this.setPropertyEmitShapeChanged("path", value);
36
+ }
37
+
38
+ @Serializer.serialze()
39
+ get round() {
40
+ return this.getPrivateValue("round");
41
+ }
42
+ set round(value: boolean) {
43
+ this.setPropertyEmitShapeChanged("round", value);
44
+ }
45
+
46
+ constructor(document: IDocument, profile: (IWire | IEdge)[], path: IWire | IEdge, round: boolean) {
47
+ super(document);
48
+ this.setPrivateValue(
49
+ "profile",
50
+ profile.map((p) => this.ensureWire(p)),
51
+ );
52
+ this.setPrivateValue("path", this.ensureWire(path));
53
+ this.setPrivateValue("round", round);
54
+ }
55
+
56
+ private ensureWire(path: IEdge | IWire) {
57
+ let wire = path as IWire;
58
+ if (path.shapeType !== ShapeType.Wire) {
59
+ wire = this.document.application.shapeFactory.wire([path as unknown as IEdge]).value;
60
+ }
61
+ return wire;
62
+ }
63
+
64
+ override generateShape(): Result<IShape> {
65
+ return this.document.application.shapeFactory.sweep(this.profile, this.path, this.round);
66
+ }
67
+ }
@@ -0,0 +1,36 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ type I18nKeys,
6
+ type IDocument,
7
+ type IEdge,
8
+ type IShape,
9
+ ParameterShapeNode,
10
+ type Result,
11
+ Serializer,
12
+ } from "chili-core";
13
+
14
+ @Serializer.register(["document", "edges"])
15
+ export class WireNode extends ParameterShapeNode {
16
+ override display(): I18nKeys {
17
+ return "body.wire";
18
+ }
19
+
20
+ @Serializer.serialze()
21
+ get edges(): IEdge[] {
22
+ return this.getPrivateValue("edges");
23
+ }
24
+ set edges(values: IEdge[]) {
25
+ this.setPropertyEmitShapeChanged("edges", values);
26
+ }
27
+
28
+ constructor(document: IDocument, edges: IEdge[]) {
29
+ super(document);
30
+ this.setPrivateValue("edges", edges);
31
+ }
32
+
33
+ override generateShape(): Result<IShape> {
34
+ return this.document.application.shapeFactory.wire(this.edges);
35
+ }
36
+ }
@@ -0,0 +1,10 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ export * from "./newDocument";
5
+ export * from "./openDocument";
6
+ export * from "./performanceTest";
7
+ export * from "./saveDocument";
8
+ export * from "./toFile";
9
+ export * from "./toggleDynamicWorkplane";
10
+ export * from "./wechatGroup";
@@ -0,0 +1,17 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import { command, type IApplication, type ICommand } from "chili-core";
5
+
6
+ let count = 1;
7
+
8
+ @command({
9
+ key: "doc.new",
10
+ icon: "icon-new",
11
+ isApplicationCommand: true,
12
+ })
13
+ export class NewDocument implements ICommand {
14
+ async execute(app: IApplication): Promise<void> {
15
+ await app.newDocument(`undefined ${count++}`);
16
+ }
17
+ }
@@ -0,0 +1,35 @@
1
+ // Part of the Chili3d Project, under the AGPL-3.0 License.
2
+ // See LICENSE file in the project root for full license information.
3
+
4
+ import {
5
+ command,
6
+ I18n,
7
+ type IApplication,
8
+ type ICommand,
9
+ PubSub,
10
+ readFileAsync,
11
+ type Serialized,
12
+ } from "chili-core";
13
+
14
+ @command({
15
+ key: "doc.open",
16
+ icon: "icon-open",
17
+ isApplicationCommand: true,
18
+ })
19
+ export class OpenDocument implements ICommand {
20
+ async execute(app: IApplication): Promise<void> {
21
+ PubSub.default.pub(
22
+ "showPermanent",
23
+ async () => {
24
+ const files = await readFileAsync(".cd", false);
25
+ if (files.isOk) {
26
+ const json: Serialized = JSON.parse(files.value[0].data);
27
+ const document = await app.loadDocument(json);
28
+ document?.application.activeView?.cameraController.fitContent();
29
+ }
30
+ },
31
+ "toast.excuting{0}",
32
+ I18n.translate("command.doc.open"),
33
+ );
34
+ }
35
+ }