From: azv Date: Wed, 19 Dec 2018 08:27:51 +0000 (+0300) Subject: [Code coverage GeomAlgoAPI]: EdgeBuilder refactoring X-Git-Tag: End2018~37 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=7827e9e8c2cdcd807c44c933b770e26493938e55;p=modules%2Fshaper.git [Code coverage GeomAlgoAPI]: EdgeBuilder refactoring --- diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_EdgeBuilder.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_EdgeBuilder.cpp index d6ba70d19..771537231 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_EdgeBuilder.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_EdgeBuilder.cpp @@ -35,52 +35,45 @@ #include #include +static GeomEdgePtr createLine(const gp_Pnt& theStart, const gp_Pnt& theEnd) +{ + GeomEdgePtr aRes; + if (!theStart.IsEqual(theEnd, Precision::Confusion()) && + Abs(theStart.SquareDistance(theEnd)) < 1.e+100) { + BRepBuilderAPI_MakeEdge anEdgeBuilder(theStart, theEnd); + TopoDS_Edge anEdge = anEdgeBuilder.Edge(); + aRes = GeomEdgePtr(new GeomAPI_Edge); + aRes->setImpl(new TopoDS_Shape(anEdge)); + } + return aRes; +} + std::shared_ptr GeomAlgoAPI_EdgeBuilder::line( std::shared_ptr theStart, std::shared_ptr theEnd) { const gp_Pnt& aStart = theStart->impl(); const gp_Pnt& anEnd = theEnd->impl(); - - if (aStart.IsEqual(anEnd, Precision::Confusion())) - return std::shared_ptr(); - if (Abs(aStart.SquareDistance(anEnd)) > 1.e+100) - return std::shared_ptr(); - BRepBuilderAPI_MakeEdge anEdgeBuilder(aStart, anEnd); - std::shared_ptr aRes(new GeomAPI_Edge); - TopoDS_Edge anEdge = anEdgeBuilder.Edge(); - aRes->setImpl(new TopoDS_Shape(anEdge)); - return aRes; + return createLine(aStart, anEnd); } std::shared_ptr GeomAlgoAPI_EdgeBuilder::line( double theDX, double theDY, double theDZ) { - const gp_Pnt& aStart = gp_Pnt(0, 0, 0); const gp_Pnt& anEnd = gp_Pnt(theDX, theDY, theDZ); - - if (aStart.IsEqual(anEnd, Precision::Confusion())) - return std::shared_ptr(); - if (Abs(aStart.SquareDistance(anEnd)) > 1.e+100) - return std::shared_ptr(); - BRepBuilderAPI_MakeEdge anEdgeBuilder(aStart, anEnd); - std::shared_ptr aRes(new GeomAPI_Edge); - TopoDS_Edge anEdge = anEdgeBuilder.Edge(); - aRes->setImpl(new TopoDS_Shape(anEdge)); - return aRes; + return createLine(aStart, anEnd); } std::shared_ptr GeomAlgoAPI_EdgeBuilder::line( const std::shared_ptr theLin) { - if(!theLin.get()) { - return std::shared_ptr(); + GeomEdgePtr aRes; + if (theLin.get()) { + const gp_Lin& aLin = theLin->impl(); + BRepBuilderAPI_MakeEdge anEdgeBuilder(aLin); + TopoDS_Edge anEdge = anEdgeBuilder.Edge(); + aRes = GeomEdgePtr(new GeomAPI_Edge); + aRes->setImpl(new TopoDS_Shape(anEdge)); } - - const gp_Lin& aLin = theLin->impl(); - BRepBuilderAPI_MakeEdge anEdgeBuilder(aLin); - std::shared_ptr aRes(new GeomAPI_Edge()); - TopoDS_Edge anEdge = anEdgeBuilder.Edge(); - aRes->setImpl(new TopoDS_Shape(anEdge)); return aRes; } @@ -176,15 +169,14 @@ std::shared_ptr GeomAlgoAPI_EdgeBuilder::lineCircle( std::shared_ptr GeomAlgoAPI_EdgeBuilder::lineCircle( std::shared_ptr theCircle) { - if(!theCircle.get()) { - return std::shared_ptr(); + GeomEdgePtr aRes; + if (theCircle.get()) { + const gp_Circ& aCirc = theCircle->impl(); + BRepBuilderAPI_MakeEdge anEdgeBuilder(aCirc); + TopoDS_Edge anEdge = anEdgeBuilder.Edge(); + aRes = GeomEdgePtr(new GeomAPI_Edge); + aRes->setImpl(new TopoDS_Shape(anEdge)); } - - const gp_Circ& aCirc = theCircle->impl(); - BRepBuilderAPI_MakeEdge anEdgeBuilder(aCirc); - std::shared_ptr aRes(new GeomAPI_Edge()); - TopoDS_Edge anEdge = anEdgeBuilder.Edge(); - aRes->setImpl(new TopoDS_Shape(anEdge)); return aRes; }