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.
- session_py-0.80.0/.github/workflows/test.yml +49 -0
- {session_py-0.78.0 → session_py-0.80.0}/PKG-INFO +2 -2
- session_py-0.80.0/examples/loft_holes.py +159 -0
- {session_py-0.78.0 → session_py-0.80.0}/examples/nurbsurface.py +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/main.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/main_1.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/pyproject.toml +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_beam_element.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_beam_element.json +5 -5
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_brep.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_brep.json +171 -171
- session_py-0.80.0/serialization/test_color.bin +3 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_color.json +1 -1
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_column_element.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_column_element.json +5 -5
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_edge.json +1 -1
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_element.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_element.json +5 -5
- session_py-0.80.0/serialization/test_graph.bin +8 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_graph.json +4 -4
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_line.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_line.json +3 -3
- session_py-0.80.0/serialization/test_matrix.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_matrix.json +1 -1
- session_py-0.80.0/serialization/test_mesh.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_mesh.json +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbscurve.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbscurve.json +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbssurface.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_nurbssurface.json +4 -4
- session_py-0.80.0/serialization/test_nurbssurface_trimmed.bin +0 -0
- session_py-0.78.0/serialization/test_trimmedsurface.json → session_py-0.80.0/serialization/test_nurbssurface_trimmed.json +12 -12
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_obb.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_obb.json +12 -12
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_objects.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_objects.json +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_objects_component.json +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plane.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plane.json +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element.json +5 -5
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element_joinery.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_plate_element_joinery.json +8 -8
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_point.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_point.json +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_pointcloud.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_pointcloud.json +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_polyline.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_polyline.json +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_quaternion.json +1 -1
- session_py-0.80.0/serialization/test_session.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_session.json +18 -18
- session_py-0.80.0/serialization/test_step_brep_0.bin +0 -0
- session_py-0.80.0/serialization/test_step_brep_1.bin +0 -0
- session_py-0.80.0/serialization/test_step_brep_2.bin +0 -0
- session_py-0.80.0/serialization/test_tree.bin +3 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_tree.json +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_treenode.json +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_vector.json +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_vertex.json +1 -1
- session_py-0.80.0/serialization/test_xform.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_xform.json +1 -1
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/__init__.py +17 -16
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/aabb.py +32 -6
- session_py-0.80.0/src/session_py/aabb_test.py +134 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/brep.py +96 -21
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/brep_test.py +4 -4
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/closest.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/closest_test.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/color.py +527 -527
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/color_test.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_beam.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_beam_test.py +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_column.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_column_test.py +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_plate.py +3 -3
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_plate_test.py +5 -5
- session_py-0.80.0/src/session_py/element_schoring.py +346 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/element_test.py +3 -3
- session_py-0.78.0/src/session_py/encoders.py → session_py-0.80.0/src/session_py/file_encoders.py +19 -18
- 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
- session_py-0.78.0/src/session_py/obj.py → session_py-0.80.0/src/session_py/file_obj.py +7 -7
- 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
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/graph.py +5 -5
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/graph_test.py +14 -14
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/intersection.py +268 -14
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/line.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/line_test.py +8 -8
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/matrix.py +4 -4
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/matrix_test.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/mesh.py +38 -13
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/mesh_test.py +107 -5
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/mini_test.py +6 -1
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbscurve.py +4043 -3870
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbscurve_test.py +57 -57
- session_py-0.78.0/src/session_py/knot.py → session_py-0.80.0/src/session_py/nurbsknot.py +1126 -1126
- session_py-0.80.0/src/session_py/nurbsknot_test.py +178 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbssurface.py +254 -178
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/nurbssurface_test.py +34 -34
- session_py-0.78.0/src/session_py/trimmedsurface.py → session_py-0.80.0/src/session_py/nurbssurface_trimmed.py +46 -34
- 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
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/obb.py +11 -11
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/obb_test.py +4 -4
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/objects.py +17 -17
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/objects_test.py +12 -12
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/plane.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/plane_test.py +6 -6
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/point.py +751 -749
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/point_test.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/pointcloud.py +6 -6
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/pointcloud_test.py +6 -6
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/polyline.py +254 -8
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/polyline_test.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/primitives.py +96 -96
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/primitives_test.py +29 -11
- session_py-0.80.0/src/session_py/proto/.gitattributes +1 -0
- session_py-0.80.0/src/session_py/proto/elementfeature_pb2.py +44 -0
- 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
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/nurbscurve_pb2.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/nurbssurface_pb2.py +2 -2
- 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
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/session_pb2.py +8 -8
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/quaternion.py +6 -6
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/quaternion_test.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_cdt.py +54 -35
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_grid.py +34 -23
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session.py +17 -18
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session_test.py +6 -6
- session_py-0.80.0/src/session_py/spatial_aabbtree.py +85 -0
- session_py-0.80.0/src/session_py/spatial_aabbtree_test.py +157 -0
- session_py-0.78.0/src/session_py/bvh.py → session_py-0.80.0/src/session_py/spatial_bvh.py +22 -22
- 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
- session_py-0.78.0/src/session_py/kdtree.py → session_py-0.80.0/src/session_py/spatial_kdtree.py +11 -11
- 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
- session_py-0.78.0/src/session_py/rtree.py → session_py-0.80.0/src/session_py/spatial_rtree.py +5 -5
- 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
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tree.py +201 -13
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tree_test.py +193 -6
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/vector.py +1309 -1309
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/vector_test.py +7 -7
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/xform.py +936 -903
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/xform_test.py +2 -2
- {session_py-0.78.0 → session_py-0.80.0}/uv.lock +8 -6
- session_py-0.78.0/serialization/test_color.bin +0 -3
- session_py-0.78.0/serialization/test_graph.bin +0 -8
- session_py-0.78.0/serialization/test_matrix.bin +0 -0
- session_py-0.78.0/serialization/test_mesh.bin +0 -0
- session_py-0.78.0/serialization/test_session.bin +0 -0
- session_py-0.78.0/serialization/test_tree.bin +0 -3
- session_py-0.78.0/serialization/test_xform.bin +0 -0
- session_py-0.78.0/src/session_py/aabb_test.py +0 -283
- session_py-0.78.0/src/session_py/knot_test.py +0 -178
- session_py-0.78.0/src/session_py/proto/bvh_pb2.py +0 -41
- session_py-0.78.0/src/session_py/proto/feature_pb2.py +0 -44
- session_py-0.78.0/src/session_py/treenode.py +0 -196
- session_py-0.78.0/src/session_py/treenode_test.py +0 -194
- {session_py-0.78.0 → session_py-0.80.0}/.github/workflows/publish.yml +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/.gitignore +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/.gitmodules +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/README.md +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/doc.bat +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/doc.sh +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/examples/bvh_demo.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_arrow.json +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_boundingbox.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_boundingbox.json +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_quaternion.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_trimmedsurface.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/serialization/test_vector.bin +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/boolean_polyline.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/boolean_polyline_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/convex_hull.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/convex_hull_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/intersection_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/__init__.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/boundingbox_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/brep_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/color_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/edge_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/element_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/graph_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/line_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/matrix_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/mesh_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/objects_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/plane_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/point_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/pointcloud_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/polyline_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/quaternion_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/tolerance_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/tree_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/treenode_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/vector_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/vertex_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/proto/xform_pb2.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/py.typed +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/reload.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_cdt_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_adaptive.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_adaptive_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/remesh_nurbssurface_grid_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session_config.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/session_config_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tolerance.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/src/session_py/tolerance_test.py +0 -0
- {session_py-0.78.0 → session_py-0.80.0}/test.bat +0 -0
- {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.
|
|
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.
|
|
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
|
|
10
|
-
srf.
|
|
11
|
-
srf.
|
|
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.
|
|
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 =
|
|
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.
|
|
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 =
|
|
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.
|
|
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.
|
|
25
|
+
"protobuf>=5.29.5",
|
|
26
26
|
"grpcio-tools>=1.60.0",
|
|
27
27
|
]
|
|
28
28
|
|
|
Binary file
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
255
|
|
77
77
|
],
|
|
78
78
|
"facedata": {},
|
|
79
|
-
"guid": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
309
|
+
"guid": "d3e3e31f-02f1-4418-8806-7dce7e53aeca",
|
|
310
310
|
"length": 5.0,
|
|
311
311
|
"name": "json_beam",
|
|
312
312
|
"session_transformation": {
|
|
313
|
-
"guid": "
|
|
313
|
+
"guid": "909e32e7-bc03-4627-ae88-aca0efd8bb6c",
|
|
314
314
|
"m": [
|
|
315
315
|
1.0,
|
|
316
316
|
0.0,
|
|
Binary file
|