0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / BRepBlend / BRepBlend_SurfRstConstRad.cdl
1 -- Created on: 1997-02-06
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 SurfRstConstRad from BRepBlend
18 inherits SurfRstFunction from Blend
19
20     ---Purpose: Copy of CSConstRad with pcurve on surface
21     --          as support.
22
23 uses Vector          from math,
24      Matrix          from math,
25      Ax1             from gp,
26      Vec             from gp,
27      Vec2d           from gp,
28      Pnt             from gp,
29      Pnt2d           from gp,
30      Circ            from gp,
31      Array1OfPnt     from TColgp,
32      Array1OfVec     from TColgp,
33      Array1OfPnt2d   from TColgp,
34      Array1OfVec2d   from TColgp,
35      Array1OfReal    from TColStd,
36      Array1OfInteger from TColStd,
37      Shape           from GeomAbs,
38      Point           from Blend,
39      SectionShape    from BlendFunc,
40      HSurface        from Adaptor3d,
41      HCurve          from Adaptor3d,
42      HCurve2d        from Adaptor2d,
43      CurveOnSurface  from Adaptor3d,
44      ParameterisationType from Convert
45
46
47 is
48
49     Create(Surf    : HSurface from Adaptor3d;
50            SurfRst : HSurface from Adaptor3d;
51            Rst     : HCurve2d from Adaptor2d; 
52            CGuide  : HCurve   from Adaptor3d)
53     returns SurfRstConstRad from BRepBlend;
54
55     NbVariables(me)
56     ---Purpose: Returns 3.
57     returns Integer from Standard;
58
59     NbEquations(me)
60     ---Purpose: Returns 3.
61     returns Integer from Standard;
62
63     Value(me: in out; X: Vector; F: out Vector)
64     ---Purpose: computes the values <F> of the Functions for the 
65     --          variable <X>.
66     --          Returns True if the computation was done successfully, 
67     --          False otherwise.
68     returns Boolean from Standard;
69     
70     Derivatives(me: in out; X: Vector; D: out Matrix)
71     ---Purpose: returns the values <D> of the derivatives for the 
72     --          variable <X>.
73     --          Returns True if the computation was done successfully, 
74     --          False otherwise.
75     returns Boolean from Standard;
76     
77     Values(me: in out; X: Vector; F: out Vector; D: out Matrix)
78     ---Purpose: returns the values <F> of the functions and the derivatives
79     --          <D> for the variable <X>.
80     --          Returns True if the computation was done successfully, 
81     --          False otherwise.
82     returns Boolean from Standard;
83
84     Set(me      : in out; 
85         SurfRef : HSurface from Adaptor3d;
86         RstRef  : HCurve2d from Adaptor2d);
87            
88     Set(me: in out; Param: Real from Standard);
89
90     Set(me: in out; First, Last: Real from Standard);
91     ---Purpose: Sets the bounds of the parametric interval on 
92     --          the guide line.
93     --          This determines the derivatives in these values if the
94     --          function is not Cn.
95
96     GetTolerance(me; Tolerance: out Vector from math; Tol: Real from Standard);
97
98     GetBounds(me; InfBound,SupBound: out Vector from math);
99
100     IsSolution(me: in out; Sol: Vector from math; Tol: Real from Standard)
101     returns Boolean from Standard;
102
103      GetMinimalDistance(me) 
104         ---Purpose: Returns   the    minimal  Distance  beetween   two
105         --          extremitys of calculed sections.          
106         returns  Real  from  Standard 
107         is redefined;
108
109 --- TheFollowing methods are called only when 
110 --  IsSolution returns Standard_True.
111
112     PointOnS(me)
113     ---C++: return const&
114     returns Pnt from gp;
115
116     PointOnRst(me)
117     ---C++: return const&
118     returns Pnt from gp;
119
120     Pnt2dOnS(me)
121     ---Purpose: Returns U,V coordinates of the point on the surface.
122     ---C++: return const&
123     returns Pnt2d from gp;
124
125     Pnt2dOnRst(me)
126     ---Purpose: Returns  U,V coordinates of the point  on the curve on
127     --          surface.
128     ---C++: return const&
129     returns Pnt2d from gp;
130
131     ParameterOnRst(me)
132     ---Purpose: Returns parameter of the point on the curve.
133     returns Real from Standard;
134
135     IsTangencyPoint(me)
136     returns Boolean from Standard;
137
138     TangentOnS(me)
139     ---C++: return const&
140     returns Vec from gp;
141
142     Tangent2dOnS(me)
143     ---C++: return const&
144     returns Vec2d from gp;
145
146     TangentOnRst(me)
147     ---C++: return const&
148     returns Vec from gp;
149
150     Tangent2dOnRst(me)
151     ---C++: return const&
152     returns Vec2d from gp;
153
154     Decroch(me; 
155             Sol    : Vector from math;
156             NS,TgS : out Vec from gp)
157     ---Purpose: Enables  implementation  of  a criterion of  decrochage
158     --          specific to  the function. 
159     --  Warning: Can  be  called  without  previous  call  of  issolution
160     --          but the values  calculated can  be  senseless.    
161     returns Boolean from Standard
162     is static;
163
164 -- methodes hors template (en plus du create)
165
166     Set(me     : in out; 
167         Radius : Real from Standard; 
168         Choix  : Integer from Standard)
169     is static;
170
171     Set(me: in out; TypeSection: SectionShape from BlendFunc)
172     ---Purpose: Sets  the  type  of   section generation   for the
173     --          approximations. 
174     is static;
175
176     Section(me        : in out; 
177             Param     : Real from Standard;
178             U,V,W     : Real from Standard;
179             Pdeb,Pfin : out Real from Standard;
180             C         : out Circ from gp)
181     is static;
182
183 -- Methods for the approximation
184 -- 
185     IsRational(me) returns Boolean
186     ---Purpose: Returns  if the section is rationnal
187     is static;
188
189     GetSectionSize(me) returns Real
190     ---Purpose:  Returns the length of the maximum section
191     is static;
192     
193     GetMinimalWeight(me; Weigths  : out Array1OfReal  from TColStd)
194     ---Purpose: Compute the minimal value of weight for each poles
195     --          of all sections.
196     is static;
197
198     NbIntervals(me; S : Shape from GeomAbs) returns Integer
199     ---Purpose: Returns  the number  of  intervals for  continuity
200     --          <S>. May be one if Continuity(me) >= <S>
201     is static;
202     
203     Intervals(me; T : in out Array1OfReal from TColStd; 
204                   S : Shape from GeomAbs)
205     ---Purpose: Stores in <T> the  parameters bounding the intervals
206     --          of continuity <S>.        
207     --          The array must provide  enough room to  accomodate
208     --          for the parameters. i.e. T.Length() > NbIntervals()
209     is static;
210
211     GetShape(me        : in out;
212              NbPoles   : out Integer from Standard;
213              NbKnots   : out Integer from Standard;
214              Degree    : out Integer from Standard;
215              NbPoles2d : out Integer from Standard)
216     is static;
217
218     GetTolerance(me; 
219                  BoundTol, SurfTol, AngleTol : Real;
220                  Tol3d : out Vector;
221                  Tol1D : out Vector )
222     ---Purpose: Returns the tolerance to reach in approximation
223     --          to respecte
224     --          BoundTol error at the Boundary
225     --          AngleTol tangent error at the Boundary
226     --          SurfTol error inside the surface.
227     is static;
228
229     Knots(me: in out; TKnots: out Array1OfReal from TColStd)
230     is static;
231
232     Mults(me: in out; TMults: out Array1OfInteger from TColStd)
233     is static;
234
235     Section(me       : in out ; 
236             P        : Point from Blend;
237             Poles    : out Array1OfPnt   from TColgp;
238             DPoles   : out Array1OfVec   from TColgp;
239             Poles2d  : out Array1OfPnt2d from TColgp;
240             DPoles2d : out Array1OfVec2d from TColgp;
241             Weigths  : out Array1OfReal  from TColStd;
242             DWeigths : out Array1OfReal  from TColStd)
243     ---Purpose: Used for the first and last section 
244     returns Boolean from Standard
245     is static;
246
247     Section(me: in out; P: Point from Blend;
248                         Poles     : out Array1OfPnt   from TColgp;
249                         DPoles    : out Array1OfVec   from TColgp;
250                         D2Poles   : out Array1OfVec   from TColgp;
251                         Poles2d   : out Array1OfPnt2d from TColgp;
252                         DPoles2d  : out Array1OfVec2d from TColgp;
253                         D2Poles2d : out Array1OfVec2d from TColgp;
254                         Weigths   : out Array1OfReal  from TColStd;
255                         DWeigths  : out Array1OfReal  from TColStd;
256                         D2Weigths : out Array1OfReal  from TColStd)
257     ---Purpose: Used for the first and last section
258     --          The method returns Standard_True if the derivatives
259     --          are computed, otherwise it returns Standard_False.
260     returns Boolean from Standard
261     is static;
262
263     Section(me       : in out ; 
264             P        : Point from Blend;
265             Poles    : out Array1OfPnt   from TColgp;
266             Poles2d  : out Array1OfPnt2d from TColgp;
267             Weigths  : out Array1OfReal  from TColStd)
268     is static;
269
270     Resolution(me; 
271                IC2d : Integer from Standard;
272                Tol  : Real from Standard;
273                TolU, TolV : out Real from Standard);
274
275 fields
276
277     surf     : HSurface             from Adaptor3d;
278     surfrst  : HSurface             from Adaptor3d;
279     rst      : HCurve2d             from Adaptor2d;
280     cons     : CurveOnSurface       from Adaptor3d;
281     guide    : HCurve               from Adaptor3d; 
282     tguide   : HCurve               from Adaptor3d; 
283     pts      : Pnt                  from gp;
284     ptrst    : Pnt                  from gp;
285     pt2ds    : Pnt2d                from gp;
286     pt2drst  : Pnt2d                from gp;
287     prmrst   : Real                 from Standard;
288     istangent: Boolean              from Standard;
289     tgs      : Vec                  from gp;
290     tg2ds    : Vec2d                from gp;
291     tgrst    : Vec                  from gp;
292     tg2drst  : Vec2d                from gp;
293
294     ray      : Real                 from Standard;
295     choix    : Integer              from Standard;
296     ptgui    : Pnt                  from gp;
297     d1gui    : Vec                  from gp;
298     d2gui    : Vec                  from gp;
299     nplan    : Vec                  from gp;
300     normtg   : Real                 from Standard;
301     theD     : Real                 from Standard;
302        
303     surfref  : HSurface             from Adaptor3d;
304     rstref   : HCurve2d             from Adaptor2d;
305
306     maxang   : Real                 from Standard;
307     minang   : Real                 from Standard;   
308     distmin  : Real                 from Standard;   
309     mySShape : SectionShape         from BlendFunc;
310     myTConv  : ParameterisationType from Convert;
311
312 end SurfRstConstRad;