From 55c22311e6930fe9030bcffbdd8c712bae78012d Mon Sep 17 00:00:00 2001 From: gumyr Date: Sun, 14 Jul 2024 11:57:08 -0400 Subject: [PATCH] Improved Vector.__str__/__repr__ --- src/build123d/geometry.py | 20 ++++++++++++++------ tests/test_direct_api.py | 9 ++++++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/build123d/geometry.py b/src/build123d/geometry.py index 1720fa41..8d4e66bf 100644 --- a/src/build123d/geometry.py +++ b/src/build123d/geometry.py @@ -435,13 +435,18 @@ def __and__(self: Plane, other: Union[Axis, Location, Plane, VectorLike, "Shape" """intersect vector with other &""" return self.intersect(other) + # def __repr__(self) -> str: + # """Display vector""" + # return "Vector: " + str((self.X, self.Y, self.Z)) + def __repr__(self) -> str: """Display vector""" - return "Vector: " + str((self.X, self.Y, self.Z)) + x = round(self.X, 13) if abs(self.X) > TOLERANCE else 0.0 + y = round(self.Y, 13) if abs(self.Y) > TOLERANCE else 0.0 + z = round(self.Z, 13) if abs(self.Z) > TOLERANCE else 0.0 + return f"Vector({x:.14g}, {y:.14g}, {z:.14g})" - def __str__(self) -> str: - """Display vector""" - return "Vector: " + str((self.X, self.Y, self.Z)) + __str__ = __repr__ def __eq__(self, other: Vector) -> bool: # type: ignore[override] """Vectors equal operator ==""" @@ -476,7 +481,7 @@ def transform(self, affine_transform: Matrix, is_direction: bool = False) -> Vec Defaults to False (vector) Returns: - Vector: transformed vector + Vector: transformed vector """ if not is_direction: # to gp_Pnt to obey build123d transformation convention (in OCP.vectors do not translate) @@ -1923,9 +1928,12 @@ def bottom(cls) -> Plane: def isometric(cls) -> Plane: """Isometric Plane""" return Plane( - (0, 0, 0), (1 / 2**0.5, 1 / 2**0.5, 0), (1 / 3**0.5, -1 / 3**0.5, 1 / 3**0.5) + (0, 0, 0), + (1 / 2**0.5, 1 / 2**0.5, 0), + (1 / 3**0.5, -1 / 3**0.5, 1 / 3**0.5), ) + class Plane(metaclass=PlaneMeta): """Plane diff --git a/tests/test_direct_api.py b/tests/test_direct_api.py index a4e720d2..709bb03e 100644 --- a/tests/test_direct_api.py +++ b/tests/test_direct_api.py @@ -3724,9 +3724,12 @@ def test_vector_not_implemented(self): pass def test_vector_special_methods(self): - v = Vector(1, 2, 3) - self.assertEqual(repr(v), "Vector: (1.0, 2.0, 3.0)") - self.assertEqual(str(v), "Vector: (1.0, 2.0, 3.0)") + self.assertEqual(repr(Vector(1, 2, 3)), "Vector(1, 2, 3)") + self.assertEqual(str(Vector(1, 2, 3)), "Vector(1, 2, 3)") + self.assertEqual( + str(Vector(9.99999999999999, -23.649999999999995, -7.37188088351e-15)), + "Vector(10, -23.65, 0)", + ) def test_vector_iter(self): self.assertEqual(sum([v for v in Vector(1, 2, 3)]), 6)