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
7 -- This file is part of Open CASCADE Technology software library.
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.
15 -- Alternatively, this file may be used under the terms of Open CASCADE
16 -- commercial license or contractual agreement.
18 class PaveFiller from BOPAlgo
19 inherits Algo from BOPAlgo
24 ShapeEnum from TopAbs,
29 ListOfShape from TopTools,
31 BaseAllocator from BOPCol,
32 ListOfShape from BOPCol,
33 MapOfInteger from BOPCol,
34 ListOfInteger from BOPCol,
35 DataMapOfShapeInteger from BOPCol,
36 IndexedDataMapOfShapeInteger from BOPCol,
37 DataMapOfIntegerListOfInteger from BOPCol,
38 DataMapOfShapeListOfShape from BOPCol,
39 IndexedDataMapOfShapeListOfShape from BOPCol,
40 DataMapOfIntegerReal from BOPCol,
41 DataMapOfIntegerInteger from BOPCol,
43 Context from IntTools,
45 SectionAttribute from BOPAlgo,
53 IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS,
54 MapOfPaveBlock from BOPDS,
55 IndexedMapOfPaveBlock from BOPDS,
56 ListOfPaveBlock from BOPDS,
57 ListOfPave from BOPDS,
58 ListOfPntOn2S from IntSurf,
61 DataMapOfPaveBlockListOfPaveBlock from BOPDS,
62 VectorOfCurve from BOPDS
68 returns PaveFiller from BOPAlgo;
69 ---C++: alias "Standard_EXPORT virtual ~BOPAlgo_PaveFiller();"
71 Create (theAllocator: BaseAllocator from BOPCol)
72 returns PaveFiller from BOPAlgo;
75 returns DS from BOPDS;
80 returns PDS from BOPDS;
83 returns PIterator from BOPDS;
87 theLS:ListOfShape from BOPCol);
90 returns ListOfShape from BOPCol;
91 ---C++: return const &
94 returns Context from IntTools;
96 SetSectionAttribute(me:out;
97 theSecAttr : SectionAttribute from BOPAlgo);
104 PerformInternal (me:out)
105 is virtual protected;
108 is virtual protected;
111 is virtual protected;
117 is virtual protected;
120 is virtual protected;
123 is virtual protected;
126 is virtual protected;
129 is virtual protected;
132 is virtual protected;
135 is virtual protected;
136 --Purpose: Computes Vertex/Solid interferences
139 is virtual protected;
140 --Purpose: Computes Edge/Solid interferences
143 is virtual protected;
144 --Purpose: Computes Face/Solid interferences
146 is virtual protected;
147 --Purpose: Computes Solid/Solid interferences
149 TreatVerticesEE(me:out)
152 MakeSplitEdges(me:out)
164 FillShrunkData(me:out;
165 thePB:out PaveBlock from BOPDS)
168 FillShrunkData(me:out;
169 theType1: ShapeEnum from TopAbs;
170 theType2: ShapeEnum from TopAbs)
173 PerformVerticesEE(me:out;
174 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
175 theAllocator:out BaseAllocator from BOPCol)
176 returns Integer from Standard
179 PerformVerticesEF(me:out;
180 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
181 theAllocator:out BaseAllocator from BOPCol)
182 returns Integer from Standard
185 CheckFacePaves(me:out;
186 theVnew:Vertex from TopoDS;
187 theMIF:MapOfInteger from BOPCol)
188 returns Boolean from Standard
191 CheckFacePaves(myclass;
192 theN:Integer from Standard;
193 theMIFOn:MapOfInteger from BOPCol;
194 theMIFIn:MapOfInteger from BOPCol)
195 returns Boolean from Standard
200 theTol:Real from Standard;
201 theMVOn:MapOfInteger from BOPCol)
202 returns Boolean from Standard
205 PutPavesOnCurve(me:out;
206 theMVOn : MapOfInteger from BOPCol;
207 theTolR3D : Real from Standard;
208 theNC : out Curve from BOPDS;
209 nF1 : Integer from Standard;
210 nF2 : Integer from Standard;
211 theMI : MapOfInteger from BOPCol;
212 theMVEF : MapOfInteger from BOPCol;
213 theMVTol : out DataMapOfIntegerReal from BOPCol)
216 -- Checks and puts paves from <theMVOn> on the curve <theNC>.
218 ExtendedTolerance(me:out;
219 nV : Integer from Standard;
220 aMI : MapOfInteger from BOPCol;
221 aTolVExt : out Real from Standard;
222 aType : Integer from Standard = 0)
223 returns Boolean from Standard
226 -- Depending on the parameter aType it checks whether
227 -- the vertex nV was created in EE or EF intersections.
228 -- If so, it increases aTolVExt from tolerance value of vertex to
229 -- the max distance from vertex nV to the ends of the range of common part.
230 -- Possible values of aType:
231 -- 1 - checks only EE;
232 -- 2 - checks only EF;
233 -- other - checks both types of intersections.
235 PutBoundPaveOnCurve(me:out;
236 theF1: Face from TopoDS;
237 theF2: Face from TopoDS;
238 theTolR3D:Real from Standard;
239 theNC:out Curve from BOPDS;
240 theLBV:out ListOfInteger from BOPCol)
243 IsExistingPaveBlock(me:out;
244 thePB:PaveBlock from BOPDS;
245 theNC:Curve from BOPDS;
246 theTolR3D:Real from Standard;
247 theMPB:IndexedMapOfPaveBlock from BOPDS;
248 thePBOut:out PaveBlock from BOPDS)
249 returns Boolean from Standard
252 IsExistingPaveBlock(me:out;
253 thePB:PaveBlock from BOPDS;
254 theNC:Curve from BOPDS;
255 theTolR3D:Real from Standard;
256 theLSE:ListOfInteger from BOPCol)
257 returns Boolean from Standard
261 theMSCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
262 theMVI:out DataMapOfShapeInteger from BOPCol;
263 theDMExEdges:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
264 theDMI:out DataMapOfIntegerInteger from BOPCol;
265 theAllocator:out BaseAllocator from BOPCol)
266 returns Integer from Standard
269 -- Treatment of section edges.
272 -- Treatment of degenerated edges
274 FindPaveBlocks(me:out;
275 theV:Integer from Standard;
276 theF:Integer from Standard;
277 theLPB:out ListOfPaveBlock from BOPDS)
281 theV:Integer from Standard;
282 theE:Integer from Standard;
283 theF:Integer from Standard;
284 theLPB: ListOfPaveBlock from BOPDS;
285 thePB: PaveBlock from BOPDS)
288 MakeSplitEdge(me:out;
289 theV:Integer from Standard;
290 theF:Integer from Standard)
294 nF1 : Integer from Standard;
295 nF2 : Integer from Standard;
296 aListOfPnts: out ListOfPntOn2S from IntSurf)
299 PutEFPavesOnCurve(me:out;
300 theNC : out Curve from BOPDS;
301 theMI : MapOfInteger from BOPCol;
302 theMVEF : MapOfInteger from BOPCol;
303 theMVTol : out DataMapOfIntegerReal from BOPCol)
306 -- Checks and puts paves created in EF intersections on the curve <theNC>.
308 PutStickPavesOnCurve(me:out;
309 aF1 : Face from TopoDS;
310 aF2 : Face from TopoDS;
311 theMI : MapOfInteger from BOPCol;
312 theNC : out Curve from BOPDS;
313 theMVStick : MapOfInteger from BOPCol;
314 theMVTol : out DataMapOfIntegerReal from BOPCol)
317 -- Puts stick paves on the curve <theNC>
319 GetStickVertices(me:out;
320 nF1 : Integer from Standard;
321 nF2 : Integer from Standard;
322 theMVStick : out MapOfInteger from BOPCol;
323 theMVEF : out MapOfInteger from BOPCol;
324 theMI : out MapOfInteger from BOPCol)
327 -- Collects indices of vertices created in all intersections between
328 -- two faces (<nF1> and <nF2>) to the map <theMVStick>.
329 -- Also, it collects indices of EF vertices to the <theMVEF> map
330 -- and indices of all subshapes of these two faces to the <theMI> map.
332 GetFullShapeMap(me:out;
333 nF : Integer from Standard;
334 theMI : out MapOfInteger from BOPCol)
337 -- Collects index nF and indices of all subshapes of the shape with index <nF>
338 -- to the map <theMI>.
340 RemoveUsedVertices(me:out;
341 theNC : out Curve from BOPDS;
342 theMV : out MapOfInteger from BOPCol)
345 -- Removes indices of vertices that are already on the
346 -- curve <theNC> from the map <theMV>.
347 -- It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.
349 PutPaveOnCurve(me:out;
350 nV : Integer from Standard;
351 theTolR3D : Real from Standard;
352 theNC : out Curve from BOPDS;
353 theMI : MapOfInteger from BOPCol;
354 theMVTol : out DataMapOfIntegerReal from BOPCol;
355 aType : Integer from Standard = 0)
358 -- Puts the pave nV on the curve theNC.
359 -- Parameter aType defines whether to check the pave with
360 -- extended tolerance:
361 -- 0 - do not perform the check;
362 -- other - perform the check (aType goes to ExtendedTolerance).
364 ProcessExistingPaveBlocks(me:out;
365 theInt : Integer from Standard;
366 theMPBOnIn : IndexedMapOfPaveBlock from BOPDS;
367 theDMBV : DataMapOfIntegerListOfInteger from BOPCol;
368 theMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
369 theMVI : out DataMapOfShapeInteger from BOPCol;
370 theMPB : out MapOfPaveBlock from BOPDS)
373 -- Adds the existing edges from the map <theMPBOnIn> which interfere
374 -- with the vertices from <theMVB> map to the post treatment of section edges.
376 UpdateExistingPaveBlocks(me:out;
377 thePB : PaveBlock from BOPDS;
378 theLPB : out ListOfPaveBlock from BOPDS;
379 nF1 : Integer from Standard;
380 nF2 : Integer from Standard)
383 -- Replaces existing pave block <thePB> with new pave blocks <theLPB>.
384 -- The list <theLPB> contains images of <thePB> which were created in
385 -- the post treatment of section edges.
387 TreatNewVertices(me:out;
388 theMVI : IndexedDataMapOfShapeInteger from BOPCol;
389 theImages : out IndexedDataMapOfShapeListOfShape from BOPCol)
392 -- Treatment of vertices that were created in EE intersections.
394 PutClosingPaveOnCurve (me:out;
395 aNC :out Curve from BOPDS)
398 -- Put paves on the curve <aBC> in case when <aBC>
399 -- is closed 3D-curve
401 PreparePostTreatFF(me:out;
402 aInt : Integer from Standard;
403 aCur : Integer from Standard;
404 aPB : PaveBlock from BOPDS;
405 aMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
406 aMVI : out DataMapOfShapeInteger from BOPCol;
407 aLPB : out ListOfPaveBlock from BOPDS)
410 -- Keeps data for post treatment
412 RefineFaceInfoOn(me:out)
415 -- Refines the state On for the all faces having
418 UpdateFaceInfo(me:out;
419 theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
420 theDMV: DataMapOfIntegerInteger from BOPCol)
423 -- Updates the information about faces
425 ForceInterfVE(me:out;
426 nV : Integer from Standard;
427 aPB : out PaveBlock from BOPDS;
428 aMPB : out MapOfPaveBlock from BOPDS)
431 -- Updates tolerance of vertex with index <nV>
432 -- to make it interfere with edge
434 ForceInterfVF(me:out;
435 nV : Integer from Standard;
436 nF : Integer from Standard)
437 returns Boolean from Standard
440 -- Updates tolerance of vertex with index <nV>
441 -- to make it interfere with face with index <nF>
444 nF1 : Integer from Standard;
445 nF2 : Integer from Standard)
446 returns Boolean from Standard
449 -- Checks if there are any common or intersecting sub shapes
450 -- between two planar faces.
453 nE : Integer from Standard;
454 nV1 : Integer from Standard;
455 aT1 : Real from Standard;
456 nV2 : Integer from Standard;
457 aT2 : Real from Standard)
458 returns Integer from Standard
461 -- Creates new edge from the edge nE with vertices nV1 and nV2
462 -- and returns the index of that new edge in the DS.
464 UpdatePaveBlocks(me:out;
465 theDMI : DataMapOfIntegerInteger from BOPCol)
468 -- Updates pave blocks which have the paves with indices contained
469 -- in the map <theDMI>.
471 SetFuzzyValue(me:out;
472 theFuzz : Real from Standard);
473 ---Purpose: Sets the additional tolerance
476 returns Real from Standard;
477 ---Purpose: Returns the additional tolerance
480 myArguments : ListOfShape from BOPCol is protected;
481 myDS : PDS from BOPDS is protected;
482 myIterator : PIterator from BOPDS is protected;
483 myContext : Context from IntTools is protected;
484 mySectionAttribute : SectionAttribute from BOPAlgo is protected;
485 myFuzzyValue : Real from Standard is protected;