0029586: Revolution creates solid with degenerated edges shared among faces

Substitution of degenerated edges by their copies is implemented to make edges not shared
in BRepPrimAPI_MakeRevol::Build().
Method BRepPrimAPI_MakeRevol::Generated(...) is changed in order to use history of substitutions.
Test case is added.
This commit is contained in:
ifv
2018-03-23 11:33:27 +03:00
committed by bugmaster
parent 9f785738a1
commit 7e4ff64898
7 changed files with 214 additions and 19 deletions

View File

@@ -24,6 +24,7 @@
#include <BRepSweep_Revol.hxx>
#include <TopTools_ListOfShape.hxx>
#include <BRepPrimAPI_MakeSweep.hxx>
#include <BRepTools_History.hxx>
#include <Standard_Real.hxx>
#include <Standard_Boolean.hxx>
class TopoDS_Shape;
@@ -90,6 +91,9 @@ public:
//! Returns the TopoDS Shape of the end of the revol.
Standard_EXPORT TopoDS_Shape LastShape() Standard_OVERRIDE;
//! Returns list of shape generated from shape S
//! Warning: shape S must be shape of type VERTEX, EDGE, FACE, SOLID.
//! For shapes of other types method always returns empty list
Standard_EXPORT virtual const TopTools_ListOfShape& Generated (const TopoDS_Shape& S) Standard_OVERRIDE;
//! Returns the TopoDS Shape of the beginning of the revolution,
@@ -106,8 +110,6 @@ public:
Standard_EXPORT const TopTools_ListOfShape& Degenerated() const;
protected:
@@ -120,6 +122,7 @@ private:
BRepSweep_Revol myRevol;
TopTools_ListOfShape myDegenerated;
Handle(BRepTools_History) myHist;
};