File: BRepFill_PipeShell.hxx

package info (click to toggle)
opencascade 6.2-7
  • links: PTS
  • area: non-free
  • in suites: lenny
  • size: 444,652 kB
  • ctags: 256,750
  • sloc: cpp: 1,150,123; ansic: 225,762; tcl: 30,130; makefile: 12,619; sh: 7,958; xml: 3,981; lisp: 283; java: 212; csh: 203; perl: 15
file content (269 lines) | stat: -rw-r--r-- 9,375 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
// File generated by CPPExt (Transient)
//
//
//                     Copyright (C) 1991 - 2000 by  
//                      Matra Datavision SA.  All rights reserved.
//  
//                     Copyright (C) 2001 - 2004 by
//                     Open CASCADE SA.  All rights reserved.
// 
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//  
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.

#ifndef _BRepFill_PipeShell_HeaderFile
#define _BRepFill_PipeShell_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Handle_BRepFill_PipeShell_HeaderFile
#include <Handle_BRepFill_PipeShell.hxx>
#endif

#ifndef _TopoDS_Wire_HeaderFile
#include <TopoDS_Wire.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _BRepFill_SequenceOfSection_HeaderFile
#include <BRepFill_SequenceOfSection.hxx>
#endif
#ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
#include <TopTools_DataMapOfShapeListOfShape.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_Law_Function_HeaderFile
#include <Handle_Law_Function.hxx>
#endif
#ifndef _Handle_BRepFill_LocationLaw_HeaderFile
#include <Handle_BRepFill_LocationLaw.hxx>
#endif
#ifndef _Handle_BRepFill_SectionLaw_HeaderFile
#include <Handle_BRepFill_SectionLaw.hxx>
#endif
#ifndef _Handle_TopTools_HArray2OfShape_HeaderFile
#include <Handle_TopTools_HArray2OfShape.hxx>
#endif
#ifndef _GeomFill_Trihedron_HeaderFile
#include <GeomFill_Trihedron.hxx>
#endif
#ifndef _BRepFill_TransitionStyle_HeaderFile
#include <BRepFill_TransitionStyle.hxx>
#endif
#ifndef _GeomFill_PipeError_HeaderFile
#include <GeomFill_PipeError.hxx>
#endif
#ifndef _MMgt_TShared_HeaderFile
#include <MMgt_TShared.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
class Law_Function;
class BRepFill_LocationLaw;
class BRepFill_SectionLaw;
class TopTools_HArray2OfShape;
class Standard_DomainError;
class StdFail_NotDone;
class TopoDS_Wire;
class gp_Ax2;
class gp_Dir;
class TopoDS_Shape;
class TopoDS_Vertex;
class TopTools_ListOfShape;
class BRepFill_Section;
class BRepFill_Sweep;


//! Perform general sweeping construction <br>
class BRepFill_PipeShell : public MMgt_TShared {

public:
 // Methods PUBLIC
 // 

//! Set an sweep's mode <br>
//!         If no mode are setted, the mode use in MakePipe is used <br>
Standard_EXPORT BRepFill_PipeShell(const TopoDS_Wire& Spine);

//! Set an Frenet or an CorrectedFrenet trihedron <br>
//!          to  perform  the  sweeping <br>
Standard_EXPORT   void Set(const Standard_Boolean Frenet = Standard_False) ;

//! Set  an  fixed  trihedron  to  perform  the  sweeping <br>
//!         all sections will be parallel. <br>
Standard_EXPORT   void Set(const gp_Ax2& Axe) ;

//! Set an fixed  BiNormal  direction to  perform <br>
//!  the sweeping <br>
Standard_EXPORT   void Set(const gp_Dir& BiNormal) ;

//! Set support to the spine to define the BiNormal <br>
//!           at   the spine, like    the  normal the surfaces. <br>
//!  Warning: To  be  effective,  Each  edge  of  the  <spine>  must <br>
//!  have an  representaion  on   one   face  of<SpineSupport> <br>
Standard_EXPORT   Standard_Boolean Set(const TopoDS_Shape& SpineSupport) ;

//! Set  an  auxiliary  spine  to  define  the Normal <br>
//!  For  each  Point  of  the  Spine  P,  an  Point  Q  is  evalued <br>
//!    on  <AuxiliarySpine> <br>
//! If <CurvilinearEquivalence> <br>
//!   Q split <AuxiliarySpine> with  the  same  length ratio <br>
//!   than P split  <Spline>. <br>
//! Else  the  plan  define  by  P  and  the  tangent  to  the  <Spine> <br>
//!       intersect <AuxiliarySpine> in Q. <br>
//! If <KeepContact> the  Normal  is  defined to  assume like  the  sweeped <br>
//!                  section is  in  contact to  the  <AuxiliarySpine> <br>
//! Else  the  Normal  is  defined  by the vector  PQ. <br>//! Give section to sweep. <br>
//! Possibilities are : <br>
//!	- Give one or sevral profile <br>
//!     - Give one profile and an homotetic law. <br>
//!     - Automatic compute of correspondance beetween profile, and section <br>
//!                 on the sweeped shape <br>
//!     - correspondance beetween profile, and section on the sweeped shape <br>
//!       defined by a vertex of the spine <br>
Standard_EXPORT   void Set(const TopoDS_Wire& AuxiliarySpine,const Standard_Boolean CurvilinearEquivalence = Standard_True,const Standard_Boolean KeepContact = Standard_False) ;

//! Set an section. The corespondance with the spine, will <br>
//!          be automaticaly performed. <br>
Standard_EXPORT   void Add(const TopoDS_Shape& Profile,const Standard_Boolean WithContact = Standard_False,const Standard_Boolean WithCorrection = Standard_False) ;

//! Set an section.   The corespondance with the spine, is <br>
//!          given by  <Location> <br>
Standard_EXPORT   void Add(const TopoDS_Shape& Profile,const TopoDS_Vertex& Location,const Standard_Boolean WithContact = Standard_False,const Standard_Boolean WithCorrection = Standard_False) ;

//! Set  an    section  and  an   homotetic    law. <br>
//! The  homotetie's  centers  is  given  by  point  on  the  <Spine>. <br>
Standard_EXPORT   void SetLaw(const TopoDS_Shape& Profile,const Handle(Law_Function)& L,const Standard_Boolean WithContact = Standard_False,const Standard_Boolean WithCorrection = Standard_False) ;

//! Set  an    section  and  an   homotetic    law. <br>
//!   The  homotetie  center  is  given  by  point  on  the  <Spine> <br>
Standard_EXPORT   void SetLaw(const TopoDS_Shape& Profile,const Handle(Law_Function)& L,const TopoDS_Vertex& Location,const Standard_Boolean WithContact = Standard_False,const Standard_Boolean WithCorrection = Standard_False) ;

//! Delete an section. <br>
Standard_EXPORT   void Delete(const TopoDS_Shape& Profile) ;

//! Say if <me> is ready to build the shape <br>
//!          return False if <me> do not have section definition <br>
Standard_EXPORT   Standard_Boolean IsReady() const;

//! Get a status, when Simulate or Build failed. <br>
Standard_EXPORT   GeomFill_PipeError GetStatus() const;


Standard_EXPORT   void SetTolerance(const Standard_Real Tol3d = 1.0e-4,const Standard_Real BoundTol = 1.0e-4,const Standard_Real TolAngular = 1.0e-2) ;

//! Set the  Transition Mode to manage discontinuities <br>
//!          on the sweep. <br>
Standard_EXPORT   void SetTransition(const BRepFill_TransitionStyle Mode = BRepFill_Modified,const Standard_Real Angmin = 1.0e-2,const Standard_Real Angmax = 6.0) ;

//! Perform simulation of the sweep : <br>
//!         Somes Section are returned. <br>
Standard_EXPORT   void Simulate(const Standard_Integer NumberOfSection,TopTools_ListOfShape& Sections) ;

//! Builds the resulting shape (redefined from MakeShape). <br>
Standard_EXPORT   Standard_Boolean Build() ;

//! Transform the sweeping Shell in Solid. <br>
//!          If the section are not closed returns False <br>
Standard_EXPORT   Standard_Boolean MakeSolid() ;

//! Returns the result Shape. <br>
Standard_EXPORT  const TopoDS_Shape& Shape() const;

//! Returns the  TopoDS  Shape of the bottom of the sweep. <br>
Standard_EXPORT  const TopoDS_Shape& FirstShape() const;

//! Returns the TopoDS Shape of the top of the sweep. <br>
Standard_EXPORT  const TopoDS_Shape& LastShape() const;

//! Returns the  list   of shapes generated   from the <br>
//!          shape <S>. <br>
Standard_EXPORT   void Generated(const TopoDS_Shape& S,TopTools_ListOfShape& L) ;
//Standard_EXPORT ~BRepFill_PipeShell();




 // Type management
 //
 Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
 //Standard_EXPORT Standard_Boolean	       IsKind(const Handle(Standard_Type)&) const;

protected:

 // Methods PROTECTED
 // 


 // Fields PROTECTED
 //


private: 

 // Methods PRIVATE
 // 


Standard_EXPORT   void Prepare() ;


Standard_EXPORT   void Place(const BRepFill_Section& Sec,TopoDS_Wire& W,Standard_Real& param) ;


Standard_EXPORT   void ResetLoc() ;


Standard_EXPORT   void BuildHistory(const BRepFill_Sweep& theSweep) ;


 // Fields PRIVATE
 //
TopoDS_Wire mySpine;
TopoDS_Shape myFirst;
TopoDS_Shape myLast;
TopoDS_Shape myShape;
BRepFill_SequenceOfSection mySeq;
TopTools_DataMapOfShapeListOfShape myGenMap;
Standard_Real myTol3d;
Standard_Real myBoundTol;
Standard_Real myTolAngular;
Standard_Real angmin;
Standard_Real angmax;
Handle_Law_Function myLaw;
Handle_BRepFill_LocationLaw myLocation;
Handle_BRepFill_SectionLaw mySection;
Handle_TopTools_HArray2OfShape myFaces;
GeomFill_Trihedron myTrihedron;
BRepFill_TransitionStyle myTransition;
GeomFill_PipeError myStatus;


};





// other Inline functions and methods (like "C++: function call" methods)
//


#endif