1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0031047: Modeling Algorithms - BRepExtrema_DistShapeShape gives wrong result

Added map of edges to BrepClass_Edge
Added searching of vertices with high tolerance to BrepClass_Intersector.cxx
Added check for hitting a vertex with high tolerance
Added the creation of a segment for the correct work of the classifier
This commit is contained in:
abulyche
2021-04-12 13:13:14 +03:00
committed by bugmaster
parent 7b17aba789
commit cb7f92396f
7 changed files with 315 additions and 59 deletions

View File

@@ -22,11 +22,9 @@
#include <BRepClass_FaceExplorer.hxx>
#include <BRepTools.hxx>
#include <Geom2d_Curve.hxx>
#include <gp_Lin2d.hxx>
#include <gp_Pnt2d.hxx>
#include <Precision.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Face.hxx>
#include <TopExp.hxx>
#include <Geom2dAPI_ProjectPointOnCurve.hxx>
static const Standard_Real Probing_Start = 0.123;
@@ -311,6 +309,8 @@ Standard_Boolean BRepClass_FaceExplorer::RejectWire
void BRepClass_FaceExplorer::InitEdges()
{
myEExplorer.Init(myWExplorer.Current(),TopAbs_EDGE);
myMapVE.Clear();
TopExp::MapShapesAndAncestors(myWExplorer.Current(), TopAbs_VERTEX, TopAbs_EDGE, myMapVE);
}
//=======================================================================
@@ -337,5 +337,6 @@ void BRepClass_FaceExplorer::CurrentEdge(BRepClass_Edge& E,
E.Edge() = TopoDS::Edge(myEExplorer.Current());
E.Face() = myFace;
Or = E.Edge().Orientation();
E.SetNextEdge(myMapVE);
}