0023024: Update headers of OCCT files
[occt.git] / src / BOPTools / BOPTools.cdl
1 -- Created on: 2000-11-16
2 -- Created by: Peter KURNEV
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 package  BOPTools
22
23     ---Purpose:  
24     ---          Contains main and auxiliary classes to fill the   
25     ---          Data Structure (DS) to provide  boolean  
26     ---          operations between a couple BRep shapes.  
27     --- 
28      
29 uses   
30     gp,  
31     Bnd,
32     TopAbs,
33     TopoDS, 
34     TopTools, 
35     TCollection, 
36     TColStd,  
37     SortTools, 
38     Geom, 
39     Geom2d, 
40     ProjLib,
41     BooleanOperations,
42     BOPTColStd,
43     IntTools 
44     
45 is   
46     ---
47     ---                     E  n  u  m  e  r  a  t  i  o  n  s            
48     ---  
49     enumeration IntersectionStatus is
50         INTERSECTED,
51         BOUNDINGBOXINTERSECTED,
52         BOUNDINGBOXOFSUBSHAPESINTERSECTED,
53         NONINTERSECTED,
54         UNKNOWN
55         end IntersectionStatus;
56         
57     enumeration CheckStatus is
58         CHKUNKNOWN,
59         VERTEXVERTEX,
60         VERTEXEDGE,
61         VERTEXFACE,
62         EDGEEDGE,
63         EDGEEDGECOMBLK,
64         EDGEFACE,
65         EDGEFACECOMBLK,
66         FACEFACE,
67         BADSHRANKRANGE,
68         NULLSRANKRANGE
69         end CheckStatus;
70     ---
71     ---                          T  h  e    C  l  a  s  s  e  s                 
72     ---  
73      
74     ---                                        +==========================+    
75     ---                                        !    Fillers and friends   !
76     ---                                        +==========================+ 
77     class PaveFiller;     
78         ---Purpose: 
79         --- Class that provides   
80         --- 1. computation of interferences of all types    
81         --- 2. storing the interferences in interferences' pool     
82         --- 3. building new vertices, edges and storing them in the DS         
83         --- 4. preparing the information about PaveBlocks, CommonBlocks         
84         ---
85     class DSFiller;  
86         ---Purpose: 
87         --- Class that provides  
88         --- 1. creation of the data structure (DS)       
89         --- 2. creation of the interferences' pool       
90         --- 3. invokation of PaveFiller->Perform() to fill the DS 
91         ---   
92         --- 
93     class DEProcessor;   
94         ---Purpose: 
95         --- Class to compute and store in interferences' pool 
96         --- and DS  the following values        
97         --- for degenerated edges 
98         --- 1.  Paves/Pave set(s)
99         --- 2.  Split parts 
100         --- 3.  States (3D) for split parts 
101         ---  
102     class PCurveMaker; 
103         ---Purpose: 
104         --- Class to compute  p-curves for the edges and theirs  
105         --- split parts
106         ---
107
108     class SolidStateFiller;  
109         ---Purpose: 
110         --- Class to compute states (3D)  for the edges  (and theirs  
111         --- split parts), vertices, wires, faces, shells
112         ---
113     class StateFiller; 
114         ---Purpose: 
115         --- Root class for state fillers
116         --- 
117     class WireStateFiller; 
118         ---Purpose: 
119         --- Class to compute states (3D)  for the edges  (and theirs  
120         --- split parts), vertices, wires 
121         --- 
122     ---                                        +================================+    
123     ---                                        !    Paves and Blocks of Paves   !
124     ---                                        +================================+ 
125     class Pave;   
126         ---Purpose: 
127         --- Class for storing info about a vertex on an edge  
128         ---
129     class PaveBlock;   
130         ---Purpose: 
131         --- Class for storing info about a couple  
132         --- of neighbouring paves on an edge 
133         ---
134     class PaveSet;    
135         ---Purpose: 
136         --- Class for storing/sorting paves that  belong to an edge 
137         --- 
138     
139     class PaveBlockIterator; 
140         ---Purpose: 
141         --- Class providing iterations for PaveSet to   
142         --- have the right order of paves along the edge                 
143         ---   
144     class ComparePave; 
145         ---Purpose: 
146         --- Class providing interface necessary for sorting     
147         --- paves along the edge                 
148         --- 
149     class CommonBlock; 
150         ---Purpose: 
151         --- Class for storing info about a couple  
152         --- of pave blocks that are considered as common 
153         ---  
154     class CommonBlockAPI; 
155         ---Purpose: 
156         --- Class that provide useful tools to manage with  
157         --- List Of Common  Block-s
158         ---  
159    
160      
161     
162     ---                                        +==============+    
163     ---                                        ! Intrferences !
164     ---                                        +==============+ 
165     class ShapeShapeInterference;  
166         ---Purpose: 
167         --- Root class for storing  an  Interference        
168         --- between a couple BRep shapes  
169         --- 
170     class VVInterference;  
171         ---Purpose: 
172         --- Class for storing  an Verex/Vertex 
173         --- interference     
174         --- 
175     class VSInterference;  
176         ---Purpose: 
177         --- Class for storing  an Verex/Face 
178         --- interference     
179         --- 
180     class VEInterference;  
181         ---Purpose: 
182         --- Class for storing  an Verex/Edge 
183         --- interference     
184         --- 
185     class EEInterference;  
186         ---Purpose: 
187         --- Class for storing  an Edge/Edge 
188         --- interference     
189         --- 
190     class ESInterference;  
191         ---Purpose: 
192         --- Class for storing  an Edge/Face 
193         --- interference     
194         --- 
195     class SSInterference; 
196         ---Purpose: 
197         --- Class for storing  an Face/Face 
198         --- interference     
199         --- 
200     class Interference;  
201         ---Purpose: 
202         --- Class for storing information about an  
203         --- interference     
204         --- 
205     class InterferenceLine; 
206         ---Purpose: 
207         --- Class for storing information about all  
208         --- interferences for given shape 
209         ---      
210     class InterferencePool; 
211         ---Purpose: 
212         --- Class for storing information about  
213         --- results of all interferences for all shapes 
214         --- 
215     
216     ---                                        +=======+    
217     ---                                        ! Tools !
218     ---                                        +=======+ 
219     class Tools;  
220     class Tools2D; 
221     class Tools3D;  
222     ---                                        +=============+    
223     ---                                        ! Miscellanea !
224     ---                                        +=============+ 
225     
226     
227     class DEInfo; 
228         ---Purpose: 
229         --- Class for storing  information about  
230         --- a degenerated edge 
231         --- 
232     class PointBetween;  
233         ---Purpose: 
234         --- Class for storing geometry information about  
235         --- a point between neighbouring paves along 
236         --- an edge 
237         --- 
238     class Curve;  
239         ---Purpose: 
240         --- Class for storing information about  
241         --- intersection curve and set of paves on it     
242         ---     
243     class CoupleOfInteger;    
244
245     
246     class Checker;    
247         ---Purpose: 
248         --- Class that provides the algorithm 
249         --- to  check a shape on self-interference.    
250         ---       
251     
252     class CheckResult;
253         ---Purpose: provides a container to store faulty
254         ---         sub - shapes in tested shape with type of
255         ---         detected faulty
256     
257     ---
258     ---                          P  o  i  n  t  e  r  s                 
259     ---
260     pointer PInterferencePool to InterferencePool from BOPTools;
261     pointer PPaveFiller to PaveFiller from BOPTools; 
262     pointer PDSFiller to DSFiller from BOPTools;   
263     pointer PShapeShapeInterference to  ShapeShapeInterference from BOPTools; 
264     ---
265     ---                 I  n  s  t  a  n  t  i  a  t  i  o  n  s  
266     ---   
267     class ListOfCoupleOfInteger instantiates 
268         List from TCollection (CoupleOfInteger from BOPTools);                       
269
270     class ListOfInterference instantiates 
271         List from TCollection (Interference from BOPTools);  
272
273     class  CArray1OfInterferenceLine instantiates  
274         CArray1 from BOPTColStd(InterferenceLine from BOPTools);
275      
276     class  CArray1OfSSInterference instantiates  
277         CArray1 from BOPTColStd(SSInterference from BOPTools); 
278          
279     class  CArray1OfESInterference instantiates  
280         CArray1 from BOPTColStd(ESInterference from BOPTools);  
281          
282     class  CArray1OfVSInterference instantiates  
283         CArray1 from BOPTColStd(VSInterference from BOPTools);  
284
285     class  CArray1OfEEInterference instantiates  
286         CArray1 from BOPTColStd(EEInterference from BOPTools); 
287
288     class  CArray1OfVEInterference instantiates  
289         CArray1 from BOPTColStd(VEInterference from BOPTools);
290
291     class  CArray1OfVVInterference instantiates  
292         CArray1 from BOPTColStd(VVInterference from BOPTools);   
293      
294     class PavePool instantiates   
295         CArray1 from BOPTColStd(PaveSet from BOPTools); 
296         
297     class ListOfPave instantiates  
298         List from TCollection(Pave);   
299         
300     class ListOfCommonBlock  instantiates  
301         List    from TCollection(CommonBlock from BOPTools); 
302       
303     class ListOfPaveBlock  instantiates  
304         List    from TCollection(PaveBlock from BOPTools); 
305      
306     class CommonBlockPool    instantiates  
307         CArray1 from BOPTColStd (ListOfCommonBlock from BOPTools); 
308
309     class SplitShapesPool instantiates  
310         CArray1 from BOPTColStd (ListOfPaveBlock from  BOPTools); 
311      
312     class  Array1OfPave instantiates  
313         Array1 from TCollection (Pave from BOPTools); 
314       
315     class  CArray1OfPave instantiates  
316         CArray1 from BOPTColStd (Pave from BOPTools); 
317      
318     class QuickSortPave instantiates  
319         QuickSort from SortTools   (Pave from BOPTools, 
320                                     Array1OfPave from BOPTools, 
321                                     ComparePave from BOPTools); 
322
323     class IndexedDataMapOfIntegerState instantiates  
324         IndexedDataMap from TCollection  (Integer from Standard, 
325                                           StateOfShape from BooleanOperations,
326                                           MapIntegerHasher from TColStd);        
327
328     class SequenceOfCurves instantiates  
329         Sequence from TCollection(Curve from BOPTools);
330
331     class IndexedDataMapOfShapeWithState instantiates  
332         IndexedDataMap from TCollection  (Shape          from TopoDS, 
333                                           StateOfShape from BooleanOperations,
334                                           ShapeMapHasher from TopTools);  
335     class  ListOfShapeEnum  instantiates         
336         List from TCollection(ShapeEnum from TopAbs);                             
337
338     class IndexedDataMapOfIntegerDEInfo instantiates  
339         IndexedDataMap from TCollection  (Integer from Standard, 
340                                           DEInfo from BOPTools,
341                                           MapIntegerHasher from TColStd);       
342     
343     class Array2OfIntersectionStatus instantiates 
344         Array2 from TCollection (IntersectionStatus from BOPTools);
345         
346     class HArray2OfIntersectionStatus instantiates 
347         HArray2 from TCollection (IntersectionStatus from BOPTools,
348                                   Array2OfIntersectionStatus from BOPTools);
349                                   
350      class ListOfCheckResults instantiates 
351         List from TCollection (CheckResult from BOPTools);
352
353     class RoughShapeIntersector; 
354     class IteratorOfCoupleOfShape; 
355     class SSIntersectionAttribute;
356
357 -- 
358 --  additions 
359 --
360     class CoupleOfIntegerMapHasher; 
361     class PaveBlockMapHasher;
362      
363     class IndexedMapOfCoupleOfInteger instantiates
364         IndexedMap from TCollection(CoupleOfInteger from BOPTools,
365                                     CoupleOfIntegerMapHasher from BOPTools); 
366                                     
367     class IndexedDataMapOfIntegerPaveSet instantiates  
368         IndexedDataMap from TCollection  (Integer from Standard, 
369                                           PaveSet from BOPTools,
370                                           MapIntegerHasher from TColStd);       
371     class IMapOfPaveBlock instantiates  
372         IndexedMap from TCollection(PaveBlock from BOPTools, 
373                                     PaveBlockMapHasher from BOPTools);
374           
375     class IDMapOfPaveBlockIMapOfPaveBlock instantiates  
376         IndexedDataMap from TCollection  (PaveBlock from BOPTools , 
377                                           IMapOfPaveBlock from BOPTools,
378                                           PaveBlockMapHasher from BOPTools); 
379          
380     class IDMapOfPaveBlockIMapOfInteger instantiates  
381         IndexedDataMap from TCollection  (PaveBlock from BOPTools , 
382                                           IndexedMapOfInteger from TColStd,
383                                           PaveBlockMapHasher from BOPTools);                               
384                                           
385     class SequenceOfPaveBlock instantiates  
386         Sequence from TCollection(PaveBlock from BOPTools);
387
388 end  BOPTools;