diff --git a/src/Base/GeometryPyCXX.h b/src/Base/GeometryPyCXX.h index 83fa45138b..246c9152b9 100644 --- a/src/Base/GeometryPyCXX.h +++ b/src/Base/GeometryPyCXX.h @@ -42,9 +42,14 @@ template inline Vector3 getVectorFromTuple(PyObject* o) { Py::Sequence tuple(o); - T x = static_cast(Py::Float(tuple.getItem(0))); - T y = static_cast(Py::Float(tuple.getItem(1))); - T z = static_cast(Py::Float(tuple.getItem(2))); + if (tuple.size() != 3) { + throw Py::ValueError("Expected sequence of size 3"); + } + + T x = static_cast(Py::Float(tuple[0])); + T y = static_cast(Py::Float(tuple[1])); + T z = static_cast(Py::Float(tuple[2])); + return Vector3(x,y,z); } @@ -160,6 +165,10 @@ public: Vector& operator= (PyObject* rhsp); Vector& operator= (const Base::Vector3d&); Vector& operator= (const Base::Vector3f&); + operator Base::Vector3d() const + { + return toVector(); + } Base::Vector3d toVector() const;