[TD]allow centerline deletion with Del
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user