Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IntCurveSurface / IntCurveSurface_HCurveTool.cdl
1 -- File:        IntCurveSurface_HCurveTool.cdl
2 -- Created:     Mon Jul 17 16:25:23 1995
3 -- Author:      Modelistation
4 --              <model@mastox>
5 ---Copyright:    Matra Datavision 1995
6
7
8 generic class HCurveTool from IntCurveSurface (CurveGen  as any)
9
10 uses 
11      Array1OfReal    from TColStd,
12      HArray1OfReal   from TColStd,
13      Shape           from GeomAbs,
14      CurveType       from GeomAbs,
15      Vec             from gp,
16      Pnt             from gp,
17      Circ            from gp,
18      Elips           from gp,
19      Hypr            from gp,
20      Parab           from gp,
21      Lin             from gp,
22      BezierCurve     from Geom,
23      BSplineCurve    from Geom
24      
25 raises
26     
27     OutOfRange          from Standard,
28     NoSuchObject        from Standard,
29     DomainError         from Standard
30  
31 is
32
33     --
34     --     Global methods - Apply to the whole curve.
35     --     
36     
37     FirstParameter(myclass; C: CurveGen) returns Real
38         ---C++: inline
39     ;
40     
41
42     LastParameter(myclass; C: CurveGen) returns Real
43         ---C++: inline    
44     ;
45
46     --
47     -- Services to break the curves to the expected continuity
48     -- 
49     --  If  for example you  need the  curve to  be C2  and the method
50     --  Continuity   returns you something lower than   C2 (say C1 for
51     --  example).
52     --  
53     --  First  compute the   number  of intervals  with  the requested
54     --  continuity with the method  NbIntervals().   Note that if  the
55     --  continuity  is higher than the one   you need NbIntervals will
56     --  return 1.
57     --  
58     --  Then you get the parameters  bounding  the intervals with  the
59     --  method  Intervals,   using   an array    of  length  at  least
60     --  NbIntervals()+1.
61     -- 
62     -- If you need  to create a curve  with a restricted span you  can
63     -- use the method Trim().
64
65     
66     Continuity(myclass; C: CurveGen) returns Shape from GeomAbs
67         ---Purpose: 
68         ---C++: inline
69     ;
70     
71     NbIntervals(myclass; C: CurveGen; S : Shape from GeomAbs) returns Integer
72         ---Purpose: Returns  the number  of  intervals for  continuity
73         --          <S>. May be one if Continuity(myclass) >= <S>
74         ---C++: inline
75     ;
76     
77     Intervals(myclass; C: CurveGen; T : in out Array1OfReal from TColStd; 
78                   S : Shape from GeomAbs)
79         ---Purpose: Stores in <T> the  parameters bounding the intervals
80         --          of continuity <S>.
81         --          
82         --          The array must provide  enough room to  accomodate
83         --          for the parameters. i.e. T.Length() > NbIntervals()
84     raises
85         OutOfRange from Standard
86     ---C++: inline
87     ;
88     
89     IsClosed(myclass; C: CurveGen) returns Boolean
90     ---C++: inline    
91     ;
92      
93     IsPeriodic(myclass; C: CurveGen) returns Boolean
94     ---C++: inline
95     ;
96     
97     Period(myclass; C: CurveGen) returns Real
98     raises
99         DomainError from Standard -- if the curve is not periodic
100     ---C++: inline      
101     ;
102      
103     Value(myclass; C: CurveGen; U : Real) returns Pnt from gp
104          --- Purpose : Computes the point of parameter U on the curve.
105     ---C++: inline
106     ;
107     
108     D0 (myclass; C: CurveGen; U : Real; P : out Pnt from gp)
109          --- Purpose : Computes the point of parameter U on the curve.
110     ---C++: inline
111     ;
112     
113     D1 (myclass; C: CurveGen; U : Real; P : out Pnt from gp ; V : out Vec from gp)
114          --- Purpose : Computes the point of parameter U on the curve with its
115          --  first derivative.
116      raises 
117         DomainError from Standard
118         --- Purpose : Raised if the continuity of the current interval
119         --  is not C1.
120     ---C++: inline
121     ;
122     
123     D2 (myclass; C: CurveGen; U : Real; P : out Pnt from gp; V1, V2 : out Vec from gp)
124         --- Purpose :
125         --  Returns the point P of parameter U, the first and second
126         --  derivatives V1 and V2.
127      raises 
128         DomainError from Standard
129         --- Purpose : Raised if the continuity of the current interval
130         --  is not C2.
131     ---C++: inline
132      ;
133
134     D3 (myclass; C: CurveGen; U : Real; P : out Pnt from gp; V1, V2, V3 : out Vec from gp)
135         --- Purpose :
136         --  Returns the point P of parameter U, the first, the second 
137         --  and the third derivative.
138      raises 
139         DomainError from Standard
140         --- Purpose : Raised if the continuity of the current interval
141         --  is not C3.
142     ---C++: inline
143      ;
144         
145     DN (myclass; C: CurveGen; U : Real; N : Integer)   returns Vec from gp
146         --- Purpose :
147         --  The returned vector gives the value of the derivative for the 
148         --  order of derivation N.
149      raises  
150         DomainError from Standard,
151         --- Purpose : Raised if the continuity of the current interval
152         --  is not CN.
153         OutOfRange from Standard
154         --- Purpose : Raised if N < 1.            
155     ---C++: inline
156      ;
157
158     Resolution(myclass; C: CurveGen; R3d : Real) returns Real
159          ---Purpose :  Returns the parametric  resolution corresponding
160          --         to the real space resolution <R3d>.
161     ---C++: inline
162     ;   
163         
164     GetType(myclass; C: CurveGen) returns CurveType from GeomAbs
165         ---Purpose: Returns  the  type of the   curve  in the  current
166         --          interval :   Line,   Circle,   Ellipse, Hyperbola,
167         --          Parabola, BezierCurve, BSplineCurve, OtherCurve.
168     ---C++: inline
169     ;
170
171     --
172     --     The following methods must  be called when GetType returned
173     --     the corresponding type.
174     --     
175
176      Line(myclass; C: CurveGen) returns Lin from gp
177      raises 
178         NoSuchObject from Standard
179     ---C++: inline
180      ;
181      
182      Circle(myclass; C: CurveGen) returns Circ from gp
183      raises 
184         NoSuchObject from Standard
185     ---C++: inline
186      ;
187      
188      Ellipse(myclass; C: CurveGen) returns Elips from gp
189      raises 
190         NoSuchObject from Standard
191     ---C++: inline
192      ;
193      
194      Hyperbola(myclass; C: CurveGen) returns  Hypr from gp
195      raises 
196         NoSuchObject from Standard
197     ---C++: inline
198      ;
199      
200      Parabola(myclass; C: CurveGen) returns Parab from gp
201      raises 
202         NoSuchObject from Standard
203     ---C++: inline
204      ;
205      
206      Bezier(myclass; C: CurveGen) returns BezierCurve from Geom
207      raises 
208         NoSuchObject from Standard
209     ---C++: inline
210      ;
211     
212      BSpline(myclass; C: CurveGen) returns BSplineCurve from Geom
213      raises 
214         NoSuchObject from Standard
215     ---C++: inline
216      ;
217
218     NbSamples(myclass; C: CurveGen; U0,U1: Real from Standard) 
219     returns Integer from Standard; 
220      
221     SamplePars(myclass;  C: CurveGen; U0,U1: Real from Standard;  
222                          Defl: Real from Standard; NbMin: Integer  from  Standard; 
223                          Pars: in  out HArray1OfReal from TColStd);
224
225 end HCurveTool;
226
227