From 01641433c1ddde9b52c764c5cd46dfd601b61860 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Sat, 11 Feb 2023 17:51:05 -0500 Subject: [PATCH] [TD]getters and setters for geometry - make attributes private (or protected) and use getters and setters instead of accessing attributes directly. --- src/Mod/TechDraw/App/AppTechDrawPy.cpp | 4 +- src/Mod/TechDraw/App/Cosmetic.cpp | 68 ++++++------- src/Mod/TechDraw/App/CosmeticEdgePyImp.cpp | 8 +- src/Mod/TechDraw/App/CosmeticExtension.cpp | 4 +- src/Mod/TechDraw/App/DimensionReferences.cpp | 4 +- src/Mod/TechDraw/App/DrawDimHelper.cpp | 8 +- src/Mod/TechDraw/App/DrawProjectSplit.cpp | 8 +- src/Mod/TechDraw/App/DrawViewDimension.cpp | 30 +++--- src/Mod/TechDraw/App/DrawViewPart.cpp | 23 ++--- src/Mod/TechDraw/App/DrawViewPartPyImp.cpp | 12 +-- src/Mod/TechDraw/App/Geometry.cpp | 50 ++++++---- src/Mod/TechDraw/App/Geometry.h | 97 +++++++++++++------ src/Mod/TechDraw/App/GeometryObject.cpp | 62 ++++++------ src/Mod/TechDraw/Gui/CommandAnnotate.cpp | 6 +- src/Mod/TechDraw/Gui/CommandExtensionDims.cpp | 2 +- src/Mod/TechDraw/Gui/CommandExtensionPack.cpp | 16 +-- src/Mod/TechDraw/Gui/DimensionValidators.cpp | 10 +- src/Mod/TechDraw/Gui/QGIDrawingTemplate.cpp | 2 +- src/Mod/TechDraw/Gui/QGIViewPart.cpp | 42 ++++---- src/Mod/TechDraw/Gui/TaskLineDecor.cpp | 4 +- 20 files changed, 249 insertions(+), 211 deletions(-) diff --git a/src/Mod/TechDraw/App/AppTechDrawPy.cpp b/src/Mod/TechDraw/App/AppTechDrawPy.cpp index e092d9592c..300cd6bc25 100644 --- a/src/Mod/TechDraw/App/AppTechDrawPy.cpp +++ b/src/Mod/TechDraw/App/AppTechDrawPy.cpp @@ -598,8 +598,8 @@ private: std::vector geoms = dvp->getEdgeGeometry(); std::vector cosmeticEdges; for (auto& g : geoms) { - if (g->hlrVisible && g->cosmetic) { - cosmeticEdges.push_back(g->occEdge); + if (g->getHlrVisible() && g->getCosmetic()) { + cosmeticEdges.push_back(g->getOCCEdge()); } } if (!cosmeticEdges.empty()) { diff --git a/src/Mod/TechDraw/App/Cosmetic.cpp b/src/Mod/TechDraw/App/Cosmetic.cpp index ad17462dae..8fc088dce4 100644 --- a/src/Mod/TechDraw/App/Cosmetic.cpp +++ b/src/Mod/TechDraw/App/Cosmetic.cpp @@ -365,8 +365,8 @@ CosmeticEdge::CosmeticEdge(TechDraw::BaseGeomPtr g) //we assume input edge is already in Yinverted coordinates permaStart = m_geometry->getStartPoint(); permaEnd = m_geometry->getEndPoint(); - if ((g->geomType == TechDraw::GeomType::CIRCLE) || - (g->geomType == TechDraw::GeomType::ARCOFCIRCLE)) { + if ((g->getGeomType() == TechDraw::GeomType::CIRCLE) || + (g->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE)) { TechDraw::CirclePtr circ = std::static_pointer_cast(g); permaStart = circ->center; permaEnd = circ->center; @@ -382,9 +382,9 @@ CosmeticEdge::~CosmeticEdge() void CosmeticEdge::initialize() { - m_geometry->classOfEdge = ecHARD; - m_geometry->hlrVisible = true; - m_geometry->cosmetic = true; + m_geometry->setClassOfEdge(ecHARD); + m_geometry->setHlrVisible( true); + m_geometry->setCosmetic(true); m_geometry->source(COSMETICEDGE); createNewTag(); @@ -404,13 +404,13 @@ TopoDS_Edge CosmeticEdge::TopoDS_EdgeFromVectors(Base::Vector3d pt1, Base::Vecto TechDraw::BaseGeomPtr CosmeticEdge::scaledGeometry(double scale) { - TopoDS_Edge e = m_geometry->occEdge; + TopoDS_Edge e = m_geometry->getOCCEdge(); TopoDS_Shape s = TechDraw::scaleShape(e, scale); TopoDS_Edge newEdge = TopoDS::Edge(s); TechDraw::BaseGeomPtr newGeom = TechDraw::BaseGeom::baseFactory(newEdge); - newGeom->classOfEdge = ecHARD; - newGeom->hlrVisible = true; - newGeom->cosmetic = true; + newGeom->setClassOfEdge(ecHARD); + newGeom->setHlrVisible( true); + newGeom->setCosmetic(true); newGeom->source(COSMETICEDGE); newGeom->setCosmeticTag(getTagAsString()); return newGeom; @@ -421,7 +421,7 @@ std::string CosmeticEdge::toString() const std::stringstream ss; ss << getTagAsString() << ", $$$, "; if (m_geometry) { - ss << m_geometry->geomType << + ss << m_geometry->getGeomType() << ", $$$, " << m_geometry->toString() << ", $$$, " << @@ -450,18 +450,18 @@ void CosmeticEdge::Save(Base::Writer &writer) const const char v = m_format.m_visible?'1':'0'; writer.Stream() << writer.ind() << "" << endl; - writer.Stream() << writer.ind() << "geomType <<"\"/>" << endl; - if (m_geometry->geomType == TechDraw::GeomType::GENERIC) { + writer.Stream() << writer.ind() << "getGeomType() <<"\"/>" << endl; + if (m_geometry->getGeomType() == TechDraw::GeomType::GENERIC) { GenericPtr gen = std::static_pointer_cast(m_geometry); gen->Save(writer); - } else if (m_geometry->geomType == TechDraw::GeomType::CIRCLE) { + } else if (m_geometry->getGeomType() == TechDraw::GeomType::CIRCLE) { TechDraw::CirclePtr circ = std::static_pointer_cast(m_geometry); circ->Save(writer); - } else if (m_geometry->geomType == TechDraw::GeomType::ARCOFCIRCLE) { + } else if (m_geometry->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) { TechDraw::AOCPtr aoc = std::static_pointer_cast(m_geometry); aoc->Save(writer); } else { - Base::Console().Warning("CE::Save - unimplemented geomType: %d\n", m_geometry->geomType); + Base::Console().Warning("CE::Save - unimplemented geomType: %d\n", m_geometry->getGeomType()); } } @@ -486,14 +486,14 @@ void CosmeticEdge::Restore(Base::XMLReader &reader) if (gType == TechDraw::GeomType::GENERIC) { TechDraw::GenericPtr gen = std::make_shared (); gen->Restore(reader); - gen->occEdge = GeometryUtils::edgeFromGeneric(gen); + gen->setOCCEdge(GeometryUtils::edgeFromGeneric(gen)); m_geometry = gen; permaStart = gen->getStartPoint(); permaEnd = gen->getEndPoint(); } else if (gType == TechDraw::GeomType::CIRCLE) { TechDraw::CirclePtr circ = std::make_shared (); circ->Restore(reader); - circ->occEdge = GeometryUtils::edgeFromCircle(circ); + circ->setOCCEdge(GeometryUtils::edgeFromCircle(circ)); m_geometry = circ; permaRadius = circ->radius; permaStart = circ->center; @@ -501,7 +501,7 @@ void CosmeticEdge::Restore(Base::XMLReader &reader) } else if (gType == TechDraw::GeomType::ARCOFCIRCLE) { TechDraw::AOCPtr aoc = std::make_shared (); aoc->Restore(reader); - aoc->occEdge = GeometryUtils::edgeFromCircleArc(aoc); + aoc->setOCCEdge(GeometryUtils::edgeFromCircleArc(aoc)); m_geometry = aoc; permaStart = aoc->startPnt; permaEnd = aoc->endPnt; @@ -648,9 +648,9 @@ CenterLine::~CenterLine() void CenterLine::initialize() { - m_geometry->classOfEdge = ecHARD; - m_geometry->hlrVisible = true; - m_geometry->cosmetic = true; + m_geometry->setClassOfEdge(ecHARD); + m_geometry->setHlrVisible( true); + m_geometry->setCosmetic(true); m_geometry->source(CENTERLINE); createNewTag(); @@ -777,9 +777,9 @@ TechDraw::BaseGeomPtr CenterLine::scaledGeometry(TechDraw::DrawViewPart* partFea TopoDS_Shape s = TechDraw::scaleShape(e, scale); TopoDS_Edge newEdge = TopoDS::Edge(s); TechDraw::BaseGeomPtr newGeom = TechDraw::BaseGeom::baseFactory(newEdge); - newGeom->classOfEdge = ecHARD; - newGeom->hlrVisible = true; - newGeom->cosmetic = true; + newGeom->setClassOfEdge(ecHARD); + newGeom->setHlrVisible( true); + newGeom->setCosmetic(true); newGeom->source(CENTERLINE); newGeom->setCosmeticTag(getTagAsString()); @@ -911,8 +911,8 @@ std::pair CenterLine::calcEndPoints(DrawViewPart partFeat->getFaceEdgesByIndex(idx); if (!faceEdges.empty()) { for (auto& fe: faceEdges) { - if (!fe->cosmetic) { - BRepBndLib::AddOptimal(fe->occEdge, faceBox); + if (!fe->getCosmetic()) { + BRepBndLib::AddOptimal(fe->getOCCEdge(), faceBox); } } } @@ -1251,18 +1251,18 @@ void CenterLine::Save(Base::Writer &writer) const return Base::Console().Error("CL::Save - m_geometry is null\n"); } - writer.Stream() << writer.ind() << "geomType <<"\"/>" << endl; - if (m_geometry->geomType == TechDraw::GeomType::GENERIC) { + writer.Stream() << writer.ind() << "getGeomType() <<"\"/>" << endl; + if (m_geometry->getGeomType() == TechDraw::GeomType::GENERIC) { GenericPtr gen = std::static_pointer_cast(m_geometry); gen->Save(writer); - } else if (m_geometry->geomType == TechDraw::GeomType::CIRCLE) { + } else if (m_geometry->getGeomType() == TechDraw::GeomType::CIRCLE) { TechDraw::CirclePtr circ = std::static_pointer_cast(m_geometry); circ->Save(writer); - } else if (m_geometry->geomType == TechDraw::GeomType::ARCOFCIRCLE) { + } else if (m_geometry->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) { TechDraw::AOCPtr aoc = std::static_pointer_cast(m_geometry); aoc->Save(writer); } else { - Base::Console().Message("CL::Save - unimplemented geomType: %d\n", m_geometry->geomType); + Base::Console().Message("CL::Save - unimplemented geomType: %d\n", m_geometry->getGeomType()); } } @@ -1349,17 +1349,17 @@ void CenterLine::Restore(Base::XMLReader &reader) if (gType == TechDraw::GeomType::GENERIC) { TechDraw::GenericPtr gen = std::make_shared (); gen->Restore(reader); - gen->occEdge = GeometryUtils::edgeFromGeneric(gen); + gen->setOCCEdge(GeometryUtils::edgeFromGeneric(gen)); m_geometry = gen; } else if (gType == TechDraw::GeomType::CIRCLE) { TechDraw::CirclePtr circ = std::make_shared (); circ->Restore(reader); - circ->occEdge = GeometryUtils::edgeFromCircle(circ); + circ->setOCCEdge(GeometryUtils::edgeFromCircle(circ)); m_geometry = circ; } else if (gType == TechDraw::GeomType::ARCOFCIRCLE) { TechDraw::AOCPtr aoc = std::make_shared (); aoc->Restore(reader); - aoc->occEdge = GeometryUtils::edgeFromCircleArc(aoc); + aoc->setOCCEdge(GeometryUtils::edgeFromCircleArc(aoc)); m_geometry = aoc; } else { Base::Console().Warning("CL::Restore - unimplemented geomType: %d\n", gType); diff --git a/src/Mod/TechDraw/App/CosmeticEdgePyImp.cpp b/src/Mod/TechDraw/App/CosmeticEdgePyImp.cpp index 9edd6360d1..df24c92eb5 100644 --- a/src/Mod/TechDraw/App/CosmeticEdgePyImp.cpp +++ b/src/Mod/TechDraw/App/CosmeticEdgePyImp.cpp @@ -229,7 +229,7 @@ void CosmeticEdgePy::setEnd(Py::Vector arg) Py::Float CosmeticEdgePy::getRadius() const { - TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType; + TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType(); if ( (gt != TechDraw::GeomType::CIRCLE) && (gt != TechDraw::GeomType::ARCOFCIRCLE) ) { throw Py::TypeError("Not a circle. Can not get radius"); @@ -240,7 +240,7 @@ Py::Float CosmeticEdgePy::getRadius() const void CosmeticEdgePy::setRadius(Py::Float arg) { - TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType; + TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType(); if ( (gt != TechDraw::GeomType::CIRCLE) && (gt != TechDraw::GeomType::ARCOFCIRCLE) ) { throw Py::TypeError("Not a circle. Can not set radius"); @@ -256,7 +256,7 @@ void CosmeticEdgePy::setRadius(Py::Float arg) Py::Vector CosmeticEdgePy::getCenter() const { - TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType; + TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType(); if ( (gt != TechDraw::GeomType::CIRCLE) && (gt != TechDraw::GeomType::ARCOFCIRCLE) ) { throw Py::TypeError("Not a circle. Can not get center"); @@ -268,7 +268,7 @@ Py::Vector CosmeticEdgePy::getCenter() const void CosmeticEdgePy::setCenter(Py::Vector arg) { - TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->geomType; + TechDraw::GeomType gt = getCosmeticEdgePtr()->m_geometry->getGeomType(); // PyObject* p = arg.ptr(); if ( (gt != TechDraw::GeomType::CIRCLE) && (gt != TechDraw::GeomType::ARCOFCIRCLE) ) { diff --git a/src/Mod/TechDraw/App/CosmeticExtension.cpp b/src/Mod/TechDraw/App/CosmeticExtension.cpp index 44dfe3316a..dd8e8d7968 100644 --- a/src/Mod/TechDraw/App/CosmeticExtension.cpp +++ b/src/Mod/TechDraw/App/CosmeticExtension.cpp @@ -110,8 +110,8 @@ TechDraw::CosmeticVertex* CosmeticExtension::getCosmeticVertexBySelection(std::s TechDraw::VertexPtr v = dvp->getProjVertexByIndex(idx); if (!v) return result; - if (!v->cosmeticTag.empty()) - result = getCosmeticVertex(v->cosmeticTag); + if (!v->getCosmeticTag().empty()) + result = getCosmeticVertex(v->getCosmeticTag()); return result; } diff --git a/src/Mod/TechDraw/App/DimensionReferences.cpp b/src/Mod/TechDraw/App/DimensionReferences.cpp index 3b32f84c06..52e979ef1b 100644 --- a/src/Mod/TechDraw/App/DimensionReferences.cpp +++ b/src/Mod/TechDraw/App/DimensionReferences.cpp @@ -42,10 +42,10 @@ TopoDS_Shape ReferenceEntry::getGeometry() const std::string gType = geomType(); if (gType == "Vertex") { auto vgeom = dvp->getVertex(getSubName()); - return vgeom->occVertex; + return vgeom->getOCCVertex(); } else if (gType == "Edge") { auto egeom = dvp->getEdge(getSubName()); - return egeom->occEdge; + return egeom->getOCCEdge(); } else if (gType == "Face") { auto fgeom = dvp->getFace(getSubName()); return fgeom->toOccFace(); diff --git a/src/Mod/TechDraw/App/DrawDimHelper.cpp b/src/Mod/TechDraw/App/DrawDimHelper.cpp index bbeb0fc260..28912e8802 100644 --- a/src/Mod/TechDraw/App/DrawDimHelper.cpp +++ b/src/Mod/TechDraw/App/DrawDimHelper.cpp @@ -207,8 +207,8 @@ DrawDimHelper::minMax(DrawViewPart* dvp, std::vector edgeNames, int std::vector inEdges; for (auto& bg : edgeGeomList) { - inEdges.push_back(bg->occEdge); - BRepBndLib::Add(bg->occEdge, edgeBbx); + inEdges.push_back(bg->getOCCEdge()); + BRepBndLib::Add(bg->getOCCEdge(), edgeBbx); } double minX, minY, minZ, maxX, maxY, maxZ; @@ -323,8 +323,8 @@ DrawDimHelper::minMax3d(DrawViewPart* dvp, ReferenceVector references, int direc std::vector inEdges; for (auto& bg : edges) { - inEdges.push_back(bg->occEdge); - BRepBndLib::Add(bg->occEdge, shapeBbx); + inEdges.push_back(bg->getOCCEdge()); + BRepBndLib::Add(bg->getOCCEdge(), shapeBbx); } //from here on this is the same as 2d method diff --git a/src/Mod/TechDraw/App/DrawProjectSplit.cpp b/src/Mod/TechDraw/App/DrawProjectSplit.cpp index fc60161b05..cef7018de1 100644 --- a/src/Mod/TechDraw/App/DrawProjectSplit.cpp +++ b/src/Mod/TechDraw/App/DrawProjectSplit.cpp @@ -88,7 +88,7 @@ std::vector DrawProjectSplit::getEdgesForWalker(TopoDS_Shape shape, TechDraw::GeometryObjectPtr go = buildGeometryObject(scaledShape, viewAxis); const std::vector& goEdges = go->getVisibleFaceEdges(false, false); for (auto& e: goEdges){ - edgesIn.push_back(e->occEdge); + edgesIn.push_back(e->getOCCEdge()); } std::vector nonZero; @@ -126,7 +126,7 @@ std::vector DrawProjectSplit::getEdges(TechDraw::GeometryObject* ge std::vector::const_iterator itEdge = goEdges.begin(); std::vector origEdges; for (;itEdge != goEdges.end(); itEdge++) { - origEdges.push_back((*itEdge)->occEdge); + origEdges.push_back((*itEdge)->getOCCEdge()); } std::vector faceEdges; @@ -499,8 +499,8 @@ std::vector DrawProjectSplit::scrubEdges(const std::vectoroccEdge, 2.0 * EWTOLERANCE)) { - BRepBuilderAPI_Copy copier(tdEdge->occEdge, copyGeometry, copyMesh); + if (!DrawUtil::isZeroEdge(tdEdge->getOCCEdge(), 2.0 * EWTOLERANCE)) { + BRepBuilderAPI_Copy copier(tdEdge->getOCCEdge(), copyGeometry, copyMesh); copyEdges.push_back(TopoDS::Edge(copier.Shape())); } } diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index 793203525e..c4e0cc5fd3 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -591,7 +591,7 @@ pointPair DrawViewDimension::getPointsOneEdge(ReferenceVector references) ssMessage << getNameInDocument() << " can not find geometry for 2d reference (1)"; throw Base::RuntimeError(ssMessage.str()); } - if (geom->geomType != TechDraw::GeomType::GENERIC) { + if (geom->getGeomType() != TechDraw::GeomType::GENERIC) { std::stringstream ssMessage; ssMessage << getNameInDocument() << " 2d reference is a " << geom->geomTypeName(); throw Base::RuntimeError(ssMessage.str()); @@ -635,7 +635,7 @@ pointPair DrawViewDimension::getPointsTwoEdges(ReferenceVector references) ssMessage << getNameInDocument() << " can not find geometry for 2d reference (2)"; throw Base::RuntimeError(ssMessage.str()); } - return closestPoints(geom0->occEdge, geom1->occEdge); + return closestPoints(geom0->getOCCEdge(), geom1->getOCCEdge()); } //this is a 3d object @@ -671,7 +671,7 @@ pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references) throw Base::RuntimeError(ssMessage.str()); } - return {v0->pnt, v1->pnt}; + return {v0->point(), v1->point()}; } //this is a 3d object @@ -716,7 +716,7 @@ pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references) if (!vertex || !edge) { throw Base::RuntimeError("Missing geometry for dimension (4)"); } - return closestPoints(edge->occEdge, vertex->occVertex); + return closestPoints(edge->getOCCEdge(), vertex->getOCCVertex()); } //this is a 3d object @@ -772,12 +772,12 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) arcPoints pts; pts.center = Base::Vector3d(0.0, 0.0, 0.0); pts.radius = 0.0; - if ((base && base->geomType == TechDraw::GeomType::CIRCLE) - || (base && base->geomType == TechDraw::GeomType::ARCOFCIRCLE)) { + if ((base && base->getGeomType() == TechDraw::GeomType::CIRCLE) + || (base && base->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE)) { circle = std::static_pointer_cast(base); pts.center = Base::Vector3d(circle->center.x, circle->center.y, 0.0); pts.radius = circle->radius; - if (base->geomType == TechDraw::GeomType::ARCOFCIRCLE) { + if (base->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) { TechDraw::AOCPtr aoc = std::static_pointer_cast(circle); pts.isArc = true; pts.onCurve.first(Base::Vector3d(aoc->midPnt.x, aoc->midPnt.y, 0.0)); @@ -794,8 +794,8 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) pts.center + Base::Vector3d(-1, 0, 0) * circle->radius);//arbitrary point on edge } } - else if ((base && base->geomType == TechDraw::GeomType::ELLIPSE) - || (base && base->geomType == TechDraw::GeomType::ARCOFELLIPSE)) { + else if ((base && base->getGeomType() == TechDraw::GeomType::ELLIPSE) + || (base && base->getGeomType() == TechDraw::GeomType::ARCOFELLIPSE)) { TechDraw::EllipsePtr ellipse = std::static_pointer_cast(base); if (ellipse->closed()) { double r1 = ellipse->minor; @@ -826,14 +826,14 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) + Base::Vector3d(-1, 0, 0) * rAvg);//arbitrary point on edge } } - else if (base && base->geomType == TechDraw::GeomType::BSPLINE) { + else if (base && base->getGeomType() == TechDraw::GeomType::BSPLINE) { TechDraw::BSplinePtr spline = std::static_pointer_cast(base); if (spline->isCircle()) { bool arc; double rad; Base::Vector3d center; //bool circ = - GeometryUtils::getCircleParms(spline->occEdge, rad, center, arc); + GeometryUtils::getCircleParms(spline->getOCCEdge(), rad, center, arc); pts.center = Base::Vector3d(center.x, center.y, 0.0); pts.radius = rad; pts.arcEnds.first(Base::Vector3d(spline->startPnt.x, spline->startPnt.y, 0.0)); @@ -980,13 +980,13 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references ssMessage << getNameInDocument() << " can not find geometry for 2d reference (5)"; throw Base::RuntimeError(ssMessage.str()); } - if (geom0->geomType != TechDraw::GeomType::GENERIC) { + if (geom0->getGeomType() != TechDraw::GeomType::GENERIC) { std::stringstream ssMessage; ssMessage << getNameInDocument() << " first 2d reference is a " << geom0->geomTypeName(); throw Base::RuntimeError(ssMessage.str()); } - if (geom1->geomType != TechDraw::GeomType::GENERIC) { + if (geom1->getGeomType() != TechDraw::GeomType::GENERIC) { std::stringstream ssMessage; ssMessage << getNameInDocument() << " second 2d reference is a " << geom0->geomTypeName(); @@ -1436,13 +1436,13 @@ bool DrawViewDimension::leaderIntersectsArc(Base::Vector3d s, Base::Vector3d poi const std::vector& subElements = References2D.getSubValues(); int idx = DrawUtil::getIndexFromName(subElements[0]); TechDraw::BaseGeomPtr base = getViewPart()->getGeomByIndex(idx); - if (base && base->geomType == TechDraw::GeomType::ARCOFCIRCLE) { + if (base && base->getGeomType() == TechDraw::GeomType::ARCOFCIRCLE) { TechDraw::AOCPtr aoc = std::static_pointer_cast(base); if (aoc->intersectsArc(s, pointOnCircle)) { result = true; } } - else if (base && base->geomType == TechDraw::GeomType::BSPLINE) { + else if (base && base->getGeomType() == TechDraw::GeomType::BSPLINE) { TechDraw::BSplinePtr spline = std::static_pointer_cast(base); if (spline->isCircle()) { if (spline->intersectsArc(s, pointOnCircle)) { diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index c4c2d4fcbd..062f9f944d 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -569,7 +569,7 @@ void DrawViewPart::extractFaces() bool copyGeometry = true; bool copyMesh = false; for (const auto& e : goEdges) { - BRepBuilderAPI_Copy copier(e->occEdge, copyGeometry, copyMesh); + BRepBuilderAPI_Copy copier(e->getOCCEdge(), copyGeometry, copyMesh); copyEdges.push_back(TopoDS::Edge(copier.Shape())); } std::vector nonZero; @@ -865,7 +865,7 @@ TechDraw::VertexPtr DrawViewPart::getProjVertexByCosTag(std::string cosTag) } for (auto& gv : gVerts) { - if (gv->cosmeticTag == cosTag) { + if (gv->getCosmeticTag() == cosTag) { result = gv; break; } @@ -883,7 +883,7 @@ std::vector DrawViewPart::getFaceEdgesByIndex(int idx) co TechDraw::FacePtr projFace = faces.at(idx); for (auto& w : projFace->wires) { for (auto& g : w->geoms) { - if (g->cosmetic) { + if (g->getCosmetic()) { //if g is cosmetic, we should skip it continue; } @@ -904,10 +904,8 @@ std::vector DrawViewPart::getWireForFace(int idx) const TechDraw::FacePtr ourFace = faces.at(idx); for (auto& w : ourFace->wires) { edges.clear(); - int i = 0; for (auto& g : w->geoms) { - edges.push_back(g->occEdge); - i++; + edges.push_back(g->getOCCEdge()); } TopoDS_Wire occwire = EdgeWalker::makeCleanWire(edges); result.push_back(occwire); @@ -1279,9 +1277,6 @@ bool DrawViewPart::checkXDirection() const // Base::Console().Message("DVP::checkXDirection()\n"); Base::Vector3d xDir = XDirection.getValue(); if (DrawUtil::fpCompare(xDir.Length(), 0.0)) { - Base::Vector3d dir = Direction.getValue(); - Base::Vector3d origin(0.0, 0.0, 0.0); - xDir = getLegacyX(origin, dir); return false; } return true; @@ -1326,7 +1321,7 @@ void DrawViewPart::updateReferenceVert(std::string tag, Base::Vector3d loc2d) { for (auto& v : m_referenceVerts) { if (v->getTagAsString() == tag) { - v->pnt = loc2d; + v->point(loc2d); break; } } @@ -1351,7 +1346,7 @@ std::string DrawViewPart::addReferenceVertex(Base::Vector3d v) // TechDraw::Vertex* ref = new TechDraw::Vertex(scaledV); Base::Vector3d scaledV = v; TechDraw::VertexPtr ref(std::make_shared(scaledV)); - ref->reference = true; + ref->isReference(true); refTag = ref->getTagAsString(); m_referenceVerts.push_back(ref); return refTag; @@ -1379,7 +1374,7 @@ void DrawViewPart::removeAllReferencesFromGeom() std::vector gVerts = getVertexGeometry(); std::vector newVerts; for (auto& gv : gVerts) { - if (!gv->reference) { + if (!gv->isReference()) { newVerts.push_back(gv); } } @@ -1436,7 +1431,7 @@ void DrawViewPart::refreshCVGeoms() std::vector gVerts = getVertexGeometry(); std::vector newGVerts; for (auto& gv : gVerts) { - if (gv->cosmeticTag.empty()) {//keep only non-cv vertices + if (gv->getCosmeticTag().empty()) {//keep only non-cv vertices newGVerts.push_back(gv); } } @@ -1455,7 +1450,7 @@ int DrawViewPart::getCVIndex(std::string tag) int i = 0; bool found = false; for (auto& gv : gVerts) { - if (gv->cosmeticTag == tag) { + if (gv->getCosmeticTag() == tag) { result = i; found = true; break; diff --git a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp index fa978bbabd..f70ca41462 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp @@ -69,8 +69,8 @@ PyObject* DrawViewPartPy::getVisibleEdges(PyObject *args) Py::List pEdgeList; std::vector geoms = dvp->getEdgeGeometry(); for (auto& g: geoms) { - if (g->hlrVisible) { - PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge)); + if (g->getHlrVisible()) { + PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->getOCCEdge())); pEdgeList.append(Py::asObject(pEdge)); } } @@ -88,8 +88,8 @@ PyObject* DrawViewPartPy::getHiddenEdges(PyObject *args) Py::List pEdgeList; std::vector geoms = dvp->getEdgeGeometry(); for (auto& g: geoms) { - if (!g->hlrVisible) { - PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge)); + if (!g->getHlrVisible()) { + PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->getOCCEdge())); pEdgeList.append(Py::asObject(pEdge)); } } @@ -657,7 +657,7 @@ PyObject* DrawViewPartPy::getEdgeByIndex(PyObject *args) return nullptr; } - TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->occEdge, + TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->getOCCEdge(), Base::Vector3d(0.0, 0.0, 0.0), 1.0 / dvp->getScale()); @@ -711,7 +711,7 @@ PyObject* DrawViewPartPy::getEdgeBySelection(PyObject *args) return nullptr; } - TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->occEdge, + TopoDS_Shape temp = TechDraw::mirrorShapeVec(geom->getOCCEdge(), Base::Vector3d(0.0, 0.0, 0.0), 1.0 / dvp->getScale()); diff --git a/src/Mod/TechDraw/App/Geometry.cpp b/src/Mod/TechDraw/App/Geometry.cpp index 4bf5ea75f4..c9e402dfa8 100644 --- a/src/Mod/TechDraw/App/Geometry.cpp +++ b/src/Mod/TechDraw/App/Geometry.cpp @@ -75,6 +75,7 @@ #include #include "Geometry.h" +#include "GeometryObject.h" #include "DrawUtil.h" @@ -116,7 +117,7 @@ TopoDS_Wire Wire::toOccWire() const { BRepBuilderAPI_MakeWire mkWire; for (auto& g: geoms) { - TopoDS_Edge e = g->occEdge; + TopoDS_Edge e = g->getOCCEdge(); mkWire.Add(e); } if (mkWire.IsDone()) { @@ -187,7 +188,7 @@ BaseGeomPtr BaseGeom::copy() result->extractType = extractType; result->classOfEdge = classOfEdge; - result->hlrVisible = hlrVisible; + result->setHlrVisible( hlrVisible); result->reversed = reversed; result->ref3D = ref3D; result->cosmetic = cosmetic; @@ -367,7 +368,7 @@ double BaseGeom::minDist(Base::Vector3d p) //!find point on me nearest to p Base::Vector3d BaseGeom::nearPoint(const BaseGeomPtr p) { - TopoDS_Edge pEdge = p->occEdge; + TopoDS_Edge pEdge = p->getOCCEdge(); BRepExtrema_DistShapeShape extss(occEdge, pEdge); if (!extss.IsDone() || extss.NbSolution() == 0) { return Base::Vector3d(0.0, 0.0, 0.0); @@ -413,6 +414,15 @@ bool BaseGeom::closed() return false; } +// return a BaseGeom similar to this, but inverted with respect to Y axis +BaseGeomPtr BaseGeom::inverted() +{ + Base::Console().Message("BG::inverted()\n"); + TopoDS_Shape invertedShape = GeometryObject::invertGeometry(occEdge); + TopoDS_Edge invertedEdge = TopoDS::Edge(invertedShape); + return baseFactory(invertedEdge); +} + //keep this in sync with enum GeomType std::string BaseGeom::geomTypeName() { @@ -539,15 +549,15 @@ std::vector BaseGeom::intersection(TechDraw::BaseGeomPtr geom2) # define isArcOrCircle 2 // we check the type of the two objects int edge1(unknown), edge2(unknown); - if (this->geomType == TechDraw::CIRCLE || - this->geomType == TechDraw::ARCOFCIRCLE) + if (this->getGeomType() == TechDraw::CIRCLE || + this->getGeomType() == TechDraw::ARCOFCIRCLE) edge1 = isArcOrCircle; - else if (this->geomType == TechDraw::GENERIC) + else if (this->getGeomType() == TechDraw::GENERIC) edge1 = isGeneric; - if (geom2->geomType == TechDraw::CIRCLE || - geom2->geomType == TechDraw::ARCOFCIRCLE) + if (geom2->getGeomType() == TechDraw::CIRCLE || + geom2->getGeomType() == TechDraw::ARCOFCIRCLE) edge2 = isArcOrCircle; - else if (geom2->geomType == TechDraw::GENERIC) + else if (geom2->getGeomType() == TechDraw::GENERIC) edge2 = isGeneric; // we calculate the intersections std::vector interPoints; @@ -1334,28 +1344,28 @@ Vertex::Vertex() extractType = ExtractionType::Plain; //obs? hlrVisible = false; ref3D = -1; //obs. never used. - isCenter = false; + m_center = false; BRepBuilderAPI_MakeVertex mkVert(gp_Pnt(0.0, 0.0, 0.0)); occVertex = mkVert.Vertex(); cosmetic = false; cosmeticLink = -1; cosmeticTag = std::string(); - reference = false; + m_reference = false; createNewTag(); } Vertex::Vertex(const Vertex* v) { - pnt = v->pnt; + pnt = v->point(); extractType = v->extractType; //obs? hlrVisible = v->hlrVisible; ref3D = v->ref3D; //obs. never used. - isCenter = v->isCenter; + m_center = v->m_center; occVertex = v->occVertex; cosmetic = v->cosmetic; cosmeticLink = v->cosmeticLink; cosmeticTag = v->cosmeticTag; - reference = false; + m_reference = false; createNewTag(); } @@ -1365,13 +1375,13 @@ Vertex::Vertex(double x, double y) extractType = ExtractionType::Plain; //obs? hlrVisible = false; ref3D = -1; //obs. never used. - isCenter = false; + m_center = false; BRepBuilderAPI_MakeVertex mkVert(gp_Pnt(x, y, 0.0)); occVertex = mkVert.Vertex(); cosmetic = false; cosmeticLink = -1; cosmeticTag = std::string(); - reference = false; + m_reference = false; createNewTag(); } @@ -1400,10 +1410,10 @@ void Vertex::Save(Base::Writer &writer) const "\"/>" << endl; writer.Stream() << writer.ind() << "" << endl; - const char v = hlrVisible?'1':'0'; + const char v = hlrVisible ? '1':'0'; writer.Stream() << writer.ind() << "" << endl; writer.Stream() << writer.ind() << "" << endl; - const char c = isCenter?'1':'0'; + const char c = m_center ?'1':'0'; writer.Stream() << writer.ind() << "" << endl; const char c2 = cosmetic?'1':'0'; writer.Stream() << writer.ind() << "" << endl; @@ -1441,7 +1451,7 @@ void Vertex::Restore(Base::XMLReader &reader) //will restore read to eof looking for "Reference" in old docs?? YES!! // reader.readElement("Reference"); -// reference = (bool)reader.getAttributeAsInteger("value")==0?false:true; +// m_reference = (bool)reader.getAttributeAsInteger("value")==0?false:true; reader.readElement("VertexTag"); std::string temp = reader.getAttribute("value"); @@ -1510,7 +1520,7 @@ BaseGeomPtrVector GeometryUtils::chainGeoms(BaseGeomPtrVector geoms) if (next.index) { //found an unused edge with vertex == atPoint BaseGeomPtr nextEdge = geoms.at(next.index); used[next.index] = true; - nextEdge->reversed = next.reversed; + nextEdge->setReversed(next.reversed); result.push_back(nextEdge); if (next.reversed) { atPoint = nextEdge->getStartPoint(); diff --git a/src/Mod/TechDraw/App/Geometry.h b/src/Mod/TechDraw/App/Geometry.h index f6eefe1a80..af2b810da7 100644 --- a/src/Mod/TechDraw/App/Geometry.h +++ b/src/Mod/TechDraw/App/Geometry.h @@ -95,25 +95,9 @@ class TechDrawExport BaseGeom : public std::enable_shared_from_this //BaseGeom(BaseGeomPtr bg); //do we need a copy constructor too? virtual ~BaseGeom() = default; - public: - GeomType geomType; - ExtractionType extractType; //obs - edgeClass classOfEdge; - bool hlrVisible; - bool reversed; - int ref3D; //obs? - TopoDS_Edge occEdge; //projected Edge - bool cosmetic; - int source() { return m_source; } - void source(int s) { m_source = s; } - int sourceIndex() { return m_sourceIndex; } - void sourceIndex(int si) { m_sourceIndex = si; } - std::string getCosmeticTag() { return cosmeticTag; } - void setCosmeticTag(std::string t) { cosmeticTag = t; } - - virtual std::string toString() const; virtual void Save(Base::Writer& w) const; virtual void Restore(Base::XMLReader& r); + std::vector findEndPoints(); Base::Vector3d getStartPoint(); Base::Vector3d getEndPoint(); @@ -127,6 +111,7 @@ class TechDrawExport BaseGeom : public std::enable_shared_from_this bool closed(); BaseGeomPtr copy(); std::string dump(); + virtual std::string toString() const; std::vector intersection(TechDraw::BaseGeomPtr geom2); //Uniqueness @@ -134,8 +119,33 @@ class TechDrawExport BaseGeom : public std::enable_shared_from_this virtual std::string getTagAsString() const; std::string geomTypeName(); + BaseGeomPtr inverted(); + + // attribute setters and getters + GeomType getGeomType() { return geomType; } + void setGeomType(GeomType type) { geomType = type; } + edgeClass getClassOfEdge() { return classOfEdge; } + void setClassOfEdge(edgeClass newClass) { classOfEdge = newClass; } + bool getHlrVisible() { return hlrVisible; } + void setHlrVisible(bool state) { hlrVisible = state; } + bool getReversed() { return reversed; } + void setReversed(bool state) { reversed = state; } + int getRef3d() { return ref3D; } + void setRef3d(int ref) { ref3D = ref; } + TopoDS_Edge getOCCEdge() { return occEdge; } + void setOCCEdge(TopoDS_Edge newEdge) { occEdge = newEdge; } + bool getCosmetic() { return cosmetic; } + void setCosmetic (bool state) { cosmetic = state; } + int source() { return m_source; } + void source(int s) { m_source = s; } + int sourceIndex() { return m_sourceIndex; } + void sourceIndex(int si) { m_sourceIndex = si; } + std::string getCosmeticTag() { return cosmeticTag; } + void setCosmeticTag(std::string t) { cosmeticTag = t; } + +protected: + void createNewTag(); -private: void intersectionLL(TechDraw::BaseGeomPtr geom1, TechDraw::BaseGeomPtr geom2, std::vector& interPoints); @@ -146,14 +156,20 @@ private: TechDraw::BaseGeomPtr geom2, std::vector& interPoints); -protected: + GeomType geomType; + ExtractionType extractType; //obs + edgeClass classOfEdge; + bool hlrVisible; + bool reversed; + int ref3D; //obs? + TopoDS_Edge occEdge; //projected Edge + bool cosmetic; + //TODO: all these attributes should be private int m_source; //0 - geom, 1 - cosmetic edge, 2 - centerline int m_sourceIndex; std::string cosmeticTag; - - void createNewTag(); - boost::uuids::uuid tag; + }; using BaseGeomPtrVector = std::vector; //new style @@ -335,19 +351,9 @@ class TechDrawExport Vertex virtual void Restore(Base::XMLReader &/*reader*/); virtual void dump(const char* title = ""); - Base::Vector3d pnt; - ExtractionType extractType; //obs? - bool hlrVisible; //visible according to HLR - int ref3D; //obs. never used. - bool isCenter; - TopoDS_Vertex occVertex; bool isEqual(const Vertex& v, double tol); Base::Vector3d point() const { return Base::Vector3d(pnt.x, pnt.y, 0.0); } void point(Base::Vector3d v){ pnt = Base::Vector3d(v.x, v.y); } - bool cosmetic; - int cosmeticLink; //deprec. use cosmeticTag - std::string cosmeticTag; - bool reference; //reference vertex (ex robust dimension) double x() {return pnt.x;} double y() {return pnt.y;} @@ -355,11 +361,38 @@ class TechDrawExport Vertex boost::uuids::uuid getTag() const; virtual std::string getTagAsString() const; + // attribute setters and getters + bool getHlrVisible() { return hlrVisible; } + void setHlrVisible(bool state) { hlrVisible = state; } + int getRef3d() { return ref3D; } + void setRef3d(int ref) { ref3D = ref; } + TopoDS_Vertex getOCCVertex() { return occVertex; } + void setOCCVertex(TopoDS_Vertex newVertex) { occVertex = newVertex; } + bool getCosmetic() { return cosmetic; } + void setCosmetic (bool state) { cosmetic = state; } + std::string getCosmeticTag() { return cosmeticTag; } + void setCosmeticTag(std::string t) { cosmeticTag = t; } + bool isCenter() {return m_center;} + void isCenter(bool state) { m_center = state; } + bool isReference() { return m_reference; } + void isReference(bool state) { m_reference = state; } + protected: //Uniqueness void createNewTag(); void assignTag(const TechDraw::Vertex* v); + Base::Vector3d pnt; + ExtractionType extractType; //obs? + bool hlrVisible; //visible according to HLR + int ref3D; //obs. never used. + bool m_center; + TopoDS_Vertex occVertex; + bool cosmetic; + int cosmeticLink; //deprec. use cosmeticTag + std::string cosmeticTag; + bool m_reference; //reference vertex (ex robust dimension) + boost::uuids::uuid tag; }; using VertexPtr = std::shared_ptr; diff --git a/src/Mod/TechDraw/App/GeometryObject.cpp b/src/Mod/TechDraw/App/GeometryObject.cpp index 5469b02225..ecb838d8f3 100644 --- a/src/Mod/TechDraw/App/GeometryObject.cpp +++ b/src/Mod/TechDraw/App/GeometryObject.cpp @@ -98,8 +98,8 @@ const BaseGeomPtrVector GeometryObject::getVisibleFaceEdges(const bool smooth, bool seamOK = seam; for (auto& e : edgeGeom) { - if (e->hlrVisible) { - switch (e->classOfEdge) { + if (e->getHlrVisible()) { + switch (e->getClassOfEdge()) { case ecHARD: case ecOUTLINE: result.push_back(e); @@ -124,7 +124,7 @@ const BaseGeomPtrVector GeometryObject::getVisibleFaceEdges(const bool smooth, // TopoDS_Compound comp; // builder.MakeCompound(comp); // for (auto& r: result) { - // builder.Add(comp, r->occEdge); + // builder.Add(comp, r->getOCCEdge()); // } // BRepTools::Write(comp, "GOVizFaceEdges.brep"); //debug @@ -562,8 +562,8 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca base->source(0);//object geometry base->sourceIndex(i - 1); - base->classOfEdge = category; - base->hlrVisible = hlrVisible; + base->setClassOfEdge(category); + base->setHlrVisible(hlrVisible); edgeGeom.push_back(base); //add vertices of new edge if not already in list @@ -577,8 +577,8 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca TechDraw::VertexPtr c1; if (circle) { c1 = std::make_shared(circle->center); - c1->isCenter = true; - c1->hlrVisible = true; + c1->isCenter(true); + c1->setHlrVisible(true); } std::vector::iterator itVertex = vertexGeom.begin(); @@ -597,14 +597,14 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca } if (v1Add) { vertexGeom.push_back(v1); - v1->hlrVisible = true; + v1->setHlrVisible( true); } else { // delete v1; } if (v2Add) { vertexGeom.push_back(v2); - v2->hlrVisible = true; + v2->setHlrVisible( true); } else { // delete v2; @@ -613,7 +613,7 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca if (circle) { if (c1Add) { vertexGeom.push_back(c1); - c1->hlrVisible = true; + c1->setHlrVisible( true); } else { // delete c1; @@ -638,10 +638,10 @@ int GeometryObject::addCosmeticVertex(CosmeticVertex* cv) double scale = m_parent->getScale(); Base::Vector3d pos = cv->scaled(scale); TechDraw::VertexPtr v(std::make_shared(pos.x, pos.y)); - v->cosmetic = true; - v->cosmeticLink = -1;//obs?? - v->cosmeticTag = cv->getTagAsString(); - v->hlrVisible = true; + v->setCosmetic(true); +// v->setCosmeticLink = -1;//obs?? + v->setCosmeticTag(cv->getTagAsString()); + v->setHlrVisible(true); int idx = vertexGeom.size(); vertexGeom.push_back(v); return idx; @@ -653,9 +653,9 @@ int GeometryObject::addCosmeticVertex(Base::Vector3d pos) { Base::Console().Message("GO::addCosmeticVertex() 1 - deprec?\n"); TechDraw::VertexPtr v(std::make_shared(pos.x, pos.y)); - v->cosmetic = true; - v->cosmeticTag = "tbi";//not connected to CV - v->hlrVisible = true; + v->setCosmetic(true); + v->setCosmeticTag("tbi");//not connected to CV + v->setHlrVisible(true); int idx = vertexGeom.size(); vertexGeom.push_back(v); return idx; @@ -665,9 +665,9 @@ int GeometryObject::addCosmeticVertex(Base::Vector3d pos, std::string tagString) { // Base::Console().Message("GO::addCosmeticVertex() 2\n"); TechDraw::VertexPtr v(std::make_shared(pos.x, pos.y)); - v->cosmetic = true; - v->cosmeticTag = tagString;//connected to CV - v->hlrVisible = true; + v->setCosmetic(true); + v->setCosmeticTag(tagString);//connected to CV + v->setHlrVisible(true); int idx = vertexGeom.size(); vertexGeom.push_back(v); return idx; @@ -683,9 +683,9 @@ int GeometryObject::addCosmeticEdge(CosmeticEdge* ce) // Base::Console().Message("GO::addCosmeticEdge(%X) 0\n", ce); double scale = m_parent->getScale(); TechDraw::BaseGeomPtr e = ce->scaledGeometry(scale); - e->cosmetic = true; + e->setCosmetic(true); e->setCosmeticTag(ce->getTagAsString()); - e->hlrVisible = true; + e->setHlrVisible(true); int idx = edgeGeom.size(); edgeGeom.push_back(e); return idx; @@ -700,10 +700,10 @@ int GeometryObject::addCosmeticEdge(Base::Vector3d start, Base::Vector3d end) gp_Pnt gp2(end.x, end.y, end.z); TopoDS_Edge occEdge = BRepBuilderAPI_MakeEdge(gp1, gp2); TechDraw::BaseGeomPtr e = BaseGeom::baseFactory(occEdge); - e->cosmetic = true; + e->setCosmetic(true); // e->cosmeticLink = link; e->setCosmeticTag("tbi"); - e->hlrVisible = true; + e->setHlrVisible(true); int idx = edgeGeom.size(); edgeGeom.push_back(e); return idx; @@ -716,10 +716,10 @@ int GeometryObject::addCosmeticEdge(Base::Vector3d start, Base::Vector3d end, st gp_Pnt gp2(end.x, end.y, end.z); TopoDS_Edge occEdge = BRepBuilderAPI_MakeEdge(gp1, gp2); TechDraw::BaseGeomPtr base = BaseGeom::baseFactory(occEdge); - base->cosmetic = true; + base->setCosmetic(true); base->setCosmeticTag(tagString); base->source(1);//1-CosmeticEdge, 2-CenterLine - base->hlrVisible = true; + base->setHlrVisible(true); int idx = edgeGeom.size(); edgeGeom.push_back(base); return idx; @@ -728,8 +728,8 @@ int GeometryObject::addCosmeticEdge(Base::Vector3d start, Base::Vector3d end, st int GeometryObject::addCosmeticEdge(TechDraw::BaseGeomPtr base, std::string tagString) { // Base::Console().Message("GO::addCosmeticEdge(%X, %s) 3\n", base, tagString.c_str()); - base->cosmetic = true; - base->hlrVisible = true; + base->setCosmetic(true); + base->setHlrVisible(true); base->source(1);//1-CosmeticEdge, 2-CenterLine base->setCosmeticTag(tagString); base->sourceIndex(-1); @@ -742,7 +742,7 @@ int GeometryObject::addCenterLine(TechDraw::BaseGeomPtr base, std::string tag) // int s, int si) { // Base::Console().Message("GO::addCenterLine()\n"); - base->cosmetic = true; + base->setCosmetic(true); base->setCosmeticTag(tag); base->source(2); // base->sourceIndex(si); //index into source; @@ -819,7 +819,7 @@ Base::BoundBox3d GeometryObject::calcBoundingBox() const testBox.SetGap(0.0); if (!edgeGeom.empty()) { for (BaseGeomPtrVector::const_iterator it(edgeGeom.begin()); it != edgeGeom.end(); ++it) { - BRepBndLib::AddOptimal((*it)->occEdge, testBox); + BRepBndLib::AddOptimal((*it)->getOCCEdge(), testBox); } } @@ -854,7 +854,7 @@ bool GeometryObject::findVertex(Base::Vector3d v) bool found = false; std::vector::iterator it = vertexGeom.begin(); for (; it != vertexGeom.end(); it++) { - double dist = (v - (*it)->pnt).Length(); + double dist = (v - (*it)->point()).Length(); if (dist < Precision::Confusion()) { found = true; break; diff --git a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp index b1243c4a1f..a3504b8ac2 100644 --- a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp +++ b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp @@ -1080,7 +1080,7 @@ void execLine2Points(Gui::Command* cmd) int idx = DrawUtil::getIndexFromName(v2d); TechDraw::VertexPtr v = baseFeat->getProjVertexByIndex(idx); if (v) { - Base::Vector3d p = DrawUtil::invertY(v->pnt); + Base::Vector3d p = DrawUtil::invertY(v->point()); points.push_back(p / scale); is3d.push_back(false); } @@ -1182,7 +1182,7 @@ void CmdTechDrawCosmeticEraser::activated(int iMsg) std::string geomType = TechDraw::DrawUtil::getGeomTypeFromName(s); if (geomType == "Edge") { TechDraw::BaseGeomPtr bg = objFeat->getGeomByIndex(idx); - if (bg && bg->cosmetic) { + if (bg && bg->getCosmetic()) { int source = bg->source(); std::string tag = bg->getCosmeticTag(); if (source == COSMETICEDGE) { @@ -1199,7 +1199,7 @@ void CmdTechDrawCosmeticEraser::activated(int iMsg) if (!tdv) Base::Console().Message("CMD::eraser - geom: %d not found!\n", idx); - std::string delTag = tdv->cosmeticTag; + std::string delTag = tdv->getCosmeticTag(); if (delTag.empty()) Base::Console().Warning("Vertex%d is not cosmetic! Can not erase.\n", idx); cv2Delete.push_back(delTag); diff --git a/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp b/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp index 53c1acb821..b6a6a4fa76 100644 --- a/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp @@ -2149,7 +2149,7 @@ void CmdTechDrawExtensionCreateLengthArc::activated(int iMsg) { int geoId = TechDraw::DrawUtil::getIndexFromName(subNames[0]); TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(geoId); std::string geoType = TechDraw::DrawUtil::getGeomTypeFromName(subNames[0]); - if (geoType == "Edge" && geom->geomType == TechDraw::ARCOFCIRCLE) { + if (geoType == "Edge" && geom->getGeomType() == TechDraw::ARCOFCIRCLE) { TechDraw::AOCPtr arcTag = std::static_pointer_cast(geom); float radius = arcTag->radius; Base::Vector3d centerPt = arcTag->center; diff --git a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp index 091b48ab8e..55b21d5f7b 100644 --- a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp +++ b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp @@ -102,7 +102,7 @@ void execHoleCircle(Gui::Command* cmd) std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name); TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(GeoId); if (GeoType == "Edge") { - if (geom->geomType == TechDraw::CIRCLE || geom->geomType == TechDraw::ARCOFCIRCLE) { + if (geom->getGeomType() == TechDraw::CIRCLE || geom->getGeomType() == TechDraw::ARCOFCIRCLE) { TechDraw::CirclePtr cgen = std::static_pointer_cast(geom); Circles.push_back(cgen); } @@ -192,7 +192,7 @@ void execCircleCenterLines(Gui::Command* cmd) TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(GeoId); std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name); if (GeoType == "Edge") { - if (geom->geomType == TechDraw::CIRCLE || geom->geomType == TechDraw::ARCOFCIRCLE) { + if (geom->getGeomType() == TechDraw::CIRCLE || geom->getGeomType() == TechDraw::ARCOFCIRCLE) { TechDraw::CirclePtr cgen = std::static_pointer_cast(geom); Base::Vector3d center = cgen->center; center.y = -center.y; @@ -769,7 +769,7 @@ void CmdTechDrawExtensionChangeLineAttributes::activated(int iMsg) int num = DrawUtil::getIndexFromName(name); BaseGeomPtr baseGeo = objFeat->getGeomByIndex(num); if (baseGeo) { - if (baseGeo->cosmetic) { + if (baseGeo->getCosmetic()) { if (baseGeo->source() == 1) { TechDraw::CosmeticEdge* cosEdgeTag = objFeat->getCosmeticEdgeBySelection(name); _setLineAttributes(cosEdgeTag); @@ -1525,14 +1525,14 @@ void execExtendShortenLine(Gui::Command* cmd, bool extend) if (geoType == "Edge") { TechDraw::BaseGeomPtr baseGeo = objFeat->getGeomByIndex(num); if (baseGeo) { - if (baseGeo->geomType == TechDraw::GENERIC) { + if (baseGeo->getGeomType() == TechDraw::GENERIC) { TechDraw::GenericPtr genLine = std::static_pointer_cast(baseGeo); Base::Vector3d P0 = genLine->points.at(0); Base::Vector3d P1 = genLine->points.at(1); bool isCenterLine = false; TechDraw::CenterLine* centerEdge = nullptr; - if (baseGeo->cosmetic) { + if (baseGeo->getCosmetic()) { std::string uniTag = baseGeo->getCosmeticTag(); int oldStyle = 1; float oldWeight = 1.0f; @@ -1789,7 +1789,7 @@ void CmdTechDrawExtensionAreaAnnotation::activated(int iMsg) std::vector faceEdges = objFeat->getFaceEdgesByIndex(idx); // We filter arcs, circles etc. which are not allowed. for (const TechDraw::BaseGeomPtr& geoPtr : faceEdges) - if (geoPtr->geomType != TechDraw::GENERIC) + if (geoPtr->getGeomType() != TechDraw::GENERIC) throw Base::TypeError( "CmdTechDrawAreaAnnotation - forbidden border element found\n"); // We create a list of all points along the boundary of the face. @@ -1990,7 +1990,7 @@ void _createThreadCircle(std::string Name, TechDraw::DrawViewPart* objFeat, floa TechDraw::BaseGeomPtr geom = objFeat->getGeomByIndex(GeoId); std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name); - if (GeoType == "Edge" && geom->geomType == TechDraw::CIRCLE) { + if (GeoType == "Edge" && geom->getGeomType() == TechDraw::CIRCLE) { TechDraw::CirclePtr cgen = std::static_pointer_cast(geom); Base::Vector3d center = cgen->center; float radius = cgen->radius; @@ -2014,7 +2014,7 @@ void _createThreadLines(std::vector SubNames, TechDraw::DrawViewPar int GeoId1 = TechDraw::DrawUtil::getIndexFromName(SubNames[1]); TechDraw::BaseGeomPtr geom0 = objFeat->getGeomByIndex(GeoId0); TechDraw::BaseGeomPtr geom1 = objFeat->getGeomByIndex(GeoId1); - if (geom0->geomType != TechDraw::GENERIC || geom1->geomType != TechDraw::GENERIC) { + if (geom0->getGeomType() != TechDraw::GENERIC || geom1->getGeomType() != TechDraw::GENERIC) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("TechDraw Thread Hole Side"), QObject::tr("Please select two straight lines")); return; diff --git a/src/Mod/TechDraw/Gui/DimensionValidators.cpp b/src/Mod/TechDraw/Gui/DimensionValidators.cpp index 0fd3232823..34ccb0974b 100644 --- a/src/Mod/TechDraw/Gui/DimensionValidators.cpp +++ b/src/Mod/TechDraw/Gui/DimensionValidators.cpp @@ -383,7 +383,7 @@ DimensionGeometryType TechDraw::isValidSingleEdge(ReferenceEntry ref) return isInvalid; } - if (geom->geomType == TechDraw::GENERIC) { + if (geom->getGeomType() == TechDraw::GENERIC) { TechDraw::GenericPtr gen1 = std::static_pointer_cast(geom); if (gen1->points.size() < 2) { return isInvalid; @@ -396,11 +396,11 @@ DimensionGeometryType TechDraw::isValidSingleEdge(ReferenceEntry ref) } else { return TechDraw::isDiagonal; } - } else if (geom->geomType == TechDraw::CIRCLE || geom->geomType == TechDraw::ARCOFCIRCLE) { + } else if (geom->getGeomType() == TechDraw::CIRCLE || geom->getGeomType() == TechDraw::ARCOFCIRCLE) { return isCircle; - } else if (geom->geomType == TechDraw::ELLIPSE || geom->geomType == TechDraw::ARCOFELLIPSE) { + } else if (geom->getGeomType() == TechDraw::ELLIPSE || geom->getGeomType() == TechDraw::ARCOFELLIPSE) { return isEllipse; - } else if (geom->geomType == TechDraw::BSPLINE) { + } else if (geom->getGeomType() == TechDraw::BSPLINE) { TechDraw::BSplinePtr spline = std::static_pointer_cast(geom); if (spline->isCircle()) { return isBSplineCircle; @@ -493,7 +493,7 @@ DimensionGeometryType TechDraw::isValidMultiEdge(ReferenceVector refs) TechDraw::BaseGeomPtr geom0 = objFeat0->getGeomByIndex(GeoId0); TechDraw::BaseGeomPtr geom1 = objFeat0->getGeomByIndex(GeoId1); - if (geom0->geomType == TechDraw::GENERIC && geom1->geomType == TechDraw::GENERIC) { + if (geom0->getGeomType() == TechDraw::GENERIC && geom1->getGeomType() == TechDraw::GENERIC) { TechDraw::GenericPtr gen0 = std::static_pointer_cast(geom0); TechDraw::GenericPtr gen1 = std::static_pointer_cast(geom1); if (gen0->points.size() > 2 || gen1->points.size() > 2) {//the edge is a polyline diff --git a/src/Mod/TechDraw/Gui/QGIDrawingTemplate.cpp b/src/Mod/TechDraw/Gui/QGIDrawingTemplate.cpp index ed8ceb32a7..0669fa0120 100644 --- a/src/Mod/TechDraw/Gui/QGIDrawingTemplate.cpp +++ b/src/Mod/TechDraw/Gui/QGIDrawingTemplate.cpp @@ -86,7 +86,7 @@ void QGIDrawingTemplate::draw() // Draw Edges // iterate through all the geometries for(; it != geoms.end(); ++it) { - switch((*it)->geomType) { + switch((*it)->getGeomType()) { case TechDraw::GENERIC: { TechDraw::GenericPtr geom = std::static_pointer_cast(*it); diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 865a9d8fff..cb54fb0aa4 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -132,7 +132,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot) if (!baseGeom) return path; - switch (baseGeom->geomType) { + switch (baseGeom->getGeomType()) { case CIRCLE: { TechDraw::CirclePtr geom = std::static_pointer_cast(baseGeom); @@ -144,7 +144,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot) } break; case ARCOFCIRCLE: { TechDraw::AOCPtr geom = std::static_pointer_cast(baseGeom); - if (baseGeom->reversed) { + if (baseGeom->getReversed()) { path.moveTo(Rez::guiX(geom->endPnt.x), Rez::guiX(geom->endPnt.y)); pathArc(path, Rez::guiX(geom->radius), Rez::guiX(geom->radius), 0., geom->largeArc, !geom->cw, Rez::guiX(geom->startPnt.x), Rez::guiX(geom->startPnt.y), @@ -174,7 +174,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot) } break; case TechDraw::ARCOFELLIPSE: { TechDraw::AOEPtr geom = std::static_pointer_cast(baseGeom); - if (baseGeom->reversed) { + if (baseGeom->getReversed()) { path.moveTo(Rez::guiX(geom->endPnt.x), Rez::guiX(geom->endPnt.y)); pathArc(path, Rez::guiX(geom->major), Rez::guiX(geom->minor), geom->angle, geom->largeArc, !geom->cw, Rez::guiX(geom->startPnt.x), @@ -192,7 +192,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot) case TechDraw::BEZIER: { TechDraw::BezierSegmentPtr geom = std::static_pointer_cast(baseGeom); - if (baseGeom->reversed) { + if (baseGeom->getReversed()) { if (!geom->pnts.empty()) { Base::Vector3d rStart = geom->pnts.back(); path.moveTo(Rez::guiX(rStart.x), Rez::guiX(rStart.y)); @@ -248,7 +248,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot) } break; case TechDraw::BSPLINE: { TechDraw::BSplinePtr geom = std::static_pointer_cast(baseGeom); - if (baseGeom->reversed) { + if (baseGeom->getReversed()) { // Move painter to the end of our last segment std::vector::const_reverse_iterator it = geom->segments.rbegin(); @@ -311,7 +311,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot) } break; case TechDraw::GENERIC: { TechDraw::GenericPtr geom = std::static_pointer_cast(baseGeom); - if (baseGeom->reversed) { + if (baseGeom->getReversed()) { if (!geom->points.empty()) { Base::Vector3d rStart = geom->points.back(); path.moveTo(Rez::guiX(rStart.x), Rez::guiX(rStart.y)); @@ -331,7 +331,7 @@ QPainterPath QGIViewPart::geomToPainterPath(BaseGeomPtr baseGeom, double rot) } break; default: { Base::Console().Error("Error - geomToPainterPath - UNKNOWN geomType: %d\n", - baseGeom->geomType); + baseGeom->getGeomType()); } break; }//sb end of switch @@ -488,20 +488,20 @@ void QGIViewPart::drawViewPart() QGIEdge* item; for (int i = 0; itGeom != geoms.end(); itGeom++, i++) { bool showEdge = false; - if ((*itGeom)->hlrVisible) { - if (((*itGeom)->classOfEdge == ecHARD) || ((*itGeom)->classOfEdge == ecOUTLINE) - || (((*itGeom)->classOfEdge == ecSMOOTH) && viewPart->SmoothVisible.getValue()) - || (((*itGeom)->classOfEdge == ecSEAM) && viewPart->SeamVisible.getValue()) - || (((*itGeom)->classOfEdge == ecUVISO) && viewPart->IsoVisible.getValue())) { + if ((*itGeom)->getHlrVisible()) { + if (((*itGeom)->getClassOfEdge() == ecHARD) || ((*itGeom)->getClassOfEdge() == ecOUTLINE) + || (((*itGeom)->getClassOfEdge() == ecSMOOTH) && viewPart->SmoothVisible.getValue()) + || (((*itGeom)->getClassOfEdge() == ecSEAM) && viewPart->SeamVisible.getValue()) + || (((*itGeom)->getClassOfEdge() == ecUVISO) && viewPart->IsoVisible.getValue())) { showEdge = true; } } else { - if ((((*itGeom)->classOfEdge == ecHARD) && (viewPart->HardHidden.getValue())) - || (((*itGeom)->classOfEdge == ecOUTLINE) && (viewPart->HardHidden.getValue())) - || (((*itGeom)->classOfEdge == ecSMOOTH) && (viewPart->SmoothHidden.getValue())) - || (((*itGeom)->classOfEdge == ecSEAM) && (viewPart->SeamHidden.getValue())) - || (((*itGeom)->classOfEdge == ecUVISO) && (viewPart->IsoHidden.getValue()))) { + if ((((*itGeom)->getClassOfEdge() == ecHARD) && (viewPart->HardHidden.getValue())) + || (((*itGeom)->getClassOfEdge() == ecOUTLINE) && (viewPart->HardHidden.getValue())) + || (((*itGeom)->getClassOfEdge() == ecSMOOTH) && (viewPart->SmoothHidden.getValue())) + || (((*itGeom)->getClassOfEdge() == ecSEAM) && (viewPart->SeamHidden.getValue())) + || (((*itGeom)->getClassOfEdge() == ecUVISO) && (viewPart->IsoHidden.getValue()))) { showEdge = true; } } @@ -511,7 +511,7 @@ void QGIViewPart::drawViewPart() item->setWidth(lineWidth); item->setNormalColor(edgeColor); item->setStyle(Qt::SolidLine); - if ((*itGeom)->cosmetic) { + if ((*itGeom)->getCosmetic()) { int source = (*itGeom)->source(); if (source == COSMETICEDGE) { std::string cTag = (*itGeom)->getCosmeticTag(); @@ -541,12 +541,12 @@ void QGIViewPart::drawViewPart() item->setPos(0.0, 0.0);//now at group(0, 0) item->setPath(drawPainterPath(*itGeom)); item->setZValue(ZVALUE::EDGE); - if (!(*itGeom)->hlrVisible) { + if (!(*itGeom)->getHlrVisible()) { item->setWidth(lineWidthHid); item->setHiddenEdge(true); item->setZValue(ZVALUE::HIDEDGE); } - if ((*itGeom)->classOfEdge == ecUVISO) { + if ((*itGeom)->getClassOfEdge() == ecUVISO) { item->setWidth(lineWidthIso); } item->setPrettyNormal(); @@ -597,7 +597,7 @@ void QGIViewPart::drawViewPart() double cAdjust = vp->CenterScale.getValue(); for (int i = 0; vert != verts.end(); ++vert, i++) { - if ((*vert)->isCenter) { + if ((*vert)->isCenter()) { if (showCenterMarks) { QGICMark* cmItem = new QGICMark(i); addToGroup(cmItem); diff --git a/src/Mod/TechDraw/Gui/TaskLineDecor.cpp b/src/Mod/TechDraw/Gui/TaskLineDecor.cpp index 5451990f68..47c9c21b34 100644 --- a/src/Mod/TechDraw/Gui/TaskLineDecor.cpp +++ b/src/Mod/TechDraw/Gui/TaskLineDecor.cpp @@ -106,7 +106,7 @@ void TaskLineDecor::getDefaults() int num = DrawUtil::getIndexFromName(m_edges.front()); BaseGeomPtr bg = m_partFeat->getGeomByIndex(num); if (bg) { - if (bg->cosmetic) { + if (bg->getCosmetic()) { if (bg->source() == 1) { TechDraw::CosmeticEdge* ce = m_partFeat->getCosmeticEdgeBySelection(m_edges.front()); m_style = ce->m_format.m_style; @@ -178,7 +178,7 @@ void TaskLineDecor::applyDecorations() int num = DrawUtil::getIndexFromName(e); BaseGeomPtr bg = m_partFeat->getGeomByIndex(num); if (bg) { - if (bg->cosmetic) { + if (bg->getCosmetic()) { if (bg->source() == 1) { TechDraw::CosmeticEdge* ce = m_partFeat->getCosmeticEdgeBySelection(e); ce->m_format.m_style = m_style;