session-py 0.78.0__tar.gz → 0.80.0__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 (209) hide show
  1. session_py-0.80.0/.github/workflows/test.yml +49 -0
  2. {session_py-0.78.0 → session_py-0.80.0}/PKG-INFO +2 -2
  3. session_py-0.80.0/examples/loft_holes.py +159 -0
  4. {session_py-0.78.0 → session_py-0.80.0}/examples/nurbsurface.py +3 -3
  5. {session_py-0.78.0 → session_py-0.80.0}/main.py +2 -2
  6. {session_py-0.78.0 → session_py-0.80.0}/main_1.py +2 -2
  7. {session_py-0.78.0 → session_py-0.80.0}/pyproject.toml +2 -2
  8. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_beam_element.bin +0 -0
  9. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_beam_element.json +5 -5
  10. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_brep.bin +0 -0
  11. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_brep.json +171 -171
  12. session_py-0.80.0/serialization/test_color.bin +3 -0
  13. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_color.json +1 -1
  14. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_column_element.bin +0 -0
  15. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_column_element.json +5 -5
  16. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_edge.json +1 -1
  17. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_element.bin +0 -0
  18. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_element.json +5 -5
  19. session_py-0.80.0/serialization/test_graph.bin +8 -0
  20. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_graph.json +4 -4
  21. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_line.bin +0 -0
  22. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_line.json +3 -3
  23. session_py-0.80.0/serialization/test_matrix.bin +0 -0
  24. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_matrix.json +1 -1
  25. session_py-0.80.0/serialization/test_mesh.bin +0 -0
  26. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_mesh.json +3 -3
  27. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbscurve.bin +0 -0
  28. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbscurve.json +3 -3
  29. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbssurface.bin +0 -0
  30. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbssurface.json +4 -4
  31. session_py-0.80.0/serialization/test_nurbssurface_trimmed.bin +0 -0
  32. session_py-0.78.0/serialization/test_trimmedsurface.json → session_py-0.80.0/serialization/test_nurbssurface_trimmed.json +12 -12
  33. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_obb.bin +0 -0
  34. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_obb.json +12 -12
  35. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_objects.bin +0 -0
  36. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_objects.json +7 -7
  37. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_objects_component.json +2 -2
  38. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plane.bin +0 -0
  39. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plane.json +3 -3
  40. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element.bin +0 -0
  41. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element.json +5 -5
  42. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element_joinery.bin +0 -0
  43. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element_joinery.json +8 -8
  44. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_point.bin +0 -0
  45. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_point.json +3 -3
  46. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_pointcloud.bin +0 -0
  47. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_pointcloud.json +2 -2
  48. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_polyline.bin +0 -0
  49. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_polyline.json +3 -3
  50. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_quaternion.json +1 -1
  51. session_py-0.80.0/serialization/test_session.bin +0 -0
  52. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_session.json +18 -18
  53. session_py-0.80.0/serialization/test_step_brep_0.bin +0 -0
  54. session_py-0.80.0/serialization/test_step_brep_1.bin +0 -0
  55. session_py-0.80.0/serialization/test_step_brep_2.bin +0 -0
  56. session_py-0.80.0/serialization/test_tree.bin +3 -0
  57. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_tree.json +2 -2
  58. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_treenode.json +2 -2
  59. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_vector.json +2 -2
  60. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_vertex.json +1 -1
  61. session_py-0.80.0/serialization/test_xform.bin +0 -0
  62. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_xform.json +1 -1
  63. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/__init__.py +17 -16
  64. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/aabb.py +32 -6
  65. session_py-0.80.0/src/session_py/aabb_test.py +134 -0
  66. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/brep.py +96 -21
  67. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/brep_test.py +4 -4
  68. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/closest.py +2 -2
  69. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/closest_test.py +2 -2
  70. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/color.py +527 -527
  71. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/color_test.py +7 -7
  72. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element.py +7 -7
  73. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_beam.py +2 -2
  74. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_beam_test.py +3 -3
  75. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_column.py +2 -2
  76. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_column_test.py +3 -3
  77. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_plate.py +3 -3
  78. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_plate_test.py +5 -5
  79. session_py-0.80.0/src/session_py/element_schoring.py +346 -0
  80. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_test.py +3 -3
  81. session_py-0.78.0/src/session_py/encoders.py → session_py-0.80.0/src/session_py/file_encoders.py +19 -18
  82. session_py-0.78.0/src/session_py/encoders_test.py → session_py-0.80.0/src/session_py/file_encoders_test.py +56 -56
  83. session_py-0.78.0/src/session_py/obj.py → session_py-0.80.0/src/session_py/file_obj.py +7 -7
  84. session_py-0.78.0/src/session_py/obj_test.py → session_py-0.80.0/src/session_py/file_obj_test.py +7 -7
  85. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/graph.py +5 -5
  86. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/graph_test.py +14 -14
  87. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/intersection.py +268 -14
  88. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/line.py +7 -7
  89. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/line_test.py +8 -8
  90. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/matrix.py +4 -4
  91. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/matrix_test.py +2 -2
  92. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/mesh.py +38 -13
  93. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/mesh_test.py +107 -5
  94. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/mini_test.py +6 -1
  95. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbscurve.py +4043 -3870
  96. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbscurve_test.py +57 -57
  97. session_py-0.78.0/src/session_py/knot.py → session_py-0.80.0/src/session_py/nurbsknot.py +1126 -1126
  98. session_py-0.80.0/src/session_py/nurbsknot_test.py +178 -0
  99. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbssurface.py +254 -178
  100. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbssurface_test.py +34 -34
  101. session_py-0.78.0/src/session_py/trimmedsurface.py → session_py-0.80.0/src/session_py/nurbssurface_trimmed.py +46 -34
  102. session_py-0.78.0/src/session_py/trimmedsurface_test.py → session_py-0.80.0/src/session_py/nurbssurface_trimmed_test.py +59 -59
  103. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/obb.py +11 -11
  104. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/obb_test.py +4 -4
  105. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/objects.py +17 -17
  106. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/objects_test.py +12 -12
  107. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/plane.py +7 -7
  108. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/plane_test.py +6 -6
  109. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/point.py +751 -749
  110. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/point_test.py +7 -7
  111. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/pointcloud.py +6 -6
  112. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/pointcloud_test.py +6 -6
  113. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/polyline.py +254 -8
  114. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/polyline_test.py +7 -7
  115. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/primitives.py +96 -96
  116. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/primitives_test.py +29 -11
  117. session_py-0.80.0/src/session_py/proto/.gitattributes +1 -0
  118. session_py-0.80.0/src/session_py/proto/elementfeature_pb2.py +44 -0
  119. session_py-0.78.0/src/session_py/proto/encoders_pb2.py → session_py-0.80.0/src/session_py/proto/file_encoders_pb2.py +8 -8
  120. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/nurbscurve_pb2.py +2 -2
  121. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/nurbssurface_pb2.py +2 -2
  122. session_py-0.78.0/src/session_py/proto/trimmedsurface_pb2.py → session_py-0.80.0/src/session_py/proto/nurbssurface_trimmed_pb2.py +6 -6
  123. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/session_pb2.py +8 -8
  124. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/quaternion.py +6 -6
  125. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/quaternion_test.py +7 -7
  126. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_cdt.py +54 -35
  127. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_grid.py +34 -23
  128. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session.py +17 -18
  129. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session_test.py +6 -6
  130. session_py-0.80.0/src/session_py/spatial_aabbtree.py +85 -0
  131. session_py-0.80.0/src/session_py/spatial_aabbtree_test.py +157 -0
  132. session_py-0.78.0/src/session_py/bvh.py → session_py-0.80.0/src/session_py/spatial_bvh.py +22 -22
  133. session_py-0.78.0/src/session_py/bvh_test.py → session_py-0.80.0/src/session_py/spatial_bvh_test.py +48 -48
  134. session_py-0.78.0/src/session_py/kdtree.py → session_py-0.80.0/src/session_py/spatial_kdtree.py +11 -11
  135. session_py-0.78.0/src/session_py/kdtree_test.py → session_py-0.80.0/src/session_py/spatial_kdtree_test.py +13 -13
  136. session_py-0.78.0/src/session_py/rtree.py → session_py-0.80.0/src/session_py/spatial_rtree.py +5 -5
  137. session_py-0.78.0/src/session_py/rtree_test.py → session_py-0.80.0/src/session_py/spatial_rtree_test.py +33 -33
  138. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tree.py +201 -13
  139. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tree_test.py +193 -6
  140. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/vector.py +1309 -1309
  141. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/vector_test.py +7 -7
  142. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/xform.py +936 -903
  143. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/xform_test.py +2 -2
  144. {session_py-0.78.0 → session_py-0.80.0}/uv.lock +8 -6
  145. session_py-0.78.0/serialization/test_color.bin +0 -3
  146. session_py-0.78.0/serialization/test_graph.bin +0 -8
  147. session_py-0.78.0/serialization/test_matrix.bin +0 -0
  148. session_py-0.78.0/serialization/test_mesh.bin +0 -0
  149. session_py-0.78.0/serialization/test_session.bin +0 -0
  150. session_py-0.78.0/serialization/test_tree.bin +0 -3
  151. session_py-0.78.0/serialization/test_xform.bin +0 -0
  152. session_py-0.78.0/src/session_py/aabb_test.py +0 -283
  153. session_py-0.78.0/src/session_py/knot_test.py +0 -178
  154. session_py-0.78.0/src/session_py/proto/bvh_pb2.py +0 -41
  155. session_py-0.78.0/src/session_py/proto/feature_pb2.py +0 -44
  156. session_py-0.78.0/src/session_py/treenode.py +0 -196
  157. session_py-0.78.0/src/session_py/treenode_test.py +0 -194
  158. {session_py-0.78.0 → session_py-0.80.0}/.github/workflows/publish.yml +0 -0
  159. {session_py-0.78.0 → session_py-0.80.0}/.gitignore +0 -0
  160. {session_py-0.78.0 → session_py-0.80.0}/.gitmodules +0 -0
  161. {session_py-0.78.0 → session_py-0.80.0}/README.md +0 -0
  162. {session_py-0.78.0 → session_py-0.80.0}/doc.bat +0 -0
  163. {session_py-0.78.0 → session_py-0.80.0}/doc.sh +0 -0
  164. {session_py-0.78.0 → session_py-0.80.0}/examples/bvh_demo.py +0 -0
  165. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_arrow.json +0 -0
  166. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_boundingbox.bin +0 -0
  167. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_boundingbox.json +0 -0
  168. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_quaternion.bin +0 -0
  169. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_trimmedsurface.bin +0 -0
  170. {session_py-0.78.0 → session_py-0.80.0}/serialization/test_vector.bin +0 -0
  171. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/boolean_polyline.py +0 -0
  172. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/boolean_polyline_test.py +0 -0
  173. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/convex_hull.py +0 -0
  174. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/convex_hull_test.py +0 -0
  175. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/intersection_test.py +0 -0
  176. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/__init__.py +0 -0
  177. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/boundingbox_pb2.py +0 -0
  178. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/brep_pb2.py +0 -0
  179. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/color_pb2.py +0 -0
  180. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/edge_pb2.py +0 -0
  181. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/element_pb2.py +0 -0
  182. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/graph_pb2.py +0 -0
  183. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/line_pb2.py +0 -0
  184. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/matrix_pb2.py +0 -0
  185. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/mesh_pb2.py +0 -0
  186. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/objects_pb2.py +0 -0
  187. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/plane_pb2.py +0 -0
  188. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/point_pb2.py +0 -0
  189. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/pointcloud_pb2.py +0 -0
  190. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/polyline_pb2.py +0 -0
  191. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/quaternion_pb2.py +0 -0
  192. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/tolerance_pb2.py +0 -0
  193. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/tree_pb2.py +0 -0
  194. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/treenode_pb2.py +0 -0
  195. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/vector_pb2.py +0 -0
  196. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/vertex_pb2.py +0 -0
  197. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/xform_pb2.py +0 -0
  198. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/py.typed +0 -0
  199. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/reload.py +0 -0
  200. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_cdt_test.py +0 -0
  201. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_adaptive.py +0 -0
  202. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_adaptive_test.py +0 -0
  203. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_grid_test.py +0 -0
  204. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session_config.py +0 -0
  205. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session_config_test.py +0 -0
  206. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tolerance.py +0 -0
  207. {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tolerance_test.py +0 -0
  208. {session_py-0.78.0 → session_py-0.80.0}/test.bat +0 -0
  209. {session_py-0.78.0 → session_py-0.80.0}/test.sh +0 -0
@@ -0,0 +1,49 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ os: [ubuntu-22.04, macos-15, macos-15-intel, windows-latest]
15
+ python-version: ["3.11"]
16
+
17
+ runs-on: ${{ matrix.os }}
18
+ name: ${{ matrix.os }} / py${{ matrix.python-version }}
19
+
20
+ steps:
21
+ - uses: actions/checkout@v6
22
+ with:
23
+ submodules: recursive
24
+
25
+ - uses: actions/setup-python@v6
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+
29
+ - name: Install package
30
+ run: pip install -e ".[dev]"
31
+
32
+ - name: Run minitest
33
+ shell: bash
34
+ run: |
35
+ python <<'PY'
36
+ import importlib, glob, os, sys
37
+ from session_py import mini_test as mt
38
+
39
+ # Import every *_test.py so its @MINI_TEST decorators register
40
+ test_dir = os.path.join("src", "session_py")
41
+ for f in sorted(glob.glob(os.path.join(test_dir, "*_test.py"))):
42
+ mod = "session_py." + os.path.splitext(os.path.basename(f))[0]
43
+ importlib.import_module(mod)
44
+
45
+ try:
46
+ mt.run_all(language="python")
47
+ except SystemExit as e:
48
+ sys.exit(e.code or 0)
49
+ PY
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: session_py
3
- Version: 0.78.0
3
+ Version: 0.80.0
4
4
  Summary: A minimal Python geometry library
5
5
  Project-URL: Homepage, https://github.com/petrasvestartas/session_py
6
6
  Project-URL: Repository, https://github.com/petrasvestartas/session_py
@@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: 3.11
17
17
  Requires-Python: >=3.8
18
18
  Requires-Dist: grpcio-tools>=1.60.0
19
19
  Requires-Dist: numpy>=1.20.0
20
- Requires-Dist: protobuf>=5.0.0
20
+ Requires-Dist: protobuf>=5.29.5
21
21
  Provides-Extra: dev
22
22
  Requires-Dist: pytest-cov>=4.0; extra == 'dev'
23
23
  Requires-Dist: pytest>=7.0; extra == 'dev'
@@ -0,0 +1,159 @@
1
+ """Standalone loft-with-holes example mirroring session_cpp/example_loft_holes.cpp.
2
+
3
+ Writes session_data/example_loft_holes_py.pb — load in Rhino to inspect.
4
+ """
5
+ from pathlib import Path
6
+ from session_py import Point, Polyline, Session
7
+ from session_py.mesh import Mesh
8
+
9
+
10
+ def pl(pts):
11
+ return Polyline([Point(*p) for p in pts])
12
+
13
+
14
+ def main():
15
+ session = Session("LoftHoles")
16
+ g = session.add_group("Meshes")
17
+
18
+ # ── plate_rect ────────────────────────────────────────────────────────
19
+ rect_bot = [
20
+ pl([
21
+ ( 0, 0, 0),
22
+ (10, 0, 0),
23
+ (10, 10, 0),
24
+ ( 0, 10, 0),
25
+ ( 0, 0, 0),
26
+ ]),
27
+ pl([
28
+ (3, 3, 0),
29
+ (3, 7, 0),
30
+ (7, 7, 0),
31
+ (7, 3, 0),
32
+ (3, 3, 0),
33
+ ]),
34
+ ]
35
+ rect_top = [
36
+ pl([
37
+ ( 0, 0, 2),
38
+ (10, 0, 2),
39
+ (10, 10, 2),
40
+ ( 0, 10, 2),
41
+ ( 0, 0, 2),
42
+ ]),
43
+ pl([
44
+ (3, 3, 2),
45
+ (3, 7, 2),
46
+ (7, 7, 2),
47
+ (7, 3, 2),
48
+ (3, 3, 2),
49
+ ]),
50
+ ]
51
+ m_rect = Mesh.loft(rect_bot, rect_top)
52
+ m_rect.name = "plate_rect"
53
+ session.add_mesh(m_rect, g)
54
+
55
+ # ── plate_annen (plate_0 from annen_corner) ───────────────────────────
56
+ annen_bot = [
57
+ pl([
58
+ (2142.008, -530.170, 1172.487),
59
+ (2142.008, -530.170, -318.768),
60
+ (2142.008, -318.102, -318.768),
61
+ (2142.008, -347.792, -414.110),
62
+ (2142.008, -106.034, -414.110),
63
+ (2142.008, -135.724, -318.768),
64
+ (2142.008, 106.034, -318.768),
65
+ (2142.008, 76.344, -414.110),
66
+ (2142.008, 318.102, -414.110),
67
+ (2142.008, 288.412, -318.768),
68
+ (2142.008, 530.170, -318.768),
69
+ (2142.008, 530.170, 1172.487),
70
+ (2142.008, -530.170, 1172.487),
71
+ ]),
72
+ pl([
73
+ (2142.008, 97.448, 841.097),
74
+ (2142.008, 0.000, 841.097),
75
+ (2142.008, 0.000, 1006.792),
76
+ (2142.008, 97.448, 1006.792),
77
+ (2142.008, 97.448, 841.097),
78
+ ]),
79
+ pl([
80
+ (2142.008, 97.448, 178.317),
81
+ (2142.008, 0.000, 178.317),
82
+ (2142.008, 0.000, 344.012),
83
+ (2142.008, 97.448, 344.012),
84
+ (2142.008, 97.448, 178.317),
85
+ ]),
86
+ ]
87
+ annen_top = [
88
+ pl([
89
+ (2223.416, -530.170, 1172.487),
90
+ (2223.416, -530.170, -269.141),
91
+ (2223.416, -318.102, -269.141),
92
+ (2223.416, -347.792, -364.483),
93
+ (2223.416, -106.034, -364.483),
94
+ (2223.416, -135.724, -269.141),
95
+ (2223.416, 106.034, -269.141),
96
+ (2223.416, 76.344, -364.483),
97
+ (2223.416, 318.102, -364.483),
98
+ (2223.416, 288.412, -269.141),
99
+ (2223.416, 530.170, -269.141),
100
+ (2223.416, 530.170, 1172.487),
101
+ (2223.416, -530.170, 1172.487),
102
+ ]),
103
+ pl([
104
+ (2223.416, 97.448, 841.097),
105
+ (2223.416, 0.000, 841.097),
106
+ (2223.416, 0.000, 1006.792),
107
+ (2223.416, 97.448, 1006.792),
108
+ (2223.416, 97.448, 841.097),
109
+ ]),
110
+ pl([
111
+ (2223.416, 97.448, 178.317),
112
+ (2223.416, 0.000, 178.317),
113
+ (2223.416, 0.000, 344.012),
114
+ (2223.416, 97.448, 344.012),
115
+ (2223.416, 97.448, 178.317),
116
+ ]),
117
+ ]
118
+ m_annen = Mesh.loft(annen_bot, annen_top)
119
+ m_annen.name = "plate_annen"
120
+ session.add_mesh(m_annen, g)
121
+
122
+ # ── plate_collin ──────────────────────────────────────────────────────
123
+ col_bot = [
124
+ pl([
125
+ ( 0, 0, 0),
126
+ ( 4, 0, 0),
127
+ ( 7, 0, 0),
128
+ (12, 0, 0),
129
+ (12, 5, 0),
130
+ ( 0, 5, 0),
131
+ ( 0, 0, 0),
132
+ ]),
133
+ ]
134
+ col_top = [
135
+ pl([
136
+ ( 0, 0, 1.5),
137
+ ( 4, 0, 1.5),
138
+ ( 7, 0, 1.5),
139
+ (12, 0, 1.5),
140
+ (12, 5, 1.5),
141
+ ( 0, 5, 1.5),
142
+ ( 0, 0, 1.5),
143
+ ]),
144
+ ]
145
+ m_collin = Mesh.loft(col_bot, col_top)
146
+ m_collin.name = "plate_collin"
147
+ session.add_mesh(m_collin, g)
148
+
149
+ base = Path(__file__).resolve().parents[2] # .../session
150
+ pb = base / "session_data" / "example_loft_holes_py.pb"
151
+ session.pb_dump(str(pb))
152
+
153
+ for m in (m_rect, m_annen, m_collin):
154
+ print(f"{m.name}: V={len(m.vertex)} F={len(m.face)} closed={m.is_closed()}")
155
+ print(f"wrote {pb}")
156
+
157
+
158
+ if __name__ == "__main__":
159
+ main()
@@ -6,9 +6,9 @@ from compas.geometry import Point as CompasPoint, Polyline
6
6
  # Create a NURBS surface (3D, order 4, 5x5 control points)
7
7
  srf = NurbsSurface(3, False, 4, 4, 5, 5)
8
8
 
9
- # Setup knot vectors
10
- srf.make_clamped_uniform_knot_vector(0, 1.0)
11
- srf.make_clamped_uniform_knot_vector(1, 1.0)
9
+ # Setup nurbsknot vectors
10
+ srf.make_clamped_uniform_nurbsknot_vector(0, 1.0)
11
+ srf.make_clamped_uniform_nurbsknot_vector(1, 1.0)
12
12
 
13
13
  # Set control points (hardcoded 5x5 grid)
14
14
  srf.set_cv(0, 0, Point(0.0, 0.0, 2.5*-1))
@@ -99,13 +99,13 @@ def main():
99
99
  print("\n9. ray_mesh - Load bunny mesh")
100
100
  try:
101
101
  from src.session_py.mesh import Mesh
102
- from src.session_py.obj import read_obj
102
+ from src.session_py.file_obj import read_file_obj
103
103
 
104
104
  bunny = None
105
105
  try_paths = ["../data/bunny.obj", "../../data/bunny.obj", "data/bunny.obj"]
106
106
  for path in try_paths:
107
107
  try:
108
- bunny = read_obj(path)
108
+ bunny = read_file_obj(path)
109
109
  break
110
110
  except Exception:
111
111
  continue
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import time
3
3
  from session_py import Session, ElementPlate
4
- from session_py.obj import read_obj_polylines, pair_polylines
4
+ from session_py.file_obj import read_file_obj_polylines, pair_polylines
5
5
 
6
6
 
7
7
  def main():
@@ -9,7 +9,7 @@ def main():
9
9
  t0 = time.perf_counter()
10
10
 
11
11
  # 1. Import + pair polylines
12
- polylines = read_obj_polylines(os.path.join(base, "..", "session_data", "annen_polylines.obj"))
12
+ polylines = read_file_obj_polylines(os.path.join(base, "..", "session_data", "annen_polylines.obj"))
13
13
  pairs = pair_polylines(polylines)
14
14
  t1 = time.perf_counter()
15
15
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "session_py"
7
- version = "0.78.0"
7
+ version = "0.80.0"
8
8
  description = "A minimal Python geometry library"
9
9
  authors = [{name = "Petras Vestartas", email = "petrasvestartas@gmail.com"}]
10
10
  license = {text = "MIT"}
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  dependencies = [
24
24
  "numpy>=1.20.0",
25
- "protobuf>=5.0.0",
25
+ "protobuf>=5.29.5",
26
26
  "grpcio-tools>=1.60.0",
27
27
  ]
28
28
 
@@ -76,7 +76,7 @@
76
76
  255
77
77
  ],
78
78
  "facedata": {},
79
- "guid": "261c98b7-d54b-47b3-9651-a75567fb1c6b",
79
+ "guid": "2455cb47-2c08-4e31-bc00-3069f2bc83fe",
80
80
  "halfedge": {
81
81
  "0": {
82
82
  "3": 0,
@@ -176,7 +176,7 @@
176
176
  "a": 255,
177
177
  "b": 255,
178
178
  "g": 255,
179
- "guid": "ce1c9403-456a-4508-9cd6-aab5790cc8ad",
179
+ "guid": "f3afd0f0-69b1-4248-9c3d-38d9c45f6eee",
180
180
  "name": "white",
181
181
  "r": 255,
182
182
  "type": "Color"
@@ -282,7 +282,7 @@
282
282
  1.0
283
283
  ],
284
284
  "xform": {
285
- "guid": "2bd35657-cf12-413c-ba55-56470e986f00",
285
+ "guid": "30f20d06-4785-4e99-a433-932c82be30a8",
286
286
  "m": [
287
287
  1.0,
288
288
  0.0,
@@ -306,11 +306,11 @@
306
306
  }
307
307
  },
308
308
  "geometry_type": "Mesh",
309
- "guid": "f9be1f96-d714-4ef2-876a-3499263151d3",
309
+ "guid": "d3e3e31f-02f1-4418-8806-7dce7e53aeca",
310
310
  "length": 5.0,
311
311
  "name": "json_beam",
312
312
  "session_transformation": {
313
- "guid": "53819f53-372a-4f8d-b00d-4c79a6e77764",
313
+ "guid": "909e32e7-bc03-4627-ae88-aca0efd8bb6c",
314
314
  "m": [
315
315
  1.0,
316
316
  0.0,