035d55ea740e4a86fe292d8f90e5e1317033e32f
[occt.git] / src / BRepBlend / BRepBlend_RstRstLineBuilder.cdl
1 -- Created on: 1997-01-23
2 -- Created by: Laurent BOURESCHE
3 -- Copyright (c) 1997-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and / or modify it
9 -- under the terms of the GNU Lesser General Public version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class RstRstLineBuilder from BRepBlend 
18
19       ---Purpose: This  class processes the  data  resulting from
20       --          Blend_CSWalking  but  it  takes  in  consideration the Surface
21       --          supporting  the  curve to detect the  breakpoint.
22       --          
23       --          As  a  result, the  criteria of distribution of
24       --          points on  the line become  more flexible  because  it
25       --          should  calculate values  approached
26       --          by an approximation of continued  functions based on the
27       --          Blend_RstRstFunction.
28       --          
29       --          Thus this pseudo path necessitates 3 criteria  of
30       --          regrouping :
31       --           
32       --          1) exit of  the domain of  the  curve 
33       --          
34       --          2) exit of  the domain of  the surface  
35       --          
36       --          3) stall as there  is a solution of problem
37       --          surf/surf  within the domain  of the  surface
38       --          of support of the restriction.
39
40 uses Point            from Blend,
41      Status           from Blend,
42      DecrochStatus    from Blend,
43      RstRstFunction   from Blend,
44      FuncInv          from Blend,
45      SurfCurvFuncInv  from Blend,
46      CurvPointFuncInv from Blend,
47      Vector           from math,
48      Matrix           from math,
49      State            from TopAbs,
50      Pnt              from gp,
51      Pnt2d            from gp,
52      Vec              from gp,
53      Vec2d            from gp,
54      HArray1OfReal    from TColStd,
55      Transition       from IntSurf,
56      HVertex          from Adaptor3d,
57      HSurface         from Adaptor3d,
58      HCurve2d         from Adaptor2d,
59      TopolTool        from Adaptor3d,
60      Line             from BRepBlend,
61      Extremity        from BRepBlend
62
63 is
64     
65     Create(Surf1   : HSurface  from Adaptor3d;
66            Rst1    : HCurve2d  from Adaptor2d;
67            Domain1 : TopolTool from Adaptor3d;
68            Surf2   : HSurface  from Adaptor3d; 
69            Rst2    : HCurve2d  from Adaptor2d;
70            Domain2 : TopolTool from Adaptor3d)
71     returns RstRstLineBuilder from BRepBlend;
72
73     Perform(me         : in out; 
74             Func       : in out RstRstFunction   from Blend;
75             Finv1      : in out SurfCurvFuncInv  from Blend;
76             FinvP1     : in out CurvPointFuncInv from Blend;
77             Finv2      : in out SurfCurvFuncInv  from Blend;
78             FinvP2     : in out CurvPointFuncInv 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 RstRstFunction   from Blend;
91                         Finv1    : in out SurfCurvFuncInv  from Blend;
92                         FinvP1   : in out CurvPointFuncInv from Blend;
93                         Finv2    : in out SurfCurvFuncInv  from Blend;
94                         FinvP2   : in out CurvPointFuncInv from Blend;
95                         Pdep     : Real       from Standard;
96                         Pmax     : Real       from Standard;
97                         Soldep   : Vector     from math;
98                         Tolesp   : Real       from Standard; 
99                         TolGuide : Real       from Standard;
100                         RecRst1  : Boolean    from Standard;
101                         RecP1    : Boolean    from Standard;
102                         RecRst2  : Boolean    from Standard;
103                         RecP2    : Boolean    from Standard;
104                         Psol     : out Real   from Standard;
105                         ParSol   : out Vector from math)
106     returns Boolean from Standard
107     is static;
108
109     Complete(me     : in out;
110              Func   : in out RstRstFunction   from Blend;
111              Finv1  : in out SurfCurvFuncInv  from Blend;
112              FinvP1 : in out CurvPointFuncInv from Blend;
113              Finv2  : in out SurfCurvFuncInv  from Blend;
114              FinvP2 : in out CurvPointFuncInv from Blend;
115              Pmin   : Real                    from Standard)
116                         
117     returns Boolean from Standard
118     is static;
119
120     InternalPerform (me     : in out;
121                      Func   : in out RstRstFunction   from Blend;
122                      Finv1  : in out SurfCurvFuncInv  from Blend;
123                      FinvP1 : in out CurvPointFuncInv from Blend;
124                      Finv2  : in out SurfCurvFuncInv  from Blend;
125                      FinvP2 : in out CurvPointFuncInv from Blend;
126                      Bound : Real from Standard)
127     is static private;
128
129     Recadre1(me       : in out;
130              Func     : in out RstRstFunction  from Blend;    
131              Finv     : in out SurfCurvFuncInv from Blend;
132              Solinv   : out Vector             from math;
133              IsVtx    : out Boolean            from Standard;
134              Vtx      : out HVertex            from Adaptor3d)
135     returns Boolean from Standard
136     is static private;
137
138     Recadre2(me       : in out;
139              Func     : in out RstRstFunction  from Blend;    
140              Finv     : in out SurfCurvFuncInv from Blend;
141              Solinv   : out Vector             from math;
142              IsVtx    : out Boolean            from Standard;
143              Vtx      : out HVertex            from Adaptor3d)
144     returns Boolean from Standard
145     is static private;
146
147     Recadre1(me      : in out; 
148              FinvP   : in out CurvPointFuncInv from Blend;
149              Solinv  : out Vector              from math;
150              IsVtx   : out Boolean             from Standard;
151              Vtx     : out HVertex             from Adaptor3d)
152     returns Boolean from Standard
153     is static private;
154
155     Recadre2(me      : in out; 
156              FinvP   : in out CurvPointFuncInv from Blend;
157              Solinv  : out Vector              from math;
158              IsVtx   : out Boolean             from Standard;
159              Vtx     : out HVertex             from Adaptor3d)
160     returns Boolean from Standard
161     is static private;
162     
163     IsDone(me)
164     returns Boolean from Standard
165     ---C++: inline
166     is static;
167
168     Line(me)
169     returns Line from BRepBlend
170     ---C++: inline
171     ---C++: return const&
172     is static;
173
174     Decroch1Start(me)
175     returns Boolean from Standard
176     ---C++: inline
177     is static;
178         
179     Decroch1End(me)
180     returns Boolean from Standard
181     ---C++: inline
182     is static;
183     
184     Decroch2Start(me)
185     returns Boolean from Standard
186     ---C++: inline
187     is static;
188         
189     Decroch2End(me)
190     returns Boolean from Standard
191     ---C++: inline
192     is static;
193         
194     Transition(me         : in out; 
195                OnFirst    : Boolean from Standard;
196                Arc        : HCurve2d from Adaptor2d; 
197                Param      : Real from Standard;
198                TLine,TArc : out Transition from IntSurf)
199     is static private;
200
201     MakeExtremity(me      : in out; 
202                   Extrem  : in out Extremity from BRepBlend;
203                   OnFirst : Boolean from Standard;
204                   Arc     : HCurve2d from Adaptor2d;
205                   Param   : Real from Standard;
206                   IsVtx   : Boolean from Standard;
207                   Vtx     : HVertex from Adaptor3d)
208     is static private;
209
210     CheckDeflectionOnRst1(me       : in out; 
211                           CurPoint : Point from Blend)
212     returns Status from Blend
213     is static private;
214
215     CheckDeflectionOnRst2(me       : in out; 
216                           CurPoint : Point from Blend)
217     returns Status from Blend
218     is static private;
219
220     TestArret(me             : in out; 
221               Func           : in out RstRstFunction from Blend;
222               TestDeflection : Boolean from Standard;
223               State          : Status from Blend)
224     returns Status from Blend
225     is static private;
226
227     CheckInside(me       : in out; 
228                 Func     : in out RstRstFunction from Blend;
229                 SituOnC1 : out State from TopAbs;
230                 SituOnC2 : out State from TopAbs;
231                 Decroch  : out DecrochStatus from Blend)
232     returns Boolean from Standard
233     is static private;
234
235 fields
236
237     done         : Boolean       from Standard;
238     line         : Line          from BRepBlend;
239     sol          : Vector        from math;
240     surf1        : HSurface      from Adaptor3d;
241     domain1      : TopolTool     from Adaptor3d;
242     surf2        : HSurface      from Adaptor3d;
243     domain2      : TopolTool     from Adaptor3d;
244     rst1         : HCurve2d      from Adaptor2d;
245     rst2         : HCurve2d      from Adaptor2d;    
246                       
247     tolesp       : Real          from Standard;
248     tolgui       : Real          from Standard;
249     pasmax       : Real          from Standard;
250     fleche       : Real          from Standard;
251     param        : Real          from Standard;
252     previousP    : Point         from Blend;
253     rebrou       : Boolean       from Standard;
254     iscomplete   : Boolean       from Standard;
255     comptra      : Boolean       from Standard;
256     sens         : Real          from Standard;
257     decrochdeb   : DecrochStatus from Blend;
258     decrochfin   : DecrochStatus from Blend;
259
260 end RstRstLineBuilder from BRepBlend;
261
262
263
264