0024247: Wrong result obtained by General Fuse algorithm
[occt.git] / src / BOPAlgo / BOPAlgo_PaveFiller.cdl
1 -- Created by: Peter KURNEV
2 -- Copyright (c) 2010-2012 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 -- The content of this file is subject to the Open CASCADE Technology Public
8 -- License Version 6.5 (the "License"). You may not use the content of this file
9 -- except in compliance with the License. Please obtain a copy of the License
10 -- at http://www.opencascade.org and read it completely before using this file.
11 --
12 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
13 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
14 --
15 -- The Original Code and all software distributed under the License is
16 -- distributed on an "AS IS" basis, without warranty of any kind, and the
17 -- Initial Developer hereby disclaims all such warranties, including without
18 -- limitation, any warranties of merchantability, fitness for a particular
19 -- purpose or non-infringement. Please see the License for the specific terms
20 -- and conditions governing the rights and limitations under the License.
21
22
23 class PaveFiller from BOPAlgo 
24    inherits Algo from BOPAlgo 
25     ---Purpose: 
26
27 uses 
28     Pnt from gp,   
29     Vertex from TopoDS,
30     Face from TopoDS, 
31     Edge from TopoDS,
32      
33     BaseAllocator from BOPCol, 
34     ListOfShape from BOPCol, 
35     MapOfInteger from BOPCol, 
36     ListOfInteger from BOPCol, 
37     DataMapOfShapeInteger from BOPCol,   
38     IndexedDataMapOfShapeInteger from BOPCol,   
39     DataMapOfIntegerListOfInteger from BOPCol, 
40     DataMapOfShapeListOfShape from BOPCol,
41     IndexedDataMapOfShapeListOfShape from BOPCol, 
42     DataMapOfIntegerReal from BOPCol,
43     --  
44     Context from BOPInt,
45     -- 
46     SectionAttribute from BOPAlgo, 
47     
48     DS  from BOPDS,
49     PDS from BOPDS, 
50     Iterator  from BOPDS, 
51     PIterator from BOPDS, 
52     PaveBlock from BOPDS, 
53     Curve from BOPDS,  
54     IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS,
55     MapOfPaveBlock from BOPDS,  
56     ListOfPaveBlock from BOPDS, 
57     ListOfPave from BOPDS, 
58     ListOfPntOn2S from IntSurf, 
59     Curve from IntTools,
60     
61     DataMapOfPaveBlockListOfPaveBlock from BOPDS, 
62     VectorOfCurve from BOPDS 
63      
64 --raises
65
66 is 
67     Create 
68       returns PaveFiller from BOPAlgo;  
69     ---C++: alias "Standard_EXPORT virtual ~BOPAlgo_PaveFiller();"
70      
71     Create (theAllocator: BaseAllocator from BOPCol) 
72       returns PaveFiller from BOPAlgo;   
73         
74     DS(me:out) 
75       returns DS from BOPDS; 
76     ---C++:return  const &   
77     
78       
79     PDS(me:out) 
80       returns PDS from BOPDS; 
81      
82     Iterator(me:out) 
83       returns PIterator from BOPDS;  
84     ---C++:return const & 
85      
86     Arguments(me) 
87       returns ListOfShape from BOPCol; 
88     ---C++: return const & 
89     ---C++: alias "Standard_EXPORT void SetArguments(const BOPCol_ListOfShape& theLS);" 
90
91     Context(me:out) 
92       returns Context from BOPInt;  
93        
94     SetSectionAttribute(me:out; 
95         theSecAttr : SectionAttribute from BOPAlgo); 
96          
97     Perform(me:out) 
98       is redefined;   
99     --  
100     -- protected methods 
101     -- 
102     Clear(me:out) 
103       is virtual protected;  
104           
105     Init(me:out) 
106       is virtual protected;
107       
108     PerformVV(me:out) 
109       is virtual protected;   
110      
111     PerformVE(me:out) 
112       is virtual protected;  
113      
114     PerformVF(me:out) 
115       is virtual protected;  
116          
117     PerformEE(me:out) 
118       is virtual protected; 
119           
120     PerformEF(me:out) 
121       is virtual protected; 
122      
123     PerformFF(me:out) 
124       is virtual protected;
125      
126     
127     TreatVerticesEE(me:out) 
128       is protected; 
129
130     MakeSplitEdges(me:out) 
131       is protected;   
132         
133     MakeBlocks(me:out) 
134       is protected; 
135          
136     MakePCurves(me:out) 
137       is protected; 
138          
139     ProcessDE(me:out) 
140       is protected;  
141        
142     FillShrunkData(me:out; 
143         thePB:out PaveBlock from BOPDS) 
144       is protected;   
145          
146     PerformVerticesEE(me:out; 
147         theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
148         theAllocator:out BaseAllocator from BOPCol) 
149       returns Integer from Standard 
150       is protected; 
151          
152     PerformVerticesEF(me:out; 
153         theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
154         theAllocator:out BaseAllocator from BOPCol) 
155       returns Integer from Standard 
156       is protected; 
157      
158     CheckFacePaves(me:out; 
159         theVnew:Vertex from TopoDS; 
160         theMIF:MapOfInteger from BOPCol) 
161       returns Boolean from Standard 
162       is protected;  
163           
164     CheckFacePaves(myclass; 
165         theN:Integer from Standard; 
166         theMIFOn:MapOfInteger from BOPCol; 
167         theMIFIn:MapOfInteger from BOPCol) 
168       returns Boolean from Standard 
169       is protected;  
170          
171     IsExistingVertex(me; 
172         theP:Pnt from gp; 
173         theTol:Real from Standard; 
174         theMVOn:MapOfInteger from BOPCol) 
175       returns Boolean from Standard 
176       is protected; 
177          
178     PutPaveOnCurve(me:out; 
179         theMVOn:MapOfInteger from BOPCol; 
180         theTolR3D:Real from Standard; 
181         theNC:out Curve from BOPDS; 
182         nF1:Integer from Standard; 
183         nF2:Integer from Standard;
184         theMVEF:MapOfInteger from BOPCol; 
185         theMVTol:out DataMapOfIntegerReal from BOPCol) 
186       is protected;  
187
188     ExtendedTolerance(me:out; 
189         nV:Integer from Standard; 
190         aMI:MapOfInteger from BOPCol; 
191         aTolVExt:out Real from  Standard) 
192       returns Boolean from  Standard 
193       is protected;
194          
195     PutBoundPaveOnCurve(me:out;  
196         theF1: Face from TopoDS;  
197         theF2: Face from TopoDS;  
198         theTolR3D:Real from Standard; 
199         theNC:out Curve from BOPDS;  
200         theMVOnIn:out MapOfInteger from BOPCol;
201         theMVB:out MapOfInteger from BOPCol) 
202       is protected; 
203
204     IsExistingPaveBlock(me:out; 
205         thePB:PaveBlock from BOPDS;  
206         theNC:Curve from BOPDS;
207         theTolR3D:Real from Standard; 
208         theMPB:MapOfPaveBlock from BOPDS; 
209         thePBOut:out PaveBlock from BOPDS)
210       returns Boolean from Standard 
211       is protected;  
212  
213     IsExistingPaveBlock(me:out; 
214         thePB:PaveBlock from BOPDS;  
215         theNC:Curve from BOPDS;
216         theTolR3D:Real from Standard; 
217         theLSE:ListOfInteger from BOPCol) 
218       returns Boolean from Standard 
219       is protected;   
220      
221     PostTreatFF(me:out; 
222         theMSCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
223         theMVI:out DataMapOfShapeInteger from BOPCol;  
224         theDMExEd:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
225         theAllocator:out BaseAllocator from BOPCol) 
226       returns Integer from Standard 
227       is protected; 
228     --
229     --  Treatment of degenerated edges  
230     -- 
231     FindPaveBlocks(me:out;  
232         theV:Integer from Standard; 
233         theF:Integer from Standard; 
234         theLPB:out ListOfPaveBlock from BOPDS) 
235       is protected; 
236
237     FillPaves(me:out;  
238         theV:Integer from Standard; 
239         theE:Integer from Standard; 
240         theF:Integer from Standard; 
241         theLPB: ListOfPaveBlock from BOPDS; 
242         thePB: PaveBlock from BOPDS) 
243       is protected; 
244          
245     MakeSplitEdge(me:out;  
246         theV:Integer from Standard; 
247         theF:Integer from Standard) 
248       is protected;  
249          
250     GetEFPnts(me:out;
251         nF1 : Integer from Standard;
252         nF2 : Integer from Standard;
253         aListOfPnts: out ListOfPntOn2S from IntSurf)
254       is protected; 
255        
256     PutEFPavesOnCurve(me:out; 
257         nF1        : Integer from Standard; 
258         nF2        : Integer from Standard; 
259         theNC      : out Curve from BOPDS; 
260         theMVEF    : MapOfInteger from BOPCol; 
261         theMVTol   : out DataMapOfIntegerReal from BOPCol)
262       is protected;
263  
264     PutStickPavesOnCurve(me:out; 
265         nF1        : Integer from Standard; 
266         nF2        : Integer from Standard; 
267         theNC      : out Curve from BOPDS; 
268         theMVStick : MapOfInteger from BOPCol; 
269         theMVTol   : out DataMapOfIntegerReal from BOPCol)
270       is protected; 
271  
272     GetStickVertices(me:out; 
273         nF1        : Integer from Standard; 
274         nF2        : Integer from Standard; 
275         theMVStick : out MapOfInteger from BOPCol;
276         theMVEFk   : out MapOfInteger from BOPCol)
277       is protected; 
278  
279     GetFullFaceMap(me:out; 
280         nF    : Integer from Standard; 
281         theMI : out MapOfInteger from BOPCol) 
282       is protected; 
283        
284        
285     RemoveUsedVertices(me:out; 
286         theNC : out Curve from BOPDS; 
287         theMV : out MapOfInteger from BOPCol)  
288       is protected;
289  
290     PutPaveOnCurve(me:out; 
291         nV        : Integer from Standard; 
292         theTolR3D : Real from Standard;
293         theNC     : Curve from BOPDS;
294         thePB     : out PaveBlock from BOPDS; 
295         theMVTol  : out DataMapOfIntegerReal from BOPCol) 
296       is protected;
297  
298     ProcessExistingPaveBlocks(me:out; 
299         theInt     : Integer from Standard; 
300         theMPBOnIn : MapOfPaveBlock from BOPDS; 
301         theMSCPB   : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
302         theMVI     : out DataMapOfShapeInteger from BOPCol; 
303         theMVB     : MapOfInteger from BOPCol; 
304         theMPB     : out MapOfPaveBlock from BOPDS)
305       is  protected;        
306  
307     UpdateExistingPaveBlocks(me:out; 
308         thePB   : PaveBlock from BOPDS;
309         theLPB  : out ListOfPaveBlock from BOPDS; 
310         nF1     : Integer from Standard; 
311         nF2     : Integer from Standard)
312       is protected;
313  
314     TreatNewVertices(me:out; 
315         theMVI    : IndexedDataMapOfShapeInteger from BOPCol; 
316         theImages : out IndexedDataMapOfShapeListOfShape from BOPCol) 
317       is protected;
318  
319     PutClosingPaveOnCurve (me:out; 
320         aNC :out Curve from BOPDS)  
321       is protected; 
322     ---Purpose:              
323     --- Put paves on the curve <aBC> in case when <aBC>   
324     --- is closed 3D-curve  
325      
326     PreparePostTreatFF(me:out; 
327         aInt   : Integer from Standard; 
328         aPB    : PaveBlock from BOPDS;  
329         aMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS; 
330         aMVI   : out DataMapOfShapeInteger from BOPCol; 
331         aVC    : out VectorOfCurve from BOPDS)
332       is protected; 
333     ---Purpose: 
334     -- Keeps data for post treatment 
335      
336     RefineFaceInfoOn(me:out) 
337       is protected; 
338     ---Purpose: 
339     -- Refines the state On for the all faces having 
340     -- state information 
341
342     UpdateFaceInfo(me:out;
343         theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS) 
344       is protected; 
345     ---Purpose: 
346     -- Updates the information about faces
347      
348     ForceInterfVE(me:out; 
349         nV   : Integer from Standard; 
350         aPB  : out PaveBlock from BOPDS; 
351         aMPB : out MapOfPaveBlock from BOPDS) 
352       is protected;
353     ---Purpose: 
354     -- Updates tolerance of vertex with index <nV>  
355     -- to make it interfere with edge
356     
357     ForceInterfVF(me:out; 
358         nV:Integer from Standard; 
359         nF:Integer from Standard) 
360       returns Boolean from Standard
361       is protected;
362     ---Purpose: 
363     -- Updates tolerance of vertex with index <nV>  
364     -- to make it interfere with face with index <nF> 
365     
366     CheckPlanes(me; 
367         nF1 : Integer from Standard; 
368         nF2 : Integer from Standard)
369       returns Boolean from Standard 
370       is protected; 
371     ---Purpose: 
372     -- Checks if there are any common or intersecting sub shapes
373     -- between two planar faces. 
374
375 fields  
376     myArguments   : ListOfShape from BOPCol is protected;  
377     myDS          : PDS from BOPDS is protected; 
378     myIterator    : PIterator from BOPDS is protected; 
379     myContext     : Context from BOPInt is protected;   
380     mySectionAttribute : SectionAttribute from BOPAlgo is protected;
381
382 end PaveFiller;