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 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,
37 IndexedDataMapOfShapeListOfShape from BOPCol,
38 DataMapOfIntegerReal from BOPCol,
39 DataMapOfIntegerInteger from BOPCol,
43 SectionAttribute from BOPAlgo,
51 IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS,
52 MapOfPaveBlock from BOPDS,
53 IndexedMapOfPaveBlock from BOPDS,
54 ListOfPaveBlock from BOPDS,
55 ListOfPave from BOPDS,
56 ListOfPntOn2S from IntSurf,
59 DataMapOfPaveBlockListOfPaveBlock from BOPDS,
60 VectorOfCurve from BOPDS
66 returns PaveFiller from BOPAlgo;
67 ---C++: alias "Standard_EXPORT virtual ~BOPAlgo_PaveFiller();"
69 Create (theAllocator: BaseAllocator from BOPCol)
70 returns PaveFiller from BOPAlgo;
73 returns DS from BOPDS;
78 returns PDS from BOPDS;
81 returns PIterator from BOPDS;
85 returns ListOfShape from BOPCol;
86 ---C++: return const &
87 ---C++: alias "Standard_EXPORT void SetArguments(const BOPCol_ListOfShape& theLS);"
90 returns Context from BOPInt;
92 SetSectionAttribute(me:out;
93 theSecAttr : SectionAttribute from BOPAlgo);
101 is virtual protected;
104 is virtual protected;
110 is virtual protected;
113 is virtual protected;
116 is virtual protected;
119 is virtual protected;
122 is virtual protected;
125 is virtual protected;
128 TreatVerticesEE(me:out)
131 MakeSplitEdges(me:out)
143 FillShrunkData(me:out;
144 thePB:out PaveBlock from BOPDS)
147 FillShrunkData(me:out;
148 theType1: ShapeEnum from TopAbs;
149 theType2: ShapeEnum from TopAbs)
152 PerformVerticesEE(me:out;
153 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
154 theAllocator:out BaseAllocator from BOPCol)
155 returns Integer from Standard
158 PerformVerticesEF(me:out;
159 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
160 theAllocator:out BaseAllocator from BOPCol)
161 returns Integer from Standard
164 CheckFacePaves(me:out;
165 theVnew:Vertex from TopoDS;
166 theMIF:MapOfInteger from BOPCol)
167 returns Boolean from Standard
170 CheckFacePaves(myclass;
171 theN:Integer from Standard;
172 theMIFOn:MapOfInteger from BOPCol;
173 theMIFIn:MapOfInteger from BOPCol)
174 returns Boolean from Standard
179 theTol:Real from Standard;
180 theMVOn:MapOfInteger from BOPCol)
181 returns Boolean from Standard
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)
195 -- Checks and puts paves from <theMVOn> on the curve <theNC>.
197 ExtendedTolerance(me:out;
198 nV : Integer from Standard;
199 aMI : MapOfInteger from BOPCol;
200 aTolVExt : out Real from Standard;
201 aType : Integer from Standard = 0)
202 returns Boolean from Standard
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.
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)
223 IsExistingPaveBlock(me:out;
224 thePB:PaveBlock from BOPDS;
225 theNC:Curve from BOPDS;
226 theTolR3D:Real from Standard;
227 theMPB:IndexedMapOfPaveBlock from BOPDS;
228 thePBOut:out PaveBlock from BOPDS)
229 returns Boolean from Standard
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
241 theMSCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
242 theMVI:out DataMapOfShapeInteger from BOPCol;
243 theDMExEdges:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
244 theDMI:out DataMapOfIntegerInteger from BOPCol;
245 theAllocator:out BaseAllocator from BOPCol)
246 returns Integer from Standard
249 -- Treatment of section edges.
252 -- Treatment of degenerated edges
254 FindPaveBlocks(me:out;
255 theV:Integer from Standard;
256 theF:Integer from Standard;
257 theLPB:out ListOfPaveBlock from BOPDS)
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)
268 MakeSplitEdge(me:out;
269 theV:Integer from Standard;
270 theF:Integer from Standard)
274 nF1 : Integer from Standard;
275 nF2 : Integer from Standard;
276 aListOfPnts: out ListOfPntOn2S from IntSurf)
279 PutEFPavesOnCurve(me:out;
280 theNC : out Curve from BOPDS;
281 theMI : MapOfInteger from BOPCol;
282 theMVEF : MapOfInteger from BOPCol;
283 theMVTol : out DataMapOfIntegerReal from BOPCol)
286 -- Checks and puts paves created in EF intersections on the curve <theNC>.
288 PutStickPavesOnCurve(me:out;
289 aF1 : Face from TopoDS;
290 aF2 : Face from TopoDS;
291 theMI : MapOfInteger from BOPCol;
292 theNC : out Curve from BOPDS;
293 theMVStick : MapOfInteger from BOPCol;
294 theMVTol : out DataMapOfIntegerReal from BOPCol)
297 -- Puts stick paves on the curve <theNC>
299 GetStickVertices(me:out;
300 nF1 : Integer from Standard;
301 nF2 : Integer from Standard;
302 theMVStick : out MapOfInteger from BOPCol;
303 theMVEF : out MapOfInteger from BOPCol;
304 theMI : out MapOfInteger from BOPCol)
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.
312 GetFullShapeMap(me:out;
313 nF : Integer from Standard;
314 theMI : out MapOfInteger from BOPCol)
317 -- Collects index nF and indices of all subshapes of the shape with index <nF>
318 -- to the map <theMI>.
320 RemoveUsedVertices(me:out;
321 theNC : out Curve from BOPDS;
322 theMV : out MapOfInteger from BOPCol)
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.
329 PutPaveOnCurve(me:out;
330 nV : Integer from Standard;
331 theTolR3D : Real from Standard;
332 theNC : out Curve from BOPDS;
333 theMI : MapOfInteger from BOPCol;
334 theMVTol : out DataMapOfIntegerReal from BOPCol;
335 aType : Integer from Standard = 0)
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).
344 ProcessExistingPaveBlocks(me:out;
345 theInt : Integer from Standard;
346 theMPBOnIn : IndexedMapOfPaveBlock from BOPDS;
347 theMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
348 theMVI : out DataMapOfShapeInteger from BOPCol;
349 theMVB : MapOfInteger from BOPCol;
350 theMPB : out MapOfPaveBlock from BOPDS)
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.
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)
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.
367 TreatNewVertices(me:out;
368 theMVI : IndexedDataMapOfShapeInteger from BOPCol;
369 theImages : out IndexedDataMapOfShapeListOfShape from BOPCol)
372 -- Treatment of vertices that were created in EE intersections.
374 PutClosingPaveOnCurve (me:out;
375 aNC :out Curve from BOPDS)
378 -- Put paves on the curve <aBC> in case when <aBC>
379 -- is closed 3D-curve
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)
389 -- Keeps data for post treatment
391 RefineFaceInfoOn(me:out)
394 -- Refines the state On for the all faces having
397 UpdateFaceInfo(me:out;
398 theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS)
401 -- Updates the information about faces
403 ForceInterfVE(me:out;
404 nV : Integer from Standard;
405 aPB : out PaveBlock from BOPDS;
406 aMPB : out MapOfPaveBlock from BOPDS)
409 -- Updates tolerance of vertex with index <nV>
410 -- to make it interfere with edge
412 ForceInterfVF(me:out;
413 nV : Integer from Standard;
414 nF : Integer from Standard)
415 returns Boolean from Standard
418 -- Updates tolerance of vertex with index <nV>
419 -- to make it interfere with face with index <nF>
422 nF1 : Integer from Standard;
423 nF2 : Integer from Standard)
424 returns Boolean from Standard
427 -- Checks if there are any common or intersecting sub shapes
428 -- between two planar faces.
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
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.
442 UpdatePaveBlocks(me:out;
443 theDMI : DataMapOfIntegerInteger from BOPCol)
446 -- Updates pave blocks which have the paves with indices contained
447 -- in the map <theDMI>.
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;