diff --git a/src/Mod/TechDraw/App/DrawViewPartPy.xml b/src/Mod/TechDraw/App/DrawViewPartPy.xml index 52645d1ad9..e0fd128a37 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPy.xml +++ b/src/Mod/TechDraw/App/DrawViewPartPy.xml @@ -148,7 +148,15 @@ getVertexBySelection(vertexName). Returns Part.TopoShape. - + + + projectPoint(vector3d point, [bool invert]). Returns the projection of point in the + projection coordinate system of this DrawViewPart. Optionally inverts the Y coordinate of the + result. + + + + requestPaint(). Redraw the graphic for this View. diff --git a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp index cb9c9977fd..30d4469810 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp @@ -709,6 +709,20 @@ PyObject* DrawViewPartPy::getVertexBySelection(PyObject *args) return new Part::TopoShapeVertexPy(new Part::TopoShape(outVertex)); } +PyObject* DrawViewPartPy::projectPoint(PyObject *args) +{ + PyObject* pPoint = nullptr; + PyObject* pInvert = Py_False; + if (!PyArg_ParseTuple(args, "O!|O!", &(Base::VectorPy::Type), &pPoint, &PyBool_Type, &pInvert)) { + throw Py::TypeError("expected (vector)"); + } + + bool invert = Base::asBoolean(pInvert); + + DrawViewPart* dvp = getDrawViewPartPtr(); + Base::Vector3d projection = dvp->projectPoint(static_cast(pPoint)->value(), invert); + return new Base::VectorPy(new Base::Vector3d(projection)); +} //============================================================================== PyObject *DrawViewPartPy::getCustomAttributes(const char* /*attr*/) const