[TD]allow centerline deletion with Del

This commit is contained in:
wandererfan
2023-09-21 10:25:09 -04:00
committed by WandererFan
parent 455fd3b2e5
commit 68f79e06ae
3 changed files with 27 additions and 6 deletions

View File

@@ -1642,8 +1642,19 @@ bool DrawUtil::isCosmeticEdge(App::DocumentObject* owner, std::string element)
{
auto ownerView = static_cast<TechDraw::DrawViewPart*>(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<TechDraw::DrawViewPart*>(owner);
auto edge = ownerView->getEdge(element);
if (edge && edge->source() == 2 && edge->getCosmetic()) {
return true;
}
return false;
}

View File

@@ -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);

View File

@@ -48,6 +48,7 @@
#include <Mod/TechDraw/App/DrawViewMulti.h>
#include <Mod/TechDraw/App/LineGroup.h>
#include <Mod/TechDraw/App/Cosmetic.h>
#include <Mod/TechDraw/App/CenterLine.h>
#include "PreferencesGui.h"
#include "QGIView.h"
@@ -360,7 +361,8 @@ std::vector<std::string> 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<std::string> 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;
}
}
}
}