From a107bcd40d98e532468be548804f6c71ff014807 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Fri, 6 Sep 2019 20:40:20 -0400 Subject: [PATCH] [TD]Expose drawing edge and vertex to Python --- src/Mod/TechDraw/App/DrawViewPartPy.xml | 10 +++++++ src/Mod/TechDraw/App/DrawViewPartPyImp.cpp | 31 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/Mod/TechDraw/App/DrawViewPartPy.xml b/src/Mod/TechDraw/App/DrawViewPartPy.xml index 2eb898e9d3..91c7efe9d5 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPy.xml +++ b/src/Mod/TechDraw/App/DrawViewPartPy.xml @@ -102,6 +102,16 @@ formatGeometricEdge(index, style, weight, color, visible). Returns None. + + + + getEdgeByIndex(edgeIndex). Returns Part.TopoShape. + + + + + getVertexByIndex(vertexIndex). Returns Part.TopoShape. + diff --git a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp index 1d543c4de3..c42d83673e 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp @@ -42,6 +42,10 @@ #include #include +#include +#include +#include + #include "DrawViewPart.h" #include "GeometryObject.h" #include "Cosmetic.h" @@ -64,6 +68,7 @@ std::string DrawViewPartPy::representation(void) const { return std::string(""); } +//TODO: gets & sets for geometry PyObject* DrawViewPartPy::clearCosmeticVertices(PyObject *args) { @@ -503,7 +508,33 @@ PyObject* DrawViewPartPy::formatGeometricEdge(PyObject *args) return Py_None; } +//------------------------------------------------------------------------------ +PyObject* DrawViewPartPy::getEdgeByIndex(PyObject *args) +{ + int edgeIndex = 0; + if (!PyArg_ParseTuple(args, "i", &edgeIndex)) { + throw Py::TypeError("expected (edgeIndex)"); + } + DrawViewPart* dvp = getDrawViewPartPtr(); + TechDraw::BaseGeom* geom = dvp->getGeomByIndex(edgeIndex); + TopoDS_Edge outEdge = geom->occEdge; + return new Part::TopoShapeEdgePy(new Part::TopoShape(outEdge)); +} +PyObject* DrawViewPartPy::getVertexByIndex(PyObject *args) +{ + int vertexIndex = 0; + if (!PyArg_ParseTuple(args, "i", &vertexIndex)) { + throw Py::TypeError("expected (vertIndex)"); + } + DrawViewPart* dvp = getDrawViewPartPtr(); + TechDraw::Vertex* vert = dvp->getProjVertexByIndex(vertexIndex); + TopoDS_Vertex outVertex = vert->occVertex; + return new Part::TopoShapeVertexPy(new Part::TopoShape(outVertex)); +} + + +//============================================================================== PyObject *DrawViewPartPy::getCustomAttributes(const char* /*attr*/) const { return 0;