1 #include <StdPrs_ToolRFace.ixx>
2 #include <Geom2d_TrimmedCurve.hxx>
3 #include <BRep_Tool.hxx>
5 #include <Adaptor2d_Curve2d.hxx>
10 //=======================================================================
11 //function : StdPrs_ToolRFace
13 //=======================================================================
15 StdPrs_ToolRFace::StdPrs_ToolRFace()
19 //=======================================================================
20 //function : StdPrs_ToolRFace
22 //=======================================================================
24 StdPrs_ToolRFace::StdPrs_ToolRFace(const Handle(BRepAdaptor_HSurface)& aSurface) :
25 myFace(((BRepAdaptor_Surface*)&(aSurface->Surface()))->Face())
27 myFace.Orientation(TopAbs_FORWARD);
30 //=======================================================================
31 //function : IsOriented
33 //=======================================================================
35 Standard_Boolean StdPrs_ToolRFace::IsOriented () const {
41 //=======================================================================
44 //=======================================================================
46 void StdPrs_ToolRFace::Init()
48 myExplorer.Init(myFace,TopAbs_EDGE);
49 if (myExplorer.More()) {
51 const Handle(Geom2d_Curve)& C =
52 BRep_Tool::CurveOnSurface(TopoDS::Edge(myExplorer.Current()),
55 DummyCurve.Load(C,U1,U2);
59 //=======================================================================
62 //=======================================================================
64 Standard_Boolean StdPrs_ToolRFace::More() const
66 return myExplorer.More();
69 //=======================================================================
72 //=======================================================================
74 void StdPrs_ToolRFace::Next()
78 if (myExplorer.More()) {
79 // skip INTERNAL and EXTERNAL edges
80 while (myExplorer.More() && (myExplorer.Current().Orientation() == TopAbs_INTERNAL
81 || myExplorer.Current().Orientation() == TopAbs_EXTERNAL))
83 if (myExplorer.More()) {
85 const Handle(Geom2d_Curve)& C =
86 BRep_Tool::CurveOnSurface(TopoDS::Edge(myExplorer.Current()),
92 DummyCurve.Load(C,U1,U2);
97 //=======================================================================
100 //=======================================================================
102 Adaptor2d_Curve2dPtr StdPrs_ToolRFace::Value() const
104 return (Adaptor2d_Curve2dPtr)&DummyCurve;
107 //=======================================================================
108 //function : Orientation
110 //=======================================================================
112 TopAbs_Orientation StdPrs_ToolRFace::Orientation () const {
113 return myExplorer.Current().Orientation();