0024750: Replace instantiations of TCollection generic classes by NCollection templat...
[occt.git] / src / IntTools / IntTools_EdgeEdge.cdl
1 -- Created by: Eugeny MALTCHIKOV
2 -- Copyright (c) 2013-2014 OPEN CASCADE SAS
3 --
4 -- This file is part of Open CASCADE Technology software library.
5 --
6 -- This library is free software; you can redistribute it and/or modify it under
7 -- the terms of the GNU Lesser General Public License version 2.1 as published
8 -- by the Free Software Foundation, with special exception defined in the file
9 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 -- distribution for complete text of the license and disclaimer of any warranty.
11 --
12 -- Alternatively, this file may be used under the terms of Open CASCADE
13 -- commercial license or contractual agreement.
14
15 class EdgeEdge from IntTools 
16     ---Purpose:   
17     -- The class provides Edge/Edge intersection algorithm 
18     -- based on the intersection between edges bounding boxes.
19
20 uses  
21     Real  from Standard, 
22     Box   from Bnd, 
23     Range from IntTools, 
24     Edge  from TopoDS,
25     Curve from Geom,
26     Curve from BRepAdaptor,
27     ShapeEnum from TopAbs,  
28     SequenceOfRanges from IntTools,
29     SequenceOfCommonPrts from IntTools 
30     
31 is  
32
33     Create 
34     returns EdgeEdge from IntTools; 
35     ---C++: alias "~IntTools_EdgeEdge();"
36     ---C++: inline 
37     ---Purpose:  
38     -- Empty contructor  
39     
40     Create ( 
41         theEdge1 : Edge from TopoDS;  
42         theEdge2 : Edge from TopoDS)  
43     returns EdgeEdge from IntTools; 
44     ---C++: inline 
45     ---Purpose:  
46     -- Contructor    
47  
48     Create ( 
49         theEdge1   : Edge from TopoDS;  
50         aT11, aT12 : Real from Standard;
51         theEdge2   : Edge from TopoDS;  
52         aT21, aT22 : Real from Standard)
53     returns EdgeEdge from IntTools; 
54     ---C++: inline
55     ---Purpose:  
56     -- Contructor    
57     
58     SetEdge1(me:out;  
59         theEdge : Edge from TopoDS);
60     ---C++: inline
61     ---Purpose:  
62     -- Sets the first edge
63  
64     SetEdge1(me:out;  
65         theEdge : Edge from TopoDS; 
66         aT1, aT2 : Real from Standard);
67     ---C++: inline
68     ---Purpose:  
69     -- Sets the first edge and its range
70     
71     SetRange1(me:out;
72         theRange1 : Range from IntTools);
73     ---C++: inline
74     ---Purpose:  
75     -- Sets the range for the first edge
76     
77     SetRange1(me:out;
78         aT1, aT2 : Real from Standard);
79     ---C++: inline
80     ---Purpose:  
81     -- Sets the range for the first edge
82     
83     SetEdge2(me:out;  
84         theEdge : Edge from TopoDS);
85     ---C++: inline
86     ---Purpose:  
87     -- Sets the second edge 
88      
89     SetEdge2(me:out;  
90         theEdge : Edge from TopoDS; 
91         aT1, aT2 : Real from Standard);
92     ---C++: inline
93     ---Purpose:  
94     -- Sets the first edge and its range
95     
96     SetRange2(me:out;
97         theRange : Range from IntTools);
98     ---C++: inline
99     ---Purpose:  
100     -- Sets the range for the second edge
101     
102     SetRange2(me:out;
103         aT1, aT2 : Real from Standard);
104     ---C++: inline
105     ---Purpose:  
106     -- Sets the range for the second edge  
107
108     CheckData(me:out) 
109     is protected; 
110     ---C++: inline
111     ---Purpose:  
112     -- Checks the data
113
114     Prepare(me:out) 
115     is protected; 
116     ---Purpose:  
117     -- Prepares the data
118
119     Perform(me:out); 
120     ---Purpose:  
121     -- Performs the intersection between edges
122     
123     ComputeLineLine(me:out)
124     is protected;
125     ---Purpose:
126     -- Computes Line/Line intersection.  
127
128     FindSolutions(me:out;  
129         theRanges1 : out SequenceOfRanges from IntTools;
130         theRanges2 : out SequenceOfRanges from IntTools;
131         bSplit2    : out Boolean from Standard)
132     is protected;
133     ---Purpose:
134     -- Intermediate function
135  
136     FindSolutions(me:out;  
137         theR1, theR2 : Range from IntTools;
138         theBox2      : Box from Bnd;
139         theRanges1   : out SequenceOfRanges from IntTools;
140         theRanges2   : out SequenceOfRanges from IntTools)
141     is protected;
142     ---Purpose:
143     -- Looking for the exact intersection ranges
144     
145     MergeSolutions(me:out; 
146         theRanges1 : SequenceOfRanges from IntTools;
147         theRanges2 : SequenceOfRanges from IntTools;
148         bSplit2    : Boolean from Standard)
149     is protected; 
150     ---Purpose:
151     -- Merges found solutions
152
153     FindParameters(myclass; 
154         theBAC      : Curve from BRepAdaptor;
155         aT1, aT2    : Real  from Standard;  
156         theRes      : Real  from Standard;
157         thePTol     : Real  from Standard; 
158         theResCoeff : Real  from Standard;
159         theCBox     : Box   from Bnd; 
160         aTB1, aTB2  : out Real from Standard)
161     returns Boolean from Standard 
162     is protected; 
163     ---Purpose:
164     -- Looking for the range of the edge whick is in the box
165      
166     CheckCoincidence(me:out; 
167         aT11, aT12  : Real from Standard; 
168         aT21, aT22  : Real from Standard;  
169         theCriteria : Real from Standard; 
170         theCurveRes1: Real from Standard)
171     returns Integer from Standard
172     is protected;
173     ---Purpose:  
174     -- Checks if edges coincide on the ranges
175      
176     AddSolution(me:out; 
177         aT11, aT12, aT21, aT22 : Real from Standard; 
178         theType : ShapeEnum from TopAbs)
179     is protected;
180     ---Purpose:
181     -- Adds common part of the given type to myCommonParts
182      
183     FindBestSolution(me:out; 
184         aT11, aT12, aT21, aT22 : Real from Standard;  
185         aT1, aT2 : out Real from Standard) 
186     is protected;
187     ---Purpose:
188     -- Looking for the minimal distance between edges on the ranges
189       
190     IsIntersection(me:out; 
191         aT11, aT12 : Real from Standard; 
192         aT21, aT22 : Real from Standard)
193     returns Boolean from Standard
194     is protected;
195     ---Purpose:  
196     -- Checks is there an intersection between edges on the given ranges  
197     -- (for nearly conicident edges)
198     
199     IsDone(me) 
200     returns Boolean from Standard;
201     ---C++: inline 
202     ---Purpose: 
203     -- Returns TRUE if common part(s) is(are) found
204     
205     CommonParts(me) 
206     returns SequenceOfCommonPrts from IntTools;
207     ---C++: inline 
208     ---C++: return  const&   
209     ---Purpose: 
210     -- Returns common parts
211     
212 fields  
213     -- source data
214     myEdge1  : Edge  from TopoDS is protected; 
215     myEdge2  : Edge  from TopoDS is protected;  
216     
217     myGeom1  : Curve from Geom   is protected; 
218     myGeom2  : Curve from Geom   is protected;  
219     
220     myCurve1 : Curve from BRepAdaptor is protected; 
221     myCurve2 : Curve from BRepAdaptor is protected;  
222     
223     myTol1   : Real  from Standard is protected; 
224     myTol2   : Real  from Standard is protected; 
225     myTol    : Real  from Standard is protected;   
226     
227     myRes1   : Real  from Standard is protected;  
228     myRes2   : Real  from Standard is protected;   
229      
230     myResCoeff1 : Real  from Standard is protected;
231     myResCoeff2 : Real  from Standard is protected;
232      
233     myPTol1  : Real  from Standard is protected; 
234     myPTol2  : Real  from Standard is protected; 
235     
236     myRange1 : Range from IntTools is protected; 
237     myRange2 : Range from IntTools is protected;  
238     
239     -- results
240     mySwap        : Boolean from Standard is protected; 
241     myErrorStatus : Integer from Standard is protected; 
242     myCommonParts : SequenceOfCommonPrts from IntTools is protected;
243     
244 end EdgeEdge;