0031047: Modeling Algorithms - BRepExtrema_DistShapeShape gives wrong result
[occt.git] / src / BRepClass / BRepClass_Edge.cxx
CommitLineData
b311480e 1// Created on: 1992-11-19
2// Created by: Remi LEQUETTE
3// Copyright (c) 1992-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
7fd59977 17
42cf5bc1 18#include <BRepClass_Edge.hxx>
cb7f9239 19#include <NCollection_IndexedDataMap.hxx>
20#include <TopoDS.hxx>
21#include <TopoDS_Vertex.hxx>
22#include <TopExp.hxx>
7fd59977 23
24//=======================================================================
25//function : BRepClass_Edge
26//purpose :
27//=======================================================================
7fd59977 28BRepClass_Edge::BRepClass_Edge()
29{
30}
31
cb7f9239 32//=======================================================================
33//function : SetNextEdge
34//purpose :
35//=======================================================================
36void BRepClass_Edge::SetNextEdge(const TopTools_IndexedDataMapOfShapeListOfShape& theMapVE)
37{
38 if (theMapVE.IsEmpty() || myEdge.IsNull())
39 {
40 return;
41 }
42 TopoDS_Vertex aVF, aVL;
43 TopExp::Vertices(myEdge, aVF, aVL, Standard_True);
44
45 if (aVL.IsNull() || aVL.IsSame(aVF))
46 {
47 return;
48 }
49 const TopTools_ListOfShape* aListE = theMapVE.Seek(aVL);
50 if ((*aListE).Extent() == 2)
51 {
52 for (TopTools_ListIteratorOfListOfShape anIt(*aListE); anIt.More(); anIt.Next())
53 {
54 if ((!anIt.Value().IsNull()) && (!anIt.Value().IsSame(myEdge)))
55 {
56 myNextEdge = TopoDS::Edge(anIt.Value());
57 }
58 }
59 }
60}
61
62
7fd59977 63//=======================================================================
64//function : BRepClass_Edge
65//purpose :
66//=======================================================================
67
68BRepClass_Edge::BRepClass_Edge(const TopoDS_Edge& E,
69 const TopoDS_Face& F) :
70 myEdge(E),
71 myFace(F)
72{
73}
74