compas-occt 0.1.16__tar.gz

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 (279) hide show
  1. compas_occt-0.1.16/.editorconfig +30 -0
  2. compas_occt-0.1.16/.github/CODE_OF_CONDUCT.md +76 -0
  3. compas_occt-0.1.16/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  4. compas_occt-0.1.16/.github/ISSUE_TEMPLATE/feature_request.md +26 -0
  5. compas_occt-0.1.16/.github/pull_request_template.md +21 -0
  6. compas_occt-0.1.16/.github/workflows/build.yml +68 -0
  7. compas_occt-0.1.16/.github/workflows/docs.yml +30 -0
  8. compas_occt-0.1.16/.github/workflows/pr-checks.yml +21 -0
  9. compas_occt-0.1.16/.github/workflows/release.yml +107 -0
  10. compas_occt-0.1.16/.gitignore +167 -0
  11. compas_occt-0.1.16/AUTHORS.md +10 -0
  12. compas_occt-0.1.16/CHANGELOG.md +254 -0
  13. compas_occt-0.1.16/CMakeLists.txt +173 -0
  14. compas_occt-0.1.16/CONTRIBUTING.md +57 -0
  15. compas_occt-0.1.16/LICENSE +23 -0
  16. compas_occt-0.1.16/PKG-INFO +149 -0
  17. compas_occt-0.1.16/README.md +103 -0
  18. compas_occt-0.1.16/docs/acknowledgements.md +13 -0
  19. compas_occt-0.1.16/docs/api/compas_occt.brep.OCCBrep.md +4 -0
  20. compas_occt-0.1.16/docs/api/compas_occt.brep.OCCBrepEdge.md +4 -0
  21. compas_occt-0.1.16/docs/api/compas_occt.brep.OCCBrepFace.md +4 -0
  22. compas_occt-0.1.16/docs/api/compas_occt.brep.OCCBrepLoop.md +4 -0
  23. compas_occt-0.1.16/docs/api/compas_occt.brep.OCCBrepVertex.md +4 -0
  24. compas_occt-0.1.16/docs/api/compas_occt.conversions.md +1 -0
  25. compas_occt-0.1.16/docs/api/compas_occt.geometry.OCCCurve.md +4 -0
  26. compas_occt-0.1.16/docs/api/compas_occt.geometry.OCCCurve2d.md +3 -0
  27. compas_occt-0.1.16/docs/api/compas_occt.geometry.OCCNurbsCurve.md +3 -0
  28. compas_occt-0.1.16/docs/api/compas_occt.geometry.OCCNurbsSurface.md +3 -0
  29. compas_occt-0.1.16/docs/api/compas_occt.geometry.OCCSurface.md +3 -0
  30. compas_occt-0.1.16/docs/assets/images/PLACEHOLDER +1 -0
  31. compas_occt-0.1.16/docs/assets/images/compas_occt.png +0 -0
  32. compas_occt-0.1.16/docs/assets/images/example_brep_booleans.jpg +0 -0
  33. compas_occt-0.1.16/docs/assets/images/example_brep_exchange.jpg +0 -0
  34. compas_occt-0.1.16/docs/assets/images/example_brep_explorer.jpg +0 -0
  35. compas_occt-0.1.16/docs/assets/images/example_brep_fillet.jpg +0 -0
  36. compas_occt-0.1.16/docs/assets/images/example_brep_from_booleans.jpg +0 -0
  37. compas_occt-0.1.16/docs/assets/images/example_brep_from_extrusion.jpg +0 -0
  38. compas_occt-0.1.16/docs/assets/images/example_brep_from_loft.jpg +0 -0
  39. compas_occt-0.1.16/docs/assets/images/example_brep_from_mesh.jpg +0 -0
  40. compas_occt-0.1.16/docs/assets/images/example_brep_from_shape.jpg +0 -0
  41. compas_occt-0.1.16/docs/assets/images/example_brep_intersections.jpg +0 -0
  42. compas_occt-0.1.16/docs/assets/images/example_brep_overlap.jpg +0 -0
  43. compas_occt-0.1.16/docs/assets/images/example_brep_serialisation.jpg +0 -0
  44. compas_occt-0.1.16/docs/assets/images/example_brep_simplify.jpg +0 -0
  45. compas_occt-0.1.16/docs/assets/images/example_brep_slice.jpg +0 -0
  46. compas_occt-0.1.16/docs/assets/images/example_brep_split.jpg +0 -0
  47. compas_occt-0.1.16/docs/assets/images/example_brep_step_attributes.jpg +0 -0
  48. compas_occt-0.1.16/docs/assets/images/example_brep_trim.jpg +0 -0
  49. compas_occt-0.1.16/docs/assets/images/example_brep_with_hole.jpg +0 -0
  50. compas_occt-0.1.16/docs/assets/images/example_brep_with_holes.jpg +0 -0
  51. compas_occt-0.1.16/docs/assets/images/example_brep_with_holes2.jpg +0 -0
  52. compas_occt-0.1.16/docs/assets/images/example_curve_closest_parameters_curve.jpg +0 -0
  53. compas_occt-0.1.16/docs/assets/images/example_curve_closest_point.jpg +0 -0
  54. compas_occt-0.1.16/docs/assets/images/example_curve_comparison1.jpg +0 -0
  55. compas_occt-0.1.16/docs/assets/images/example_curve_comparison2.jpg +0 -0
  56. compas_occt-0.1.16/docs/assets/images/example_curve_divide.jpg +0 -0
  57. compas_occt-0.1.16/docs/assets/images/example_curve_from_circle.jpg +0 -0
  58. compas_occt-0.1.16/docs/assets/images/example_curve_from_ellipse.jpg +0 -0
  59. compas_occt-0.1.16/docs/assets/images/example_curve_from_interpolation.jpg +0 -0
  60. compas_occt-0.1.16/docs/assets/images/example_curve_from_line.jpg +0 -0
  61. compas_occt-0.1.16/docs/assets/images/example_curve_from_parameters.jpg +0 -0
  62. compas_occt-0.1.16/docs/assets/images/example_curve_from_points.jpg +0 -0
  63. compas_occt-0.1.16/docs/assets/images/example_curve_joining.jpg +0 -0
  64. compas_occt-0.1.16/docs/assets/images/example_curve_segmentation.jpg +0 -0
  65. compas_occt-0.1.16/docs/assets/images/example_surface_aabb.jpg +0 -0
  66. compas_occt-0.1.16/docs/assets/images/example_surface_frames.jpg +0 -0
  67. compas_occt-0.1.16/docs/assets/images/example_surface_from_fill.jpg +0 -0
  68. compas_occt-0.1.16/docs/assets/images/example_surface_from_meshgrid.jpg +0 -0
  69. compas_occt-0.1.16/docs/assets/images/example_surface_from_parameters.jpg +0 -0
  70. compas_occt-0.1.16/docs/assets/images/example_surface_from_points.jpg +0 -0
  71. compas_occt-0.1.16/docs/assets/images/example_surface_intersections_with_line.jpg +0 -0
  72. compas_occt-0.1.16/docs/assets/images/example_surface_isocurves.jpg +0 -0
  73. compas_occt-0.1.16/docs/assets/images/example_surface_jsondata.jpg +0 -0
  74. compas_occt-0.1.16/docs/assets/images/example_surface_obb.jpg +0 -0
  75. compas_occt-0.1.16/docs/assets/images/example_surface_random.jpg +0 -0
  76. compas_occt-0.1.16/docs/assets/images/example_surface_spacepoints.jpg +0 -0
  77. compas_occt-0.1.16/docs/assets/logos/compas_icon_white.png +0 -0
  78. compas_occt-0.1.16/docs/changelog.md +1 -0
  79. compas_occt-0.1.16/docs/examples/breps/booleans.iges +622 -0
  80. compas_occt-0.1.16/docs/examples/breps/booleans.step +1100 -0
  81. compas_occt-0.1.16/docs/examples/breps/brep_booleans.md +7 -0
  82. compas_occt-0.1.16/docs/examples/breps/brep_booleans.py +31 -0
  83. compas_occt-0.1.16/docs/examples/breps/brep_exchange.md +7 -0
  84. compas_occt-0.1.16/docs/examples/breps/brep_exchange.py +54 -0
  85. compas_occt-0.1.16/docs/examples/breps/brep_explorer.md +7 -0
  86. compas_occt-0.1.16/docs/examples/breps/brep_explorer.py +37 -0
  87. compas_occt-0.1.16/docs/examples/breps/brep_fillet.md +7 -0
  88. compas_occt-0.1.16/docs/examples/breps/brep_fillet.py +22 -0
  89. compas_occt-0.1.16/docs/examples/breps/brep_from_booleans.md +7 -0
  90. compas_occt-0.1.16/docs/examples/breps/brep_from_booleans.py +38 -0
  91. compas_occt-0.1.16/docs/examples/breps/brep_from_extrusion.md +7 -0
  92. compas_occt-0.1.16/docs/examples/breps/brep_from_extrusion.py +17 -0
  93. compas_occt-0.1.16/docs/examples/breps/brep_from_extrusion2.py +54 -0
  94. compas_occt-0.1.16/docs/examples/breps/brep_from_extrusion3.py +54 -0
  95. compas_occt-0.1.16/docs/examples/breps/brep_from_loft.md +7 -0
  96. compas_occt-0.1.16/docs/examples/breps/brep_from_loft.py +37 -0
  97. compas_occt-0.1.16/docs/examples/breps/brep_from_mesh.md +7 -0
  98. compas_occt-0.1.16/docs/examples/breps/brep_from_mesh.py +24 -0
  99. compas_occt-0.1.16/docs/examples/breps/brep_from_shape.md +7 -0
  100. compas_occt-0.1.16/docs/examples/breps/brep_from_shape.py +22 -0
  101. compas_occt-0.1.16/docs/examples/breps/brep_intersections.md +7 -0
  102. compas_occt-0.1.16/docs/examples/breps/brep_intersections.py +34 -0
  103. compas_occt-0.1.16/docs/examples/breps/brep_overlap.md +10 -0
  104. compas_occt-0.1.16/docs/examples/breps/brep_overlap.py +36 -0
  105. compas_occt-0.1.16/docs/examples/breps/brep_serialisation.md +7 -0
  106. compas_occt-0.1.16/docs/examples/breps/brep_serialisation.py +97 -0
  107. compas_occt-0.1.16/docs/examples/breps/brep_simplify.md +11 -0
  108. compas_occt-0.1.16/docs/examples/breps/brep_simplify.py +70 -0
  109. compas_occt-0.1.16/docs/examples/breps/brep_slice.md +7 -0
  110. compas_occt-0.1.16/docs/examples/breps/brep_slice.py +29 -0
  111. compas_occt-0.1.16/docs/examples/breps/brep_split.md +7 -0
  112. compas_occt-0.1.16/docs/examples/breps/brep_split.py +33 -0
  113. compas_occt-0.1.16/docs/examples/breps/brep_step_attributes.md +7 -0
  114. compas_occt-0.1.16/docs/examples/breps/brep_step_attributes.py +41 -0
  115. compas_occt-0.1.16/docs/examples/breps/brep_trim.md +7 -0
  116. compas_occt-0.1.16/docs/examples/breps/brep_trim.py +30 -0
  117. compas_occt-0.1.16/docs/examples/breps/brep_with_hole.md +7 -0
  118. compas_occt-0.1.16/docs/examples/breps/brep_with_hole.py +60 -0
  119. compas_occt-0.1.16/docs/examples/breps/brep_with_holes.md +7 -0
  120. compas_occt-0.1.16/docs/examples/breps/brep_with_holes.py +30 -0
  121. compas_occt-0.1.16/docs/examples/breps/brep_with_holes2.md +7 -0
  122. compas_occt-0.1.16/docs/examples/breps/brep_with_holes2.py +30 -0
  123. compas_occt-0.1.16/docs/examples/breps/index.md +10 -0
  124. compas_occt-0.1.16/docs/examples/breps/index.rst +9 -0
  125. compas_occt-0.1.16/docs/examples/breps/merge_test.obj +1156 -0
  126. compas_occt-0.1.16/docs/examples/curves/curve_closest_parameters_curve.md +7 -0
  127. compas_occt-0.1.16/docs/examples/curves/curve_closest_parameters_curve.py +30 -0
  128. compas_occt-0.1.16/docs/examples/curves/curve_closest_parameters_curve.rst +16 -0
  129. compas_occt-0.1.16/docs/examples/curves/curve_closest_point.md +7 -0
  130. compas_occt-0.1.16/docs/examples/curves/curve_closest_point.py +23 -0
  131. compas_occt-0.1.16/docs/examples/curves/curve_closest_point.rst +14 -0
  132. compas_occt-0.1.16/docs/examples/curves/curve_comparison1.md +7 -0
  133. compas_occt-0.1.16/docs/examples/curves/curve_comparison1.py +67 -0
  134. compas_occt-0.1.16/docs/examples/curves/curve_comparison1.rst +11 -0
  135. compas_occt-0.1.16/docs/examples/curves/curve_comparison2.md +7 -0
  136. compas_occt-0.1.16/docs/examples/curves/curve_comparison2.py +94 -0
  137. compas_occt-0.1.16/docs/examples/curves/curve_comparison2.rst +11 -0
  138. compas_occt-0.1.16/docs/examples/curves/curve_divide.md +7 -0
  139. compas_occt-0.1.16/docs/examples/curves/curve_divide.py +26 -0
  140. compas_occt-0.1.16/docs/examples/curves/curve_divide.rst +11 -0
  141. compas_occt-0.1.16/docs/examples/curves/curve_from_circle.md +7 -0
  142. compas_occt-0.1.16/docs/examples/curves/curve_from_circle.py +28 -0
  143. compas_occt-0.1.16/docs/examples/curves/curve_from_circle.rst +11 -0
  144. compas_occt-0.1.16/docs/examples/curves/curve_from_ellipse.md +7 -0
  145. compas_occt-0.1.16/docs/examples/curves/curve_from_ellipse.py +28 -0
  146. compas_occt-0.1.16/docs/examples/curves/curve_from_ellipse.rst +11 -0
  147. compas_occt-0.1.16/docs/examples/curves/curve_from_interpolation.md +7 -0
  148. compas_occt-0.1.16/docs/examples/curves/curve_from_interpolation.py +22 -0
  149. compas_occt-0.1.16/docs/examples/curves/curve_from_interpolation.rst +10 -0
  150. compas_occt-0.1.16/docs/examples/curves/curve_from_line.md +7 -0
  151. compas_occt-0.1.16/docs/examples/curves/curve_from_line.py +21 -0
  152. compas_occt-0.1.16/docs/examples/curves/curve_from_line.rst +11 -0
  153. compas_occt-0.1.16/docs/examples/curves/curve_from_parameters.md +7 -0
  154. compas_occt-0.1.16/docs/examples/curves/curve_from_parameters.py +35 -0
  155. compas_occt-0.1.16/docs/examples/curves/curve_from_parameters.rst +10 -0
  156. compas_occt-0.1.16/docs/examples/curves/curve_from_points.md +7 -0
  157. compas_occt-0.1.16/docs/examples/curves/curve_from_points.py +29 -0
  158. compas_occt-0.1.16/docs/examples/curves/curve_from_points.rst +28 -0
  159. compas_occt-0.1.16/docs/examples/curves/curve_joining.md +7 -0
  160. compas_occt-0.1.16/docs/examples/curves/curve_joining.py +25 -0
  161. compas_occt-0.1.16/docs/examples/curves/curve_joining.rst +14 -0
  162. compas_occt-0.1.16/docs/examples/curves/curve_segmentation.md +7 -0
  163. compas_occt-0.1.16/docs/examples/curves/curve_segmentation.py +32 -0
  164. compas_occt-0.1.16/docs/examples/curves/curve_segmentation.rst +17 -0
  165. compas_occt-0.1.16/docs/examples/curves/index.rst +9 -0
  166. compas_occt-0.1.16/docs/examples/surfaces/__temp/surface_from_extrusion-1.py +24 -0
  167. compas_occt-0.1.16/docs/examples/surfaces/__temp/surface_from_extrusion-1.rst +10 -0
  168. compas_occt-0.1.16/docs/examples/surfaces/__temp/surface_from_extrusion-2.py +25 -0
  169. compas_occt-0.1.16/docs/examples/surfaces/__temp/surface_from_extrusion-2.rst +10 -0
  170. compas_occt-0.1.16/docs/examples/surfaces/__temp/surface_of_revolution.py +27 -0
  171. compas_occt-0.1.16/docs/examples/surfaces/index.rst +9 -0
  172. compas_occt-0.1.16/docs/examples/surfaces/surface_aabb.md +7 -0
  173. compas_occt-0.1.16/docs/examples/surfaces/surface_aabb.py +58 -0
  174. compas_occt-0.1.16/docs/examples/surfaces/surface_aabb.rst +10 -0
  175. compas_occt-0.1.16/docs/examples/surfaces/surface_frames.md +7 -0
  176. compas_occt-0.1.16/docs/examples/surfaces/surface_frames.py +35 -0
  177. compas_occt-0.1.16/docs/examples/surfaces/surface_frames.rst +10 -0
  178. compas_occt-0.1.16/docs/examples/surfaces/surface_from_fill.md +7 -0
  179. compas_occt-0.1.16/docs/examples/surfaces/surface_from_fill.py +51 -0
  180. compas_occt-0.1.16/docs/examples/surfaces/surface_from_fill.rst +10 -0
  181. compas_occt-0.1.16/docs/examples/surfaces/surface_from_meshgrid.md +7 -0
  182. compas_occt-0.1.16/docs/examples/surfaces/surface_from_meshgrid.py +60 -0
  183. compas_occt-0.1.16/docs/examples/surfaces/surface_from_meshgrid.rst +10 -0
  184. compas_occt-0.1.16/docs/examples/surfaces/surface_from_parameters.md +7 -0
  185. compas_occt-0.1.16/docs/examples/surfaces/surface_from_parameters.py +118 -0
  186. compas_occt-0.1.16/docs/examples/surfaces/surface_from_parameters.rst +10 -0
  187. compas_occt-0.1.16/docs/examples/surfaces/surface_from_points.md +7 -0
  188. compas_occt-0.1.16/docs/examples/surfaces/surface_from_points.py +45 -0
  189. compas_occt-0.1.16/docs/examples/surfaces/surface_from_points.rst +10 -0
  190. compas_occt-0.1.16/docs/examples/surfaces/surface_intersections_with_line.md +7 -0
  191. compas_occt-0.1.16/docs/examples/surfaces/surface_intersections_with_line.py +76 -0
  192. compas_occt-0.1.16/docs/examples/surfaces/surface_intersections_with_line.rst +10 -0
  193. compas_occt-0.1.16/docs/examples/surfaces/surface_isocurves.md +7 -0
  194. compas_occt-0.1.16/docs/examples/surfaces/surface_isocurves.py +33 -0
  195. compas_occt-0.1.16/docs/examples/surfaces/surface_isocurves.rst +10 -0
  196. compas_occt-0.1.16/docs/examples/surfaces/surface_jsondata.md +7 -0
  197. compas_occt-0.1.16/docs/examples/surfaces/surface_jsondata.py +57 -0
  198. compas_occt-0.1.16/docs/examples/surfaces/surface_jsondata.rst +151 -0
  199. compas_occt-0.1.16/docs/examples/surfaces/surface_obb.md +7 -0
  200. compas_occt-0.1.16/docs/examples/surfaces/surface_obb.py +61 -0
  201. compas_occt-0.1.16/docs/examples/surfaces/surface_random.md +7 -0
  202. compas_occt-0.1.16/docs/examples/surfaces/surface_random.py +52 -0
  203. compas_occt-0.1.16/docs/examples/surfaces/surface_random.rst +10 -0
  204. compas_occt-0.1.16/docs/examples/surfaces/surface_spacepoints.md +7 -0
  205. compas_occt-0.1.16/docs/examples/surfaces/surface_spacepoints.py +56 -0
  206. compas_occt-0.1.16/docs/examples/surfaces/surface_spacepoints.rst +10 -0
  207. compas_occt-0.1.16/docs/examples.md +18 -0
  208. compas_occt-0.1.16/docs/index.md +12 -0
  209. compas_occt-0.1.16/docs/installation.md +25 -0
  210. compas_occt-0.1.16/docs/license.md +1 -0
  211. compas_occt-0.1.16/docs/public/favicon.ico +0 -0
  212. compas_occt-0.1.16/docs/screenshots.py +175 -0
  213. compas_occt-0.1.16/docs/tutorial.md +120 -0
  214. compas_occt-0.1.16/environment.yml +11 -0
  215. compas_occt-0.1.16/examples/curves/curve_sampling_test.py +21 -0
  216. compas_occt-0.1.16/examples/surfaces/surface_from_points.py +67 -0
  217. compas_occt-0.1.16/mkdocs.yml +204 -0
  218. compas_occt-0.1.16/nurbs_curve.brep +37 -0
  219. compas_occt-0.1.16/pyproject.toml +211 -0
  220. compas_occt-0.1.16/requirements-dev.txt +13 -0
  221. compas_occt-0.1.16/requirements.txt +1 -0
  222. compas_occt-0.1.16/src/brep_adaptor.cpp +158 -0
  223. compas_occt-0.1.16/src/brep_boolean.cpp +159 -0
  224. compas_occt-0.1.16/src/brep_explore.cpp +97 -0
  225. compas_occt-0.1.16/src/brep_fix.cpp +71 -0
  226. compas_occt-0.1.16/src/brep_make.cpp +355 -0
  227. compas_occt-0.1.16/src/brep_props.cpp +91 -0
  228. compas_occt-0.1.16/src/brep_relations.cpp +30 -0
  229. compas_occt-0.1.16/src/compas.h +29 -0
  230. compas_occt-0.1.16/src/compas_occt/__init__.py +25 -0
  231. compas_occt-0.1.16/src/compas_occt/brep/__init__.py +113 -0
  232. compas_occt-0.1.16/src/compas_occt/brep/brep.py +1806 -0
  233. compas_occt-0.1.16/src/compas_occt/brep/brepedge.py +604 -0
  234. compas_occt-0.1.16/src/compas_occt/brep/brepface.py +662 -0
  235. compas_occt-0.1.16/src/compas_occt/brep/breploop.py +236 -0
  236. compas_occt-0.1.16/src/compas_occt/brep/brepvertex.py +136 -0
  237. compas_occt-0.1.16/src/compas_occt/brep/builder.py +168 -0
  238. compas_occt-0.1.16/src/compas_occt/brep/errors.py +16 -0
  239. compas_occt-0.1.16/src/compas_occt/conversions/__init__.py +148 -0
  240. compas_occt-0.1.16/src/compas_occt/conversions/arrays.py +275 -0
  241. compas_occt-0.1.16/src/compas_occt/conversions/geometry.py +369 -0
  242. compas_occt-0.1.16/src/compas_occt/conversions/meshes.py +110 -0
  243. compas_occt-0.1.16/src/compas_occt/conversions/transformations.py +24 -0
  244. compas_occt-0.1.16/src/compas_occt/geometry/__init__.py +6 -0
  245. compas_occt-0.1.16/src/compas_occt/geometry/curves/__init__.py +35 -0
  246. compas_occt-0.1.16/src/compas_occt/geometry/curves/curve.py +341 -0
  247. compas_occt-0.1.16/src/compas_occt/geometry/curves/curve2d.py +183 -0
  248. compas_occt-0.1.16/src/compas_occt/geometry/curves/nurbs.py +358 -0
  249. compas_occt-0.1.16/src/compas_occt/geometry/surfaces/__init__.py +49 -0
  250. compas_occt-0.1.16/src/compas_occt/geometry/surfaces/nurbs.py +320 -0
  251. compas_occt-0.1.16/src/compas_occt/geometry/surfaces/surface.py +225 -0
  252. compas_occt-0.1.16/src/compas_occt/occ.py +152 -0
  253. compas_occt-0.1.16/src/compas_occt/scene.py +46 -0
  254. compas_occt-0.1.16/src/curve2d.cpp +80 -0
  255. compas_occt-0.1.16/src/curves.cpp +197 -0
  256. compas_occt-0.1.16/src/geometry.cpp +25 -0
  257. compas_occt-0.1.16/src/handles.h +45 -0
  258. compas_occt-0.1.16/src/io.cpp +254 -0
  259. compas_occt-0.1.16/src/meshing.cpp +155 -0
  260. compas_occt-0.1.16/src/module.cpp +54 -0
  261. compas_occt-0.1.16/src/nurbscurve.cpp +135 -0
  262. compas_occt-0.1.16/src/nurbssurface.cpp +203 -0
  263. compas_occt-0.1.16/src/occt.h +123 -0
  264. compas_occt-0.1.16/src/surfaces.cpp +148 -0
  265. compas_occt-0.1.16/src/types.cpp +11 -0
  266. compas_occt-0.1.16/tasks.py +51 -0
  267. compas_occt-0.1.16/temp/PLACEHOLDER +2 -0
  268. compas_occt-0.1.16/tests/curve_from_rhino.json +1 -0
  269. compas_occt-0.1.16/tests/surface_from_rhino.json +1 -0
  270. compas_occt-0.1.16/tests/test_booleans.py +39 -0
  271. compas_occt-0.1.16/tests/test_breps.py +48 -0
  272. compas_occt-0.1.16/tests/test_conversions.py +62 -0
  273. compas_occt-0.1.16/tests/test_data_nurbscurve.py +34 -0
  274. compas_occt-0.1.16/tests/test_data_nurbssurface.py +36 -0
  275. compas_occt-0.1.16/tests/test_io.py +62 -0
  276. compas_occt-0.1.16/tests/test_trivial.py +6 -0
  277. compas_occt-0.1.16/tests/test_zerocopy.py +26 -0
  278. compas_occt-0.1.16/tools/build_example_pages.py +57 -0
  279. compas_occt-0.1.16/tools/patch_compas_viewer.py +39 -0
@@ -0,0 +1,30 @@
1
+ # EditorConfig is awesome: http://EditorConfig.org
2
+ root = true
3
+
4
+ [*]
5
+ end_of_line = lf
6
+ trim_trailing_whitespace = true
7
+ insert_final_newline = true
8
+ indent_style = space
9
+ indent_size = 4
10
+ charset = utf-8
11
+ max_line_length = 179
12
+
13
+ [*.{bat,cmd,ps1}]
14
+ end_of_line = crlf
15
+
16
+ [*.md]
17
+ trim_trailing_whitespace = false
18
+
19
+ [*.yml]
20
+ indent_size = 2
21
+
22
+ [*.rst]
23
+ indent_size = 4
24
+
25
+ [Makefile]
26
+ indent_style = tab
27
+ indent_size = 4
28
+
29
+ [LICENSE]
30
+ insert_final_newline = false
@@ -0,0 +1,76 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at brg@arch.ethz.ch. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72
+
73
+ [homepage]: https://www.contributor-covenant.org
74
+
75
+ For answers to common questions about this code of conduct, see
76
+ https://www.contributor-covenant.org/faq
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+
5
+ ---
6
+
7
+ **Describe the bug**
8
+
9
+ A clear and concise description of what the bug is.
10
+
11
+ **To Reproduce**
12
+
13
+ Steps to reproduce the behavior:
14
+
15
+ 1. Context [e.g. ST3, Rhino, Blender, ...]
16
+ 2. Sample script
17
+ 3. Sample data
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+
22
+ A clear and concise description of what you expected to happen.
23
+
24
+ **Screenshots**
25
+
26
+ If applicable, add screenshots to help explain your problem.
27
+
28
+ **Desktop (please complete the following information):**
29
+
30
+ - OS: [e.g. iOS]
31
+ - Python version [e.g. 2.7]
32
+ - Python package manager [e.g. macports, pip, conda]
33
+
34
+ **Additional context**
35
+
36
+ Add any other context about the problem here.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+
5
+ ---
6
+ # Feature Request
7
+
8
+ As a [role], I want [something] so that [benefit].
9
+
10
+ ## Details
11
+
12
+ **Is your feature request related to a problem? Please describe.**
13
+
14
+ A clear and concise description of what the problem is.
15
+
16
+ **Describe the solution you'd like.**
17
+
18
+ A clear and concise description of what you want to happen.
19
+
20
+ **Describe alternatives you've considered.**
21
+
22
+ A clear and concise description of any alternative solutions or features you've considered.
23
+
24
+ **Additional context.**
25
+
26
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,21 @@
1
+ <!-- Thank you for your pull request! -->
2
+ <!-- Please start by describing your change in a few sentences. -->
3
+ <!-- You can erase any parts of this template not applicable to your Pull Request. -->
4
+
5
+ ### What type of change is this?
6
+
7
+ - [ ] Bug fix in a **backwards-compatible** manner.
8
+ - [ ] New feature in a **backwards-compatible** manner.
9
+ - [ ] Breaking change: bug fix or new feature that involve incompatible API changes.
10
+ - [ ] Other (e.g. doc update, configuration, etc)
11
+
12
+ ### Checklist
13
+
14
+ _Put an `x` in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code._
15
+
16
+ - [ ] I added a line to the `CHANGELOG.md` file in the `Unreleased` section under the most fitting heading (e.g. `Added`, `Changed`, `Removed`).
17
+ - [ ] I ran all tests on my computer and it's all green (i.e. `invoke test`).
18
+ - [ ] I ran lint on my computer and there are no errors (i.e. `invoke lint`).
19
+ - [ ] I added new functions/classes and made them available on a second-level import, e.g. `compas.datastructures.Mesh`.
20
+ - [ ] I have added tests that prove my fix is effective or that my feature works.
21
+ - [ ] I have added necessary documentation (if appropriate)
@@ -0,0 +1,68 @@
1
+ name: build
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+
11
+ jobs:
12
+ lint:
13
+ if: ${{ !contains(github.event.pull_request.labels.*.name, 'docs-only') }}
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+ - run: pip install ruff
21
+ - run: ruff check src tests
22
+
23
+ build_wheels:
24
+ name: cibuildwheel on ${{ matrix.platform }}
25
+ needs: [lint]
26
+ runs-on: ${{ matrix.os }}
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ include:
31
+ - os: ubuntu-latest
32
+ platform: manylinux
33
+ # Native runner per arch. OCCT compiles to architecture-specific static libs, so
34
+ # (unlike header-only CGAL / compas_cgal) it can't be cross-compiled on one runner --
35
+ # the x86_64 link fails against arm64 OCCT objects. macos-13 (Intel) was retired by
36
+ # GitHub in Dec 2025; macos-15-intel is the current Intel runner (until ~Aug 2027).
37
+ - os: macos-15-intel
38
+ platform: mac-intel
39
+ - os: macos-14
40
+ platform: mac-arm
41
+ - os: windows-latest
42
+ platform: windows
43
+ steps:
44
+ - uses: actions/checkout@v4
45
+ with:
46
+ fetch-depth: 0
47
+ - name: Install cibuildwheel
48
+ run: pipx install cibuildwheel==2.23.1
49
+ - name: Build wheels (also runs the test suite per pyproject test-command)
50
+ run: cibuildwheel --output-dir wheelhouse .
51
+ - uses: actions/upload-artifact@v4
52
+ with:
53
+ name: wheels-${{ matrix.platform }}
54
+ path: wheelhouse/*.whl
55
+
56
+ build_sdist:
57
+ name: Build source distribution
58
+ runs-on: ubuntu-latest
59
+ steps:
60
+ - uses: actions/checkout@v4
61
+ with:
62
+ fetch-depth: 0
63
+ - name: Build SDist
64
+ run: pipx run build --sdist
65
+ - uses: actions/upload-artifact@v4
66
+ with:
67
+ name: sdist
68
+ path: dist/*.tar.gz
@@ -0,0 +1,30 @@
1
+ name: docs
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ permissions:
7
+ contents: write
8
+ jobs:
9
+ deploy:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: Configure Git Credentials
14
+ run: |
15
+ git config user.name github-actions[bot]
16
+ git config user.email 41898282+github-actions[bot]@users.noreply.github.com
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+ - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
21
+ - uses: actions/cache@v4
22
+ with:
23
+ key: mkdocs-material-${{ env.cache_id }}
24
+ path: ~/.cache
25
+ restore-keys: |
26
+ mkdocs-material-
27
+ # mkdocstrings reads the API from the source in src/ (allow_inspection: false), so the
28
+ # docs do NOT need the compiled OCCT extension built -- just the mkdocs tooling.
29
+ - run: pip install compas mkdocs-material "mkdocstrings[python]" markdown-callouts
30
+ - run: mkdocs gh-deploy --force
@@ -0,0 +1,21 @@
1
+ name: verify-pr-checklist
2
+ on:
3
+ pull_request:
4
+ types: [assigned, opened, synchronize, reopened, labeled, unlabeled]
5
+ branches:
6
+ - main
7
+ - master
8
+
9
+ jobs:
10
+ build:
11
+ name: Check Actions
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v1
15
+ - name: Changelog check
16
+ uses: Zomzog/changelog-checker@v1.2.0
17
+ with:
18
+ fileName: CHANGELOG.md
19
+ checkNotification: Simple
20
+ env:
21
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,107 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*" # Runs only when a version tag (e.g., v1.0.0) is pushed.
7
+
8
+ jobs:
9
+ create_release:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: write
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Create GitHub Release
19
+ id: create_release
20
+ uses: softprops/action-gh-release@v1
21
+ with:
22
+ tag_name: ${{ github.ref_name }}
23
+ name: Release ${{ github.ref_name }}
24
+ draft: false
25
+ prerelease: false
26
+ generate_release_notes: true
27
+
28
+ build_wheels:
29
+ name: Build wheels on ${{ matrix.platform }}
30
+ runs-on: ${{ matrix.os }}
31
+ strategy:
32
+ fail-fast: false
33
+ matrix:
34
+ include:
35
+ - os: ubuntu-latest
36
+ platform: manylinux
37
+ # Native runner per arch (OCCT has arch-specific static libs -> no cross-compile).
38
+ # macos-13 (Intel) was retired Dec 2025; macos-15-intel is the current Intel runner.
39
+ - os: macos-15-intel
40
+ platform: mac-intel
41
+ - os: macos-14
42
+ platform: mac-arm
43
+ - os: windows-latest
44
+ platform: windows
45
+
46
+ steps:
47
+ - uses: actions/checkout@v4
48
+ with:
49
+ fetch-depth: 0
50
+
51
+ - name: Install cibuildwheel
52
+ run: pipx install cibuildwheel==2.23.1
53
+
54
+ - name: Build wheels
55
+ run: cibuildwheel --output-dir wheelhouse .
56
+
57
+ - uses: actions/upload-artifact@v4
58
+ with:
59
+ name: wheels-${{ matrix.platform }}
60
+ path: wheelhouse/*.whl
61
+
62
+ build_sdist:
63
+ name: Build source distribution
64
+ runs-on: ubuntu-latest
65
+ steps:
66
+ - uses: actions/checkout@v4
67
+ with:
68
+ fetch-depth: 0
69
+
70
+ - name: Build SDist
71
+ run: pipx run build --sdist
72
+
73
+ - uses: actions/upload-artifact@v4
74
+ with:
75
+ name: sdist
76
+ path: dist/*.tar.gz
77
+
78
+ publish:
79
+ needs: [build_sdist, build_wheels]
80
+ runs-on: ubuntu-latest
81
+ environment:
82
+ name: pypi
83
+ url: https://pypi.org/project/compas_occt
84
+ permissions:
85
+ id-token: write # Required for PyPI trusted publishing
86
+
87
+ steps:
88
+ - uses: actions/download-artifact@v4
89
+ with:
90
+ pattern: wheels-*
91
+ path: dist
92
+ merge-multiple: true
93
+
94
+ - uses: actions/download-artifact@v4
95
+ with:
96
+ name: sdist
97
+ path: dist
98
+
99
+ - name: List files before upload
100
+ run: ls -lhR dist
101
+
102
+ - name: Publish to PyPI
103
+ uses: pypa/gh-action-pypi-publish@release/v1
104
+ # Publishes to real PyPI (pypi.org) via trusted publishing, like compas_cgal.
105
+ # To target TestPyPI instead, add:
106
+ # with:
107
+ # repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,167 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions (compiled object/library intermediates live under build/, already ignored;
7
+ # *.obj is intentionally NOT ignored here so Wavefront .obj mesh data can be tracked)
8
+ *.so
9
+ *.pyd
10
+ *.dll
11
+ *.dylib
12
+
13
+ # Distribution / packaging
14
+ .Python
15
+ env/
16
+ build/
17
+ _build/
18
+ **/build/
19
+ develop-eggs/
20
+ dist/
21
+ downloads/
22
+ eggs/
23
+ .eggs/
24
+ lib/
25
+ lib64/
26
+ parts/
27
+ sdist/
28
+ var/
29
+ wheels/
30
+ *.egg-info/
31
+ .installed.cfg
32
+ *.egg
33
+
34
+ # PyInstaller
35
+ # Usually these files are written by a python script from a template
36
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
+ *.manifest
38
+ *.spec
39
+
40
+ # Installer logs
41
+ pip-log.txt
42
+ pip-delete-this-directory.txt
43
+
44
+ # Unit test / coverage reports
45
+ htmlcov/
46
+ .tox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ .hypothesis/
54
+ .pytest_cache/
55
+
56
+ # Translations
57
+ *.mo
58
+ *.pot
59
+
60
+ # Django stuff:
61
+ *.log
62
+ local_settings.py
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # mkdocs documentation
72
+ site/
73
+
74
+ # local dev build helpers (machine-specific vcvars/python paths) + root scratch
75
+ /build_stage6.bat
76
+ /build_uv.bat
77
+ /_*.py
78
+
79
+ # PyBuilder
80
+ target/
81
+
82
+ # Jupyter Notebook
83
+ .ipynb_checkpoints
84
+
85
+ # pyenv
86
+ .python-version
87
+
88
+ # celery beat schedule file
89
+ celerybeat-schedule
90
+
91
+ # SageMath parsed files
92
+ *.sage.py
93
+
94
+ # dotenv
95
+ .env
96
+
97
+ # virtualenv
98
+ .venv
99
+ venv/
100
+ ENV/
101
+
102
+ # Spyder project settings
103
+ .spyderproject
104
+ .spyproject
105
+
106
+ # Rope project settings
107
+ .ropeproject
108
+
109
+ # PyCharm project settings
110
+ .idea/
111
+
112
+ # mkdocs documentation
113
+ /site
114
+
115
+ # mypy
116
+ .mypy_cache/
117
+
118
+ # ------------------------------------------------------------------------------
119
+ # compas
120
+ # ------------------------------------------------------------------------------
121
+
122
+ dist/docs
123
+
124
+ generated/
125
+
126
+ *.3dmbak
127
+ *.rhl
128
+
129
+ libs/**
130
+ !libs/PLACEHOLDER
131
+
132
+ temp/**
133
+ !temp/PLACEHOLDER
134
+
135
+ src/.build/**
136
+
137
+ # data/
138
+
139
+ *.tar.gz
140
+
141
+ *.pickle
142
+
143
+ *.DS_Store
144
+
145
+ .vscode
146
+
147
+ docs/api/generated/
148
+
149
+ scripts/
150
+
151
+ .ruff_cache
152
+
153
+ # ------------------------------------------------------------------------------
154
+ # cmakelists
155
+ # ------------------------------------------------------------------------------
156
+
157
+ # External dependencies
158
+ ext/**
159
+ external/
160
+ **/external/
161
+
162
+ # ------------------------------------------------------------------------------
163
+ # cibuildwheel
164
+ # ------------------------------------------------------------------------------
165
+
166
+ wheelhouse
167
+ wheelhouse/**
@@ -0,0 +1,10 @@
1
+ # Authors
2
+
3
+ ## Main authors
4
+
5
+ - Petras Vestartas <petrasvestartas@gmail.com>
6
+
7
+ ## Acknowledgements
8
+
9
+ `compas_occt` follows the public API of [`compas_occ`](https://github.com/compas-dev/compas_occ),
10
+ developed by the [Block Research Group](https://block.arch.ethz.ch/) at ETH Zurich.