0024005: Intersecting a slightly off angle plane with a cylinder takes 7+ seconds
[occt.git] / src / IntTools / IntTools_FaceFace.cdl
1 -- Created on: 2000-11-23
2 -- Created by: Michael KLOKOV
3 -- Copyright (c) 2000-2012 OPEN CASCADE SAS
4 --
5 -- The content of this file is subject to the Open CASCADE Technology Public
6 -- License Version 6.5 (the "License"). You may not use the content of this file
7 -- except in compliance with the License. Please obtain a copy of the License
8 -- at http://www.opencascade.org and read it completely before using this file.
9 --
10 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 --
13 -- The Original Code and all software distributed under the License is
14 -- distributed on an "AS IS" basis, without warranty of any kind, and the
15 -- Initial Developer hereby disclaims all such warranties, including without
16 -- limitation, any warranties of merchantability, fitness for a particular
17 -- purpose or non-infringement. Please see the License for the specific terms
18 -- and conditions governing the rights and limitations under the License.
19
20
21 class FaceFace from IntTools
22
23         ---Purpose: This class provides the intersection of 
24         ---         face's underlying surfaces.
25
26 uses 
27
28     TopolTool             from Adaptor3d, 
29     HSurface              from GeomAdaptor, 
30     ListOfPntOn2S         from IntSurf ,
31     Intersection          from IntPatch,
32     Face                  from TopoDS,
33     SequenceOfCurves      from IntTools,
34     LineConstructor       from IntTools,
35     SequenceOfPntOn2Faces from IntTools, 
36     Context from BOPInt
37     
38     
39
40 raises NotDone from StdFail
41 is
42
43     Create 
44         returns FaceFace from IntTools; 
45         ---Purpose: 
46         --- Empty constructor.
47         ---
48
49
50     SetParameters(me: in out;  
51                     ApproxCurves    : Boolean from Standard;
52                     ComputeCurveOnS1: Boolean from Standard;
53                     ComputeCurveOnS2: Boolean from Standard;
54                     ApproximationTolerance: Real from Standard);
55         ---Purpose:
56         --- Modifier
57         ---
58
59     Perform(me: in out;  
60                     F1: Face from TopoDS;
61                     F2: Face from TopoDS);
62         ---Purpose: 
63         --- Intersects underliing surfaces of F1 and F2
64         --- Use sum of tolerance of F1 and F2 as intersection
65         --- criteria
66         ---
67         
68     IsDone(me)
69         returns Boolean from Standard;
70         ---Purpose: 
71         --- Returns True if the intersection was successful
72         ---
73
74     Lines(me)
75         returns SequenceOfCurves from IntTools;
76         ---C++: return const&   
77         ---Purpose: 
78         --- Returns sequence of 3d curves as result of intersection
79         ---
80          
81     Points(me)
82         returns  SequenceOfPntOn2Faces from IntTools;
83         ---C++: return const&    
84         ---Purpose: 
85         --- Returns sequence of 3d curves as result of intersection
86         ---
87
88     TolReached3d(me)  
89         returns Real from Standard;
90         ---Purpose:
91         --- Returns tolerance reached during approximation.
92         --- If approximation was not done, returns zero.
93         ---
94
95     TolReached2d(me)  
96         returns Real from Standard;
97         ---Purpose:
98         --- Returns tolerance reached during approximation.
99         --- If approximation was not done, returns zero.
100         ---
101              
102     Face1  (me) 
103         returns  Face  from  TopoDS; 
104         ---C++: return const& 
105         ---Purpose:
106         --- Returns first of processed faces
107         ---
108          
109     Face2  (me) 
110         returns  Face  from  TopoDS; 
111         ---C++: return const& 
112         ---Purpose:
113         --- Returns second of processed faces
114         ---
115      
116     TangentFaces  (me)
117         returns Boolean from Standard; 
118         ---Purpose:
119         --- Returns True if faces are tangent
120         --- 
121     PrepareLines3D (me:out; 
122             bToSplit: Boolean from Standard=Standard_True);
123         ---Purpose: 
124         --- Provides post-processing the result lines. 
125         --- <bToSplit> - the flag.                   
126         --  In case of <bToSplit> is true the closed 3D-curves will be splitted  
127         --  on parts. 
128         --  In case of <bToSplit> is false the closed 3D-curves remain untouched.  
129     
130     SetList (me: in out;  
131             ListOfPnts: in out ListOfPntOn2S from IntSurf);
132     
133     ----------------------------------------------------------
134     --                  private  block
135     ----------------------------------------------------------
136     MakeCurve(me: in out; Index   : Integer from Standard;
137                           D1      : TopolTool from Adaptor3d;
138                           D2      : TopolTool from Adaptor3d)
139         is protected; 
140         
141     ComputeTolReached3d(me:out) 
142         is  protected; 
143  
144     SetContext(me:out; 
145           aContext : Context from BOPInt); 
146         ---Purpose:
147         --- Sets the intersecton context 
148         
149     Context(me) 
150         returns Context from BOPInt; 
151     ---C++:  return const &     
152         ---Purpose:
153         --- Gets the intersecton context        
154         ---       
155 fields 
156  
157     myIsDone       : Boolean         from Standard;
158     myIntersector  : Intersection    from IntPatch;
159     myLConstruct   : LineConstructor from IntTools;
160     myHS1          : HSurface        from GeomAdaptor;
161     myHS2          : HSurface        from GeomAdaptor;
162     myNbrestr      : Integer         from Standard;
163
164     myTolReached2d : Real            from Standard;
165     myTolReached3d : Real            from Standard;
166     
167     myApprox       : Boolean         from Standard;
168     myApprox1      : Boolean         from Standard;
169     myApprox2      : Boolean         from Standard;
170     myTolApprox    : Real            from Standard;
171     
172     mySeqOfCurve : SequenceOfCurves from IntTools;
173
174     myTangentFaces: Boolean         from Standard; 
175     myFace1       : Face from TopoDS;  
176     myFace2       : Face from TopoDS;  
177     myPnts        : SequenceOfPntOn2Faces from IntTools;
178     
179     myListOfPnts  : ListOfPntOn2S from IntSurf;   
180     
181     myContext     : Context from  BOPInt;        
182
183 end FaceFace from IntTools;
184