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,447 @@
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 <BRepAdaptor_Curve.hxx>
8
+ #include <BRepAlgoAPI_Defeaturing.hxx>
9
+ #include <BRepAlgoAPI_Section.hxx>
10
+ #include <BRepAlgoAPI_Splitter.hxx>
11
+ #include <BRepBuilderAPI_Copy.hxx>
12
+ #include <BRepBuilderAPI_MakeEdge.hxx>
13
+ #include <BRepBuilderAPI_MakeFace.hxx>
14
+ #include <BRepBuilderAPI_Sewing.hxx>
15
+ #include <BRepExtrema_ExtCC.hxx>
16
+ #include <BRepGProp.hxx>
17
+ #include <BRepGProp_Face.hxx>
18
+ #include <BRepOffsetAPI_MakeOffset.hxx>
19
+ #include <BRepPrim_Builder.hxx>
20
+ #include <BRepTools.hxx>
21
+ #include <BRepTools_ReShape.hxx>
22
+ #include <BRepTools_WireExplorer.hxx>
23
+ #include <BRep_Builder.hxx>
24
+ #include <BRep_Tool.hxx>
25
+ #include <GCPnts_AbscissaPoint.hxx>
26
+ #include <GProp_GProps.hxx>
27
+ #include <GeomAbs_JoinType.hxx>
28
+ #include <Geom_OffsetCurve.hxx>
29
+ #include <Geom_TrimmedCurve.hxx>
30
+ #include <HLRAlgo_Projector.hxx>
31
+ #include <HLRBRep_Algo.hxx>
32
+ #include <HLRBRep_HLRToShape.hxx>
33
+ #include <ShapeAnalysis.hxx>
34
+ #include <ShapeFix_Shape.hxx>
35
+ #include <TopExp.hxx>
36
+ #include <TopExp_Explorer.hxx>
37
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
38
+ #include <TopoDS.hxx>
39
+ #include <TopoDS_CompSolid.hxx>
40
+ #include <TopoDS_Compound.hxx>
41
+ #include <TopoDS_Edge.hxx>
42
+ #include <TopoDS_Face.hxx>
43
+ #include <TopoDS_Iterator.hxx>
44
+ #include <TopoDS_Shape.hxx>
45
+ #include <TopoDS_Shell.hxx>
46
+ #include <TopoDS_Solid.hxx>
47
+ #include <TopoDS_Vertex.hxx>
48
+ #include <TopoDS_Wire.hxx>
49
+ #include <gp_Ax3.hxx>
50
+ #include <gp_Dir.hxx>
51
+ #include <gp_Pnt.hxx>
52
+
53
+ #include "shared.hpp"
54
+ #include "utils.hpp"
55
+
56
+ using namespace emscripten;
57
+
58
+ class Shape {
59
+ public:
60
+ static TopoDS_Shape clone(const TopoDS_Shape& shape)
61
+ {
62
+ BRepBuilderAPI_Copy copy(shape);
63
+ return copy.Shape();
64
+ }
65
+
66
+ static bool isClosed(const TopoDS_Shape& shape)
67
+ {
68
+ return BRep_Tool::IsClosed(shape);
69
+ }
70
+
71
+ static ShapeArray findAncestor(const TopoDS_Shape& from, const TopoDS_Shape& subShape,
72
+ const TopAbs_ShapeEnum& ancestorType)
73
+ {
74
+ TopTools_IndexedDataMapOfShapeListOfShape map;
75
+ TopExp::MapShapesAndAncestors(from, subShape.ShapeType(), ancestorType, map);
76
+ auto index = map.FindIndex(subShape);
77
+ auto shapes = map.FindFromIndex(index);
78
+
79
+ return ShapeArray(val::array(shapes.begin(), shapes.end()));
80
+ }
81
+
82
+ static ShapeArray findSubShapes(const TopoDS_Shape& shape, const TopAbs_ShapeEnum& shapeType)
83
+ {
84
+ TopTools_IndexedMapOfShape indexShape;
85
+ TopExp::MapShapes(shape, shapeType, indexShape);
86
+
87
+ return ShapeArray(val::array(indexShape.cbegin(), indexShape.cend()));
88
+ }
89
+
90
+ static ShapeArray iterShape(const TopoDS_Shape& shape)
91
+ {
92
+ val new_array = val::array();
93
+ for (TopoDS_Iterator iter(shape); iter.More(); iter.Next()) {
94
+ new_array.call<void>("push", iter.Value());
95
+ }
96
+ return ShapeArray(new_array);
97
+ }
98
+
99
+ static TopoDS_Shape sectionSS(const TopoDS_Shape& shape, const TopoDS_Shape& otherShape)
100
+ {
101
+ BRepAlgoAPI_Section section(shape, otherShape);
102
+ return section.Shape();
103
+ }
104
+
105
+ static TopoDS_Shape sectionSP(const TopoDS_Shape& shape, const Pln& ax3)
106
+ {
107
+ gp_Pln pln = Pln::toPln(ax3);
108
+ BRepAlgoAPI_Section section(shape, pln);
109
+ return section.Shape();
110
+ }
111
+
112
+ static TopoDS_Shape splitShapes(const ShapeArray& arguments, const ShapeArray& tools)
113
+ {
114
+ TopTools_ListOfShape argumentsList = shapeArrayToListOfShape(arguments);
115
+ TopTools_ListOfShape toolsList = shapeArrayToListOfShape(tools);
116
+ BRepAlgoAPI_Splitter splitter;
117
+ splitter.SetToFillHistory(false);
118
+ splitter.SetArguments(argumentsList);
119
+ splitter.SetTools(toolsList);
120
+ splitter.SimplifyResult();
121
+ splitter.Build();
122
+
123
+ return splitter.Shape();
124
+ }
125
+
126
+ static TopoDS_Shape removeFeature(const TopoDS_Shape& shape, const ShapeArray& faces)
127
+ {
128
+ std::vector<TopoDS_Shape> facesVector = vecFromJSArray<TopoDS_Shape>(faces);
129
+ BRepAlgoAPI_Defeaturing defea;
130
+ defea.SetShape(shape);
131
+ for (auto& face : facesVector) {
132
+ defea.AddFaceToRemove(face);
133
+ }
134
+ defea.SetRunParallel(true);
135
+ defea.Build();
136
+ return defea.Shape();
137
+ }
138
+
139
+ static TopoDS_Compound shapeWires(const TopoDS_Shape& shape)
140
+ {
141
+ BRep_Builder builder;
142
+ TopoDS_Compound compound;
143
+ builder.MakeCompound(compound);
144
+
145
+ TopExp_Explorer explorer;
146
+ for (explorer.Init(shape, TopAbs_WIRE); explorer.More(); explorer.Next()) {
147
+ builder.Add(compound, TopoDS::Wire(explorer.Current()));
148
+ }
149
+
150
+ return compound;
151
+ }
152
+
153
+ static size_t countShape(const TopoDS_Shape& shape, TopAbs_ShapeEnum shapeType)
154
+ {
155
+ size_t size = 0;
156
+ TopExp_Explorer explorer;
157
+ for (explorer.Init(shape, shapeType); explorer.More(); explorer.Next()) {
158
+ size += 1;
159
+ }
160
+ return size;
161
+ }
162
+
163
+ static bool hasOnlyOneSub(const TopoDS_Shape& shape, TopAbs_ShapeEnum shapeType)
164
+ {
165
+ size_t size = 0;
166
+ TopExp_Explorer explorer;
167
+ for (explorer.Init(shape, shapeType); explorer.More(); explorer.Next()) {
168
+ size += 1;
169
+ if (size > 1) {
170
+ return false;
171
+ }
172
+ }
173
+ return size == 1;
174
+ }
175
+
176
+ static TopoDS_Shape removeSubShape(TopoDS_Shape& shape, const ShapeArray& subShapes)
177
+ {
178
+ std::vector<TopoDS_Shape> subShapesVector = vecFromJSArray<TopoDS_Shape>(subShapes);
179
+
180
+ auto source = hasOnlyOneSub(shape, TopAbs_FACE) ? shapeWires(shape) : shape;
181
+ TopTools_IndexedDataMapOfShapeListOfShape mapEF;
182
+ TopExp::MapShapesAndAncestors(source, TopAbs_EDGE, TopAbs_FACE, mapEF);
183
+ BRepTools_ReShape reShape;
184
+ for (auto& subShape : subShapesVector) {
185
+ reShape.Remove(subShape);
186
+
187
+ TopTools_ListOfShape faces;
188
+ if (mapEF.FindFromKey(subShape, faces)) {
189
+ for (auto& face : faces) {
190
+ reShape.Remove(face);
191
+ }
192
+ }
193
+ }
194
+
195
+ ShapeFix_Shape fixer(reShape.Apply(source));
196
+ fixer.Perform();
197
+
198
+ return fixer.Shape();
199
+ }
200
+
201
+ static TopoDS_Shape replaceSubShape(const TopoDS_Shape& shape, const TopoDS_Shape& subShape,
202
+ const TopoDS_Shape& newShape)
203
+ {
204
+ BRepTools_ReShape reShape;
205
+ reShape.Replace(subShape, newShape);
206
+
207
+ ShapeFix_Shape fixer(reShape.Apply(shape));
208
+ fixer.Perform();
209
+
210
+ return fixer.Shape();
211
+ }
212
+
213
+ static TopoDS_Shape sewing(const TopoDS_Shape& shape1, const TopoDS_Shape& shape2)
214
+ {
215
+ BRepBuilderAPI_Sewing sewing;
216
+ sewing.Add(shape1);
217
+ sewing.Add(shape2);
218
+
219
+ sewing.Perform();
220
+ return sewing.SewedShape();
221
+ }
222
+
223
+ static TopoDS_Shape hlr(const TopoDS_Shape& shape, const gp_Pnt& point, const gp_Dir& direction, const gp_Dir& xDirection)
224
+ {
225
+ gp_Ax3 ax3(point, direction, xDirection);
226
+ gp_Trsf trsf;
227
+ trsf.SetTransformation(ax3);
228
+
229
+ HLRAlgo_Projector projector(trsf, false, false);
230
+ Handle_HLRBRep_Algo algo = new HLRBRep_Algo();
231
+ algo->Add(shape);
232
+ algo->Projector(projector);
233
+ algo->Update();
234
+
235
+ HLRBRep_HLRToShape hlrToShape(algo);
236
+ return hlrToShape.VCompound();
237
+ }
238
+ };
239
+
240
+ class Vertex {
241
+ public:
242
+ static Vector3 point(const TopoDS_Vertex& vertex)
243
+ {
244
+ return Vector3::fromPnt(BRep_Tool::Pnt(vertex));
245
+ }
246
+ };
247
+
248
+ class Edge {
249
+ public:
250
+ static TopoDS_Edge fromCurve(const Geom_Curve* curve)
251
+ {
252
+ Handle_Geom_Curve handleCurve(curve);
253
+ BRepBuilderAPI_MakeEdge builder(handleCurve);
254
+ return builder.Edge();
255
+ }
256
+
257
+ static double curveLength(const TopoDS_Edge& edge)
258
+ {
259
+ GProp_GProps props;
260
+ BRepGProp::LinearProperties(edge, props);
261
+ return props.Mass();
262
+ }
263
+
264
+ static Handle_Geom_TrimmedCurve curve(const TopoDS_Edge& edge)
265
+ {
266
+ double start(0.0), end(0.0);
267
+ auto curve = BRep_Tool::Curve(edge, start, end);
268
+ Handle_Geom_TrimmedCurve trimmedCurve = new Geom_TrimmedCurve(curve, start, end);
269
+ return trimmedCurve;
270
+ }
271
+
272
+ static TopoDS_Edge trim(const TopoDS_Edge& edge, double start, double end)
273
+ {
274
+ double u1(0.0), u2(0.0);
275
+ auto curve = BRep_Tool::Curve(edge, u1, u2);
276
+ BRepBuilderAPI_MakeEdge builder(curve, start, end);
277
+ return builder.Edge();
278
+ }
279
+
280
+ static TopoDS_Edge offset(const TopoDS_Edge& edge, const gp_Dir& dir, double offset)
281
+ {
282
+ double start(0.0), end(0.0);
283
+ auto curve = BRep_Tool::Curve(edge, start, end);
284
+ Handle_Geom_TrimmedCurve trimmedCurve = new Geom_TrimmedCurve(curve, start, end);
285
+ Handle_Geom_OffsetCurve offsetCurve = new Geom_OffsetCurve(trimmedCurve, offset, dir);
286
+ BRepBuilderAPI_MakeEdge builder(offsetCurve);
287
+ return builder.Edge();
288
+ }
289
+
290
+ static PointAndParameterArray intersect(const TopoDS_Edge& edge, const TopoDS_Edge& otherEdge)
291
+ {
292
+ std::vector<PointAndParameter> points;
293
+ BRepExtrema_ExtCC cc(edge, otherEdge);
294
+ if (cc.IsDone() && cc.NbExt() > 0 && !cc.IsParallel()) {
295
+ for (int i = 1; i <= cc.NbExt(); i++) {
296
+ if (cc.SquareDistance(i) > Precision::Intersection()) {
297
+ continue;
298
+ }
299
+ PointAndParameter pointAndParameter = {
300
+ Vector3::fromPnt(cc.PointOnE1(i)),
301
+ cc.ParameterOnE1(i),
302
+ };
303
+ points.push_back(pointAndParameter);
304
+ }
305
+ }
306
+
307
+ return PointAndParameterArray(val::array(points));
308
+ }
309
+ };
310
+
311
+ class Wire {
312
+ public:
313
+ static TopoDS_Shape offset(const TopoDS_Wire& wire, double distance, const GeomAbs_JoinType& joinType)
314
+ {
315
+ BRepOffsetAPI_MakeOffset offsetter(wire, joinType);
316
+ offsetter.Perform(distance);
317
+ if (offsetter.IsDone()) {
318
+ return offsetter.Shape();
319
+ }
320
+ return TopoDS_Shape();
321
+ }
322
+
323
+ static TopoDS_Face makeFace(const TopoDS_Wire& wire)
324
+ {
325
+ BRepBuilderAPI_MakeFace face(wire);
326
+ return face.Face();
327
+ }
328
+
329
+ static EdgeArray edgeLoop(const TopoDS_Wire& wire)
330
+ {
331
+ std::vector<TopoDS_Edge> edges;
332
+ BRepTools_WireExplorer explorer(wire);
333
+ for (; explorer.More(); explorer.Next()) {
334
+ edges.push_back(TopoDS::Edge(explorer.Current()));
335
+ }
336
+ return EdgeArray(val::array(edges));
337
+ }
338
+ };
339
+
340
+ class Face {
341
+ public:
342
+ static double area(const TopoDS_Face& face)
343
+ {
344
+ GProp_GProps props;
345
+ BRepGProp::SurfaceProperties(face, props);
346
+ return props.Mass();
347
+ }
348
+
349
+ static TopoDS_Shape offset(const TopoDS_Face& face, double distance, const GeomAbs_JoinType& joinType)
350
+ {
351
+ BRepOffsetAPI_MakeOffset offsetter(face, joinType);
352
+ offsetter.Perform(distance);
353
+ if (offsetter.IsDone()) {
354
+ return offsetter.Shape();
355
+ }
356
+ return TopoDS_Shape();
357
+ }
358
+
359
+ static Domain curveOnSurface(const TopoDS_Face& face, const TopoDS_Edge& edge)
360
+ {
361
+ double start(0.0), end(0.0);
362
+ if (BRep_Tool::CurveOnSurface(edge, face, start, end).IsNull()) {
363
+ return Domain();
364
+ }
365
+ Domain domain = { start, end };
366
+ return domain;
367
+ }
368
+
369
+ static void normal(const TopoDS_Face& face, double u, double v, gp_Pnt& point, gp_Vec& normal)
370
+ {
371
+ BRepGProp_Face gpProp(face);
372
+ gpProp.Normal(u, v, point, normal);
373
+ }
374
+
375
+ static WireArray wires(const TopoDS_Face& face)
376
+ {
377
+ std::vector<TopoDS_Wire> wires;
378
+ TopExp_Explorer explorer;
379
+ for (explorer.Init(face, TopAbs_WIRE); explorer.More(); explorer.Next()) {
380
+ wires.push_back(TopoDS::Wire(explorer.Current()));
381
+ }
382
+ return WireArray(val::array(wires));
383
+ }
384
+
385
+ static TopoDS_Wire outerWire(const TopoDS_Face& face)
386
+ {
387
+ return BRepTools::OuterWire(face);
388
+ }
389
+
390
+ static Handle_Geom_Surface surface(const TopoDS_Face& face)
391
+ {
392
+ return BRep_Tool::Surface(face);
393
+ }
394
+ };
395
+
396
+ class Solid {
397
+ public:
398
+ static double volume(const TopoDS_Solid& solid)
399
+ {
400
+ GProp_GProps props;
401
+ BRepGProp::VolumeProperties(solid, props);
402
+ return props.Mass();
403
+ }
404
+ };
405
+
406
+ EMSCRIPTEN_BINDINGS(Shape)
407
+ {
408
+ class_<Shape>("Shape")
409
+ .class_function("clone", &Shape::clone)
410
+ .class_function("findAncestor", &Shape::findAncestor)
411
+ .class_function("findSubShapes", &Shape::findSubShapes)
412
+ .class_function("iterShape", &Shape::iterShape)
413
+ .class_function("sectionSS", &Shape::sectionSS)
414
+ .class_function("sectionSP", &Shape::sectionSP)
415
+ .class_function("isClosed", &Shape::isClosed)
416
+ .class_function("splitShapes", &Shape::splitShapes)
417
+ .class_function("removeFeature", &Shape::removeFeature)
418
+ .class_function("removeSubShape", &Shape::removeSubShape)
419
+ .class_function("replaceSubShape", &Shape::replaceSubShape)
420
+ .class_function("hlr", &Shape::hlr)
421
+ .class_function("sewing", &Shape::sewing);
422
+
423
+ class_<Vertex>("Vertex").class_function("point", &Vertex::point);
424
+
425
+ class_<Edge>("Edge")
426
+ .class_function("fromCurve", &Edge::fromCurve, allow_raw_pointers())
427
+ .class_function("curve", &Edge::curve)
428
+ .class_function("curveLength", &Edge::curveLength)
429
+ .class_function("trim", &Edge::trim)
430
+ .class_function("intersect", &Edge::intersect)
431
+ .class_function("offset", &Edge::offset);
432
+
433
+ class_<Wire>("Wire")
434
+ .class_function("offset", &Wire::offset)
435
+ .class_function("makeFace", &Wire::makeFace)
436
+ .class_function("edgeLoop", &Wire::edgeLoop);
437
+
438
+ class_<Face>("Face")
439
+ .class_function("area", &Face::area)
440
+ .class_function("offset", &Face::offset)
441
+ .class_function("outerWire", &Face::outerWire)
442
+ .class_function("surface", &Face::surface)
443
+ .class_function("normal", &Face::normal)
444
+ .class_function("curveOnSurface", &Face::curveOnSurface);
445
+
446
+ class_<Solid>("Solid").class_function("volume", &Solid::volume);
447
+ }
@@ -0,0 +1,83 @@
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 "shared.hpp"
5
+
6
+ #include <TopoDS_Shape.hxx>
7
+
8
+ using namespace emscripten;
9
+
10
+ EMSCRIPTEN_BINDINGS(Shared)
11
+ {
12
+ register_type<Int8Array>("Int8Array");
13
+ register_type<Int16Array>("Int16Array");
14
+ register_type<Int32Array>("Int32Array");
15
+ register_type<Uint8Array>("Uint8Array");
16
+ register_type<Uint16Array>("Uint16Array");
17
+ register_type<Uint32Array>("Uint32Array");
18
+ register_type<Float32Array>("Float32Array");
19
+ register_type<Float64Array>("Float64Array");
20
+ register_type<BigInt64Array>("BigInt64Array");
21
+ register_type<BigUint64Array>("BigUint64Array");
22
+
23
+ register_type<Vector3Array>("Array<Vector3>");
24
+ register_type<PointAndParameterArray>("Array<PointAndParameter>");
25
+
26
+ register_type<NumberArray>("Array<number>");
27
+ register_type<ShapeArray>("Array<TopoDS_Shape>");
28
+ register_type<EdgeArray>("Array<TopoDS_Edge>");
29
+ register_type<FaceArray>("Array<TopoDS_Face>");
30
+ register_type<WireArray>("Array<TopoDS_Wire>");
31
+ register_type<ShellArray>("Array<TopoDS_Shell>");
32
+ register_type<PntArray>("Array<gp_Pnt>");
33
+
34
+ register_optional<double>();
35
+ register_optional<UV>();
36
+ register_optional<PointAndParameter>();
37
+ register_optional<ProjectPointResult>();
38
+ register_optional<std::string>();
39
+
40
+ value_object<Domain>("Domain").field("start", &Domain::start).field("end", &Domain::end);
41
+ ;
42
+
43
+ value_object<UV>("UV").field("u", &UV::u).field("v", &UV::v);
44
+ ;
45
+
46
+ value_object<Vector3>("Vector3").field("x", &Vector3::x).field("y", &Vector3::y).field("z", &Vector3::z);
47
+
48
+ value_object<PointAndParameter>("PointAndParameter")
49
+ .field("point", &PointAndParameter::point)
50
+ .field("parameter", &PointAndParameter::parameter);
51
+
52
+ value_object<Ax1>("Ax1").field("location", &Ax1::location).field("direction", &Ax1::direction);
53
+
54
+ value_object<Ax2>("Ax2")
55
+ .field("location", &Ax2::location)
56
+ .field("direction", &Ax2::direction)
57
+ .field("xDirection", &Ax2::xDirection);
58
+
59
+ value_object<Ax3>("Ax3")
60
+ .field("location", &Ax3::location)
61
+ .field("direction", &Ax3::direction)
62
+ .field("xDirection", &Ax3::xDirection);
63
+
64
+ value_object<Pln>("Pln")
65
+ .field("location", &Pln::location)
66
+ .field("direction", &Pln::direction)
67
+ .field("xDirection", &Pln::xDirection);
68
+
69
+ register_optional<ExtremaCCResult>();
70
+
71
+ value_object<ProjectPointResult>("ProjectPointResult")
72
+ .field("point", &ProjectPointResult::point)
73
+ .field("distance", &ProjectPointResult::distance)
74
+ .field("parameter", &ProjectPointResult::parameter);
75
+
76
+ value_object<ExtremaCCResult>("ExtremaCCResult")
77
+ .field("distance", &ExtremaCCResult::distance)
78
+ .field("p1", &ExtremaCCResult::p1)
79
+ .field("p2", &ExtremaCCResult::p2)
80
+ .field("isParallel", &ExtremaCCResult::isParallel)
81
+ .field("u1", &ExtremaCCResult::u1)
82
+ .field("u2", &ExtremaCCResult::u2);
83
+ }