TD: replace usage of raw pointers of Vertex and Face with shared pointers.

This fixes issue 4741: Broken File After Using Landmark Dimension in TechDraw
This commit is contained in:
wmayer
2021-12-07 14:45:52 +01:00
committed by wwmayer
parent 4213b3df08
commit 3fa4a321d3
20 changed files with 96 additions and 102 deletions

View File

@@ -823,7 +823,7 @@ bool _checkDirectPlacement(const QGIViewPart *viewPart, const std::vector<std::s
std::string geoType = TechDraw::DrawUtil::getGeomTypeFromName(subNames[0]);
if (geoType == "Vertex") {
int index = TechDraw::DrawUtil::getIndexFromName(subNames[0]);
TechDraw::Vertex *vertex = static_cast<DrawViewPart *>(viewPart->getViewObject())->getProjVertexByIndex(index);
TechDraw::VertexPtr vertex = static_cast<DrawViewPart *>(viewPart->getViewObject())->getProjVertexByIndex(index);
if (vertex) {
placement = viewPart->mapToScene(Rez::guiX(vertex->x()), Rez::guiX(vertex->y()));
return true;

View File

@@ -1094,7 +1094,7 @@ void execLine2Points(Gui::Command* cmd)
if (!vertexNames.empty()) {
for (auto& v2d: vertexNames) {
int idx = DrawUtil::getIndexFromName(v2d);
TechDraw::Vertex* v = baseFeat->getProjVertexByIndex(idx);
TechDraw::VertexPtr v = baseFeat->getProjVertexByIndex(idx);
if (v) {
Base::Vector3d p = DrawUtil::invertY(v->pnt);
points.push_back(p / scale);
@@ -1213,7 +1213,7 @@ void CmdTechDrawCosmeticEraser::activated(int iMsg)
}
}
} else if (geomType == "Vertex") {
TechDraw::Vertex* tdv = objFeat->getProjVertexByIndex(idx);
TechDraw::VertexPtr tdv = objFeat->getProjVertexByIndex(idx);
if (tdv != nullptr) {
std::string delTag = tdv->cosmeticTag;
if (!delTag.empty()) {

View File

@@ -1610,7 +1610,7 @@ bool _isValidVertexToEdge(Gui::Command* cmd) {
if(SubNames.size() == 2) { //there are 2
int eId,vId;
TechDraw::BaseGeom* e;
TechDraw::Vertex* v;
TechDraw::VertexPtr v;
if (TechDraw::DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge" &&
TechDraw::DrawUtil::getGeomTypeFromName(SubNames[1]) == "Vertex") {
eId = TechDraw::DrawUtil::getIndexFromName(SubNames[0]);

View File

@@ -470,8 +470,8 @@ void QGIViewPart::drawViewPart()
// Draw Faces
std::vector<TechDraw::DrawHatch*> hatchObjs = viewPart->getHatches();
std::vector<TechDraw::DrawGeomHatch*> geomObjs = viewPart->getGeomHatches();
const std::vector<TechDraw::Face *> &faceGeoms = viewPart->getFaceGeometry();
std::vector<TechDraw::Face *>::const_iterator fit = faceGeoms.begin();
const std::vector<TechDraw::FacePtr> &faceGeoms = viewPart->getFaceGeometry();
std::vector<TechDraw::FacePtr>::const_iterator fit = faceGeoms.begin();
for(int i = 0 ; fit != faceGeoms.end(); fit++, i++) {
QGIFace* newFace = drawFace(*fit,i);
newFace->isHatched(false);
@@ -637,8 +637,8 @@ void QGIViewPart::drawViewPart()
}
}
const std::vector<TechDraw::Vertex *> &verts = viewPart->getVertexGeometry();
std::vector<TechDraw::Vertex *>::const_iterator vert = verts.begin();
const std::vector<TechDraw::VertexPtr> &verts = viewPart->getVertexGeometry();
std::vector<TechDraw::VertexPtr>::const_iterator vert = verts.begin();
double cAdjust = vp->CenterScale.getValue();
for(int i = 0 ; vert != verts.end(); ++vert, i++) {
@@ -711,7 +711,7 @@ bool QGIViewPart::formatGeomFromCenterLine(std::string cTag, QGIEdge* item)
return result;
}
QGIFace* QGIViewPart::drawFace(TechDraw::Face* f, int idx)
QGIFace* QGIViewPart::drawFace(TechDraw::FacePtr f, int idx)
{
// Base::Console().Message("QGIVP::drawFace - %d\n", idx);
std::vector<TechDraw::Wire *> fWires = f->wires;

View File

@@ -96,7 +96,7 @@ public:
protected:
QPainterPath drawPainterPath(TechDraw::BaseGeom *baseGeom) const;
void drawViewPart();
QGIFace* drawFace(TechDraw::Face* f, int idx);
QGIFace* drawFace(TechDraw::FacePtr f, int idx);
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;

View File

@@ -90,7 +90,7 @@ void QGIViewSection::drawSectionFace()
return;
}
std::vector<TechDraw::Face *>::iterator fit = sectionFaces.begin();
std::vector<TechDraw::FacePtr>::iterator fit = sectionFaces.begin();
int i = 0;
for(; fit != sectionFaces.end(); fit++, i++) {
QGIFace* newFace = drawFace(*fit,-1);