session-py 0.1.3__py3-none-any.whl

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 (98) hide show
  1. session_py/__init__.py +70 -0
  2. session_py/aabb_test.py +106 -0
  3. session_py/boundingbox.py +553 -0
  4. session_py/boundingbox_test.py +154 -0
  5. session_py/brep.py +1069 -0
  6. session_py/brep_test.py +353 -0
  7. session_py/bvh.py +880 -0
  8. session_py/bvh_test.py +306 -0
  9. session_py/closest.py +514 -0
  10. session_py/closest_test.py +159 -0
  11. session_py/color.py +516 -0
  12. session_py/color_test.py +164 -0
  13. session_py/edge.py +64 -0
  14. session_py/edge_test.py +26 -0
  15. session_py/encoders.py +245 -0
  16. session_py/encoders_test.py +256 -0
  17. session_py/graph.py +658 -0
  18. session_py/graph_test.py +29 -0
  19. session_py/intersection.py +1512 -0
  20. session_py/intersection_test.py +588 -0
  21. session_py/knot.py +1126 -0
  22. session_py/knot_test.py +258 -0
  23. session_py/line.py +801 -0
  24. session_py/line_test.py +322 -0
  25. session_py/mesh.py +2016 -0
  26. session_py/mesh_test.py +746 -0
  27. session_py/mini_test.py +432 -0
  28. session_py/nurbscurve.py +3816 -0
  29. session_py/nurbscurve_test.py +744 -0
  30. session_py/nurbssurface.py +2889 -0
  31. session_py/nurbssurface_test.py +911 -0
  32. session_py/obj.py +60 -0
  33. session_py/obj_test.py +49 -0
  34. session_py/objects.py +214 -0
  35. session_py/objects_test.py +27 -0
  36. session_py/plane.py +895 -0
  37. session_py/plane_test.py +294 -0
  38. session_py/point.py +659 -0
  39. session_py/point_test.py +243 -0
  40. session_py/pointcloud.py +447 -0
  41. session_py/pointcloud_test.py +226 -0
  42. session_py/polyline.py +983 -0
  43. session_py/polyline_test.py +435 -0
  44. session_py/primitives.py +2556 -0
  45. session_py/primitives_test.py +1390 -0
  46. session_py/proto/__init__.py +4 -0
  47. session_py/proto/boundingbox_pb2.py +39 -0
  48. session_py/proto/brep_pb2.py +55 -0
  49. session_py/proto/bvh_pb2.py +41 -0
  50. session_py/proto/color_pb2.py +36 -0
  51. session_py/proto/edge_pb2.py +36 -0
  52. session_py/proto/encoders_pb2.py +38 -0
  53. session_py/proto/graph_pb2.py +42 -0
  54. session_py/proto/line_pb2.py +38 -0
  55. session_py/proto/mesh_pb2.py +94 -0
  56. session_py/proto/nurbscurve_pb2.py +38 -0
  57. session_py/proto/nurbssurface_pb2.py +39 -0
  58. session_py/proto/objects_pb2.py +46 -0
  59. session_py/proto/plane_pb2.py +37 -0
  60. session_py/proto/point_pb2.py +38 -0
  61. session_py/proto/pointcloud_pb2.py +37 -0
  62. session_py/proto/polyline_pb2.py +38 -0
  63. session_py/proto/quaternion_pb2.py +36 -0
  64. session_py/proto/session_pb2.py +40 -0
  65. session_py/proto/tolerance_pb2.py +36 -0
  66. session_py/proto/tree_pb2.py +37 -0
  67. session_py/proto/treenode_pb2.py +37 -0
  68. session_py/proto/trimmedsurface_pb2.py +40 -0
  69. session_py/proto/vector_pb2.py +36 -0
  70. session_py/proto/vertex_pb2.py +36 -0
  71. session_py/proto/xform_pb2.py +36 -0
  72. session_py/quaternion.py +119 -0
  73. session_py/quaternion_test.py +26 -0
  74. session_py/ray_box_intersection.py +76 -0
  75. session_py/reload.py +137 -0
  76. session_py/session.py +772 -0
  77. session_py/session_test.py +264 -0
  78. session_py/tolerance.py +377 -0
  79. session_py/tolerance_test.py +78 -0
  80. session_py/tree.py +352 -0
  81. session_py/tree_test.py +30 -0
  82. session_py/treenode.py +186 -0
  83. session_py/treenode_test.py +26 -0
  84. session_py/triangulation_2d.py +321 -0
  85. session_py/triangulation_2d_test.py +114 -0
  86. session_py/trimesh_adaptive.py +429 -0
  87. session_py/trimesh_cdt.py +738 -0
  88. session_py/trimmedsurface.py +461 -0
  89. session_py/trimmedsurface_test.py +392 -0
  90. session_py/vector.py +1139 -0
  91. session_py/vector_test.py +430 -0
  92. session_py/vertex.py +59 -0
  93. session_py/vertex_test.py +25 -0
  94. session_py/xform.py +719 -0
  95. session_py/xform_test.py +365 -0
  96. session_py-0.1.3.dist-info/METADATA +59 -0
  97. session_py-0.1.3.dist-info/RECORD +98 -0
  98. session_py-0.1.3.dist-info/WHEEL +4 -0
session_py/__init__.py ADDED
@@ -0,0 +1,70 @@
1
+ """
2
+ This module contains all the classes and functions that are exposed to the user.
3
+ """
4
+
5
+ from .color import Color
6
+ from .point import Point
7
+ from .vector import Vector
8
+ from .plane import Plane
9
+ from .line import Line
10
+ from .polyline import Polyline
11
+ from .xform import Xform
12
+ from .quaternion import Quaternion
13
+ from .tree import Tree
14
+ from .treenode import TreeNode
15
+ from .graph import Graph
16
+ from .vertex import Vertex
17
+ from .edge import Edge
18
+ from .objects import Objects
19
+ from .session import Session
20
+ from .mesh import Mesh, NormalWeighting
21
+ from .boundingbox import BoundingBox
22
+ from .pointcloud import PointCloud
23
+ from .bvh import BVH, BVHNode
24
+ from .tolerance import Tolerance
25
+ from . import encoders
26
+ from .obj import load_obj, save_obj
27
+ from . import intersection
28
+ from .nurbscurve import NurbsCurve
29
+ from .nurbssurface import NurbsSurface
30
+ from .primitives import Primitives
31
+ from .trimmedsurface import TrimmedSurface
32
+ from .brep import BRep
33
+ from .ray_box_intersection import ray_box
34
+ from .closest import Closest
35
+
36
+ __all__ = [
37
+ "Color",
38
+ "Point",
39
+ "Vector",
40
+ "Plane",
41
+ "Line",
42
+ "Polyline",
43
+ "Xform",
44
+ "Quaternion",
45
+ "Tree",
46
+ "TreeNode",
47
+ "Graph",
48
+ "Vertex",
49
+ "Edge",
50
+ "Objects",
51
+ "Session",
52
+ "Mesh",
53
+ "NormalWeighting",
54
+ "BoundingBox",
55
+ "PointCloud",
56
+ "BVH",
57
+ "BVHNode",
58
+ "Tolerance",
59
+ "encoders",
60
+ "load_obj",
61
+ "save_obj",
62
+ "intersection",
63
+ "NurbsCurve",
64
+ "NurbsSurface",
65
+ "Primitives",
66
+ "TrimmedSurface",
67
+ "BRep",
68
+ "ray_box",
69
+ "Closest",
70
+ ]
@@ -0,0 +1,106 @@
1
+ from .mini_test import MINI_TEST
2
+ from .mini_test import MINI_CHECK
3
+ from .mini_test import run_all
4
+ from .tolerance import TOLERANCE
5
+
6
+
7
+ @MINI_TEST("AABBTree", "Build Empty")
8
+ def test_aabbtree_build_empty():
9
+ from session_py import Closest
10
+ from session_py import Mesh
11
+ from session_py import Point
12
+
13
+ m = Mesh()
14
+ cp, fk, d = Closest.mesh_point_aabb(m, Point(0.0, 0.0, 0.0))
15
+ MINI_CHECK(d == float('inf'))
16
+
17
+
18
+ @MINI_TEST("AABBTree", "Build Single")
19
+ def test_aabbtree_build_single():
20
+ from session_py import Closest
21
+ from session_py import Mesh
22
+ from session_py import Point
23
+
24
+ m = Mesh()
25
+ vk0 = m.add_vertex(Point(0.0, 0.0, 0.0))
26
+ vk1 = m.add_vertex(Point(1.0, 0.0, 0.0))
27
+ vk2 = m.add_vertex(Point(0.0, 1.0, 0.0))
28
+ m.add_face([vk0, vk1, vk2])
29
+ cp, fk, d = Closest.mesh_point_aabb(m, Point(0.0, 0.0, 1.0))
30
+ MINI_CHECK(d > 0.0)
31
+ MINI_CHECK(TOLERANCE.is_close(d, 1.0))
32
+
33
+
34
+ @MINI_TEST("AABBTree", "Build Multiple")
35
+ def test_aabbtree_build_multiple():
36
+ from session_py import Closest
37
+ from session_py import Mesh
38
+ from session_py import Point
39
+
40
+ m = Mesh()
41
+ vk0 = m.add_vertex(Point(0.0, 0.0, 0.0))
42
+ vk1 = m.add_vertex(Point(1.0, 0.0, 0.0))
43
+ vk2 = m.add_vertex(Point(0.0, 1.0, 0.0))
44
+ vk3 = m.add_vertex(Point(5.0, 0.0, 0.0))
45
+ vk4 = m.add_vertex(Point(6.0, 0.0, 0.0))
46
+ vk5 = m.add_vertex(Point(5.0, 1.0, 0.0))
47
+ vk6 = m.add_vertex(Point(10.0, 0.0, 0.0))
48
+ vk7 = m.add_vertex(Point(11.0, 0.0, 0.0))
49
+ vk8 = m.add_vertex(Point(10.0, 1.0, 0.0))
50
+ m.add_face([vk0, vk1, vk2])
51
+ m.add_face([vk3, vk4, vk5])
52
+ m.add_face([vk6, vk7, vk8])
53
+ cp, fk, d = Closest.mesh_point_aabb(m, Point(0.5, 0.0, 0.0))
54
+ MINI_CHECK(d < 0.5)
55
+
56
+
57
+ @MINI_TEST("AABBTree", "Node Count")
58
+ def test_aabbtree_node_count():
59
+ from session_py import Closest
60
+ from session_py import Mesh
61
+ from session_py import Point
62
+
63
+ m = Mesh()
64
+ vkeys = []
65
+ for i in range(100):
66
+ vkeys.append(m.add_vertex(Point(float(i), 0.0, 0.0)))
67
+ vkeys.append(m.add_vertex(Point(float(i) + 0.5, 0.5, 0.0)))
68
+ vkeys.append(m.add_vertex(Point(float(i), 0.5, 0.0)))
69
+ for i in range(100):
70
+ m.add_face([vkeys[i*3], vkeys[i*3+1], vkeys[i*3+2]])
71
+ cp, fk, d = Closest.mesh_point_aabb(m, Point(50.0, 0.0, 0.0))
72
+ MINI_CHECK(d < 0.5)
73
+
74
+
75
+ @MINI_TEST("AABBTree", "Mesh Point Aabb")
76
+ def test_aabbtree_mesh_point_aabb():
77
+ from session_py import Closest
78
+ from session_py import Primitives
79
+ from session_py import Point
80
+
81
+ m = Primitives.cube(2.0)
82
+ cp1, fk1, d1 = Closest.mesh_point_aabb(m, Point(0.0, 0.0, 2.0))
83
+ MINI_CHECK(TOLERANCE.is_close(cp1[2], 1.0))
84
+ MINI_CHECK(TOLERANCE.is_close(d1, 1.0))
85
+ cp2, fk2, d2 = Closest.mesh_point_aabb(m, Point(1.0, 1.0, 1.0))
86
+ MINI_CHECK(TOLERANCE.is_close(d2, 0.0))
87
+
88
+
89
+ @MINI_TEST("AABBTree", "Mesh Point Aabb Matches Bvh")
90
+ def test_aabbtree_mesh_point_aabb_matches_bvh():
91
+ from session_py import Closest
92
+ from session_py import Primitives
93
+ from session_py import Point
94
+
95
+ m = Primitives.cube(2.0)
96
+ tp = Point(0.3, 0.7, 1.5)
97
+ cp_bvh, fk_bvh, d_bvh = Closest.mesh_point(m, tp)
98
+ cp_aabb, fk_aabb, d_aabb = Closest.mesh_point_aabb(m, tp)
99
+ MINI_CHECK(TOLERANCE.is_close(d_bvh, d_aabb))
100
+ MINI_CHECK(TOLERANCE.is_close(cp_bvh[0], cp_aabb[0]))
101
+ MINI_CHECK(TOLERANCE.is_close(cp_bvh[1], cp_aabb[1]))
102
+ MINI_CHECK(TOLERANCE.is_close(cp_bvh[2], cp_aabb[2]))
103
+
104
+
105
+ if __name__ == "__main__":
106
+ run_all(language="python")