0023024: Update headers of OCCT files
[occt.git] / src / BRepPrimAPI / BRepPrimAPI_MakeRevol.cxx
1 // Created on: 1993-10-14
2 // Created by: Remi LEQUETTE
3 // Copyright (c) 1993-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
5 //
6 // The content of this file is subject to the Open CASCADE Technology Public
7 // License Version 6.5 (the "License"). You may not use the content of this file
8 // except in compliance with the License. Please obtain a copy of the License
9 // at http://www.opencascade.org and read it completely before using this file.
10 //
11 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 //
14 // The Original Code and all software distributed under the License is
15 // distributed on an "AS IS" basis, without warranty of any kind, and the
16 // Initial Developer hereby disclaims all such warranties, including without
17 // limitation, any warranties of merchantability, fitness for a particular
18 // purpose or non-infringement. Please see the License for the specific terms
19 // and conditions governing the rights and limitations under the License.
20
21
22
23 // Modified by skv - Fri Mar  4 15:50:09 2005
24 // Add methods for supporting history.
25
26 #include <BRepPrimAPI_MakeRevol.ixx>
27 #include <BRepLib.hxx>
28 #include <TopExp_Explorer.hxx>
29 #include <BRep_TEdge.hxx>
30
31 // perform checks on the argument
32
33 static const TopoDS_Shape& check(const TopoDS_Shape& S)
34 {
35  BRepLib::BuildCurves3d(S);
36    return S;
37 }
38
39 //=======================================================================
40 //function : BRepPrimAPI_MakeRevol
41 //purpose  : 
42 //=======================================================================
43
44 BRepPrimAPI_MakeRevol::BRepPrimAPI_MakeRevol(const TopoDS_Shape& S, 
45                                      const gp_Ax1& A, 
46                                      const Standard_Real D, 
47                                      const Standard_Boolean Copy) :
48        myRevol(check(S),A,D,Copy)
49 {
50   Build();
51 }
52
53
54 //=======================================================================
55 //function : BRepPrimAPI_MakeRevol
56 //purpose  : 
57 //=======================================================================
58
59 BRepPrimAPI_MakeRevol::BRepPrimAPI_MakeRevol(const TopoDS_Shape& S, 
60                                      const gp_Ax1& A, 
61                                      const Standard_Boolean Copy) :
62        myRevol(check(S),A,Copy)
63 {
64   Build();
65 }
66
67
68 //=======================================================================
69 //function : Revol
70 //purpose  : 
71 //=======================================================================
72
73 const BRepSweep_Revol&  BRepPrimAPI_MakeRevol::Revol() const 
74 {
75   return myRevol;
76 }
77
78
79 //=======================================================================
80 //function : Build
81 //purpose  : 
82 //=======================================================================
83
84 void  BRepPrimAPI_MakeRevol::Build()
85 {
86   myShape = myRevol.Shape();
87   Done();
88 // Modified by skv - Fri Mar  4 15:50:09 2005 Begin
89   myDegenerated.Clear();
90
91   TopExp_Explorer anExp(myShape, TopAbs_EDGE);
92
93   for (; anExp.More(); anExp.Next()) {
94     const TopoDS_Shape &anEdge = anExp.Current();
95     Handle(BRep_TEdge)  aTEdge = Handle(BRep_TEdge)::DownCast(anEdge.TShape());
96
97     if (aTEdge->Degenerated())
98       myDegenerated.Append(anEdge);
99   }
100 // Modified by skv - Fri Mar  4 15:50:09 2005 End
101 }
102
103
104 //=======================================================================
105 //function : FirstShape
106 //purpose  : 
107 //=======================================================================
108
109 TopoDS_Shape BRepPrimAPI_MakeRevol::FirstShape()
110 {
111   return myRevol.FirstShape();
112 }
113
114
115 //=======================================================================
116 //function : LastShape
117 //purpose  : 
118 //=======================================================================
119
120 TopoDS_Shape BRepPrimAPI_MakeRevol::LastShape()
121 {
122   return myRevol.LastShape();
123 }
124
125
126 //=======================================================================
127 //function : Generated
128 //purpose  : 
129 //=======================================================================
130
131 const TopTools_ListOfShape& BRepPrimAPI_MakeRevol::Generated (const TopoDS_Shape& S)
132 {
133   myGenerated.Clear();
134   if (!myRevol.Shape (S).IsNull())
135     myGenerated.Append (myRevol.Shape (S));
136   return myGenerated;
137 }
138
139
140 // Modified by skv - Fri Mar  4 15:50:09 2005 Begin
141
142 //=======================================================================
143 //function : FirstShape
144 //purpose  : This method returns the shape of the beginning of the revolution,
145 //           generated with theShape (subShape of the generating shape).
146 //=======================================================================
147
148 TopoDS_Shape BRepPrimAPI_MakeRevol::FirstShape(const TopoDS_Shape &theShape)
149 {
150   return myRevol.FirstShape(theShape);
151 }
152
153
154 //=======================================================================
155 //function : LastShape
156 //purpose  : This method returns the shape of the end of the revolution,
157 //           generated with theShape (subShape of the generating shape).
158 //=======================================================================
159
160 TopoDS_Shape BRepPrimAPI_MakeRevol::LastShape(const TopoDS_Shape &theShape)
161 {
162   return myRevol.LastShape(theShape);
163 }
164
165 //=======================================================================
166 //function : HasDegenerated
167 //purpose  : 
168 //=======================================================================
169
170 Standard_Boolean BRepPrimAPI_MakeRevol::HasDegenerated () const
171 {
172   return (!myDegenerated.IsEmpty());
173 }
174
175
176 //=======================================================================
177 //function : Degenerated
178 //purpose  : 
179 //=======================================================================
180
181 const TopTools_ListOfShape& BRepPrimAPI_MakeRevol::Degenerated () const
182 {
183   return myDegenerated;
184 }
185 // Modified by skv - Fri Mar  4 15:50:09 2005 End