diff --git a/cadquery/occ_impl/geom.py b/cadquery/occ_impl/geom.py index 47af6eec..5fca6641 100644 --- a/cadquery/occ_impl/geom.py +++ b/cadquery/occ_impl/geom.py @@ -80,13 +80,25 @@ class Vector(object): def sub(self, v): return Vector(self.wrapped.Subtracted(v.wrapped)) + def __sub__(self, v): + return self.sub(v) + def add(self, v): return Vector(self.wrapped.Added(v.wrapped)) + def __add__(self, v): + return self.add(v) + def multiply(self, scale): """Return a copy multiplied by the provided scalar""" return Vector(self.wrapped.Multiplied(scale)) + def __mul__(self, scale): + return self.multiply(scale) + + def __truediv__(self, denom): + return self.multiply(1.0 / denom) + def normalized(self): """Return a normalized version of this vector""" return Vector(self.wrapped.Normalized()) diff --git a/tests/TestCadObjects.py b/tests/TestCadObjects.py index c220b96b..0e990476 100644 --- a/tests/TestCadObjects.py +++ b/tests/TestCadObjects.py @@ -108,6 +108,19 @@ class TestCadObjects(BaseTest): result = Vector(1, 2, 0) + Vector(0, 0, 3) self.assertTupleAlmostEquals((1.0, 2.0, 3.0), result.toTuple(), 3) + def testVectorOperators(self): + result = Vector(1, 1, 1) + Vector(2, 2, 2) + self.assertEqual(Vector(3, 3, 3), result) + + result = Vector(1, 2, 3) - Vector(3, 2, 1) + self.assertEqual(Vector(-2, 0, 2), result) + + result = Vector(1, 2, 3) * 2 + self.assertEqual(Vector(2, 4, 6), result) + + result = Vector(2, 4, 6) / 2 + self.assertEqual(Vector(1, 2, 3), result) + def testVectorEquals(self): a = Vector(1, 2, 3) b = Vector(1, 2, 3)