f1189fa3ecac13f105e930cf96c38a9214719fca
[occt.git] / src / BRepOffsetAPI / BRepOffsetAPI_MakePipeShell.cxx
1 // Created on: 1998-04-08
2 // Created by: Philippe MANGIN
3 // Copyright (c) 1998-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 #include <BRepOffsetAPI_MakePipeShell.ixx>
24
25 #include <GeomFill_PipeError.hxx>
26 #include <Standard_NotImplemented.hxx>
27 #include <StdFail_NotDone.hxx>
28
29 //=======================================================================
30 //function :
31 //purpose  : 
32 //=======================================================================
33 BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spine)
34                       
35
36 {
37   myPipe = new (BRepFill_PipeShell) (Spine);
38   SetTolerance();
39   SetTransitionMode();
40   NotDone();
41 }
42
43 //=======================================================================
44 //function : SetMode
45 //purpose  : 
46 //=======================================================================
47  void BRepOffsetAPI_MakePipeShell::SetMode(const Standard_Boolean IsFrenet) 
48 {
49   myPipe->Set(IsFrenet);
50 }
51
52 //=======================================================================
53 //function : SetMode
54 //purpose  : 
55 //=======================================================================
56  void BRepOffsetAPI_MakePipeShell::SetMode(const gp_Ax2& Axe) 
57 {
58   myPipe->Set(Axe);
59 }
60
61 //=======================================================================
62 //function : SetMode
63 //purpose  : 
64 //=======================================================================
65  void BRepOffsetAPI_MakePipeShell::SetMode(const gp_Dir& BiNormal) 
66 {
67   myPipe->Set(BiNormal);
68 }
69
70 //=======================================================================
71 //function : SetMode
72 //purpose  : 
73 //=======================================================================
74  Standard_Boolean BRepOffsetAPI_MakePipeShell::SetMode(const TopoDS_Shape& SpineSupport) 
75 {
76   return myPipe->Set(SpineSupport);
77 }
78
79 //=======================================================================
80 //function : SetMode
81 //purpose  : 
82 //=======================================================================
83  void BRepOffsetAPI_MakePipeShell::SetMode(const TopoDS_Wire& AuxiliarySpine,
84                                 const Standard_Boolean CurvilinearEquivalence,
85                                 const Standard_Boolean KeepContact) 
86 {
87    myPipe->Set(AuxiliarySpine, CurvilinearEquivalence, KeepContact);
88 }
89
90 //=======================================================================
91 //function :Add
92 //purpose  : 
93 //=======================================================================
94  void BRepOffsetAPI_MakePipeShell::Add(const TopoDS_Shape& Profile,
95                                        const Standard_Boolean WithContact,
96                                        const Standard_Boolean WithCorrection) 
97 {
98   myPipe->Add(Profile, WithContact, WithCorrection);
99 }
100
101 //=======================================================================
102 //function : Add
103 //purpose  : 
104 //=======================================================================
105  void BRepOffsetAPI_MakePipeShell::Add(const TopoDS_Shape& Profile,
106                                        const TopoDS_Vertex& Location,
107                                        const Standard_Boolean WithContact,
108                                        const Standard_Boolean WithCorrection) 
109 {
110   myPipe->Add(Profile, Location, WithContact, WithCorrection);
111 }
112
113 //=======================================================================
114 //function : SetLaw
115 //purpose  : 
116 //=======================================================================
117  void BRepOffsetAPI_MakePipeShell::SetLaw(const TopoDS_Shape& Profile,
118                                           const Handle(Law_Function)& L,
119                                           const Standard_Boolean WithContact,
120                                           const Standard_Boolean WithCorrection) 
121 {
122   myPipe->SetLaw(Profile, L, WithContact, WithCorrection);
123 }
124
125 //=======================================================================
126 //function : SetLaw
127 //purpose  : 
128 //=======================================================================
129  void BRepOffsetAPI_MakePipeShell::SetLaw(const TopoDS_Shape& Profile,
130                                           const Handle(Law_Function)& L,
131                                           const TopoDS_Vertex& Location,
132                                           const Standard_Boolean WithContact,
133                                           const Standard_Boolean WithCorrection) 
134 {
135   myPipe->SetLaw(Profile, L, Location, WithContact, WithCorrection);
136 }
137
138 //=======================================================================
139 //function : Delete
140 //purpose  : 
141 //=======================================================================
142
143 void BRepOffsetAPI_MakePipeShell::Delete( const TopoDS_Shape& Profile)
144 {
145   myPipe->Delete(Profile);
146 }
147
148
149 //=======================================================================
150 //function : IsReady
151 //purpose  : 
152 //=======================================================================
153  Standard_Boolean BRepOffsetAPI_MakePipeShell::IsReady() const
154 {
155   return myPipe->IsReady();
156 }
157
158 //=======================================================================
159 //function : GetStatus
160 //purpose  : 
161 //=======================================================================
162  BRepBuilderAPI_PipeError BRepOffsetAPI_MakePipeShell::GetStatus() const
163 {
164   BRepBuilderAPI_PipeError Status;
165   GeomFill_PipeError stat;
166   stat = myPipe->GetStatus();
167   switch (stat) {
168   case GeomFill_PipeOk :
169     {
170       Status = BRepBuilderAPI_PipeDone;
171       break;
172     }
173   case  GeomFill_PlaneNotIntersectGuide :
174     {
175       Status = BRepBuilderAPI_PlaneNotIntersectGuide;
176       break;
177     }
178   case  GeomFill_ImpossibleContact :
179     {
180       Status = BRepBuilderAPI_ImpossibleContact;
181       break;
182     }
183     default :
184       Status = BRepBuilderAPI_PipeNotDone; 
185   }
186   return Status;
187 }
188 //=======================================================================
189 //function : SetTransitionMode
190 //purpose  : 
191 //=======================================================================
192  void BRepOffsetAPI_MakePipeShell::SetTolerance(const Standard_Real Tol3d,
193                                          const Standard_Real BoundTol,
194                                          const Standard_Real TolAngular)
195 {
196  myPipe->SetTolerance(Tol3d, BoundTol, TolAngular);
197 }
198
199 //=======================================================================
200 //function : SetTransitionMode
201 //purpose  : 
202 //=======================================================================
203  void BRepOffsetAPI_MakePipeShell::SetTransitionMode(const BRepBuilderAPI_TransitionMode Mode)
204 {
205   myPipe->SetTransition( (BRepFill_TransitionStyle)Mode );
206 }
207
208 //=======================================================================
209 //function :Simulate
210 //purpose  : 
211 //=======================================================================
212  void BRepOffsetAPI_MakePipeShell::Simulate(const Standard_Integer N,
213                                      TopTools_ListOfShape& R) 
214 {
215  myPipe->Simulate(N, R); 
216 }
217
218 //=======================================================================
219 //function :Build() 
220 //purpose  : 
221 //=======================================================================
222  void BRepOffsetAPI_MakePipeShell::Build() 
223 {
224   Standard_Boolean Ok;
225   Ok = myPipe->Build();
226   if (Ok) {
227     myShape = myPipe->Shape();
228     Done();
229   }
230   else NotDone(); 
231 }
232
233 //=======================================================================
234 //function : MakeSolid
235 //purpose  : 
236 //=======================================================================
237  Standard_Boolean BRepOffsetAPI_MakePipeShell::MakeSolid() 
238 {
239   if (!IsDone()) StdFail_NotDone::Raise("BRepOffsetAPI_MakePipeShell::MakeSolid");
240   Standard_Boolean Ok;
241   Ok = myPipe->MakeSolid();
242   if (Ok) myShape = myPipe->Shape();
243   return Ok;
244 }
245
246 //=======================================================================
247 //function :FirstShape()
248 //purpose  : 
249 //=======================================================================
250  TopoDS_Shape BRepOffsetAPI_MakePipeShell::FirstShape() 
251 {
252   return myPipe->FirstShape();
253 }
254
255 //=======================================================================
256 //function : LastShape()
257 //purpose  : 
258 //=======================================================================
259  TopoDS_Shape BRepOffsetAPI_MakePipeShell::LastShape() 
260 {
261   return myPipe->LastShape();
262 }
263
264 //=======================================================================
265 //function : Generated
266 //purpose  : 
267 //=======================================================================
268 const TopTools_ListOfShape& 
269 BRepOffsetAPI_MakePipeShell::Generated(const TopoDS_Shape& S) 
270 {
271   myPipe->Generated(S, myGenerated);
272   return myGenerated;
273 }
274