Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IntPatch / IntPatch_PrmPrmIntersection.cdl
1 -- File:      IntPatch_PrmPrmIntersection.cdl
2 -- Created:   Thu Jan 28 14:46:57 1993
3 -- Author:    Laurent BUCHARD
4 ---Copyright: Matra Datavision 1993
5
6 class PrmPrmIntersection from IntPatch
7     
8     ---Purpose: Implementation  of   the Intersection      between two
9     --          bi-parametrised surfaces.
10     --          
11     --          To  avoid  multiple constructions of  the approximated
12     --          polyhedron  of the    surfaces, the algorithm  can  be
13     --          called whith the  two  surfaces  and their  associated
14     --          polyhedron.
15     --          
16     
17     
18 uses
19      Polyhedron                from IntPatch,
20      HSurface                  from Adaptor3d,
21      TopolTool                 from Adaptor3d,
22      Line                      from IntPatch,
23      SequenceOfLine            from IntPatch, 
24      PrmPrmIntersection_T3Bits from IntPatch, 
25      LineOn2S                  from IntSurf,
26      --amv
27      ListOfPntOn2S             from IntSurf
28
29 raises OutOfRange from Standard,
30        NotDone    from StdFail
31
32 is 
33
34     Create  
35
36             ---Purpose : Empty Constructor
37
38               returns PrmPrmIntersection from IntPatch;
39               
40     Perform(me:in out; 
41                 Caro1       : HSurface from Adaptor3d;
42                 Polyhedron1 : Polyhedron from IntPatch;
43                 Domain1     : TopolTool from Adaptor3d;
44                 Caro2       : HSurface from Adaptor3d; 
45                 Polyhedron2 : Polyhedron from IntPatch;
46                 Domain2     : TopolTool from Adaptor3d;
47                 TolTangency,
48                 Epsilon,
49                 Deflection,
50                 Increment   : Real from Standard)
51
52             ---Purpose: Performs the intersection between <Caro1>  and
53             --          <Caro2>.  Associated Polyhedrons <Polyhedron1>
54             --          and <Polyhedron2> are given.
55
56             is static;
57     Perform(me:in out; 
58                 Caro1       : HSurface from Adaptor3d;
59                 Polyhedron1 : Polyhedron from IntPatch;
60                 Domain1     : TopolTool from Adaptor3d;
61                 TolTangency,
62                 Epsilon,
63                 Deflection,
64                 Increment   : Real from Standard)
65
66
67             is static;
68
69
70     Perform(me :in out;
71                 Caro1       : HSurface from Adaptor3d;
72                 Domain1     : TopolTool from Adaptor3d;
73                 Caro2       : HSurface from Adaptor3d; 
74                 Domain2     : TopolTool from Adaptor3d;
75                 TolTangency,
76                 Epsilon,
77                 Deflection,
78                 Increment   : Real from Standard;
79                 --amv
80                 ClearFlag   : Boolean from Standard = Standard_True)
81
82             ---Purpose: Performs the intersection between <Caro1>  and
83             --          <Caro2>. The method computes the polyhedron on 
84             --          each surface.
85
86             is static;      
87
88     --amv
89     Perform(me :in out;
90                 Caro1       : HSurface from Adaptor3d;
91                 Domain1     : TopolTool from Adaptor3d;
92                 Caro2       : HSurface from Adaptor3d; 
93                 Domain2     : TopolTool from Adaptor3d;
94                 TolTangency,
95                 Epsilon,
96                 Deflection,
97                 Increment   : Real from Standard;
98                 ListOfPnts: in out ListOfPntOn2S from IntSurf;
99                 RestrictLine: Boolean from Standard)
100
101             ---Purpose: Performs the intersection between <Caro1>  and
102             --          <Caro2>. The method computes the polyhedron on 
103             --          each surface.
104
105             is static;
106             
107     Perform(me :in out;
108                 Caro1       : HSurface from Adaptor3d;
109                 Domain1     : TopolTool from Adaptor3d;
110                 Caro2       : HSurface from Adaptor3d; 
111                 Domain2     : TopolTool from Adaptor3d;
112                 U1,V1,U2,V2 : Real from Standard;
113                 TolTangency,
114                 Epsilon,
115                 Deflection,
116                 Increment   : Real from Standard)
117
118             ---Purpose: Performs the intersection between <Caro1>  and
119             --          <Caro2>. The method computes the polyhedron on 
120             --          each surface.
121
122             is static;
123             
124             
125     Perform(me :in out;
126                 Caro1       : HSurface from Adaptor3d;
127                 Domain1     : TopolTool from Adaptor3d;
128                 TolTangency,
129                 Epsilon,
130                 Deflection,
131                 Increment   : Real from Standard)
132
133             ---Purpose: Performs the intersection between <Caro1>  and
134             --          <Caro2>. The method computes the polyhedron on 
135             --          each surface.
136
137             is static;
138         
139              
140         
141                      
142     Perform(me:in out;    
143                 Caro1       : HSurface from Adaptor3d;
144                 Domain1     : TopolTool from Adaptor3d;
145                 Caro2       : HSurface from Adaptor3d; 
146                 Polyhedron2 : Polyhedron from IntPatch;
147                 Domain2     : TopolTool from Adaptor3d;
148                 TolTangency,
149                 Epsilon,
150                 Deflection,
151                 Increment   : Real from Standard)
152                 
153             ---Purpose: Performs  the intersection between <Caro1> and
154             --          <Caro2>.
155             --          
156             --          The polyhedron which approximates     <Caro2>,
157             --          <Polyhedron2> is given. The other one is 
158             --          computed.
159
160             is static;
161
162
163     Perform(me:in out; 
164                 Caro1       : HSurface from Adaptor3d;
165                 Polyhedron1 : Polyhedron from IntPatch;
166                 Domain1     : TopolTool from Adaptor3d;
167                 Caro2       : HSurface from Adaptor3d; 
168                 Domain2     : TopolTool from Adaptor3d;
169                 TolTangency,
170                 Epsilon,
171                 Deflection,
172                 Increment   : Real from Standard)
173                 
174             ---Purpose: Performs  the intersection between <Caro1> and
175             --          <Caro2>.
176             --          
177             --          The polyhedron which approximates     <Caro1>,
178             --          <Polyhedron1> is given. The other one is 
179             --          computed.
180
181             is static;
182
183
184     IsDone(me)
185     
186         ---Purpose: Returns true if the calculus was succesfull.
187
188         returns Boolean from Standard
189         ---C++: inline
190         
191         is static;
192
193
194     IsEmpty(me)
195     
196         ---Purpose: Returns true if the is no intersection.
197
198         returns Boolean from Standard
199         ---C++: inline
200
201         raises  NotDone from StdFail
202         is static;
203
204
205     NbLines(me)
206     
207         ---Purpose: Returns the number of intersection lines.
208
209         returns Integer from Standard
210         ---C++: inline
211
212         raises  NotDone from StdFail
213         is static;
214
215
216     Line(me; Index: Integer from Standard)
217     
218         ---Purpose: Returns the line of range Index.
219         --          An exception is raised if Index<=0 or Index>NbLine.
220
221         returns  Line from IntPatch
222         ---C++: return const&
223         ---C++: inline
224
225         raises NotDone    from StdFail,
226                OutOfRange from Standard
227         is static;
228
229     NewLine(me; Caro1       : HSurface from Adaptor3d;
230                 Caro2       : HSurface from Adaptor3d;
231                 IndexLine,
232                 LowPoint,
233                 HighPoint,
234                 NbPoints: Integer from Standard)
235     
236         ---Purpose: Computes about <NbPoints>  Intersection Points  on
237         --          the Line <IndexLine> between  the Points of  Index
238         --          <LowPoint> and <HighPoint>.
239         --          
240         --          All  the points  of the line  of index <IndexLine>
241         --          with an index  between <LowPoint>  and <HighPoint>
242         --          are in the returned  line. New Points are inserted
243         --          between existing points  if  those  points are not
244         --          too closed.
245         --          
246         --          An exception is raised if Index<=0 or Index>NbLine.
247         --          or if IsDone returns False
248
249         returns  Line from IntPatch
250
251         raises NotDone    from StdFail,
252                OutOfRange from Standard
253         
254         is static;
255  
256         
257     GrilleInteger  (  me  ; 
258                      ix  : Integer  from  Standard  ; 
259                      iy  : Integer  from  Standard  ; 
260                      iz  : Integer  from  Standard  )
261         returns  Integer  from  Standard   
262         is  static  ;
263         ---C++: inline
264
265     IntegerGrille  (  me   ; 
266                      t   : Integer  from  Standard  ;  
267                      ix  : in  out  Integer  from  Standard  ; 
268                      iy  : in  out  Integer  from  Standard  ; 
269                      iz  : in  out  Integer  from  Standard  )
270         is  static  ;
271         ---C++: inline
272
273      DansGrille (  me  ; 
274                    t   :          Integer  from  Standard  )  
275         returns  Integer  from  Standard  
276         is  static  ;
277         ---C++: inline
278    
279
280                      
281      NbPointsGrille  (  me  ) 
282         returns  Integer  from  Standard  
283         is  static  ;
284         ---C++: inline
285                          
286       
287     RemplitLin (  me  ;
288                   x1  : Integer  from  Standard  ; 
289                   y1  : Integer  from  Standard  ; 
290                   z1  : Integer  from  Standard  ;
291                   x2  : Integer  from  Standard  ; 
292                   y2  : Integer  from  Standard  ; 
293                   z2  : Integer  from  Standard  ; 
294                   Map : in  out  PrmPrmIntersection_T3Bits  from  IntPatch  ) 
295         is  static  ;
296                   
297     RemplitTri  (  me  ; 
298                   x1  : Integer  from  Standard  ; 
299                   y1  : Integer  from  Standard  ; 
300                   z1  : Integer  from  Standard  ;
301                   x2  : Integer  from  Standard  ; 
302                   y2  : Integer  from  Standard  ; 
303                   z2  : Integer  from  Standard  ; 
304                   x3  : Integer  from  Standard  ; 
305                   y3  : Integer  from  Standard  ; 
306                   z3  : Integer  from  Standard  ; 
307                   Map : in  out  PrmPrmIntersection_T3Bits  from  IntPatch  ) 
308         is  static  ;
309
310           
311      Remplit  (  me  ; 
312                  a  :  Integer  from  Standard  ; 
313                  b  :  Integer  from  Standard  ; 
314                  c  :  Integer  from  Standard  ; 
315                  Map : in  out  PrmPrmIntersection_T3Bits  from  IntPatch  ) 
316         is  static  ;
317                  
318      CodeReject  (  me  ; 
319                   x1  : Real  from  Standard  ; 
320                   y1  : Real  from  Standard  ; 
321                   z1  : Real  from  Standard  ;
322                   x2  : Real  from  Standard  ; 
323                   y2  : Real  from  Standard  ; 
324                   z2  : Real  from  Standard  ; 
325                   x3  : Real  from  Standard  ; 
326                   y3  : Real  from  Standard  ; 
327                   z3  : Real  from  Standard  ) 
328         returns  Integer  from  Standard  
329         is  static  ;
330      
331      PointDepart  (  me  ; 
332                      LineOn2S  : in  out  LineOn2S  from    IntSurf  ;  
333                      S1        :          HSurface from Adaptor3d  ; 
334                      SU1       :          Integer  from  Standard  ;
335                      SV1       :           Integer  from  Standard  ;
336                      S2        :          HSurface from Adaptor3d  ;  
337                      SU2       :          Integer  from  Standard  ;
338                      SV2       :          Integer  from  Standard  )
339         is  static  ;
340      
341                      
342
343 fields
344
345     done   : Boolean                                 from Standard;
346     empt   : Boolean                                 from Standard;
347     Preci  : Real                                    from Standard;
348     Fleche : Real                                    from Standard;
349     Pas    : Real                                    from Standard;
350     SLin   : SequenceOfLine                          from IntPatch;
351
352 end PrmPrmIntersection;