b311480e |
1 | -- Created on: 2001-06-29 |
2 | -- Created by: Michael KLOKOV |
973c2be1 |
3 | -- Copyright (c) 2001-2014 OPEN CASCADE SAS |
b311480e |
4 | -- |
973c2be1 |
5 | -- This file is part of Open CASCADE Technology software library. |
b311480e |
6 | -- |
d5f74e42 |
7 | -- This library is free software; you can redistribute it and/or modify it under |
8 | -- the terms of the GNU Lesser General Public License version 2.1 as published |
973c2be1 |
9 | -- by the Free Software Foundation, with special exception defined in the file |
10 | -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
11 | -- distribution for complete text of the license and disclaimer of any warranty. |
b311480e |
12 | -- |
973c2be1 |
13 | -- Alternatively, this file may be used under the terms of Open CASCADE |
14 | -- commercial license or contractual agreement. |
7fd59977 |
15 | |
16 | class BeanFaceIntersector from IntTools |
17 | |
18 | ---Purpose: The class BeanFaceIntersector computes ranges of parameters on |
19 | -- the curve of a bean(part of edge) that bound the parts of bean which |
20 | -- are on the surface of a face according to edge and face tolerances. |
21 | -- Warning: The real boundaries of the face are not taken into account, |
22 | -- Most of the result parts of the bean lays only inside the region of the surface, |
23 | -- which includes the inside of the face. And the parts which are out of this region can be |
24 | -- excluded from the result. |
25 | |
26 | uses |
27 | |
28 | SequenceOfRoots from IntTools, |
29 | MarkedRangeSet from IntTools, |
30 | SequenceOfRanges from IntTools, |
1e143abb |
31 | Context from IntTools, |
7fd59977 |
32 | ExtCS from Extrema, |
33 | ProjectPointOnSurf from GeomAPI, |
34 | Edge from TopoDS, |
35 | Face from TopoDS, |
36 | Curve from BRepAdaptor, |
37 | Surface from BRepAdaptor, |
1e143abb |
38 | Box from Bnd, |
7fd59977 |
39 | CurveRangeSample from IntTools, |
40 | SurfaceRangeSample from IntTools, |
41 | ListOfCurveRangeSample from IntTools, |
42 | ListOfSurfaceRangeSample from IntTools, |
43 | CurveRangeLocalizeData from IntTools, |
44 | SurfaceRangeLocalizeData from IntTools, |
45 | Surface from Geom |
46 | |
47 | is |
48 | Create returns BeanFaceIntersector from IntTools; |
49 | |
50 | Create(theEdge: Edge from TopoDS; |
1e143abb |
51 | theFace: Face from TopoDS) |
52 | returns BeanFaceIntersector from IntTools; |
53 | ---Purpose: |
54 | --- Initializes the algorithm |
55 | --- |
56 | -- Warning: |
57 | --- The parts of the edge which are on |
58 | --- the surface of the face and belong to |
59 | --- the whole in the face (if there is) |
60 | --- is considered as result |
61 | --- |
7fd59977 |
62 | |
63 | Create(theCurve : Curve from BRepAdaptor; |
1e143abb |
64 | theSurface : Surface from BRepAdaptor; |
65 | theBeanTolerance: Real from Standard; |
66 | theFaceTolerance: Real from Standard) |
67 | returns BeanFaceIntersector from IntTools; |
68 | ---Purpose: |
69 | --- Initializes the algorithm |
70 | --- |
7fd59977 |
71 | |
72 | Create(theCurve : Curve from BRepAdaptor; |
1e143abb |
73 | theSurface : Surface from BRepAdaptor; |
74 | theFirstParOnCurve: Real from Standard; |
75 | theLastParOnCurve : Real from Standard; |
76 | theUMinParameter : Real from Standard; |
77 | theUMaxParameter : Real from Standard; |
78 | theVMinParameter : Real from Standard; |
79 | theVMaxParameter : Real from Standard; |
80 | theBeanTolerance : Real from Standard; |
81 | theFaceTolerance : Real from Standard) |
82 | returns BeanFaceIntersector from IntTools; |
83 | ---Purpose: |
84 | --- Initializes the algorithm |
85 | --- theUMinParameter, ... are used for |
86 | --- optimization purposes |
87 | --- |
7fd59977 |
88 | |
89 | Init(me: in out;theEdge: Edge from TopoDS; |
1e143abb |
90 | theFace: Face from TopoDS); |
91 | ---Purpose: |
92 | --- Initializes the algorithm |
93 | --- |
94 | -- Warning: |
95 | --- The parts of the edge which are on |
96 | --- the surface of the face and belong to |
97 | --- the whole in the face (if there is) |
98 | --- is considered as result |
99 | --- |
7fd59977 |
100 | |
101 | Init(me: in out;theCurve : Curve from BRepAdaptor; |
1e143abb |
102 | theSurface : Surface from BRepAdaptor; |
103 | theBeanTolerance: Real from Standard; |
104 | theFaceTolerance: Real from Standard); |
105 | ---Purpose: |
106 | --- Initializes the algorithm |
107 | --- |
7fd59977 |
108 | |
109 | Init(me: in out;theCurve : Curve from BRepAdaptor; |
1e143abb |
110 | theSurface : Surface from BRepAdaptor; |
111 | theFirstParOnCurve: Real from Standard; |
112 | theLastParOnCurve : Real from Standard; |
113 | theUMinParameter : Real from Standard; |
114 | theUMaxParameter : Real from Standard; |
115 | theVMinParameter : Real from Standard; |
116 | theVMaxParameter : Real from Standard; |
117 | theBeanTolerance : Real from Standard; |
118 | theFaceTolerance : Real from Standard); |
119 | ---Purpose: |
120 | --- Initializes the algorithm |
121 | --- theUMinParameter, ... are used for |
122 | --- optimization purposes |
123 | --- |
7fd59977 |
124 | |
4f189102 |
125 | SetContext(me: in out; |
1e143abb |
126 | theContext: Context from IntTools); |
127 | ---Purpose: |
128 | --- Sets the intersecton context |
129 | --- |
4f189102 |
130 | Context(me) |
1e143abb |
131 | returns Context from IntTools; |
132 | ---C++: return const & |
4f189102 |
133 | ---Purpose: |
1e143abb |
134 | --- Gets the intersecton context |
135 | --- |
7fd59977 |
136 | SetBeanParameters(me: in out;theFirstParOnCurve : Real from Standard; |
1e143abb |
137 | theLastParOnCurve : Real from Standard); |
138 | ---Purpose: |
139 | --- Set restrictions for curve |
140 | --- |
7fd59977 |
141 | |
142 | SetSurfaceParameters(me: in out;theUMinParameter : Real from Standard; |
1e143abb |
143 | theUMaxParameter : Real from Standard; |
144 | theVMinParameter : Real from Standard; |
145 | theVMaxParameter : Real from Standard); |
146 | ---Purpose: |
147 | --- Set restrictions for surface |
148 | --- |
7fd59977 |
149 | |
150 | Perform(me: in out); |
1e143abb |
151 | ---Purpose: |
152 | --- Launches the algorithm |
153 | --- |
7fd59977 |
154 | |
155 | IsDone(me) returns Boolean from Standard; |
1e143abb |
156 | ---C++: inline |
7fd59977 |
157 | |
158 | Result(me) |
1e143abb |
159 | returns SequenceOfRanges from IntTools; |
160 | ---C++: return const & |
7fd59977 |
161 | |
162 | Result(me; theResults: out SequenceOfRanges from IntTools); |
163 | |
164 | -- private |
165 | |
166 | ComputeAroundExactIntersection(me: in out) |
1e143abb |
167 | is private; |
7fd59977 |
168 | |
169 | ComputeLinePlane(me: in out) |
1e143abb |
170 | is private; |
4e57c75e |
171 | |
7fd59977 |
172 | FastComputeExactIntersection(me: in out) |
4e57c75e |
173 | returns Integer from Standard is private; |
7fd59977 |
174 | |
175 | ComputeUsingExtremum(me: in out) |
1e143abb |
176 | is private; |
7fd59977 |
177 | |
178 | ComputeNearRangeBoundaries(me: in out) |
1e143abb |
179 | is private; |
7fd59977 |
180 | |
181 | ComputeLocalized(me: in out) |
1e143abb |
182 | returns Boolean from Standard is private; |
183 | |
7fd59977 |
184 | ComputeRangeFromStartPoint(me: in out; ToIncreaseParameter : Boolean from Standard; |
1e143abb |
185 | theParameter : Real from Standard; |
186 | theUParameter : Real from Standard; |
187 | theVParameter : Real from Standard) |
188 | is private; |
7fd59977 |
189 | |
190 | ComputeRangeFromStartPoint(me: in out; ToIncreaseParameter : Boolean from Standard; |
1e143abb |
191 | theParameter : Real from Standard; |
192 | theUParameter : Real from Standard; |
193 | theVParameter : Real from Standard; |
194 | theIndex : Integer from Standard) |
195 | is private; |
7fd59977 |
196 | |
197 | Distance(me: in out; theArg : Real from Standard; |
1e143abb |
198 | theUParameter: out Real from Standard; |
199 | theVParameter: out Real from Standard) |
200 | returns Real from Standard |
201 | is private; |
7fd59977 |
202 | |
203 | Distance(me: in out; theArg: Real from Standard) |
1e143abb |
204 | returns Real from Standard |
205 | is private; |
7fd59977 |
206 | |
207 | LocalizeSolutions(me: in out; theCurveRange : CurveRangeSample from IntTools; |
1e143abb |
208 | theBoxCurve : Box from Bnd; |
209 | theSurfaceRange: SurfaceRangeSample from IntTools; |
210 | theBoxSurface : Box from Bnd; |
211 | theCurveData : in out CurveRangeLocalizeData from IntTools; |
212 | theSurfaceData : in out SurfaceRangeLocalizeData from IntTools; |
213 | theListCurveRange: in out ListOfCurveRangeSample from IntTools; |
214 | theListSurfaceRange: in out ListOfSurfaceRangeSample from IntTools) |
215 | returns Boolean from Standard |
216 | is private; |
7fd59977 |
217 | |
218 | TestComputeCoinside(me: in out) |
1e143abb |
219 | returns Boolean from Standard |
220 | is private; |
7fd59977 |
221 | |
222 | fields |
223 | |
224 | -- sources |
225 | myCurve : Curve from BRepAdaptor; |
226 | mySurface : Surface from BRepAdaptor; |
227 | myTrsfSurface : Surface from Geom; |
228 | myFirstParameter : Real from Standard; |
229 | myLastParameter : Real from Standard; |
230 | myUMinParameter : Real from Standard; |
231 | myUMaxParameter : Real from Standard; |
232 | myVMinParameter : Real from Standard; |
233 | myVMaxParameter : Real from Standard; |
234 | myBeanTolerance : Real from Standard; |
235 | myFaceTolerance : Real from Standard; |
236 | |
237 | myCurveResolution: Real from Standard; |
238 | myCriteria : Real from Standard; |
239 | |
240 | -- tools |
241 | myExtrema : ExtCS from Extrema; |
242 | myProjector : ProjectPointOnSurf from GeomAPI; |
243 | myRangeManager : MarkedRangeSet from IntTools; |
244 | myDeflection : Real from Standard; |
1e143abb |
245 | myContext : Context from IntTools; |
7fd59977 |
246 | |
247 | -- results |
248 | myResults : SequenceOfRanges from IntTools; |
249 | myIsDone : Boolean from Standard; |
250 | |
251 | end BeanFaceIntersector from IntTools; |