diff --git a/src/Mod/TechDraw/App/DrawViewPartPy.xml b/src/Mod/TechDraw/App/DrawViewPartPy.xml index f6921ae78a..3abc3c44f4 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPy.xml +++ b/src/Mod/TechDraw/App/DrawViewPartPy.xml @@ -13,6 +13,16 @@ Feature for creating and manipulating Technical Drawing Part Views + + + getVisibleEdges() - get the visible edges in the View as Part::TopoShapeEdges + + + + + getHiddenEdges() - get the hidden edges in the View as Part::TopoShapeEdges + + makeCosmeticVertex(p1) - add a CosmeticVertex at p1 (View coordinates). Returns index of created vertex. diff --git a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp index 403fd0fbfe..0f35ba67d6 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp @@ -70,6 +70,38 @@ std::string DrawViewPartPy::representation(void) const } //TODO: gets & sets for geometry +PyObject* DrawViewPartPy::getVisibleEdges(PyObject *args) +{ + (void) args; + DrawViewPart* dvp = getDrawViewPartPtr(); + PyObject* pEdgeList = PyList_New(0); + std::vector geoms = dvp->getEdgeGeometry(); + for (auto& g: geoms) { + if (g->hlrVisible) { + PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge)); + PyList_Append(pEdgeList, pEdge); + } + } + + return pEdgeList; +} + +PyObject* DrawViewPartPy::getHiddenEdges(PyObject *args) +{ + (void) args; + DrawViewPart* dvp = getDrawViewPartPtr(); + PyObject* pEdgeList = PyList_New(0); + std::vector geoms = dvp->getEdgeGeometry(); + for (auto& g: geoms) { + if (!g->hlrVisible) { + PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge)); + PyList_Append(pEdgeList, pEdge); + } + } + + return pEdgeList; +} + PyObject* DrawViewPartPy::clearCosmeticVertices(PyObject *args) { (void) args; @@ -238,7 +270,7 @@ PyObject* DrawViewPartPy::makeCosmeticCircleArc(PyObject *args) // right result, but ugly: // Qt angles are cw, OCC angles are CCW // Qt -y is up, OCC -y is down - + TopoDS_Edge edge = aMakeEdge.Edge(); int idx = dvp->addCosmeticEdge(edge); TechDraw::CosmeticEdge* ce = dvp->getCosmeticEdgeByIndex(idx); @@ -314,7 +346,7 @@ PyObject* DrawViewPartPy::getCosmeticEdgeByGeom(PyObject *args) throw Py::TypeError("expected (index)"); } DrawViewPart* dvp = getDrawViewPartPtr(); - + TechDraw::BaseGeom* bg = dvp->getGeomByIndex(idx); if (bg == nullptr) { Base::Console().Error("DVPPI::getCEbyGeom - geom: %d not found\n",idx); @@ -502,7 +534,7 @@ PyObject* DrawViewPartPy::formatGeometricEdge(PyObject *args) visible); TechDraw::GeomFormat* newGF = new TechDraw::GeomFormat(idx, fmt); -// int idx = +// int idx = dvp->addGeomFormat(newGF); } return Py_None;