ec0cdc0e |
1 | -- Created by: Eugeny MALTCHIKOV |
d5f74e42 |
2 | -- Copyright (c) 2013-2014 OPEN CASCADE SAS |
b311480e |
3 | -- |
973c2be1 |
4 | -- This file is part of Open CASCADE Technology software library. |
b311480e |
5 | -- |
d5f74e42 |
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 |
973c2be1 |
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. |
b311480e |
11 | -- |
973c2be1 |
12 | -- Alternatively, this file may be used under the terms of Open CASCADE |
13 | -- commercial license or contractual agreement. |
7fd59977 |
14 | |
15 | class EdgeEdge from IntTools |
ec0cdc0e |
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 |
7fd59977 |
30 | |
ec0cdc0e |
31 | is |
32 | |
33 | Create |
34 | returns EdgeEdge from IntTools; |
35 | ---C++: alias "~IntTools_EdgeEdge();" |
36 | ---C++: inline |
37 | ---Purpose: |
38 | -- Empty contructor |
7fd59977 |
39 | |
ec0cdc0e |
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 |
7fd59977 |
88 | |
ec0cdc0e |
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 |
7fd59977 |
118 | |
7fd59977 |
119 | Perform(me:out); |
ec0cdc0e |
120 | ---Purpose: |
121 | -- Performs the intersection between edges |
7fd59977 |
122 | |
ec0cdc0e |
123 | ComputeLineLine(me:out) |
124 | is protected; |
125 | ---Purpose: |
126 | -- Computes Line/Line intersection. |
ec0cdc0e |
127 | |
128 | FindSolutions(me:out; |
129 | theR1, theR2 : Range from IntTools; |
130 | theRanges1 : out SequenceOfRanges from IntTools; |
131 | theRanges2 : out SequenceOfRanges from IntTools) |
132 | is protected; |
133 | ---Purpose: |
0d19eb34 |
134 | -- Looking for the exact intersection ranges |
ec0cdc0e |
135 | |
136 | MergeSolutions(me:out; |
137 | theRanges1, theRanges2 : SequenceOfRanges from IntTools) |
138 | is protected; |
139 | ---Purpose: |
140 | -- Merges found solutions |
141 | |
142 | FindParameters(myclass; |
143 | theBAC : Curve from BRepAdaptor; |
144 | aT1,aT2 : Real from Standard; |
145 | theRes : Real from Standard; |
a743e2e5 |
146 | thePTol : Real from Standard; |
ec0cdc0e |
147 | theCBox : Box from Bnd; |
148 | aTB1,aTB2 : out Real from Standard) |
149 | returns Boolean from Standard |
150 | is protected; |
151 | ---Purpose: |
152 | -- Looking for the range of the edge whick is in the box |
7fd59977 |
153 | |
ec0cdc0e |
154 | CheckCoincidence(me:out; |
155 | aT11, aT12 : Real from Standard; |
156 | aT21, aT22 : Real from Standard; |
157 | theCriteria : Real from Standard; |
158 | theCurveRes1: Real from Standard) |
159 | returns Integer from Standard |
160 | is protected; |
161 | ---Purpose: |
162 | -- Checks if edges coincide on the ranges |
7fd59977 |
163 | |
ec0cdc0e |
164 | AddSolution(me:out; |
165 | aT11, aT12, aT21, aT22 : Real from Standard; |
166 | theType : ShapeEnum from TopAbs) |
167 | is protected; |
168 | ---Purpose: |
169 | -- Adds common part of the given type to myCommonParts |
7fd59977 |
170 | |
ec0cdc0e |
171 | FindBestSolution(me:out; |
172 | aT11, aT12, aT21, aT22 : Real from Standard; |
173 | aT1, aT2 : out Real from Standard) |
174 | is protected; |
175 | ---Purpose: |
176 | -- Looking for the minimal distance between edges on the ranges |
177 | |
178 | IsIntersection(me:out; |
179 | aT11, aT12 : Real from Standard; |
180 | aT21, aT22 : Real from Standard) |
181 | returns Boolean from Standard |
182 | is protected; |
183 | ---Purpose: |
184 | -- Checks is there an intersection between edges on the given ranges |
185 | -- (for nearly conicident edges) |
f793011e |
186 | |
ec0cdc0e |
187 | IsDone(me) |
188 | returns Boolean from Standard; |
189 | ---C++: inline |
190 | ---Purpose: |
191 | -- Returns TRUE if common part(s) is(are) found |
7fd59977 |
192 | |
ec0cdc0e |
193 | CommonParts(me) |
194 | returns SequenceOfCommonPrts from IntTools; |
195 | ---C++: inline |
196 | ---C++: return const& |
197 | ---Purpose: |
198 | -- Returns common parts |
199 | |
200 | fields |
201 | -- source data |
202 | myEdge1 : Edge from TopoDS is protected; |
203 | myEdge2 : Edge from TopoDS is protected; |
204 | |
205 | myGeom1 : Curve from Geom is protected; |
206 | myGeom2 : Curve from Geom is protected; |
207 | |
208 | myCurve1 : Curve from BRepAdaptor is protected; |
209 | myCurve2 : Curve from BRepAdaptor is protected; |
210 | |
211 | myTol1 : Real from Standard is protected; |
212 | myTol2 : Real from Standard is protected; |
213 | myTol : Real from Standard is protected; |
214 | |
215 | myRes1 : Real from Standard is protected; |
a743e2e5 |
216 | myRes2 : Real from Standard is protected; |
217 | |
218 | myPTol1 : Real from Standard is protected; |
219 | myPTol2 : Real from Standard is protected; |
ec0cdc0e |
220 | |
221 | myRange1 : Range from IntTools is protected; |
222 | myRange2 : Range from IntTools is protected; |
223 | |
224 | -- results |
225 | mySwap : Boolean from Standard is protected; |
226 | myErrorStatus : Integer from Standard is protected; |
227 | myCommonParts : SequenceOfCommonPrts from IntTools is protected; |
7fd59977 |
228 | |
229 | end EdgeEdge; |