diff --git a/src/Mod/TechDraw/App/DrawUtil.cpp b/src/Mod/TechDraw/App/DrawUtil.cpp index cc6a4c225a..a93fef46a5 100644 --- a/src/Mod/TechDraw/App/DrawUtil.cpp +++ b/src/Mod/TechDraw/App/DrawUtil.cpp @@ -1642,8 +1642,19 @@ bool DrawUtil::isCosmeticEdge(App::DocumentObject* owner, std::string element) { auto ownerView = static_cast(owner); auto edge = ownerView->getEdge(element); - if (edge) { - return edge->getCosmetic(); + if (edge && edge->source() == 1 && edge->getCosmetic()) { + return true; + } + return false; +} + +// true if owner->element is a center line +bool DrawUtil::isCenterLine(App::DocumentObject* owner, std::string element) +{ + auto ownerView = static_cast(owner); + auto edge = ownerView->getEdge(element); + if (edge && edge->source() == 2 && edge->getCosmetic()) { + return true; } return false; } diff --git a/src/Mod/TechDraw/App/DrawUtil.h b/src/Mod/TechDraw/App/DrawUtil.h index bbb7a64120..6bbfae570c 100644 --- a/src/Mod/TechDraw/App/DrawUtil.h +++ b/src/Mod/TechDraw/App/DrawUtil.h @@ -257,6 +257,7 @@ public: static bool isCosmeticVertex(App::DocumentObject* owner, std::string element); static bool isCosmeticEdge(App::DocumentObject* owner, std::string element); + static bool isCenterLine(App::DocumentObject* owner, std::string element); //debugging routines static void dumpVertexes(const char* text, const TopoDS_Shape& s); diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index 1340e668b4..847d07edb9 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include "PreferencesGui.h" #include "QGIView.h" @@ -360,7 +361,8 @@ std::vector ViewProviderViewPart::getSelectedCosmetics(std::vector< result.emplace_back(sub); } } else if (DU::getGeomTypeFromName(sub) == "Edge") { - if (DU::isCosmeticEdge(getViewObject(), sub)) { + if (DU::isCosmeticEdge(getViewObject(), sub) || + DU::isCenterLine(getViewObject(), sub)) { result.emplace_back(sub); } } @@ -380,9 +382,16 @@ void ViewProviderViewPart::deleteCosmeticElements(std::vector remov } if (DU::getGeomTypeFromName(name) == "Edge") { CosmeticEdge* edge = getViewObject()->getCosmeticEdgeBySelection(name); - // if not edge, something has gone very wrong! - getViewObject()->removeCosmeticEdge(edge->getTagAsString()); - continue; + if (edge) { + // if not edge, something has gone very wrong! + getViewObject()->removeCosmeticEdge(edge->getTagAsString()); + continue; + } + CenterLine* line = getViewObject()->getCenterLineBySelection(name); + if (line) { + getViewObject()->removeCenterLine(line->getTagAsString()); + continue; + } } } }