0024023: Revamp the OCCT Handle -- ambiguity
[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 under
9 -- the terms of the GNU Lesser General Public License 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       --          Construction of a BRepBlend_Line between two pcurves
41       --          from an approached starting solution. The output
42       --          entries of this builder are of the same nature
43       --          as of a traditional walking, but the requirements
44       --          to the Line are not the same. If the determination of validity range is always
45       --          guaranteed, the criteria of correct repartition of sections
46       --          before smoothing are not respected. The resulting Line
47       --          is f(t) oriented.
48
49 uses Point            from Blend,
50      Status           from Blend,
51      DecrochStatus    from Blend,
52      RstRstFunction   from Blend,
53      FuncInv          from Blend,
54      SurfCurvFuncInv  from Blend,
55      CurvPointFuncInv from Blend,
56      Vector           from math,
57      Matrix           from math,
58      State            from TopAbs,
59      Pnt              from gp,
60      Pnt2d            from gp,
61      Vec              from gp,
62      Vec2d            from gp,
63      HArray1OfReal    from TColStd,
64      Transition       from IntSurf,
65      HVertex          from Adaptor3d,
66      HSurface         from Adaptor3d,
67      HCurve2d         from Adaptor2d,
68      TopolTool        from Adaptor3d,
69      Line             from BRepBlend,
70      Extremity        from BRepBlend
71
72 is
73     
74     Create(Surf1   : HSurface  from Adaptor3d;
75            Rst1    : HCurve2d  from Adaptor2d;
76            Domain1 : TopolTool from Adaptor3d;
77            Surf2   : HSurface  from Adaptor3d; 
78            Rst2    : HCurve2d  from Adaptor2d;
79            Domain2 : TopolTool from Adaptor3d)
80     returns RstRstLineBuilder from BRepBlend;
81
82     Perform(me         : in out; 
83             Func       : in out RstRstFunction   from Blend;
84             Finv1      : in out SurfCurvFuncInv  from Blend;
85             FinvP1     : in out CurvPointFuncInv from Blend;
86             Finv2      : in out SurfCurvFuncInv  from Blend;
87             FinvP2     : in out CurvPointFuncInv from Blend;
88             Pdep       : Real    from Standard;
89             Pmax       : Real    from Standard;
90             MaxStep    : Real    from Standard;
91             TolGuide   : Real    from Standard;
92             Soldep     : Vector  from math;
93             Tolesp     : Real    from Standard;
94             Fleche     : Real    from Standard;
95             Appro      : Boolean from Standard = Standard_False)
96     is static;
97
98     PerformFirstSection(me       : in out; 
99                         Func     : in out RstRstFunction   from Blend;
100                         Finv1    : in out SurfCurvFuncInv  from Blend;
101                         FinvP1   : in out CurvPointFuncInv from Blend;
102                         Finv2    : in out SurfCurvFuncInv  from Blend;
103                         FinvP2   : in out CurvPointFuncInv from Blend;
104                         Pdep     : Real       from Standard;
105                         Pmax     : Real       from Standard;
106                         Soldep   : Vector     from math;
107                         Tolesp   : Real       from Standard; 
108                         TolGuide : Real       from Standard;
109                         RecRst1  : Boolean    from Standard;
110                         RecP1    : Boolean    from Standard;
111                         RecRst2  : Boolean    from Standard;
112                         RecP2    : Boolean    from Standard;
113                         Psol     : out Real   from Standard;
114                         ParSol   : out Vector from math)
115     returns Boolean from Standard
116     is static;
117
118     Complete(me     : in out;
119              Func   : in out RstRstFunction   from Blend;
120              Finv1  : in out SurfCurvFuncInv  from Blend;
121              FinvP1 : in out CurvPointFuncInv from Blend;
122              Finv2  : in out SurfCurvFuncInv  from Blend;
123              FinvP2 : in out CurvPointFuncInv from Blend;
124              Pmin   : Real                    from Standard)
125                         
126     returns Boolean from Standard
127     is static;
128
129     InternalPerform (me     : in out;
130                      Func   : in out RstRstFunction   from Blend;
131                      Finv1  : in out SurfCurvFuncInv  from Blend;
132                      FinvP1 : in out CurvPointFuncInv from Blend;
133                      Finv2  : in out SurfCurvFuncInv  from Blend;
134                      FinvP2 : in out CurvPointFuncInv from Blend;
135                      Bound : Real from Standard)
136     is static private;
137
138     Recadre1(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     Recadre2(me       : in out;
148              Func     : in out RstRstFunction  from Blend;    
149              Finv     : in out SurfCurvFuncInv from Blend;
150              Solinv   : out Vector             from math;
151              IsVtx    : out Boolean            from Standard;
152              Vtx      : out HVertex            from Adaptor3d)
153     returns Boolean from Standard
154     is static private;
155
156     Recadre1(me      : in out; 
157              FinvP   : in out CurvPointFuncInv from Blend;
158              Solinv  : out Vector              from math;
159              IsVtx   : out Boolean             from Standard;
160              Vtx     : out HVertex             from Adaptor3d)
161     returns Boolean from Standard
162     is static private;
163
164     Recadre2(me      : in out; 
165              FinvP   : in out CurvPointFuncInv from Blend;
166              Solinv  : out Vector              from math;
167              IsVtx   : out Boolean             from Standard;
168              Vtx     : out HVertex             from Adaptor3d)
169     returns Boolean from Standard
170     is static private;
171     
172     IsDone(me)
173     returns Boolean from Standard
174     ---C++: inline
175     is static;
176
177     Line(me)
178     returns Line from BRepBlend
179     ---C++: inline
180     ---C++: return const&
181     is static;
182
183     Decroch1Start(me)
184     returns Boolean from Standard
185     ---C++: inline
186     is static;
187         
188     Decroch1End(me)
189     returns Boolean from Standard
190     ---C++: inline
191     is static;
192     
193     Decroch2Start(me)
194     returns Boolean from Standard
195     ---C++: inline
196     is static;
197         
198     Decroch2End(me)
199     returns Boolean from Standard
200     ---C++: inline
201     is static;
202         
203     Transition(me         : in out; 
204                OnFirst    : Boolean from Standard;
205                Arc        : HCurve2d from Adaptor2d; 
206                Param      : Real from Standard;
207                TLine,TArc : out Transition from IntSurf)
208     is static private;
209
210     MakeExtremity(me      : in out; 
211                   Extrem  : in out Extremity from BRepBlend;
212                   OnFirst : Boolean from Standard;
213                   Arc     : HCurve2d from Adaptor2d;
214                   Param   : Real from Standard;
215                   IsVtx   : Boolean from Standard;
216                   Vtx     : HVertex from Adaptor3d)
217     is static private;
218
219     CheckDeflectionOnRst1(me       : in out; 
220                           CurPoint : Point from Blend)
221     returns Status from Blend
222     is static private;
223
224     CheckDeflectionOnRst2(me       : in out; 
225                           CurPoint : Point from Blend)
226     returns Status from Blend
227     is static private;
228
229     TestArret(me             : in out; 
230               Func           : in out RstRstFunction from Blend;
231               TestDeflection : Boolean from Standard;
232               State          : Status from Blend)
233     returns Status from Blend
234     is static private;
235
236     CheckInside(me       : in out; 
237                 Func     : in out RstRstFunction from Blend;
238                 SituOnC1 : out State from TopAbs;
239                 SituOnC2 : out State from TopAbs;
240                 Decroch  : out DecrochStatus from Blend)
241     returns Boolean from Standard
242     is static private;
243
244 fields
245
246     done         : Boolean       from Standard;
247     line         : Line          from BRepBlend;
248     sol          : Vector        from math;
249     surf1        : HSurface      from Adaptor3d;
250     domain1      : TopolTool     from Adaptor3d;
251     surf2        : HSurface      from Adaptor3d;
252     domain2      : TopolTool     from Adaptor3d;
253     rst1         : HCurve2d      from Adaptor2d;
254     rst2         : HCurve2d      from Adaptor2d;    
255                       
256     tolesp       : Real          from Standard;
257     tolgui       : Real          from Standard;
258     pasmax       : Real          from Standard;
259     fleche       : Real          from Standard;
260     param        : Real          from Standard;
261     previousP    : Point         from Blend;
262     rebrou       : Boolean       from Standard;
263     iscomplete   : Boolean       from Standard;
264     comptra      : Boolean       from Standard;
265     sens         : Real          from Standard;
266     decrochdeb   : DecrochStatus from Blend;
267     decrochfin   : DecrochStatus from Blend;
268
269 end RstRstLineBuilder from BRepBlend;
270
271
272
273