[TD]CL removal
This commit is contained in:
@@ -1328,6 +1328,38 @@ void DrawViewPart::removeCenterLine(int idx)
|
||||
}
|
||||
}
|
||||
|
||||
void DrawViewPart::removeCenterLine(std::string delTag)
|
||||
{
|
||||
// Base::Console().Message("DVP::removeCL(%s)\n", delTag.c_str());
|
||||
std::vector<CenterLine*> cLines = CenterLines.getValues();
|
||||
std::vector<CenterLine*> newLines;
|
||||
for (auto& cl: cLines) {
|
||||
if (cl->getTagAsString() != delTag) {
|
||||
newLines.push_back(cl);
|
||||
}
|
||||
}
|
||||
CenterLines.setValues(newLines);
|
||||
}
|
||||
|
||||
void DrawViewPart::removeCenterLine(std::vector<std::string> delTags)
|
||||
{
|
||||
std::vector<CenterLine*> cLines = CenterLines.getValues();
|
||||
std::vector<CenterLine*> newLines;
|
||||
for (auto& cl: cLines) {
|
||||
bool found = false;
|
||||
for (auto& dt: delTags) {
|
||||
if (cl->getTagAsString() == dt) {
|
||||
found = true; //this cl is in delete list
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
newLines.push_back(cl);
|
||||
}
|
||||
}
|
||||
CenterLines.setValues(newLines);
|
||||
}
|
||||
|
||||
void DrawViewPart::replaceCenterLine(int idx, TechDraw::CenterLine* cl)
|
||||
{
|
||||
std::vector<CenterLine*> lines = CenterLines.getValues();
|
||||
|
||||
@@ -205,6 +205,8 @@ public:
|
||||
virtual int addCenterLine(TechDraw::CenterLine*);
|
||||
virtual void removeCenterLine(TechDraw::CenterLine* cl);
|
||||
virtual void removeCenterLine(int idx);
|
||||
void removeCenterLine(std::string delTag);
|
||||
void removeCenterLine(std::vector<std::string> delTags);
|
||||
TechDraw::CenterLine* getCenterLineByIndex(int idx) const;
|
||||
TechDraw::CenterLine* getCenterLineByGeom(int idx) const;
|
||||
void replaceCenterLine(int idx, TechDraw::CenterLine* cl);
|
||||
|
||||
@@ -1020,24 +1020,20 @@ void CmdTechDrawCosmeticEraser::activated(int iMsg)
|
||||
}
|
||||
std::vector<std::string> cv2Delete;
|
||||
std::vector<std::string> ce2Delete;
|
||||
std::vector<int> cl2Delete;
|
||||
std::vector<std::string> cl2Delete;
|
||||
for (auto& s: subNames) {
|
||||
int idx = TechDraw::DrawUtil::getIndexFromName(s);
|
||||
std::string geomType = TechDraw::DrawUtil::getGeomTypeFromName(s);
|
||||
if (geomType == "Edge") {
|
||||
TechDraw::BaseGeom* bg = objFeat->getGeomByIndex(idx);
|
||||
Base::Console().Message("CMD::Eraser - have an edge: %s - bg: %X\n", s.c_str(), bg);
|
||||
if ((bg != nullptr) &&
|
||||
(bg->cosmetic) ) {
|
||||
Base::Console().Message("CMD::Eraser - cos: %d source: %d tag: %s\n",
|
||||
bg->cosmetic, bg->sourceIndex(), bg->getCosmeticTag().c_str());
|
||||
int source = bg->source();
|
||||
int sourceIndex = bg->sourceIndex();
|
||||
std::string tag = bg->getCosmeticTag();
|
||||
if (source == 1) { //this is a "CosmeticEdge"
|
||||
ce2Delete.push_back(tag);
|
||||
} else if (source == 2) { //this is a "CenterLine"
|
||||
cl2Delete.push_back(sourceIndex);
|
||||
cl2Delete.push_back(tag);
|
||||
} else {
|
||||
Base::Console().Message(
|
||||
"CMD::CosmeticEraserP - edge: %d is confused - source: %d\n",idx,source);
|
||||
@@ -1070,11 +1066,7 @@ void CmdTechDrawCosmeticEraser::activated(int iMsg)
|
||||
objFeat->removeCosmeticEdge(ce2Delete);
|
||||
}
|
||||
if (!cl2Delete.empty()) {
|
||||
std::sort(cl2Delete.begin(), cl2Delete.end());
|
||||
auto itcl = cl2Delete.rbegin();
|
||||
for ( ; itcl != cl2Delete.rend(); itcl++) {
|
||||
objFeat->removeCenterLine((*itcl));
|
||||
}
|
||||
objFeat->removeCenterLine(cl2Delete);
|
||||
}
|
||||
objFeat->recomputeFeature();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user