0024972: Problem of the influence of the includes order during compilation
[occt.git] / src / IntTools / IntTools_BeanFaceIntersector.cdl
1 -- Created on: 2001-06-29
2 -- Created by: Michael KLOKOV
3 -- Copyright (c) 2001-2014 OPEN CASCADE SAS
4 --
5 -- This file is part of Open CASCADE Technology software library.
6 --
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
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.
12 --
13 -- Alternatively, this file may be used under the terms of Open CASCADE
14 -- commercial license or contractual agreement.
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,
31     Context            from IntTools,
32     ExtCS              from Extrema,
33     ProjectPointOnSurf from GeomAPI,
34     Edge               from TopoDS,
35     Face               from TopoDS,
36     Curve              from BRepAdaptor,
37     Surface            from BRepAdaptor,
38     Box                from Bnd,
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;
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     ---
62
63     Create(theCurve        : Curve   from BRepAdaptor;
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     ---
71
72     Create(theCurve          : Curve   from BRepAdaptor;
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     ---
88
89     Init(me: in out;theEdge: Edge from TopoDS;
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     ---
100
101     Init(me: in out;theCurve        : Curve   from BRepAdaptor;
102                theSurface      : Surface from BRepAdaptor;
103               theBeanTolerance: Real from Standard;
104               theFaceTolerance: Real from Standard);
105     ---Purpose: 
106     --- Initializes the algorithm
107     ---
108
109     Init(me: in out;theCurve          : Curve   from BRepAdaptor;
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     ---
124
125     SetContext(me: in out;  
126          theContext: Context from IntTools);
127     ---Purpose:
128     --- Sets the intersecton context
129     ---
130     Context(me) 
131      returns Context from IntTools; 
132     ---C++:  return const &  
133     ---Purpose:
134     --- Gets the intersecton context
135     ---   
136     SetBeanParameters(me: in out;theFirstParOnCurve : Real from Standard;
137                  theLastParOnCurve  : Real from Standard);
138     ---Purpose: 
139     --- Set restrictions for curve
140     ---
141
142     SetSurfaceParameters(me: in out;theUMinParameter : Real from Standard;
143             theUMaxParameter : Real from Standard;
144                 theVMinParameter : Real from Standard;
145                 theVMaxParameter : Real from Standard);
146     ---Purpose: 
147     --- Set restrictions for surface
148     ---
149
150     Perform(me: in out);
151     ---Purpose: 
152     --- Launches the algorithm
153     ---
154
155     IsDone(me) returns Boolean from Standard;
156      ---C++: inline
157
158     Result(me)
159      returns SequenceOfRanges from IntTools;
160     ---C++: return const &
161
162     Result(me; theResults: out SequenceOfRanges from IntTools);
163
164     -- private
165
166     ComputeAroundExactIntersection(me: in out)
167      is private;
168
169     ComputeLinePlane(me: in out)
170      is private;
171  
172     FastComputeExactIntersection(me: in out)
173         returns Integer from Standard is private; 
174
175     ComputeUsingExtremum(me: in out)
176      is private;
177
178     ComputeNearRangeBoundaries(me: in out)
179      is private;
180
181     ComputeLocalized(me: in out)
182      returns Boolean from Standard is private;
183  
184     ComputeRangeFromStartPoint(me: in out; ToIncreaseParameter : Boolean from Standard;
185                             theParameter        : Real from Standard;
186                             theUParameter       : Real from Standard;
187                             theVParameter       : Real from Standard)
188      is private;
189
190     ComputeRangeFromStartPoint(me: in out; ToIncreaseParameter : Boolean from Standard;
191                             theParameter        : Real from Standard;
192                             theUParameter       : Real from Standard;
193                             theVParameter       : Real from Standard;
194                             theIndex            : Integer from Standard)
195      is private;
196
197     Distance(me: in out; theArg       : Real from Standard;
198                 theUParameter: out Real from Standard;
199                 theVParameter: out Real from Standard)
200      returns Real from Standard
201      is private;
202
203     Distance(me: in out; theArg: Real from Standard)
204      returns Real from Standard
205      is private;
206
207     LocalizeSolutions(me: in out; theCurveRange  : CurveRangeSample from IntTools;
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;
217
218     TestComputeCoinside(me: in out)
219      returns Boolean from Standard
220         is private;
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;
245     myContext        : Context from IntTools;
246     
247     -- results
248     myResults        : SequenceOfRanges from IntTools;
249     myIsDone         : Boolean from Standard;
250     
251 end BeanFaceIntersector from IntTools;