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