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