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,510 @@
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 Continuity,
6
+ gc,
7
+ type IBezierSurface,
8
+ type IBoundedSurface,
9
+ type IBSplineSurface,
10
+ type ICompositeSurface,
11
+ type IConicalSurface,
12
+ type ICurve,
13
+ type ICylindricalSurface,
14
+ type IElementarySurface,
15
+ type IGeometry,
16
+ type IOffsetSurface,
17
+ type IPlaneSurface,
18
+ type IPlateSurface,
19
+ type IRectangularTrimmedSurface,
20
+ type ISphericalSurface,
21
+ type ISurface,
22
+ type ISurfaceOfLinearExtrusion,
23
+ type ISurfaceOfRevolution,
24
+ type ISweptSurface,
25
+ type IToroidalSurface,
26
+ type Matrix4,
27
+ type Plane,
28
+ XYZ,
29
+ } from "chili-core";
30
+ import type {
31
+ Geom_BezierSurface,
32
+ Geom_BSplineSurface,
33
+ Geom_ConicalSurface,
34
+ Geom_CylindricalSurface,
35
+ Geom_ElementarySurface,
36
+ Geom_OffsetSurface,
37
+ Geom_Plane,
38
+ Geom_RectangularTrimmedSurface,
39
+ Geom_SphericalSurface,
40
+ Geom_Surface,
41
+ Geom_SurfaceOfLinearExtrusion,
42
+ Geom_SurfaceOfRevolution,
43
+ Geom_SweptSurface,
44
+ Geom_ToroidalSurface,
45
+ GeomPlate_Surface,
46
+ ShapeExtend_CompositeSurface,
47
+ } from "../lib/chili-wasm";
48
+ import { OccCurve } from "./curve";
49
+ import { OccGeometry } from "./geometry";
50
+ import { OcctHelper } from "./helper";
51
+
52
+ export class OccSurface extends OccGeometry implements ISurface {
53
+ constructor(readonly surface: Geom_Surface) {
54
+ super(surface);
55
+ }
56
+
57
+ override copy(): IGeometry {
58
+ return gc((c) => {
59
+ const s = c(this.surface.copy());
60
+ return OcctHelper.wrapSurface(s.get() as Geom_Surface);
61
+ });
62
+ }
63
+
64
+ override transformed(matrix: Matrix4): IGeometry {
65
+ return gc((c) => {
66
+ const s = c(this.surface.transformed(OcctHelper.convertFromMatrix(matrix)));
67
+ return OcctHelper.wrapSurface(s.get() as Geom_Surface);
68
+ });
69
+ }
70
+
71
+ projectCurve(curve: ICurve): ICurve | undefined {
72
+ return gc((c) => {
73
+ if (!(curve instanceof OccCurve)) return undefined;
74
+ const handleCurve = c(wasm.Surface.projectCurve(this.surface, curve.curve));
75
+ return OcctHelper.wrapCurve(handleCurve.get()!);
76
+ });
77
+ }
78
+
79
+ project(point: XYZ): XYZ[] {
80
+ return wasm.Surface.projectPoint(this.surface, point)
81
+ .map((p) => new XYZ(p.x, p.y, p.z))
82
+ .toSorted((a, b) => a.distanceTo(point) - b.distanceTo(point));
83
+ }
84
+
85
+ isPlanar(): boolean {
86
+ return wasm.Surface.isPlanar(this.surface);
87
+ }
88
+
89
+ parameter(point: XYZ, maxDistance: number): { u: number; v: number } | undefined {
90
+ return wasm.Surface.parameters(this.surface, point, maxDistance);
91
+ }
92
+
93
+ nearestPoint(point: XYZ): [XYZ, number] | undefined {
94
+ const result = wasm.Surface.nearestPoint(this.surface, point);
95
+ if (result) {
96
+ return [OcctHelper.toXYZ(result.point), result.parameter];
97
+ }
98
+ return undefined;
99
+ }
100
+
101
+ continuity(): Continuity {
102
+ return OcctHelper.convertToContinuity(this.surface.continuity());
103
+ }
104
+
105
+ uIso(u: number): ICurve {
106
+ return gc((c) => {
107
+ const curve = c(this.surface.uIso(u));
108
+ return OcctHelper.wrapCurve(curve.get()!);
109
+ });
110
+ }
111
+ vIso(v: number): ICurve {
112
+ return gc((c) => {
113
+ const curve = c(this.surface.vIso(v));
114
+ return OcctHelper.wrapCurve(curve.get()!);
115
+ });
116
+ }
117
+ isUClosed(): boolean {
118
+ return this.surface.isUClosed();
119
+ }
120
+ isVClosed(): boolean {
121
+ return this.surface.isVClosed();
122
+ }
123
+ isUPreiodic(): boolean {
124
+ return this.surface.isUPeriodic();
125
+ }
126
+ isVPreiodic(): boolean {
127
+ return this.surface.isVPeriodic();
128
+ }
129
+ vPeriod(): number {
130
+ return this.surface.vPeriod();
131
+ }
132
+ uPeriod(): number {
133
+ return this.surface.uPeriod();
134
+ }
135
+ bounds() {
136
+ return wasm.Surface.bounds(this.surface);
137
+ }
138
+ isCNu(n: number): boolean {
139
+ return this.surface.isCNu(n);
140
+ }
141
+ isCNv(n: number): boolean {
142
+ return this.surface.isCNv(n);
143
+ }
144
+ d0(u: number, v: number): XYZ {
145
+ return gc((c) => {
146
+ const pnt = c(new wasm.gp_Pnt(0, 0, 0));
147
+ this.surface.d0(u, v, pnt);
148
+ return OcctHelper.toXYZ(pnt);
149
+ });
150
+ }
151
+ d1(
152
+ u: number,
153
+ v: number,
154
+ ): {
155
+ point: XYZ;
156
+ d1u: XYZ;
157
+ d1v: XYZ;
158
+ } {
159
+ return gc((c) => {
160
+ const pnt = c(new wasm.gp_Pnt(0, 0, 0));
161
+ const d1u = c(new wasm.gp_Vec(0, 0, 0));
162
+ const d1v = c(new wasm.gp_Vec(0, 0, 0));
163
+ this.surface.d1(u, v, pnt, d1u, d1v);
164
+ return {
165
+ point: OcctHelper.toXYZ(pnt),
166
+ d1u: OcctHelper.toXYZ(d1u),
167
+ d1v: OcctHelper.toXYZ(d1v),
168
+ };
169
+ });
170
+ }
171
+ d2(u: number, v: number) {
172
+ return gc((c) => {
173
+ const pnt = c(new wasm.gp_Pnt(0, 0, 0));
174
+ const d1u = c(new wasm.gp_Vec(0, 0, 0));
175
+ const d1v = c(new wasm.gp_Vec(0, 0, 0));
176
+ const d2u = c(new wasm.gp_Vec(0, 0, 0));
177
+ const d2v = c(new wasm.gp_Vec(0, 0, 0));
178
+ const d2uv = c(new wasm.gp_Vec(0, 0, 0));
179
+ this.surface.d2(u, v, pnt, d1u, d1v, d2u, d2v, d2uv);
180
+
181
+ return {
182
+ point: OcctHelper.toXYZ(pnt),
183
+ d1u: OcctHelper.toXYZ(d1u),
184
+ d1v: OcctHelper.toXYZ(d1v),
185
+ d2u: OcctHelper.toXYZ(d2u),
186
+ d2v: OcctHelper.toXYZ(d2v),
187
+ d2uv: OcctHelper.toXYZ(d2uv),
188
+ };
189
+ });
190
+ }
191
+ d3(u: number, v: number) {
192
+ return gc((c) => {
193
+ const pnt = c(new wasm.gp_Pnt(0, 0, 0));
194
+ const d1u = c(new wasm.gp_Vec(0, 0, 0));
195
+ const d1v = c(new wasm.gp_Vec(0, 0, 0));
196
+ const d2u = c(new wasm.gp_Vec(0, 0, 0));
197
+ const d2v = c(new wasm.gp_Vec(0, 0, 0));
198
+ const d2uv = c(new wasm.gp_Vec(0, 0, 0));
199
+ const d3u = c(new wasm.gp_Vec(0, 0, 0));
200
+ const d3v = c(new wasm.gp_Vec(0, 0, 0));
201
+ const d3uuv = c(new wasm.gp_Vec(0, 0, 0));
202
+ const d3uvv = c(new wasm.gp_Vec(0, 0, 0));
203
+ this.surface.d3(u, v, pnt, d1u, d1v, d2u, d2v, d2uv, d3u, d3v, d3uuv, d3uvv);
204
+
205
+ return {
206
+ point: OcctHelper.toXYZ(pnt),
207
+ d1u: OcctHelper.toXYZ(d1u),
208
+ d1v: OcctHelper.toXYZ(d1v),
209
+ d2u: OcctHelper.toXYZ(d2u),
210
+ d2v: OcctHelper.toXYZ(d2v),
211
+ d2uv: OcctHelper.toXYZ(d2uv),
212
+ d3u: OcctHelper.toXYZ(d3u),
213
+ d3v: OcctHelper.toXYZ(d3v),
214
+ d3uuv: OcctHelper.toXYZ(d3uuv),
215
+ d3uvv: OcctHelper.toXYZ(d3uvv),
216
+ };
217
+ });
218
+ }
219
+ dn(u: number, v: number, nu: number, nv: number): XYZ {
220
+ return gc((c) => {
221
+ const vec = c(this.surface.dn(u, v, nu, nv));
222
+ return OcctHelper.toXYZ(vec);
223
+ });
224
+ }
225
+ value(u: number, v: number): XYZ {
226
+ return gc((c) => {
227
+ const pnt = c(this.surface.value(u, v));
228
+ return OcctHelper.toXYZ(pnt);
229
+ });
230
+ }
231
+ }
232
+
233
+ export class OccPlateSurface extends OccSurface implements IPlateSurface {
234
+ constructor(private plateSurface: GeomPlate_Surface) {
235
+ super(plateSurface);
236
+ }
237
+
238
+ setBounds(u1: number, u2: number, v1: number, v2: number): void {
239
+ this.plateSurface.setBounds(u1, u2, v1, v2);
240
+ }
241
+ }
242
+
243
+ export class OccBoundedSurface extends OccSurface implements IBoundedSurface {}
244
+
245
+ export class OccElementarySurface extends OccSurface implements IElementarySurface {
246
+ constructor(private elementarySurface: Geom_ElementarySurface) {
247
+ super(elementarySurface);
248
+ }
249
+
250
+ get location() {
251
+ return gc((c) => OcctHelper.toXYZ(c(this.elementarySurface.location())));
252
+ }
253
+ set location(value: XYZ) {
254
+ gc((c) => {
255
+ this.elementarySurface.setLocation(c(OcctHelper.toPnt(value)));
256
+ });
257
+ }
258
+
259
+ get axis() {
260
+ return gc((c) => {
261
+ return OcctHelper.toXYZ(c(c(this.elementarySurface.axis()).direction()));
262
+ });
263
+ }
264
+ set axis(value: XYZ) {
265
+ gc((c) => {
266
+ const pnt = c(this.elementarySurface.location());
267
+ const axis = c(new wasm.gp_Ax1(pnt, c(OcctHelper.toDir(value))));
268
+ this.elementarySurface.setAxis(axis);
269
+ });
270
+ }
271
+ get coordinates() {
272
+ return gc((c) => {
273
+ return OcctHelper.fromAx23(c(this.elementarySurface.position()));
274
+ });
275
+ }
276
+ set coordinates(value: Plane) {
277
+ gc((c) => {
278
+ this.elementarySurface.setPosition(c(OcctHelper.toAx3(value)));
279
+ });
280
+ }
281
+ }
282
+
283
+ export class OccOffsetSurface extends OccSurface implements IOffsetSurface {
284
+ constructor(private offsetSurface: Geom_OffsetSurface) {
285
+ super(offsetSurface);
286
+ }
287
+ get offset(): number {
288
+ return this.offsetSurface.offset();
289
+ }
290
+ set offset(value: number) {
291
+ this.offsetSurface.setOffsetValue(value);
292
+ }
293
+ get basisSurface() {
294
+ return gc((c) => {
295
+ const handleSurface = c(this.offsetSurface.basisSurface());
296
+ return OcctHelper.wrapSurface(handleSurface.get()!);
297
+ });
298
+ }
299
+ set basisSurface(value: ISurface) {
300
+ gc((c) => {
301
+ if (value instanceof OccSurface) {
302
+ const handleSurface = c(new wasm.Handle_Geom_Surface(value.surface));
303
+ this.offsetSurface.setBasisSurface(handleSurface, true);
304
+ }
305
+ throw new Error("Invalid surface type");
306
+ });
307
+ }
308
+ }
309
+
310
+ export class OccSweptSurface extends OccSurface implements ISweptSurface {
311
+ constructor(private sweptSurface: Geom_SweptSurface) {
312
+ super(sweptSurface);
313
+ }
314
+ direction(): XYZ {
315
+ return gc((c) => {
316
+ return OcctHelper.toXYZ(c(this.sweptSurface.direction()));
317
+ });
318
+ }
319
+ basisCurve(): ICurve {
320
+ return gc((c) => {
321
+ const handleCurve = this.sweptSurface.basisCurve();
322
+ return OcctHelper.wrapCurve(handleCurve.get()!);
323
+ });
324
+ }
325
+ }
326
+
327
+ export class OccCompositeSurface extends OccSurface implements ICompositeSurface {
328
+ constructor(compositeSurface: ShapeExtend_CompositeSurface) {
329
+ super(compositeSurface as any);
330
+ }
331
+ }
332
+
333
+ export class OccBSplineSurface extends OccSurface implements IBSplineSurface {
334
+ constructor(private bsplineSurface: Geom_BSplineSurface) {
335
+ super(bsplineSurface);
336
+ }
337
+ }
338
+
339
+ export class OccBezierSurface extends OccSurface implements IBezierSurface {
340
+ constructor(private bezierSurface: Geom_BezierSurface) {
341
+ super(bezierSurface);
342
+ }
343
+ }
344
+
345
+ export class OccRectangularSurface extends OccSurface implements IRectangularTrimmedSurface {
346
+ constructor(private rectangularSurface: Geom_RectangularTrimmedSurface) {
347
+ super(rectangularSurface);
348
+ }
349
+ basisSurface(): ISurface {
350
+ return gc((c) => {
351
+ const handleSurface = c(this.rectangularSurface.basisSurface());
352
+ return OcctHelper.wrapSurface(handleSurface.get()!);
353
+ });
354
+ }
355
+ setUTrim(u1: number, u2: number): void {
356
+ this.rectangularSurface.setTrim2(u1, u2, true, true);
357
+ }
358
+ setVTrim(v1: number, v2: number): void {
359
+ this.rectangularSurface.setTrim2(v1, v2, false, true);
360
+ }
361
+ setTrim(u1: number, u2: number, v1: number, v2: number): void {
362
+ this.rectangularSurface.setTrim(u1, u2, v1, v2, true, true);
363
+ }
364
+ }
365
+
366
+ export class OccConicalSurface extends OccElementarySurface implements IConicalSurface {
367
+ constructor(private conicalSurface: Geom_ConicalSurface) {
368
+ super(conicalSurface);
369
+ }
370
+ get semiAngle(): number {
371
+ return this.conicalSurface.semiAngle();
372
+ }
373
+ set semiAngle(value: number) {
374
+ this.conicalSurface.setSemiAngle(value);
375
+ }
376
+ setRadius(value: number) {
377
+ return this.conicalSurface.setRadius(value);
378
+ }
379
+ apex(): XYZ {
380
+ return gc((c) => {
381
+ return OcctHelper.toXYZ(c(this.conicalSurface.apex()));
382
+ });
383
+ }
384
+ refRadius(): number {
385
+ return this.conicalSurface.refRadius();
386
+ }
387
+ }
388
+
389
+ export class OccCylindricalSurface extends OccElementarySurface implements ICylindricalSurface {
390
+ constructor(private cylindricalSurface: Geom_CylindricalSurface) {
391
+ super(cylindricalSurface);
392
+ }
393
+ get radius(): number {
394
+ return this.cylindricalSurface.radius();
395
+ }
396
+ set radius(value: number) {
397
+ this.cylindricalSurface.setRadius(value);
398
+ }
399
+ }
400
+
401
+ export class OccPlane extends OccElementarySurface implements IPlaneSurface {
402
+ constructor(private geom_plane: Geom_Plane) {
403
+ super(geom_plane);
404
+ }
405
+ get plane(): Plane {
406
+ return gc((c) => {
407
+ return OcctHelper.fromPln(c(this.geom_plane.pln()));
408
+ });
409
+ }
410
+ set plane(value: Plane) {
411
+ gc((c) => {
412
+ this.geom_plane.setPln(c(OcctHelper.toPln(value)));
413
+ });
414
+ }
415
+ }
416
+
417
+ export class OccSphericalSurface extends OccElementarySurface implements ISphericalSurface {
418
+ constructor(private sphericalSurface: Geom_SphericalSurface) {
419
+ super(sphericalSurface);
420
+ }
421
+ get radius(): number {
422
+ return this.sphericalSurface.radius();
423
+ }
424
+ set radius(value: number) {
425
+ this.sphericalSurface.setRadius(value);
426
+ }
427
+ area(): number {
428
+ return this.sphericalSurface.area();
429
+ }
430
+ volume(): number {
431
+ return this.sphericalSurface.volume();
432
+ }
433
+ }
434
+
435
+ export class OccToroidalSurface extends OccElementarySurface implements IToroidalSurface {
436
+ constructor(private toroidalSurface: Geom_ToroidalSurface) {
437
+ super(toroidalSurface);
438
+ }
439
+ area(): number {
440
+ return this.toroidalSurface.area();
441
+ }
442
+ volume(): number {
443
+ return this.toroidalSurface.volume();
444
+ }
445
+ get majorRadius(): number {
446
+ return this.toroidalSurface.majorRadius();
447
+ }
448
+ set majorRadius(value: number) {
449
+ this.toroidalSurface.setMajorRadius(value);
450
+ }
451
+ get minorRadius(): number {
452
+ return this.toroidalSurface.minorRadius();
453
+ }
454
+ set minorRadius(value: number) {
455
+ this.toroidalSurface.setMinorRadius(value);
456
+ }
457
+ }
458
+
459
+ export class OccSurfaceOfLinearExtrusion extends OccSweptSurface implements ISurfaceOfLinearExtrusion {
460
+ constructor(private surfaceOfLinearExtrusion: Geom_SurfaceOfLinearExtrusion) {
461
+ super(surfaceOfLinearExtrusion);
462
+ }
463
+ setDirection(direction: XYZ) {
464
+ gc((c) => {
465
+ this.surfaceOfLinearExtrusion.setDirection(c(OcctHelper.toDir(direction)));
466
+ });
467
+ }
468
+ setBasisCurve(curve: ICurve) {
469
+ if (!(curve instanceof OccCurve)) {
470
+ throw new Error("curve must be an OccCurve");
471
+ }
472
+ const handleCurve = new wasm.Handle_Geom_Curve(curve.curve);
473
+ this.surfaceOfLinearExtrusion.setBasisCurve(handleCurve);
474
+ handleCurve.delete();
475
+ }
476
+ }
477
+
478
+ export class OccSurfaceOfRevolution extends OccSweptSurface implements ISurfaceOfRevolution {
479
+ constructor(private surfaceOfRevolution: Geom_SurfaceOfRevolution) {
480
+ super(surfaceOfRevolution);
481
+ }
482
+ get location(): XYZ {
483
+ return gc((c) => {
484
+ return OcctHelper.toXYZ(c(this.surfaceOfRevolution.location()));
485
+ });
486
+ }
487
+ set location(value: XYZ) {
488
+ gc((c) => {
489
+ this.surfaceOfRevolution.setLocation(c(OcctHelper.toPnt(value)));
490
+ });
491
+ }
492
+ referencePlane(): Plane {
493
+ return gc((c) => {
494
+ return OcctHelper.fromAx23(c(this.surfaceOfRevolution.referencePlane()));
495
+ });
496
+ }
497
+ setDirection(direction: XYZ) {
498
+ gc((c) => {
499
+ this.surfaceOfRevolution.setDirection(c(OcctHelper.toDir(direction)));
500
+ });
501
+ }
502
+ setBasisCurve(curve: ICurve) {
503
+ if (!(curve instanceof OccCurve)) {
504
+ throw new Error("curve must be an OccCurve");
505
+ }
506
+ const handleCurve = new wasm.Handle_Geom_Curve(curve.curve);
507
+ this.surfaceOfRevolution.setBasisCurve(handleCurve);
508
+ handleCurve.delete();
509
+ }
510
+ }
@@ -0,0 +1,13 @@
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 MainModuleFactory, { type MainModule } from "../lib/chili-wasm";
5
+
6
+ declare global {
7
+ var wasm: MainModule;
8
+ }
9
+
10
+ export async function initWasm() {
11
+ global.wasm = await MainModuleFactory();
12
+ return global.wasm;
13
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "chili-web",
3
+ "version": "0.6.1",
4
+ "description": "",
5
+ "main": "src/index.ts",
6
+ "devDependencies": {
7
+ "chili-builder": "*"
8
+ }
9
+ }
@@ -0,0 +1,33 @@
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 { AppBuilder } from "chili-builder";
5
+ import { type IApplication, Logger } from "chili-core";
6
+ import { Loading } from "./loading";
7
+
8
+ const loading = new Loading();
9
+ document.body.appendChild(loading);
10
+
11
+ async function handleApplicaionBuilt(app: IApplication) {
12
+ document.body.removeChild(loading);
13
+
14
+ const params = new URLSearchParams(window.location.search);
15
+ const url = params.get("url") ?? params.get("model");
16
+ if (url) {
17
+ Logger.info(`load file from url: ${url}`);
18
+
19
+ await app.loadFileFromUrl(url);
20
+ }
21
+ }
22
+
23
+ // prettier-ignore
24
+ new AppBuilder()
25
+ .useIndexedDB()
26
+ .useWasmOcc()
27
+ .useThree()
28
+ .useUI()
29
+ .build()
30
+ .then(handleApplicaionBuilt)
31
+ .catch((err) => {
32
+ Logger.error(err);
33
+ });
@@ -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
+ export class Loading extends HTMLElement {
5
+ constructor() {
6
+ super();
7
+ this.initSpinner();
8
+ this.initLabel();
9
+ this.initAnimation();
10
+ this.style.cssText = `
11
+ position: fixed;
12
+ display: block;
13
+ top: 0;
14
+ left: 0;
15
+ width: 100%;
16
+ height: 100%;
17
+ z-index: 9999;
18
+ background-color: rgba(0, 0, 0, 0.5);
19
+ `;
20
+ }
21
+
22
+ private initSpinner() {
23
+ const text = document.createElement("div");
24
+ text.style.cssText = `
25
+ position: absolute;
26
+ top: 40%;
27
+ left: 50%;
28
+ transform: translate(-50%, -50%);
29
+ width: 50px;
30
+ height: 50px;
31
+ border-radius: 50%;
32
+ border: 5px solid var(--foreground-color);
33
+ border-top-color: var(--background-color);
34
+ animation: spin 1s infinite linear;
35
+ `;
36
+ this.appendChild(text);
37
+ }
38
+
39
+ private initAnimation() {
40
+ const styleSheet = document.createElement("style");
41
+ styleSheet.innerHTML = `
42
+ @keyframes spin {
43
+ from { transform: rotate(0deg); }
44
+ to { transform: rotate(360deg); }
45
+ }
46
+ `;
47
+ document.head.appendChild(styleSheet);
48
+ }
49
+
50
+ private initLabel() {
51
+ const text = document.createElement("div");
52
+ text.innerText = "Loading...";
53
+ text.style.cssText = `
54
+ color: var(--foreground-color);
55
+ font-size: 16px;
56
+ position: relative;
57
+ top: calc(40% + 100px);
58
+ left: calc(50% + 25px);
59
+ transform: translate(-50%, -50%);
60
+ width: 50px;
61
+ height: 50px;
62
+ `;
63
+ this.appendChild(text);
64
+ }
65
+ }
66
+
67
+ customElements.define("chili-loading", Loading);
@@ -0,0 +1,31 @@
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
+ declare module "*.module.css" {
5
+ const classes: any;
6
+ export default classes;
7
+ }
8
+
9
+ declare module "*.wasm" {
10
+ const fun: string;
11
+ export default fun;
12
+ }
13
+
14
+ declare module "*.cur" {
15
+ const cur: string;
16
+ export default cur;
17
+ }
18
+
19
+ declare module "*.svg" {
20
+ const icon: string;
21
+ export default icon;
22
+ }
23
+
24
+ declare module "*.jpg" {
25
+ const path: string;
26
+ export default path;
27
+ }
28
+
29
+ declare var __APP_VERSION__: string;
30
+ declare var __DOCUMENT_VERSION__: string;
31
+ declare var __IS_PRODUCTION__: boolean;
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <!-- Created with Vectornator (http://vectornator.io/) -->
4
+ <svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="31 31 450 450" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
5
+ <defs/>
6
+ <g id="图层-1">
7
+ <path d="M71.7162 480.951C245.442 476.178 386.182 360.591 424.806 237.032C433.072 210.6 428.265 188.187 407.178 174.42C397.044 167.804 393.006 171.672 385.839 175.233C380.422 177.925 373.922 182.241 379.097 187.137C382.615 190.465 380.668 194.9 379.363 197.573C375.125 206.224 355.105 205.326 334.648 195.56C314.192 185.793 301.05 170.855 305.297 162.204C308.269 156.139 318.139 154.402 332.173 157.868C339.807 159.753 341.653 156.992 343.845 153.691C347.933 147.536 345.196 145.675 341.891 144.204C333.356 140.404 321.576 138.261 309.985 137.735C145.144 133.229 267.528 285.847 51.8973 427.303C33.8726 436.816 7.71038 482.711 71.7162 480.951Z" fill="#f0322d" fill-rule="nonzero" opacity="1" stroke="none"/>
8
+ <path d="M356.231 185.86C360.69 183.864 365.088 181.629 369.434 179.183C376.947 174.899 384.181 170.153 391.092 164.973C433.422 133.468 465.071 92.5206 477.548 73.7696C481.013 68.5621 482.62 57.4866 478.761 52.105C469.108 38.6429 449.136 31.9566 431.287 31.081C423.477 30.6979 415.771 31.6629 408.83 34.2076C405.923 35.2737 400.017 38.9675 398.218 50.6922C391.564 94.0823 368.434 127.479 353.408 149.769C349.45 155.652 345.898 160.541 342.996 164.35C341.599 166.185 338.313 170.011 335.256 172.935C332.41 175.658 332.712 180.687 336.496 183.727C341.343 187.62 351.538 187.958 356.231 185.86Z" fill="#6ec83c" fill-rule="nonzero" opacity="1" stroke="none"/>
9
+ </g>
10
+ </svg>