d9f1fac8cd94bb19819dafc80aa42ed8ece6d719
[occt.git] / src / BOP / BOP.cdl
1 -- File:        BOP.cdl
2 -- Created:     Thu Mar 29 10:55:43 2001
3 -- Author:      Peter KURNEV
4 --              <pkv@irinox>
5 ---Copyright:    Matra Datavision 2001
6
7 package BOP  
8
9     ---Purpose: Contains main and auxiliary classes to provide boolean operations   
10     --          (BO)   Common,  Cut,  Fuse, Section between a couple BRep shapes. 
11
12 uses   
13     Geom2dInt,
14     TopoDS, 
15     TopAbs, 
16     TopTools, 
17     TopExp, 
18     gp,  
19     TColgp,
20     ProjLib, 
21     Geom2d, 
22     Geom,  
23     TColStd, 
24     TopTools,
25     TCollection,  
26     BRepClass, 
27     BRep, 
28     BRepClass3d,
29     BooleanOperations,
30     IntTools,
31     BOPTools, 
32     BOPTColStd
33
34 is 
35     ---
36     ---                     E  n  u  m  e  r  a  t  i  o  n  s            
37     --- 
38     enumeration Operation is  
39         COMMON, 
40         FUSE, 
41         CUT,  
42         CUT21,
43         SECTION, 
44         UNKNOWN
45         end Operation;  
46         
47     enumeration LoopEnum is 
48         ANYLOOP, 
49         BOUNDARY, 
50         BLOCK  
51         end LoopEnum; 
52
53     enumeration CheckStatus is
54         CheckUnknown,
55         BadType,
56         SelfIntersect,
57         TooSmallEdge,
58         NonRecoverableFace,
59         IncompatibilityOfVertex,
60         IncompatibilityOfEdge,
61         IncompatibilityOfFace
62         end CheckStatus;
63     ---
64     ---                          T  h  e    C  l  a  s  s  e  s                 
65     ---   
66     
67     deferred class Builder;   
68         ---Purpose: 
69         --- Root class for performing a BO      
70         ---  
71     class WireWire;  
72         ---Purpose: 
73         --- Performs BO (Common,Cut,Fuse) for wires(edges)  
74         ---   
75     class WireShell;  
76         ---Purpose: 
77         --- Performs BO (Common,Cut,Fuse) for wire(edge)/shell(face)  
78         --- 
79     class WireSolid; 
80         ---Purpose: 
81         --- Performs BO (Common,Cut,Fuse) for wire(edge)/solid  
82         ---  
83     class WireShape; 
84         ---Purpose: 
85         --- Root  class  for  Wire/...  Biulders  
86         ---  
87     
88     class SolidSolid; 
89         ---Purpose: 
90         --- Performs BO (Common,Cut,Fuse) for solids  
91         ---
92     class ShellShell; 
93         ---Purpose: 
94         --- Performs BO (Common,Cut,Fuse) for shell/shell arguments  
95         --- 
96     class ShellSolid; 
97         ---Purpose: 
98         --- Performs BO (Common,Cut,Fuse) for shell/solid arguments  
99         ---  
100      
101     class EmptyBuilder; 
102         ---Purpose: 
103         --- Performs BO (Common,Cut,Fuse)   for shapes 
104         --- in cases when one of arguments(or both) is(are) empty
105         ---              
106     deferred class HistoryCollector;
107
108     class SolidSolidHistoryCollector;
109
110     class ShellSolidHistoryCollector;
111     
112     class WireSolidHistoryCollector;
113     
114     class SectionHistoryCollector;
115
116     class BuilderTools; 
117     ---Purpose: 
118         --- Handy  tools to help building a result 
119         ---     
120     class Section;  
121         ---Purpose: 
122         --- Performs the BO (Section) 
123         --- for the shapes where it is valid one   
124         --- 
125     class  Refiner; 
126         ---Purpose: 
127         --- Refines the result of the BO if necessary   
128         ---      
129     class ShapeSet; 
130         ---Purpose: 
131         --- Root auxiliary class for set of shapes
132         --- to build new faces from wires,new solids from shells 
133         ---
134     class WireEdgeSet;  
135         ---Purpose: 
136         --- Class for set of edges and wires to build new faces
137         ---                      
138     class ShellFaceSet; 
139         ---Purpose: 
140         --- Class for set of faces and shells to build new solids
141         --- 
142     class BlockBuilder; 
143         ---Purpose: 
144         ---  Auxiliary class to storage and operate with data of  
145         ---  connexity blocks inside  
146         ---      
147     class BlockIterator;
148         ---Purpose: 
149         ---  Auxiliary class to iterate data inside the given  
150         ---  connexity block 
151         ---     
152     class Loop;  
153         ---Purpose: 
154         ---  Auxiliary class containing data about an existing shape  
155         ---  (Shell,Wire)or a set of shapes (Faces,Edges) which are connex.
156         ---     
157     class LoopSet;  
158         ---Purpose: 
159         ---  Auxiliary class to storage  and  iterate on  Loop(s) 
160         ---  
161
162     deferred  class LoopClassifier; 
163         ---Purpose: 
164         ---  Root class to classify loops in order to build Areas 
165         ---  
166     deferred  class CompositeClassifier;  
167         ---Purpose: 
168         ---  Cclassify composite Loops, i.e, loops that can be  
169         ---  either a Shape, or a block of Elements 
170         --- 
171     class WireEdgeClassifier;   
172         ---Purpose: 
173         ---  Classify loops that consist of edges and wires
174         --- 
175     class ShellFaceClassifier;
176         ---Purpose: 
177         ---  Classify loops that consist of faces and shells
178         --- 
179     class AreaBuilder;    
180         ---Purpose: 
181         ---  Root class to provide building valid areas from        
182         ---  corresponding shape sets  
183         ---
184     class Area2dBuilder;    
185         ---Purpose: 
186         ---  Constructs areas for Faces from a WireEdgeSet        
187         ---
188     class FaceAreaBuilder;   
189         ---Purpose: 
190         ---   constructs Loops for  Faces from a WireEdgeSet        
191         ---
192     class FaceBuilder;   
193         ---Purpose: 
194         ---   construct Faces from a WireEdgeSet        
195         ---
196     class Area3dBuilder; 
197         ---Purpose: 
198         ---  Constructs areas for Faces from a WireEdgeSet    
199         ---
200     class SolidAreaBuilder; 
201         ---Purpose: 
202         ---  Constructs areas for Solids from a ShellFaceSet        
203         --- 
204     class SolidBuilder;
205         ---Purpose: 
206         ---  Constructs Solids from a ShellFaceSet        
207         --- 
208     class EdgeInfo; 
209         ---Purpose: 
210         ---  Auxiliary class to store data about edges on  a  face 
211         ---  that have common vertex             
212         --- 
213     class FaceInfo;  
214         ---Purpose: 
215         ---  Auxiliary class to store data about faces on a  shell 
216         ---  that have common edge               
217         --- 
218     class WireSplitter;   
219         ---Purpose: 
220         ---  The algorithm to split invalid (multiconnexed)   
221         ---  wires on a face onto valid  ones 
222         ---
223     class ShellSplitter; 
224         ---Purpose: 
225         ---  The algorithm to split invalid (multiconnexed)   
226         ---  shells on a solid onto valid  ones 
227         ---
228     class ConnexityBlock; 
229         ---Purpose: 
230         ---  Auxiliary class to create and  store data about a set  
231         ---  of connex shapes 
232         ---          
233     class WESCorrector;  
234         ---Purpose:   
235         ---  The algorithm to change the WES contents      
236         ---  The NewWES will contain only wires  instead of   
237         ---  wires and edges. 
238         ---
239     class SFSCorrector;   
240         ---Purpose: 
241         ---  The algorithm to change the SFS contents.
242         ---  The NewSFS will contain only shells  instead of   
243         ---  shells and faces.
244         ---
245          
246     class CorrectTolerances;  
247         ---Purpose: 
248         ---  Auxiliary class to provide valid values  for result's tolerances'     
249         ---
250     class Draw; 
251         ---Purpose: 
252         ---  Auxiliary class to display intermediate results in  Draw's windows     
253         ---  for the debugging purposes 
254         ---      
255     class SDFWESFiller; 
256         ---Purpose: 
257         ---  Fills a  wire  edges set for a couple of faces that are same domain 
258         ---   
259
260     class CheckResult;
261     class ArgumentAnalyzer;
262     ---
263     ---                          P  o  i  n  t  e  r  s                 
264     ---
265     pointer PWireEdgeSet  to WireEdgeSet  from BOP;
266     pointer PShellFaceSet to ShellFaceSet from BOP;
267     pointer PBuilder to Builder from BOP;  
268
269     ---
270     ---                 I  n  s  t  a  n  t  i  a  t  i  o  n  s  
271     ---
272     class ListOfConnexityBlock instantiates  
273         List from TCollection(ConnexityBlock from BOP);  
274         
275     class ListOfLoop instantiates  
276         List from TCollection(Loop from BOP); 
277      
278     class ListOfListOfLoop instantiates  
279         List from TCollection(ListOfLoop from BOP); 
280          
281     class ListOfEdgeInfo  instantiates   
282         List from TCollection(EdgeInfo from BOP);                        
283
284     class IndexedDataMapOfVertexListEdgeInfo instantiates 
285         IndexedDataMap from TCollection(Shape          from TopoDS,
286                                         ListOfEdgeInfo from BOP,
287                                         ShapeMapHasher from TopTools); 
288     class ListOfFaceInfo  instantiates   
289         List from TCollection(FaceInfo from BOP);  
290      
291     class IndexedDataMapOfEdgeListFaceInfo instantiates 
292         IndexedDataMap from TCollection(Shape          from TopoDS,
293                                         ListOfFaceInfo from BOP,
294                                         ShapeMapHasher from TopTools);  
295     class SeqOfSeqOfShape instantiates  
296         Sequence from TCollection(SequenceOfShape from TopTools); 
297
298     
299 -- 
300     class SolidClassifier; 
301
302     pointer PSoClassif to SolidClassifier from BRepClass3d; 
303      
304     class IndexedDataMapOfSolidClassifier instantiates  
305         IndexedDataMap from TCollection (Shape from TopoDS,
306                                          PSoClassif from BOP,
307                                          ShapeMapHasher from TopTools);
308                                          
309     class ListOfCheckResult instantiates  
310         List from TCollection(CheckResult from BOP);
311 --
312                                            
313                                           
314 end BOP;
315