0024157: Parallelization of assembly part of BO
[occt.git] / src / BOPAlgo / BOPAlgo_PaveFiller.cdl
1 -- Created by: Peter KURNEV
2 -- Copyright (c) 2010-2014 OPEN CASCADE SAS
3 -- Copyright (c) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
4 -- Copyright (c) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT,
5 --                         EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 --
7 -- This file is part of Open CASCADE Technology software library.
8 --
9 -- This library is free software; you can redistribute it and/or modify it under
10 -- the terms of the GNU Lesser General Public License version 2.1 as published
11 -- by the Free Software Foundation, with special exception defined in the file
12 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
13 -- distribution for complete text of the license and disclaimer of any warranty.
14 --
15 -- Alternatively, this file may be used under the terms of Open CASCADE
16 -- commercial license or contractual agreement.
17
18 class PaveFiller from BOPAlgo 
19    inherits Algo from BOPAlgo 
20     ---Purpose: 
21
22 uses 
23     Pnt from gp,  
24     ShapeEnum from TopAbs,  
25     Vertex from TopoDS,
26     Face from TopoDS, 
27     Edge from TopoDS,
28      
29     BaseAllocator from BOPCol, 
30     ListOfShape from BOPCol, 
31     MapOfInteger from BOPCol, 
32     ListOfInteger from BOPCol, 
33     DataMapOfShapeInteger from BOPCol,   
34     IndexedDataMapOfShapeInteger from BOPCol,   
35     DataMapOfIntegerListOfInteger from BOPCol, 
36     DataMapOfShapeListOfShape from BOPCol,
37     IndexedDataMapOfShapeListOfShape from BOPCol, 
38     DataMapOfIntegerReal from BOPCol, 
39     DataMapOfIntegerInteger from BOPCol,
40     --  
41     Context from BOPInt,
42     -- 
43     SectionAttribute from BOPAlgo, 
44     
45     DS  from BOPDS,
46     PDS from BOPDS, 
47     Iterator  from BOPDS, 
48     PIterator from BOPDS, 
49     PaveBlock from BOPDS, 
50     Curve from BOPDS,  
51     IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS,
52     MapOfPaveBlock from BOPDS,  
53     IndexedMapOfPaveBlock from BOPDS,  
54     ListOfPaveBlock from BOPDS, 
55     ListOfPave from BOPDS, 
56     ListOfPntOn2S from IntSurf, 
57     Curve from IntTools,
58     
59     DataMapOfPaveBlockListOfPaveBlock from BOPDS, 
60     VectorOfCurve from BOPDS 
61      
62 --raises
63
64 is 
65     Create 
66       returns PaveFiller from BOPAlgo;  
67     ---C++: alias "Standard_EXPORT virtual ~BOPAlgo_PaveFiller();"
68      
69     Create (theAllocator: BaseAllocator from BOPCol) 
70       returns PaveFiller from BOPAlgo;   
71         
72     DS(me:out) 
73       returns DS from BOPDS; 
74     ---C++:return  const &   
75     
76       
77     PDS(me:out) 
78       returns PDS from BOPDS; 
79      
80     Iterator(me:out) 
81       returns PIterator from BOPDS;  
82     ---C++:return const & 
83      
84     Arguments(me) 
85       returns ListOfShape from BOPCol; 
86     ---C++: return const & 
87     ---C++: alias "Standard_EXPORT void SetArguments(const BOPCol_ListOfShape& theLS);" 
88
89     Context(me:out) 
90       returns Context from BOPInt;  
91        
92     SetSectionAttribute(me:out; 
93         theSecAttr : SectionAttribute from BOPAlgo); 
94          
95     Perform(me:out) 
96       is redefined;   
97     --  
98     -- protected methods 
99     -- 
100     Clear(me:out) 
101       is virtual protected;  
102           
103     Init(me:out) 
104       is virtual protected;
105      
106     Prepare(me:out) 
107       is  protected;
108      
109     PerformVV(me:out) 
110       is virtual protected;   
111      
112     PerformVE(me:out) 
113       is virtual protected;  
114      
115     PerformVF(me:out) 
116       is virtual protected;  
117          
118     PerformEE(me:out) 
119       is virtual protected; 
120           
121     PerformEF(me:out) 
122       is virtual protected; 
123      
124     PerformFF(me:out) 
125       is virtual protected;
126      
127     
128     TreatVerticesEE(me:out) 
129       is protected; 
130
131     MakeSplitEdges(me:out) 
132       is protected;   
133         
134     MakeBlocks(me:out) 
135       is protected; 
136          
137     MakePCurves(me:out) 
138       is protected; 
139          
140     ProcessDE(me:out) 
141       is protected;  
142        
143     FillShrunkData(me:out; 
144         thePB:out PaveBlock from BOPDS) 
145       is protected;   
146  
147     FillShrunkData(me:out; 
148         theType1: ShapeEnum from TopAbs; 
149         theType2: ShapeEnum from TopAbs) 
150       is protected;      
151  
152     PerformVerticesEE(me:out; 
153         theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
154         theAllocator:out BaseAllocator from BOPCol) 
155       returns Integer from Standard 
156       is protected; 
157          
158     PerformVerticesEF(me:out; 
159         theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
160         theAllocator:out BaseAllocator from BOPCol) 
161       returns Integer from Standard 
162       is protected; 
163      
164     CheckFacePaves(me:out; 
165         theVnew:Vertex from TopoDS; 
166         theMIF:MapOfInteger from BOPCol) 
167       returns Boolean from Standard 
168       is protected;  
169           
170     CheckFacePaves(myclass; 
171         theN:Integer from Standard; 
172         theMIFOn:MapOfInteger from BOPCol; 
173         theMIFIn:MapOfInteger from BOPCol) 
174       returns Boolean from Standard 
175       is protected;  
176          
177     IsExistingVertex(me; 
178         theP:Pnt from gp; 
179         theTol:Real from Standard; 
180         theMVOn:MapOfInteger from BOPCol) 
181       returns Boolean from Standard 
182       is protected; 
183
184     PutPavesOnCurve(me:out; 
185         theMVOn   : MapOfInteger from BOPCol; 
186         theTolR3D : Real from Standard; 
187         theNC     : out Curve from BOPDS;  
188         nF1       : Integer from Standard; 
189         nF2       : Integer from Standard; 
190         theMI     : MapOfInteger from BOPCol; 
191         theMVEF   : MapOfInteger from BOPCol; 
192         theMVTol  : out DataMapOfIntegerReal from BOPCol) 
193       is protected;   
194     ---Purpose: 
195     -- Checks and puts paves from <theMVOn> on the curve <theNC>.
196
197     ExtendedTolerance(me:out; 
198         nV       : Integer from Standard; 
199         aMI      : MapOfInteger from BOPCol; 
200         aTolVExt : out Real from  Standard;
201         aType    : Integer from Standard = 0) 
202       returns Boolean from  Standard 
203       is protected; 
204     ---Purpose: 
205     -- Depending on the parameter aType it checks whether  
206     -- the vertex nV was created in EE or EF intersections. 
207     -- If so, it increases aTolVExt from tolerance value of vertex to  
208     -- the max distance from vertex nV to the ends of the range of common part. 
209     -- Possible values of aType: 
210     -- 1 - checks only EE; 
211     -- 2 - checks only EF;
212     -- other - checks both types of intersections.
213          
214     PutBoundPaveOnCurve(me:out;  
215         theF1: Face from TopoDS;  
216         theF2: Face from TopoDS;  
217         theTolR3D:Real from Standard; 
218         theNC:out Curve from BOPDS;  
219         theMVOnIn:out MapOfInteger from BOPCol;
220         theMVB:out MapOfInteger from BOPCol) 
221       is protected; 
222
223     IsExistingPaveBlock(me:out; 
224         thePB:PaveBlock from BOPDS;  
225         theNC:Curve from BOPDS;
226         theTolR3D:Real from Standard; 
227         theMPB:IndexedMapOfPaveBlock from BOPDS; 
228         thePBOut:out PaveBlock from BOPDS)
229       returns Boolean from Standard 
230       is protected;  
231  
232     IsExistingPaveBlock(me:out; 
233         thePB:PaveBlock from BOPDS;  
234         theNC:Curve from BOPDS;
235         theTolR3D:Real from Standard; 
236         theLSE:ListOfInteger from BOPCol) 
237       returns Boolean from Standard 
238       is protected;   
239      
240     PostTreatFF(me:out; 
241         theMSCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
242         theMVI:out DataMapOfShapeInteger from BOPCol;  
243         theDMExEdges:out DataMapOfPaveBlockListOfPaveBlock from BOPDS; 
244         theDMI:out DataMapOfIntegerInteger from BOPCol;
245         theAllocator:out BaseAllocator from BOPCol) 
246       returns Integer from Standard 
247       is protected;  
248     ---Purpose: 
249     -- Treatment of section edges.
250     
251     --
252     --  Treatment of degenerated edges  
253     -- 
254     FindPaveBlocks(me:out;  
255         theV:Integer from Standard; 
256         theF:Integer from Standard; 
257         theLPB:out ListOfPaveBlock from BOPDS) 
258       is protected; 
259
260     FillPaves(me:out;  
261         theV:Integer from Standard; 
262         theE:Integer from Standard; 
263         theF:Integer from Standard; 
264         theLPB: ListOfPaveBlock from BOPDS; 
265         thePB: PaveBlock from BOPDS) 
266       is protected; 
267          
268     MakeSplitEdge(me:out;  
269         theV:Integer from Standard; 
270         theF:Integer from Standard) 
271       is protected;  
272          
273     GetEFPnts(me:out;
274         nF1 : Integer from Standard;
275         nF2 : Integer from Standard;
276         aListOfPnts: out ListOfPntOn2S from IntSurf)
277       is protected; 
278        
279     PutEFPavesOnCurve(me:out; 
280         theNC      : out Curve from BOPDS; 
281         theMI      : MapOfInteger from BOPCol;
282         theMVEF    : MapOfInteger from BOPCol;
283         theMVTol   : out DataMapOfIntegerReal from BOPCol)
284       is protected; 
285     ---Purpose: 
286     -- Checks and puts paves created in EF intersections on the curve <theNC>.
287  
288     PutStickPavesOnCurve(me:out; 
289         aF1        : Face from TopoDS; 
290         aF2        : Face from TopoDS;  
291         theMI      : MapOfInteger from BOPCol;
292         theNC      : out Curve from BOPDS; 
293         theMVStick : MapOfInteger from BOPCol; 
294         theMVTol   : out DataMapOfIntegerReal from BOPCol)
295       is protected;  
296     ---Purpose: 
297     -- Puts stick paves on the curve <theNC>
298  
299     GetStickVertices(me:out; 
300         nF1        : Integer from Standard; 
301         nF2        : Integer from Standard; 
302         theMVStick : out MapOfInteger from BOPCol;
303         theMVEF    : out MapOfInteger from BOPCol; 
304         theMI      : out MapOfInteger from BOPCol)
305       is protected;  
306     ---Purpose: 
307     -- Collects indices of vertices created in all intersections between 
308     -- two faces (<nF1> and <nF2>) to the map <theMVStick>. 
309     -- Also, it collects indices of EF vertices to the <theMVEF> map  
310     -- and indices of all subshapes of these two faces to the <theMI> map.
311  
312     GetFullShapeMap(me:out; 
313         nF    : Integer from Standard; 
314         theMI : out MapOfInteger from BOPCol) 
315       is protected; 
316     ---Purpose: 
317     -- Collects index nF and indices of all subshapes of the shape with index <nF>
318     -- to the map <theMI>. 
319     
320     RemoveUsedVertices(me:out; 
321         theNC : out Curve from BOPDS; 
322         theMV : out MapOfInteger from BOPCol)  
323       is protected; 
324     ---Purpose: 
325     -- Removes indices of vertices that are already on the
326     -- curve <theNC> from the map <theMV>.  
327     -- It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.
328  
329     PutPaveOnCurve(me:out; 
330         nV        : Integer from Standard; 
331         theTolR3D : Real from Standard;
332         theNC     : out Curve from BOPDS; 
333         theMI     : MapOfInteger from BOPCol;
334         theMVTol  : out DataMapOfIntegerReal from BOPCol;
335         aType     : Integer from Standard = 0)
336       is protected; 
337     ---Purpose: 
338     -- Puts the pave nV on the curve theNC.  
339     -- Parameter aType defines whether to check the pave with 
340     -- extended tolerance: 
341     -- 0 - do not perform the check; 
342     -- other - perform the check (aType goes to ExtendedTolerance).
343  
344     ProcessExistingPaveBlocks(me:out; 
345         theInt     : Integer from Standard; 
346         theMPBOnIn : IndexedMapOfPaveBlock from BOPDS; 
347         theMSCPB   : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
348         theMVI     : out DataMapOfShapeInteger from BOPCol; 
349         theMVB     : MapOfInteger from BOPCol; 
350         theMPB     : out MapOfPaveBlock from BOPDS)
351       is  protected; 
352     ---Purpose:              
353     -- Adds the existing edges from the map <theMPBOnIn> which interfere  
354     -- with the vertices from <theMVB> map to the post treatment of section edges.
355  
356     UpdateExistingPaveBlocks(me:out; 
357         thePB   : PaveBlock from BOPDS;
358         theLPB  : out ListOfPaveBlock from BOPDS; 
359         nF1     : Integer from Standard; 
360         nF2     : Integer from Standard)
361       is protected; 
362     ---Purpose: 
363     -- Replaces existing pave block <thePB> with new pave blocks <theLPB>. 
364     -- The list <theLPB> contains images of <thePB> which were created in 
365     -- the post treatment of section edges.
366  
367     TreatNewVertices(me:out; 
368         theMVI    : IndexedDataMapOfShapeInteger from BOPCol; 
369         theImages : out IndexedDataMapOfShapeListOfShape from BOPCol) 
370       is protected; 
371     ---Purpose: 
372     -- Treatment of vertices that were created in EE intersections. 
373  
374     PutClosingPaveOnCurve (me:out; 
375         aNC :out Curve from BOPDS)  
376       is protected; 
377     ---Purpose: 
378     -- Put paves on the curve <aBC> in case when <aBC>   
379     -- is closed 3D-curve  
380      
381     PreparePostTreatFF(me:out; 
382         aInt   : Integer from Standard; 
383         aPB    : PaveBlock from BOPDS;  
384         aMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
385         aMVI   : out DataMapOfShapeInteger from BOPCol; 
386         aVC    : out VectorOfCurve from BOPDS)
387       is protected; 
388     ---Purpose: 
389     -- Keeps data for post treatment 
390      
391     RefineFaceInfoOn(me:out) 
392       is protected; 
393     ---Purpose: 
394     -- Refines the state On for the all faces having 
395     -- state information 
396
397     UpdateFaceInfo(me:out;
398         theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS) 
399       is protected; 
400     ---Purpose: 
401     -- Updates the information about faces
402      
403     ForceInterfVE(me:out; 
404         nV   : Integer from Standard; 
405         aPB  : out PaveBlock from BOPDS; 
406         aMPB : out MapOfPaveBlock from BOPDS) 
407       is protected;
408     ---Purpose: 
409     -- Updates tolerance of vertex with index <nV>  
410     -- to make it interfere with edge
411     
412     ForceInterfVF(me:out; 
413         nV : Integer from Standard; 
414         nF : Integer from Standard) 
415       returns Boolean from Standard
416       is protected;
417     ---Purpose: 
418     -- Updates tolerance of vertex with index <nV>  
419     -- to make it interfere with face with index <nF> 
420     
421     CheckPlanes(me; 
422         nF1 : Integer from Standard; 
423         nF2 : Integer from Standard)
424       returns Boolean from Standard 
425       is protected; 
426     ---Purpose: 
427     -- Checks if there are any common or intersecting sub shapes
428     -- between two planar faces.  
429      
430     SplitEdge(me:out; 
431         nE  : Integer from Standard; 
432         nV1 : Integer from Standard; 
433         aT1 : Real from Standard;
434         nV2 : Integer from Standard; 
435         aT2 : Real from Standard) 
436     returns Integer from Standard 
437     is protected;
438     ---Purpose: 
439     -- Creates new edge from the edge nE with vertices nV1 and nV2 
440     -- and returns the index of that new edge in the DS.
441  
442     UpdatePaveBlocks(me:out;  
443         theDMI : DataMapOfIntegerInteger from BOPCol) 
444     is protected; 
445     ---Purpose: 
446     -- Updates pave blocks which have the paves with indices contained  
447     -- in the map <theDMI>.
448         
449 fields  
450     myArguments   : ListOfShape from BOPCol is protected;  
451     myDS          : PDS from BOPDS is protected; 
452     myIterator    : PIterator from BOPDS is protected; 
453     myContext     : Context from BOPInt is protected;   
454     mySectionAttribute : SectionAttribute from BOPAlgo is protected;
455
456 end PaveFiller;