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