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