0024048: "Basic Runtime Checks" option of VS projects should be equal to "RTC1"
[occt.git] / src / BRepBlend / BRepBlend_SurfRstLineBuilder.cdl
1 -- Created on: 1997-01-23
2 -- Created by: Laurent BOURESCHE
3 -- Copyright (c) 1997-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 class SurfRstLineBuilder from BRepBlend 
23
24       ---Purpose: This  class processes data  resulting  from  
25       --          Blend_CSWalking  taking  in consideration the Surface
26       --          supporting  the curve to detect the breakpoint.
27       --          
28       --          The criteria of  distribution  of  points on  the  line are  detailed 
29       --          because  it  is  to  be  used  in  the  calculatuon of values approached
30       --          by an approximation of functions continued  basing on
31       --          Blend_SurfRstFunction.
32       --          
33       --          Thus this pseudo path necessitates 3 criteria of regrouping :
34       --           
35       --          1) exit of the domain of  the curve 
36       --          
37       --          2) exit of the domain of  the  surface  
38       --          
39       --          3)  stall as there  is a solution to  the problem
40       --          surf/surf  within  the  domain of  the surface
41       --          of  support  of  the   restriction.
42
43 uses Point            from Blend,
44      Status           from Blend,
45      SurfRstFunction  from Blend,
46      FuncInv          from Blend,
47      SurfPointFuncInv from Blend,
48      SurfCurvFuncInv  from Blend,
49      Vector           from math,
50      Matrix           from math,
51      State            from TopAbs,
52      Pnt              from gp,
53      Pnt2d            from gp,
54      Vec              from gp,
55      Vec2d            from gp,
56      HArray1OfReal    from TColStd,
57      Transition       from IntSurf,
58      HVertex          from Adaptor3d,
59      HSurface         from Adaptor3d,
60      HCurve2d         from Adaptor2d,
61      TopolTool        from Adaptor3d,
62      Line             from BRepBlend,
63      Extremity        from BRepBlend
64
65 is
66     
67     Create(Surf1   : HSurface  from Adaptor3d;
68            Domain1 : TopolTool from Adaptor3d;
69            Surf2   : HSurface  from Adaptor3d; 
70            Rst     : HCurve2d  from Adaptor2d;
71            Domain2 : TopolTool from Adaptor3d)
72     returns SurfRstLineBuilder from BRepBlend;
73
74     Perform(me         : in out; 
75             Func       : in out SurfRstFunction from Blend;
76             Finv       : in out FuncInv from Blend;
77             FinvP      : in out SurfPointFuncInv from Blend;
78             FinvC      : in out SurfCurvFuncInv from Blend;
79             Pdep       : Real from Standard;
80             Pmax       : Real from Standard;
81             MaxStep    : Real from Standard;
82             TolGuide   : Real from Standard;
83             Soldep     : Vector from math;
84             Tolesp     : Real from Standard;
85             Fleche     : Real from Standard;
86             Appro      : Boolean from Standard = Standard_False)
87     is static;
88
89     PerformFirstSection(me     : in out; 
90                         Func   : in out SurfRstFunction from Blend;
91                         Finv   : in out FuncInv from Blend;
92                         FinvP  : in out SurfPointFuncInv from Blend;
93                         FinvC  : in out SurfCurvFuncInv from Blend;
94                         Pdep   : Real from Standard;
95                         Pmax   : Real from Standard;
96                         Soldep : Vector from math;
97                         Tolesp : Real from Standard; 
98                         TolGuide  :  Real  from  Standard;
99                         RecRst : Boolean from Standard;
100                         RecP   : Boolean from Standard;
101                         RecS   : Boolean from Standard;
102                         Psol   : out Real from Standard;
103                         ParSol : out Vector from math)
104     returns Boolean from Standard
105     is static;
106
107     Complete(me    : in out;
108              Func  : in out SurfRstFunction from Blend;
109              Finv  : in out FuncInv from Blend;
110              FinvP : in out SurfPointFuncInv from Blend;
111              FinvC : in out SurfCurvFuncInv from Blend;
112              Pmin  : Real from Standard)
113                         
114     returns Boolean from Standard
115     is static;
116
117     InternalPerform (me    : in out;
118                      Func  : in out SurfRstFunction from Blend;
119                      Finv  : in out FuncInv from Blend;
120                      FinvP : in out SurfPointFuncInv from Blend;
121                      FinvC : in out SurfCurvFuncInv from Blend;
122                      Bound : Real from Standard)
123     is static private;
124  
125     ArcToRecadre(me :  in  out; 
126                  Sol  :  Vector  from math; 
127                  PrevIndex  :  Integer; 
128                  pt2d,  lastpt2d  :  out  Pnt2d  from  gp; 
129                  ponarc  :  out  Real) 
130     returns  Integer;     
131                                   
132     Recadre(me       : in out; 
133             FinvC    : in out SurfCurvFuncInv from Blend;
134             Solinv   : out Vector from math;
135             Arc      : out HCurve2d from Adaptor2d;
136             IsVtx    : out Boolean from Standard;
137             Vtx      : out HVertex from Adaptor3d)
138     returns Boolean from Standard
139     is static private;
140
141     Recadre(me       : in out; 
142             Func     : in out SurfRstFunction from Blend;
143             Finv     : in out FuncInv from Blend;
144             Solinv   : out Vector from math;
145             IsVtx    : out Boolean from Standard;
146             Vtx      : out HVertex from Adaptor3d)
147     returns Boolean from Standard
148     is static private;
149
150     Recadre(me       : in out; 
151             FinvP    : in out SurfPointFuncInv from Blend;
152             Solinv   : out Vector from math;
153             IsVtx    : out Boolean from Standard;
154             Vtx      : out HVertex from Adaptor3d)
155     returns Boolean from Standard
156     is static private;
157
158     IsDone(me)
159     returns Boolean from Standard
160     ---C++: inline
161     is static;
162
163     Line(me)
164     returns Line from BRepBlend
165     ---C++: inline
166     ---C++: return const&
167     is static;
168
169     DecrochStart(me)
170     returns Boolean from Standard
171     ---C++: inline
172     is static;
173         
174     DecrochEnd(me)
175     returns Boolean from Standard
176     ---C++: inline
177     is static;
178         
179     Transition(me         : in out; 
180                OnFirst : Boolean from Standard;
181                Arc        : HCurve2d from Adaptor2d; 
182                Param      : Real from Standard;
183                TLine,TArc : out Transition from IntSurf)
184     is static private;
185
186     MakeExtremity(me      : in out; 
187                   Extrem  : in out Extremity from BRepBlend;
188                   OnFirst : Boolean from Standard;
189                   Arc     : HCurve2d from Adaptor2d;
190                   Param   : Real from Standard;
191                   IsVtx   : Boolean from Standard;
192                   Vtx     : HVertex from Adaptor3d)
193     is static private;
194
195     CheckDeflectionOnSurf(me       : in out; 
196                           CurPoint : Point from Blend)
197     returns Status from Blend
198     is static private;
199
200     CheckDeflectionOnRst(me       : in out; 
201                          CurPoint : Point from Blend)
202     returns Status from Blend
203     is static private;
204
205     TestArret(me             : in out; 
206               Func           : in out SurfRstFunction from Blend;
207               TestDeflection : Boolean from Standard;
208               State          : Status from Blend)
209     returns Status from Blend
210     is static private;
211
212     CheckInside(me      : in out; 
213                 Func    : in out SurfRstFunction from Blend;
214                 SituOnC : out State from TopAbs;
215                 SituOnS : out State from TopAbs;
216                 Decroch : out Boolean from Standard)
217     returns Boolean from Standard
218     is static private;
219
220 fields
221
222     done         : Boolean    from Standard;
223     line         : Line       from BRepBlend;
224     sol          : Vector     from math;
225     surf1        : HSurface   from Adaptor3d;
226     domain1      : TopolTool  from Adaptor3d;
227     surf2        : HSurface   from Adaptor3d;
228     rst          : HCurve2d   from Adaptor2d;
229     domain2      : TopolTool  from Adaptor3d;
230                               
231     tolesp       : Real       from Standard;
232     tolgui       : Real       from Standard;
233     pasmax       : Real       from Standard;
234     fleche       : Real       from Standard;
235     param        : Real       from Standard;
236     previousP    : Point      from Blend;
237     rebrou       : Boolean    from Standard;
238     iscomplete   : Boolean    from Standard;
239     comptra      : Boolean    from Standard;
240     sens         : Real       from Standard;
241     decrochdeb   : Boolean    from Standard;
242     decrochfin   : Boolean    from Standard;
243
244 end SurfRstLineBuilder from BRepBlend;