From 50523fe9512fcb2ff622b3ffae79758d813bca4d Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 14 Nov 2021 18:18:38 +0100 Subject: [PATCH] Base: add factory method to Vector2dPy --- src/Base/GeometryPyCXX.cpp | 15 +++++++++++++++ src/Base/GeometryPyCXX.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/Base/GeometryPyCXX.cpp b/src/Base/GeometryPyCXX.cpp index 3edbc2453c..2eb127ef1e 100644 --- a/src/Base/GeometryPyCXX.cpp +++ b/src/Base/GeometryPyCXX.cpp @@ -90,6 +90,21 @@ Base::Vector3d Py::Vector::toVector() const namespace Base { +Py::PythonClassObject Vector2dPy::create(const Vector2d& v) +{ + return create(v.x, v.y); +} + +Py::PythonClassObject Vector2dPy::create(double x, double y) +{ + Py::Callable class_type(type()); + Py::Tuple arg(2); + arg.setItem(0, Py::Float(x)); + arg.setItem(1, Py::Float(y)); + Py::PythonClassObject o = Py::PythonClassObject(class_type.apply(arg, Py::Dict())); + return o; +} + Vector2dPy::Vector2dPy(Py::PythonClassInstance *self, Py::Tuple &args, Py::Dict &kwds) : Py::PythonClass::PythonClass(self, args, kwds) { diff --git a/src/Base/GeometryPyCXX.h b/src/Base/GeometryPyCXX.h index 8dfd6cf9f8..dd564bc938 100644 --- a/src/Base/GeometryPyCXX.h +++ b/src/Base/GeometryPyCXX.h @@ -50,6 +50,8 @@ inline Vector3 getVectorFromTuple(PyObject* o) class BaseExport Vector2dPy : public Py::PythonClass { public: + static Py::PythonClassObject create(const Vector2d&); + static Py::PythonClassObject create(double x, double y); Vector2dPy(Py::PythonClassInstance *self, Py::Tuple &args, Py::Dict &kwds); virtual ~Vector2dPy();