Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IntPatch / IntPatch_Intersection.cdl
1 -- File:        IntPatch_Intersection.cdl
2 -- Created:     Thu Jan 21 16:40:38 1993
3 -- Author:      Jacques GOUSSARD
4 ---Copyright:   OPEN CASCADE 1993
5
6
7 class Intersection from IntPatch
8
9         ---Purpose: This class provides a generic algorithm to intersect
10         --          2 surfaces.
11
12 uses
13      HVertex        from Adaptor3d,
14      HCurve2d       from Adaptor2d,
15      HSurface       from Adaptor3d,
16      Point          from IntPatch,
17      SequenceOfPoint from IntPatch,
18      TopolTool      from Adaptor3d,
19      SequenceOfLine from IntPatch,
20      Line           from IntPatch,
21      --amv
22      ListOfPntOn2S  from IntSurf
23  
24 raises NotDone           from StdFail,
25        OutOfRange        from Standard,
26        DomainError       from Standard,
27        ConstructionError from Standard
28
29 is
30     Create
31     
32         returns Intersection from IntPatch;
33
34
35     Create (S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
36             S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
37             TolArc,TolTang: Real from Standard)
38             
39         returns Intersection from IntPatch
40         
41         raises ConstructionError from Standard;
42
43     Create (S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
44             TolArc,TolTang: Real from Standard)
45             
46         returns Intersection from IntPatch
47         
48         raises ConstructionError from Standard;
49
50
51     SetTolerances(me       : in out;
52                   TolArc   : Real from Standard;
53                   TolTang  : Real from Standard;
54                   UVMaxStep: Real from Standard;
55                   Fleche   : Real from Standard)
56                   
57         ---Purpose: Set the tolerances used by the algorithms:
58         --          --- Implicit   - Parametric  
59         --          --- Parametric - Parametric 
60         --          --- Implicit   - Implicit 
61         --         
62         --          TolArc   is  used  to   compute  the intersections
63         --          between the restrictions   of  a  surface   and  a
64         --          walking line.
65         --          
66         --          TolTang is used to compute the points on a walking
67         --          line, and in geometric algorithms.
68         --          
69         --          Fleche  is  a  parameter   used in    the  walking
70         --          algorithms to provide small curvatures on a line.
71         --          
72         --          UVMaxStep is  a  parameter   used in  the  walking
73         --          algorithms  to    compute the  distance between to
74         --          points in their respective parametrtic spaces.
75         --          
76         is static;
77
78     Perform (me: in out;
79              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
80              S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
81              TolArc,TolTang: Real from Standard)             
82
83         raises ConstructionError from Standard    
84
85         is static;
86     
87     --amv
88     Perform (me: in out;
89              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
90              S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
91              TolArc,TolTang: Real from Standard;
92              LOfPnts: in out ListOfPntOn2S from IntSurf;
93              RestrictLine: Boolean from Standard = Standard_True)
94
95         raises ConstructionError from Standard    
96
97         is static;
98
99     Perform (me: in out;
100              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
101              S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
102              U1,V1,U2,V2 : Real from Standard;
103              TolArc,TolTang: Real from Standard)
104
105         raises ConstructionError from Standard    
106
107         is static;
108
109     Perform (me: in out;
110              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
111              TolArc,TolTang: Real from Standard)
112
113         raises ConstructionError from Standard    
114
115         is static;
116
117
118     IsDone(me)
119     
120         ---Purpose: Returns True if the calculus was succesfull.
121
122         returns Boolean from Standard
123         ---C++: inline
124         
125         is static;
126
127
128     IsEmpty(me)
129     
130         ---Purpose: Returns true if the is no intersection.
131
132         returns Boolean from Standard
133         ---C++: inline
134
135         raises NotDone from StdFail
136
137         is static;
138
139
140     TangentFaces(me)
141     
142         ---Purpose: Returns True if the two patches are considered as
143         --          entierly tangent, i-e every restriction arc of one
144         --          patch is inside the geometric base of the other patch.
145
146         returns Boolean from Standard
147         ---C++: inline
148         
149         raises NotDone from StdFail
150         
151         is static;
152
153
154     OppositeFaces(me)
155     
156         ---Purpose: Returns True when the TangentFaces returns True and the
157         --          normal vectors evaluated at a point on the first and the
158         --          second surface are opposite. 
159         --          The exception DomainError is raised if TangentFaces
160         --          returns False.
161
162         returns Boolean from Standard
163         ---C++: inline
164         
165         raises NotDone     from StdFail,
166                DomainError from Standard
167         
168         is static;
169
170
171     NbPnts(me)
172     
173         ---Purpose: Returns the number of "single" points.
174
175         returns Integer from Standard
176         ---C++: inline
177
178         raises NotDone from StdFail
179         
180         is static;
181
182
183     Point(me; Index: Integer from Standard)
184     
185         ---Purpose: Returns the point of range Index.
186         --          An exception is raised if Index<=0 or Index>NbPnt.
187
188         returns Point from IntPatch
189         ---C++: return const&
190         ---C++: inline
191
192         raises NotDone    from StdFail,
193                OutOfRange from Standard
194
195         is static;
196
197
198     NbLines(me)
199     
200         ---Purpose: Returns the number of intersection lines.
201
202         returns Integer from Standard
203         ---C++: inline
204
205         raises NotDone from StdFail
206
207         is static;
208
209
210     Line(me; Index: Integer from Standard)
211     
212         ---Purpose: Returns the line of range Index.
213         --          An exception is raised if Index<=0 or Index>NbLine.
214
215         returns Line from IntPatch
216         ---C++: return const&
217         ---C++: inline
218
219         raises NotDone    from StdFail,
220                OutOfRange from Standard
221         
222         is static;
223         
224     SequenceOfLine(me) 
225         returns SequenceOfLine from IntPatch
226         ---C++: return const&
227         raises NotDone    from StdFail
228         is static;
229         
230     Dump(me; Mode: Integer from Standard;
231              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
232              S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d) 
233         ---Purpose: Dump of each result line. 
234         ---         Mode for more accurate dumps. 
235         --          
236         is static;
237
238 fields
239
240     done       : Boolean         from Standard;
241     empt       : Boolean         from Standard;
242     tgte       : Boolean         from Standard;
243     oppo       : Boolean         from Standard;
244     spnt       : SequenceOfPoint from IntPatch;
245     slin       : SequenceOfLine  from IntPatch;
246     myTolArc   : Real from Standard;
247     myTolTang  : Real from Standard;
248     myUVMaxStep: Real from Standard;
249     myFleche   : Real from Standard;
250     myIsStartPnt: Boolean from Standard;
251     myU1Start  : Real from Standard;
252     myV1Start  : Real from Standard;
253     myU2Start  : Real from Standard;
254     myV2Start  : Real from Standard;
255
256 end Intersection;