1 // Copyright (c) 1995-1999 Matra Datavision
2 // Copyright (c) 1999-2012 OPEN CASCADE SAS
4 // The content of this file is subject to the Open CASCADE Technology Public
5 // License Version 6.5 (the "License"). You may not use the content of this file
6 // except in compliance with the License. Please obtain a copy of the License
7 // at http://www.opencascade.org and read it completely before using this file.
9 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 // The Original Code and all software distributed under the License is
13 // distributed on an "AS IS" basis, without warranty of any kind, and the
14 // Initial Developer hereby disclaims all such warranties, including without
15 // limitation, any warranties of merchantability, fitness for a particular
16 // purpose or non-infringement. Please see the License for the specific terms
17 // and conditions governing the rights and limitations under the License.
19 #include <StdPrs_ToolRFace.ixx>
20 #include <Geom2d_TrimmedCurve.hxx>
21 #include <BRep_Tool.hxx>
23 #include <Adaptor2d_Curve2d.hxx>
28 //=======================================================================
29 //function : StdPrs_ToolRFace
31 //=======================================================================
33 StdPrs_ToolRFace::StdPrs_ToolRFace()
37 //=======================================================================
38 //function : StdPrs_ToolRFace
40 //=======================================================================
42 StdPrs_ToolRFace::StdPrs_ToolRFace(const Handle(BRepAdaptor_HSurface)& aSurface) :
43 myFace(((BRepAdaptor_Surface*)&(aSurface->Surface()))->Face())
45 myFace.Orientation(TopAbs_FORWARD);
48 //=======================================================================
49 //function : IsOriented
51 //=======================================================================
53 Standard_Boolean StdPrs_ToolRFace::IsOriented () const {
59 //=======================================================================
62 //=======================================================================
64 void StdPrs_ToolRFace::Init()
66 myExplorer.Init(myFace,TopAbs_EDGE);
67 if (myExplorer.More()) {
69 const Handle(Geom2d_Curve)& C =
70 BRep_Tool::CurveOnSurface(TopoDS::Edge(myExplorer.Current()),
73 DummyCurve.Load(C,U1,U2);
77 //=======================================================================
80 //=======================================================================
82 Standard_Boolean StdPrs_ToolRFace::More() const
84 return myExplorer.More();
87 //=======================================================================
90 //=======================================================================
92 void StdPrs_ToolRFace::Next()
96 if (myExplorer.More()) {
97 // skip INTERNAL and EXTERNAL edges
98 while (myExplorer.More() && (myExplorer.Current().Orientation() == TopAbs_INTERNAL
99 || myExplorer.Current().Orientation() == TopAbs_EXTERNAL))
101 if (myExplorer.More()) {
103 const Handle(Geom2d_Curve)& C =
104 BRep_Tool::CurveOnSurface(TopoDS::Edge(myExplorer.Current()),
110 DummyCurve.Load(C,U1,U2);
115 //=======================================================================
118 //=======================================================================
120 Adaptor2d_Curve2dPtr StdPrs_ToolRFace::Value() const
122 return (Adaptor2d_Curve2dPtr)&DummyCurve;
125 //=======================================================================
126 //function : Orientation
128 //=======================================================================
130 TopAbs_Orientation StdPrs_ToolRFace::Orientation () const {
131 return myExplorer.Current().Orientation();