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,211 @@
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
+ #pragma once
5
+
6
+ #include <emscripten/bind.h>
7
+ #include <emscripten/val.h>
8
+
9
+ #include <gp_Ax1.hxx>
10
+ #include <gp_Ax2.hxx>
11
+ #include <gp_Ax3.hxx>
12
+ #include <gp_Dir.hxx>
13
+ #include <gp_Pln.hxx>
14
+ #include <gp_Pnt.hxx>
15
+ #include <gp_Vec.hxx>
16
+
17
+ #define STR(x) #x
18
+ #define REGISTER_HANDLE(T) \
19
+ class_<Handle_##T>(STR(Handle_##T)) \
20
+ .constructor<const T*>() \
21
+ .function("get", &Handle_##T::get, allow_raw_pointers()) \
22
+ .function("isNull", &Handle_##T::IsNull)
23
+
24
+ class Math {
25
+ public:
26
+ constexpr static const double PI = 3.14159265358979323846;
27
+ constexpr static const double PI_2 = PI * 2;
28
+ constexpr static const double PI_h = PI / 2;
29
+ };
30
+
31
+ struct Domain {
32
+ double start;
33
+ double end;
34
+ };
35
+
36
+ struct UV {
37
+ double u;
38
+ double v;
39
+ };
40
+
41
+ struct Vector3 {
42
+ double x;
43
+ double y;
44
+ double z;
45
+
46
+ static gp_XYZ toXYZ(const Vector3& p)
47
+ {
48
+ return gp_XYZ(p.x, p.y, p.z);
49
+ }
50
+
51
+ static gp_Pnt toPnt(const Vector3& p)
52
+ {
53
+ return gp_Pnt(p.x, p.y, p.z);
54
+ }
55
+
56
+ static Vector3 fromPnt(const gp_Pnt& p)
57
+ {
58
+ return Vector3 { p.X(), p.Y(), p.Z() };
59
+ }
60
+
61
+ static gp_Dir toDir(const Vector3& p)
62
+ {
63
+ return gp_Dir(p.x, p.y, p.z);
64
+ }
65
+
66
+ static Vector3 fromDir(const gp_Dir& p)
67
+ {
68
+ return Vector3 { p.X(), p.Y(), p.Z() };
69
+ }
70
+
71
+ static gp_Vec toVec(const Vector3& p)
72
+ {
73
+ return gp_Vec(p.x, p.y, p.z);
74
+ }
75
+
76
+ static Vector3 fromVec(const gp_Vec& p)
77
+ {
78
+ return Vector3 { p.X(), p.Y(), p.Z() };
79
+ }
80
+ };
81
+
82
+ struct PointAndParameter {
83
+ Vector3 point;
84
+ double parameter;
85
+ };
86
+
87
+ struct Ax1 {
88
+ Vector3 location;
89
+ Vector3 direction;
90
+
91
+ static gp_Ax1 toAx1(const Ax1& a)
92
+ {
93
+ return gp_Ax1(Vector3::toPnt(a.location), Vector3::toDir(a.direction));
94
+ }
95
+
96
+ static Ax1 fromAx1(const gp_Ax1& a)
97
+ {
98
+ return Ax1 { Vector3::fromPnt(a.Location()), Vector3::fromDir(a.Direction()) };
99
+ }
100
+ };
101
+
102
+ struct Ax2 {
103
+ Vector3 location;
104
+ Vector3 direction;
105
+ Vector3 xDirection;
106
+
107
+ static gp_Ax2 toAx2(const Ax2& a)
108
+ {
109
+ return gp_Ax2(Vector3::toPnt(a.location), Vector3::toDir(a.direction), Vector3::toDir(a.xDirection));
110
+ }
111
+
112
+ static Ax2 fromAx2(const gp_Ax2& a)
113
+ {
114
+ return Ax2 { Vector3::fromPnt(a.Location()), Vector3::fromDir(a.Direction()), Vector3::fromDir(a.XDirection()) };
115
+ }
116
+ };
117
+
118
+ struct Ax3 {
119
+ Vector3 location;
120
+ Vector3 direction;
121
+ Vector3 xDirection;
122
+
123
+ static gp_Ax2 toAx2(const Ax3& a)
124
+ {
125
+ return gp_Ax2(Vector3::toPnt(a.location), Vector3::toDir(a.direction), Vector3::toDir(a.xDirection));
126
+ }
127
+
128
+ static Ax3 fromAx2(const gp_Ax2& a)
129
+ {
130
+ return Ax3 { Vector3::fromPnt(a.Location()), Vector3::fromDir(a.Direction()), Vector3::fromDir(a.XDirection()) };
131
+ }
132
+
133
+ static gp_Ax3 toAx3(const Ax3& a)
134
+ {
135
+ return gp_Ax3(Vector3::toPnt(a.location), Vector3::toDir(a.direction), Vector3::toDir(a.xDirection));
136
+ }
137
+
138
+ static Ax3 fromAx3(const gp_Ax3& a)
139
+ {
140
+ return Ax3 { Vector3::fromPnt(a.Location()), Vector3::fromDir(a.Direction()), Vector3::fromDir(a.XDirection()) };
141
+ }
142
+
143
+ static gp_Pln toPln(const Ax3& a)
144
+ {
145
+ return gp_Pln(toAx3(a));
146
+ }
147
+ };
148
+
149
+ struct Pln {
150
+ Vector3 location;
151
+ Vector3 direction;
152
+ Vector3 xDirection;
153
+
154
+ static gp_Pln toPln(const Pln& a)
155
+ {
156
+ return gp_Pln(toAx3(a));
157
+ }
158
+
159
+ static gp_Ax3 toAx3(const Pln& a)
160
+ {
161
+ return gp_Ax3(Vector3::toPnt(a.location), Vector3::toDir(a.direction), Vector3::toDir(a.xDirection));
162
+ }
163
+
164
+ static Pln fromAx3(const gp_Ax3& a)
165
+ {
166
+ return Pln { Vector3::fromPnt(a.Location()), Vector3::fromDir(a.Direction()), Vector3::fromDir(a.XDirection()) };
167
+ }
168
+
169
+ static Pln fromPln(const gp_Pln& a)
170
+ {
171
+ return Pln { Vector3::fromPnt(a.Location()), Vector3::fromDir(a.Axis().Direction()),
172
+ Vector3::fromDir(a.XAxis().Direction()) };
173
+ }
174
+ };
175
+
176
+ struct ProjectPointResult {
177
+ Vector3 point;
178
+ double distance;
179
+ double parameter;
180
+ };
181
+
182
+ struct ExtremaCCResult {
183
+ bool isParallel;
184
+ double distance;
185
+ Vector3 p1;
186
+ Vector3 p2;
187
+ double u1;
188
+ double u2;
189
+ };
190
+
191
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Int8Array)
192
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Int16Array)
193
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Int32Array)
194
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Uint8Array)
195
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Uint16Array)
196
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Uint32Array)
197
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Float32Array)
198
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Float64Array)
199
+ EMSCRIPTEN_DECLARE_VAL_TYPE(BigInt64Array)
200
+ EMSCRIPTEN_DECLARE_VAL_TYPE(BigUint64Array)
201
+
202
+ EMSCRIPTEN_DECLARE_VAL_TYPE(Vector3Array)
203
+
204
+ EMSCRIPTEN_DECLARE_VAL_TYPE(NumberArray)
205
+ EMSCRIPTEN_DECLARE_VAL_TYPE(EdgeArray)
206
+ EMSCRIPTEN_DECLARE_VAL_TYPE(WireArray)
207
+ EMSCRIPTEN_DECLARE_VAL_TYPE(FaceArray)
208
+ EMSCRIPTEN_DECLARE_VAL_TYPE(ShellArray)
209
+ EMSCRIPTEN_DECLARE_VAL_TYPE(ShapeArray)
210
+ EMSCRIPTEN_DECLARE_VAL_TYPE(PointAndParameterArray)
211
+ EMSCRIPTEN_DECLARE_VAL_TYPE(PntArray)
@@ -0,0 +1,29 @@
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
+ #include <emscripten/bind.h>
5
+ #include <emscripten/val.h>
6
+
7
+ #include <Standard_Transient.hxx>
8
+
9
+ using namespace emscripten;
10
+
11
+ class Transient {
12
+ public:
13
+ static bool isKind(const Standard_Transient* t, const std::string& name)
14
+ {
15
+ return t->IsKind(name.c_str());
16
+ }
17
+
18
+ static bool isInstance(const Standard_Transient* t, const std::string& name)
19
+ {
20
+ return t->IsInstance(name.c_str());
21
+ }
22
+ };
23
+
24
+ EMSCRIPTEN_BINDINGS(Transient)
25
+ {
26
+ class_<Transient>("Transient")
27
+ .class_function("isKind", &Transient::isKind, allow_raw_pointers())
28
+ .class_function("isInstance", &Transient::isInstance, allow_raw_pointers());
29
+ }
@@ -0,0 +1,114 @@
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
+ #include "utils.hpp"
5
+
6
+ #include <BRepBndLib.hxx>
7
+ #include <Bnd_Box.hxx>
8
+ #include <GeomAPI_ExtremaCurveCurve.hxx>
9
+ #include <GeomAPI_ProjectPointOnCurve.hxx>
10
+
11
+ std::vector<ExtremaCCResult> extremaCCs(const Geom_Curve* curve1, const Geom_Curve* curve2, double maxDistance)
12
+ {
13
+ std::vector<ExtremaCCResult> result;
14
+ GeomAPI_ExtremaCurveCurve extrema(curve1, curve2);
15
+ if (extrema.NbExtrema() == 0) {
16
+ return result;
17
+ }
18
+
19
+ gp_Pnt p1, p2;
20
+ double u1 = 0, u2 = 0;
21
+ for (int i = 1; i <= extrema.NbExtrema(); i++) {
22
+ double distance = extrema.Distance(i);
23
+ if (distance > maxDistance) {
24
+ continue;
25
+ }
26
+ extrema.Points(i, p1, p2);
27
+ extrema.Parameters(i, u1, u2);
28
+ result.push_back(ExtremaCCResult { .isParallel = extrema.IsParallel(),
29
+ .distance = distance,
30
+ .p1 = Vector3::fromPnt(p1),
31
+ .p2 = Vector3::fromPnt(p2),
32
+ .u1 = u1,
33
+ .u2 = u2 });
34
+ }
35
+
36
+ return result;
37
+ }
38
+
39
+ std::optional<ProjectPointResult> projectToCurve(const Geom_Curve* curve, gp_Pnt pnt)
40
+ {
41
+ GeomAPI_ProjectPointOnCurve projector(pnt, curve);
42
+ if (projector.NbPoints() > 0) {
43
+ return ProjectPointResult { .point = Vector3::fromPnt(projector.NearestPoint()),
44
+ .distance = projector.LowerDistance(),
45
+ .parameter = projector.LowerDistanceParameter() };
46
+ }
47
+
48
+ return std::nullopt;
49
+ }
50
+
51
+ ProjectPointResult nearestEnd(const Geom_Curve* curve, gp_Pnt pnt)
52
+ {
53
+ gp_Pnt start = curve->Value(curve->FirstParameter());
54
+ gp_Pnt end = curve->Value(curve->LastParameter());
55
+ double distanceToStart = pnt.Distance(start);
56
+ double distanceToEnd = pnt.Distance(end);
57
+ if (distanceToStart < distanceToEnd) {
58
+ return ProjectPointResult {
59
+ .point = Vector3::fromPnt(start), .distance = distanceToStart, .parameter = curve->FirstParameter()
60
+ };
61
+ } else {
62
+ return ProjectPointResult {
63
+ .point = Vector3::fromPnt(end), .distance = distanceToEnd, .parameter = curve->LastParameter()
64
+ };
65
+ }
66
+ }
67
+
68
+ ProjectPointResult projectOrNearestCP(const Geom_Curve* curve, const gp_Pnt& pnt)
69
+ {
70
+ auto project = projectToCurve(curve, pnt);
71
+ if (project.has_value()) {
72
+ return project.value();
73
+ }
74
+
75
+ return nearestEnd(curve, pnt);
76
+ }
77
+
78
+ double boundingBoxRatio(const TopoDS_Shape& shape, double linearDeflection)
79
+ {
80
+ Bnd_Box boundingBox;
81
+ BRepBndLib::Add(shape, boundingBox, false);
82
+ if (boundingBox.IsVoid()) {
83
+ return linearDeflection;
84
+ }
85
+ Standard_Real xMin, yMin, zMin, xMax, yMax, zMax;
86
+ boundingBox.Get(xMin, yMin, zMin, xMax, yMax, zMax);
87
+
88
+ Standard_Real avgSize = ((xMax - xMin) + (yMax - yMin) + (zMax - zMin)) / 3.0;
89
+ double linDeflection = avgSize * linearDeflection;
90
+ if (linDeflection < Precision::Confusion()) {
91
+ linDeflection = 1.0;
92
+ }
93
+ return linDeflection;
94
+ }
95
+
96
+ TopTools_SequenceOfShape shapeArrayToSequenceOfShape(const ShapeArray& shapes)
97
+ {
98
+ std::vector<TopoDS_Shape> shapeVector = emscripten::vecFromJSArray<TopoDS_Shape>(shapes);
99
+ TopTools_SequenceOfShape result;
100
+ for (auto& s : shapeVector) {
101
+ result.Append(s);
102
+ }
103
+ return result;
104
+ }
105
+
106
+ TopTools_ListOfShape shapeArrayToListOfShape(const ShapeArray& shapes)
107
+ {
108
+ std::vector<TopoDS_Shape> shapeVector = emscripten::vecFromJSArray<TopoDS_Shape>(shapes);
109
+ TopTools_ListOfShape result;
110
+ for (auto& s : shapeVector) {
111
+ result.Append(s);
112
+ }
113
+ return result;
114
+ }
@@ -0,0 +1,25 @@
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
+ #pragma once
5
+
6
+ #include <Geom_Curve.hxx>
7
+ #include <TopTools_ListOfShape.hxx>
8
+ #include <TopTools_SequenceOfShape.hxx>
9
+ #include <TopoDS_Shape.hxx>
10
+ #include <gp_Pnt.hxx>
11
+
12
+ #include "shared.hpp"
13
+
14
+ std::vector<ExtremaCCResult> extremaCCs(const Geom_Curve* curve1, const Geom_Curve* curve2, double maxDistance);
15
+
16
+ std::optional<ProjectPointResult> projectToCurve(const Geom_Curve* curve, gp_Pnt pnt);
17
+
18
+ ProjectPointResult nearestEnd(const Geom_Curve* curve, gp_Pnt pnt);
19
+
20
+ ProjectPointResult projectOrNearestCP(const Geom_Curve* curve, const gp_Pnt& pnt);
21
+
22
+ TopTools_SequenceOfShape shapeArrayToSequenceOfShape(const ShapeArray& shapes);
23
+ TopTools_ListOfShape shapeArrayToListOfShape(const ShapeArray& shapes);
24
+
25
+ double boundingBoxRatio(const TopoDS_Shape& shape, double linearDeflection);
@@ -0,0 +1,146 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>chili wasm test</title>
8
+ <style type="text/css">
9
+ body {
10
+ font-family: Arial, sans-serif;
11
+ }
12
+
13
+ #output {
14
+ margin: 20px;
15
+ }
16
+
17
+ h2 {
18
+ margin-top: 20px;
19
+ }
20
+
21
+ p {
22
+ margin: 0;
23
+ margin-left: 20px;
24
+ }
25
+
26
+ .failed {
27
+ color: red;
28
+ }
29
+
30
+ .result {
31
+ margin-top: 10px;
32
+ font-weight: bold;
33
+ }
34
+ </style>
35
+
36
+ </head>
37
+
38
+ <body>
39
+ <div id="output"></div>
40
+ <script type="text/javascript">
41
+ function resultMessage(passed, failed, time) {
42
+ const p = document.createElement('p');
43
+ p.className = 'result';
44
+ p.innerHTML = `Passed: ${passed}, Failed: ${failed}, Time: ${time}`;
45
+ if (failed > 0) {
46
+ p.className += ' failed';
47
+ }
48
+ return p;
49
+ }
50
+
51
+ function failedMessage(actual, expected) {
52
+ const p = document.createElement('p');
53
+ p.innerHTML = `Expected ${expected}, but got ${actual}`;
54
+ p.className = 'failed';
55
+ return p;
56
+ }
57
+
58
+ async function test(name, fn) {
59
+ var passed = 0, failed = 0;
60
+ const expect = (actual) => {
61
+ return {
62
+ toBe(expected) {
63
+ if (actual !== expected) {
64
+ div.append(failedMessage(actual, expected));
65
+ failed++;
66
+ } else {
67
+ passed++;
68
+ }
69
+ }
70
+ };
71
+ };
72
+
73
+ const div = document.createElement('div');
74
+ div.className = 'test';
75
+ output.append(div);
76
+ const title = document.createElement('h2');
77
+ div.innerHTML = name
78
+ output.append(title);
79
+ const start = performance.now();
80
+ fn(expect);
81
+ const end = performance.now();
82
+ div.append(resultMessage(passed, failed, end - start));
83
+ }
84
+
85
+ </script>
86
+ <script type="module">
87
+ window.onload = async () => {
88
+ const initWasm = await import('../build/target/release/chili-wasm.js');
89
+ const wasm = await initWasm.default();
90
+ test("test face mesh", (expect) => {
91
+ const location = { x: 0, y: 0, z: 0 };
92
+ const direction = { x: 0, y: 0, z: 1 };
93
+ const xDirection = { x: 1, y: 0, z: 0 };
94
+ const ax3 = { location, direction, xDirection };
95
+ const box = wasm.ShapeFactory.box(ax3, 1, 2, 3).shape;
96
+ const mesher = new wasm.Mesher(box, 0.1);
97
+ const mesh = mesher.mesh();
98
+
99
+ expect(mesh.faceMeshData.position.length).toBe(72);
100
+ expect(mesh.faceMeshData.index.length).toBe(36);
101
+ expect(mesh.faceMeshData.group.length).toBe(12);
102
+ expect(mesh.faceMeshData.normal.length).toBe(72);
103
+ expect(mesh.faceMeshData.uv.length).toBe(48);
104
+ })
105
+
106
+ test("test edge mesh", (expect) => {
107
+ const location = { x: 0, y: 0, z: 0 };
108
+ const direction = { x: 0, y: 0, z: 1 };
109
+ const xDirection = { x: 1, y: 0, z: 0 };
110
+ const ax3 = { location, direction, xDirection };
111
+ const box = wasm.ShapeFactory.box(ax3, 1, 1, 1).shape;
112
+ const mesher = new wasm.Mesher(box, 0.1);
113
+ const mesh = mesher.mesh();
114
+ expect(mesh.edgeMeshData.position.length).toBe(72);
115
+ expect(mesh.edgeMeshData.group.length).toBe(24);
116
+ })
117
+
118
+ test("test shape", (expect) => {
119
+ const location = { x: 0, y: 0, z: 0 };
120
+ const direction = { x: 0, y: 0, z: 1 };
121
+ const xDirection = { x: 1, y: 0, z: 0 };
122
+ const ax3 = { location, direction, xDirection };
123
+ const box = wasm.ShapeFactory.box(ax3, 1, 1, 1).shape;
124
+ const edges = wasm.Shape.findSubShapes(box, wasm.TopAbs_ShapeEnum.TopAbs_EDGE);
125
+ expect(edges.length).toBe(12);
126
+ expect(edges[0].shapeType()).toBe(wasm.TopAbs_ShapeEnum.TopAbs_EDGE);
127
+
128
+ const curve = wasm.Edge.curve(wasm.TopoDS.edge(edges[0]));
129
+ const newEdge = wasm.Edge.fromCurve(curve.get());
130
+ expect(wasm.Edge.curveLength(newEdge)).toBe(1);
131
+
132
+ const faces = wasm.Shape.findAncestor(box, edges[1], wasm.TopAbs_ShapeEnum.TopAbs_FACE);
133
+ expect(faces.length).toBe(2);
134
+ expect(faces[0].shapeType()).toBe(wasm.TopAbs_ShapeEnum.TopAbs_FACE)
135
+
136
+ const faceEdges = wasm.Shape.findSubShapes(faces[0], wasm.TopAbs_ShapeEnum.TopAbs_EDGE);
137
+ expect(faceEdges.length).toBe(4);
138
+
139
+ })
140
+
141
+ }
142
+ </script>
143
+
144
+ </body>
145
+
146
+ </html>
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "chili3d",
3
+ "version": "0.6.1",
4
+ "description": "",
5
+ "documentVersion": "0.7",
6
+ "author": "仙阁",
7
+ "scripts": {
8
+ "build": "rspack build",
9
+ "build:types": "tsc --project tsconfig.build.json",
10
+ "build:wasm": "cd cpp && cmake --preset release && cmake --build --preset release",
11
+ "build:all": "npm run build:types && npm run build",
12
+ "check": "biome check --write",
13
+ "dev": "rspack dev",
14
+ "format": "biome check --write . && npx clang-format --style=Webkit --sort-includes -i ./cpp/src/**",
15
+ "preview": "rspack preview",
16
+ "release": "node scripts/release.mjs",
17
+ "setup:wasm": "node scripts/setup_wasm_deps.mjs",
18
+ "test": "rstest",
19
+ "testc": "rstest --coverage"
20
+ },
21
+ "simple-git-hooks": {
22
+ "pre-commit": "npx lint-staged"
23
+ },
24
+ "lint-staged": {
25
+ "*.{ts,js,css,json,md,mjs}": [
26
+ "biome check --write"
27
+ ],
28
+ "*.{c,h,cxx,hxx,cpp,hpp}": [
29
+ "clang-format --style=Webkit --sort-includes -i"
30
+ ]
31
+ },
32
+ "workspaces": [
33
+ "packages/*"
34
+ ],
35
+ "devDependencies": {
36
+ "@biomejs/biome": "2.3.6",
37
+ "@rspack/cli": "1.6.3",
38
+ "@rspack/core": "1.6.3",
39
+ "@rstest/core": "^0.6.5",
40
+ "@rstest/coverage-istanbul": "^0.0.5",
41
+ "clang-format": "^1.8.0",
42
+ "fork-ts-checker-webpack-plugin": "9.1.0",
43
+ "happy-dom": "^20.0.10",
44
+ "lint-staged": "16.2.6",
45
+ "simple-git-hooks": "2.13.1",
46
+ "typescript": "5.9.3",
47
+ "typescript-plugin-css-modules": "^5.2.0"
48
+ }
49
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "chili",
3
+ "version": "0.6.1",
4
+ "description": "",
5
+ "main": "src/index.ts",
6
+ "devDependencies": {
7
+ "chili-core": "*",
8
+ "chili-geo": "*",
9
+ "chili-vis": "*"
10
+ }
11
+ }