From a5e10cc49b52d3ec00199703cd601202b0035a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Br=C3=A6strup=20Sayoc?= Date: Sat, 16 Jul 2022 14:15:33 +0200 Subject: [PATCH] [TechDraw] Use constructor delegation for CosmeticEdge --- src/Mod/TechDraw/App/Cosmetic.cpp | 42 +++++++++++++------------------ src/Mod/TechDraw/App/Cosmetic.h | 2 ++ 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/Mod/TechDraw/App/Cosmetic.cpp b/src/Mod/TechDraw/App/Cosmetic.cpp index 1c994fbafd..fc3df648ca 100644 --- a/src/Mod/TechDraw/App/Cosmetic.cpp +++ b/src/Mod/TechDraw/App/Cosmetic.cpp @@ -357,41 +357,22 @@ CosmeticEdge::CosmeticEdge(CosmeticEdge* ce) initialize(); } -CosmeticEdge::CosmeticEdge(Base::Vector3d pt1, Base::Vector3d pt2) +CosmeticEdge::CosmeticEdge(Base::Vector3d pt1, Base::Vector3d pt2) : +// 🠓 returns TopoDS_Edge + CosmeticEdge::CosmeticEdge(TopoDS_EdgeFromVectors(pt1, pt2)) { -// Base::Console().Message("CE::CE(p1,p2)\n"); - Base::Vector3d p1 = DrawUtil::invertY(pt1); - Base::Vector3d p2 = DrawUtil::invertY(pt2); - gp_Pnt gp1(p1.x,p1.y,p1.z); - gp_Pnt gp2(p2.x,p2.y,p2.z); - TopoDS_Edge e = BRepBuilderAPI_MakeEdge(gp1, gp2); - m_geometry = TechDraw::BaseGeom::baseFactory(e); - permaStart = p1; - permaEnd = p2; - initialize(); } -CosmeticEdge::CosmeticEdge(TopoDS_Edge e) +// 🠓 returns TechDraw::BaseGeomPtr +CosmeticEdge::CosmeticEdge(TopoDS_Edge e) : CosmeticEdge(TechDraw::BaseGeom::baseFactory(e)) { -// Base::Console().Message("CE::CE(TopoDS_Edge)\n"); - m_geometry = TechDraw::BaseGeom::baseFactory(e); - //we assume input edge is already in Yinverted coordinates - permaStart = m_geometry->getStartPoint(); - permaEnd = m_geometry->getEndPoint(); - if ((m_geometry->geomType == TechDraw::GeomType::CIRCLE) || - (m_geometry->geomType == TechDraw::GeomType::ARCOFCIRCLE) ) { - TechDraw::CirclePtr circ = std::static_pointer_cast(m_geometry); - permaStart = circ->center; - permaEnd = circ->center; - permaRadius = circ->radius; - } - initialize(); } CosmeticEdge::CosmeticEdge(TechDraw::BaseGeomPtr g) { // Base::Console().Message("CE::CE(bg)\n"); m_geometry = g; + //we assume input edge is already in Yinverted coordinates permaStart = m_geometry->getStartPoint(); permaEnd = m_geometry->getEndPoint(); if ((g->geomType == TechDraw::GeomType::CIRCLE) || @@ -420,6 +401,17 @@ void CosmeticEdge::initialize(void) m_geometry->setCosmeticTag(getTagAsString()); } +TopoDS_Edge CosmeticEdge::TopoDS_EdgeFromVectors(Base::Vector3d pt1, Base::Vector3d pt2) +{ + // Base::Console().Message("CE::CE(p1,p2)\n"); + Base::Vector3d p1 = DrawUtil::invertY(pt1); + Base::Vector3d p2 = DrawUtil::invertY(pt2); + gp_Pnt gp1(p1.x,p1.y,p1.z); + gp_Pnt gp2(p2.x,p2.y,p2.z); + TopoDS_Edge e = BRepBuilderAPI_MakeEdge(gp1, gp2); + return e; +} + TechDraw::BaseGeomPtr CosmeticEdge::scaledGeometry(double scale) { TechDraw::BaseGeomPtr newGeom = nullptr; diff --git a/src/Mod/TechDraw/App/Cosmetic.h b/src/Mod/TechDraw/App/Cosmetic.h index f7e9b2f0a6..0ed4cd73ca 100644 --- a/src/Mod/TechDraw/App/Cosmetic.h +++ b/src/Mod/TechDraw/App/Cosmetic.h @@ -120,6 +120,7 @@ class TechDrawExport CosmeticEdge : public Base::Persistence, public TechDraw::B TYPESYSTEM_HEADER(); public: CosmeticEdge(); + CosmeticEdge(TechDraw::BaseGeomPtr* geometry); CosmeticEdge(CosmeticEdge* ce); CosmeticEdge(Base::Vector3d p1, Base::Vector3d p2); CosmeticEdge(TopoDS_Edge e); @@ -127,6 +128,7 @@ public: virtual ~CosmeticEdge(); void initialize(void); + TopoDS_Edge TopoDS_EdgeFromVectors(Base::Vector3d pt1, Base::Vector3d pt2); TechDraw::BaseGeomPtr scaledGeometry(double scale); virtual std::string toString(void) const;