0024157: Parallelization of assembly part of BO
[occt.git] / src / BOPAlgo / BOPAlgo_PaveFiller.cdl
CommitLineData
4e57c75e 1-- Created by: Peter KURNEV
973c2be1 2-- Copyright (c) 2010-2014 OPEN CASCADE SAS
4e57c75e 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--
973c2be1 7-- This file is part of Open CASCADE Technology software library.
4e57c75e 8--
d5f74e42 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
973c2be1 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.
4e57c75e 14--
973c2be1 15-- Alternatively, this file may be used under the terms of Open CASCADE
16-- commercial license or contractual agreement.
4e57c75e 17
18class PaveFiller from BOPAlgo
19 inherits Algo from BOPAlgo
20 ---Purpose:
21
22uses
505abfb8 23 Pnt from gp,
24 ShapeEnum from TopAbs,
4e57c75e 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,
b4109929 37 IndexedDataMapOfShapeListOfShape from BOPCol,
78c66ef1 38 DataMapOfIntegerReal from BOPCol,
39 DataMapOfIntegerInteger from BOPCol,
4e57c75e 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,
decdfc94 53 IndexedMapOfPaveBlock from BOPDS,
4e57c75e 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
64is
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;
f1baf495 105
106 Prepare(me:out)
107 is protected;
108
4e57c75e 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;
505abfb8 146
147 FillShrunkData(me:out;
148 theType1: ShapeEnum from TopAbs;
149 theType2: ShapeEnum from TopAbs)
150 is protected;
151
4e57c75e 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;
78c66ef1 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>.
4e57c75e 196
197 ExtendedTolerance(me:out;
78c66ef1 198 nV : Integer from Standard;
199 aMI : MapOfInteger from BOPCol;
200 aTolVExt : out Real from Standard;
201 aType : Integer from Standard = 0)
4e57c75e 202 returns Boolean from Standard
78c66ef1 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.
4e57c75e 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;
decdfc94 227 theMPB:IndexedMapOfPaveBlock from BOPDS;
4e57c75e 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;
78c66ef1 243 theDMExEdges:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
244 theDMI:out DataMapOfIntegerInteger from BOPCol;
4e57c75e 245 theAllocator:out BaseAllocator from BOPCol)
246 returns Integer from Standard
78c66ef1 247 is protected;
248 ---Purpose:
249 -- Treatment of section edges.
250
4e57c75e 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;
4e57c75e 280 theNC : out Curve from BOPDS;
78c66ef1 281 theMI : MapOfInteger from BOPCol;
282 theMVEF : MapOfInteger from BOPCol;
b4109929 283 theMVTol : out DataMapOfIntegerReal from BOPCol)
78c66ef1 284 is protected;
285 ---Purpose:
286 -- Checks and puts paves created in EF intersections on the curve <theNC>.
4e57c75e 287
288 PutStickPavesOnCurve(me:out;
78c66ef1 289 aF1 : Face from TopoDS;
290 aF2 : Face from TopoDS;
291 theMI : MapOfInteger from BOPCol;
4e57c75e 292 theNC : out Curve from BOPDS;
b4109929 293 theMVStick : MapOfInteger from BOPCol;
294 theMVTol : out DataMapOfIntegerReal from BOPCol)
78c66ef1 295 is protected;
296 ---Purpose:
297 -- Puts stick paves on the curve <theNC>
4e57c75e 298
299 GetStickVertices(me:out;
300 nF1 : Integer from Standard;
301 nF2 : Integer from Standard;
302 theMVStick : out MapOfInteger from BOPCol;
78c66ef1 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.
4e57c75e 311
78c66ef1 312 GetFullShapeMap(me:out;
4e57c75e 313 nF : Integer from Standard;
314 theMI : out MapOfInteger from BOPCol)
315 is protected;
78c66ef1 316 ---Purpose:
317 -- Collects index nF and indices of all subshapes of the shape with index <nF>
318 -- to the map <theMI>.
319
4e57c75e 320 RemoveUsedVertices(me:out;
321 theNC : out Curve from BOPDS;
322 theMV : out MapOfInteger from BOPCol)
78c66ef1 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.
4e57c75e 328
329 PutPaveOnCurve(me:out;
330 nV : Integer from Standard;
331 theTolR3D : Real from Standard;
78c66ef1 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).
4e57c75e 343
344 ProcessExistingPaveBlocks(me:out;
345 theInt : Integer from Standard;
decdfc94 346 theMPBOnIn : IndexedMapOfPaveBlock from BOPDS;
4e57c75e 347 theMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
348 theMVI : out DataMapOfShapeInteger from BOPCol;
349 theMVB : MapOfInteger from BOPCol;
350 theMPB : out MapOfPaveBlock from BOPDS)
78c66ef1 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.
4e57c75e 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)
78c66ef1 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.
4e57c75e 366
367 TreatNewVertices(me:out;
368 theMVI : IndexedDataMapOfShapeInteger from BOPCol;
369 theImages : out IndexedDataMapOfShapeListOfShape from BOPCol)
78c66ef1 370 is protected;
371 ---Purpose:
372 -- Treatment of vertices that were created in EE intersections.
4e57c75e 373
374 PutClosingPaveOnCurve (me:out;
375 aNC :out Curve from BOPDS)
376 is protected;
78c66ef1 377 ---Purpose:
378 -- Put paves on the curve <aBC> in case when <aBC>
379 -- is closed 3D-curve
4e57c75e 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:
b4109929 389 -- Keeps data for post treatment
4e57c75e 390
391 RefineFaceInfoOn(me:out)
392 is protected;
393 ---Purpose:
b4109929 394 -- Refines the state On for the all faces having
395 -- state information
4e57c75e 396
397 UpdateFaceInfo(me:out;
398 theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS)
399 is protected;
400 ---Purpose:
b4109929 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;
78c66ef1 413 nV : Integer from Standard;
414 nF : Integer from Standard)
b4109929 415 returns Boolean from Standard
416 is protected;
417 ---Purpose:
418 -- Updates tolerance of vertex with index <nV>
af4e6dab 419 -- to make it interfere with face with index <nF>
420
421 CheckPlanes(me;
b4109929 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
78c66ef1 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
4e57c75e 449fields
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
456end PaveFiller;