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
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,
42 SectionAttribute from BOPAlgo,
50 IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS,
51 MapOfPaveBlock from BOPDS,
52 IndexedMapOfPaveBlock from BOPDS,
53 ListOfPaveBlock from BOPDS,
54 ListOfPave from BOPDS,
55 ListOfPntOn2S from IntSurf,
58 DataMapOfPaveBlockListOfPaveBlock from BOPDS,
59 VectorOfCurve from BOPDS
65 returns PaveFiller from BOPAlgo;
66 ---C++: alias "Standard_EXPORT virtual ~BOPAlgo_PaveFiller();"
68 Create (theAllocator: BaseAllocator from BOPCol)
69 returns PaveFiller from BOPAlgo;
72 returns DS from BOPDS;
77 returns PDS from BOPDS;
80 returns PIterator from BOPDS;
84 returns ListOfShape from BOPCol;
85 ---C++: return const &
86 ---C++: alias "Standard_EXPORT void SetArguments(const BOPCol_ListOfShape& theLS);"
89 returns Context from BOPInt;
91 SetSectionAttribute(me:out;
92 theSecAttr : SectionAttribute from BOPAlgo);
100 is virtual protected;
103 is virtual protected;
106 is virtual protected;
109 is virtual protected;
112 is virtual protected;
115 is virtual protected;
118 is virtual protected;
121 is virtual protected;
124 TreatVerticesEE(me:out)
127 MakeSplitEdges(me:out)
139 FillShrunkData(me:out;
140 thePB:out PaveBlock from BOPDS)
143 PerformVerticesEE(me:out;
144 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
145 theAllocator:out BaseAllocator from BOPCol)
146 returns Integer from Standard
149 PerformVerticesEF(me:out;
150 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
151 theAllocator:out BaseAllocator from BOPCol)
152 returns Integer from Standard
155 CheckFacePaves(me:out;
156 theVnew:Vertex from TopoDS;
157 theMIF:MapOfInteger from BOPCol)
158 returns Boolean from Standard
161 CheckFacePaves(myclass;
162 theN:Integer from Standard;
163 theMIFOn:MapOfInteger from BOPCol;
164 theMIFIn:MapOfInteger from BOPCol)
165 returns Boolean from Standard
170 theTol:Real from Standard;
171 theMVOn:MapOfInteger from BOPCol)
172 returns Boolean from Standard
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)
186 -- Checks and puts paves from <theMVOn> on the curve <theNC>.
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
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.
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)
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
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
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
240 -- Treatment of section edges.
243 -- Treatment of degenerated edges
245 FindPaveBlocks(me:out;
246 theV:Integer from Standard;
247 theF:Integer from Standard;
248 theLPB:out ListOfPaveBlock from BOPDS)
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)
259 MakeSplitEdge(me:out;
260 theV:Integer from Standard;
261 theF:Integer from Standard)
265 nF1 : Integer from Standard;
266 nF2 : Integer from Standard;
267 aListOfPnts: out ListOfPntOn2S from IntSurf)
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)
277 -- Checks and puts paves created in EF intersections on the curve <theNC>.
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)
288 -- Puts stick paves on the curve <theNC>
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)
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.
303 GetFullShapeMap(me:out;
304 nF : Integer from Standard;
305 theMI : out MapOfInteger from BOPCol)
308 -- Collects index nF and indices of all subshapes of the shape with index <nF>
309 -- to the map <theMI>.
311 RemoveUsedVertices(me:out;
312 theNC : out Curve from BOPDS;
313 theMV : out MapOfInteger from BOPCol)
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.
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)
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).
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)
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.
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)
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.
358 TreatNewVertices(me:out;
359 theMVI : IndexedDataMapOfShapeInteger from BOPCol;
360 theImages : out IndexedDataMapOfShapeListOfShape from BOPCol)
363 -- Treatment of vertices that were created in EE intersections.
365 PutClosingPaveOnCurve (me:out;
366 aNC :out Curve from BOPDS)
369 -- Put paves on the curve <aBC> in case when <aBC>
370 -- is closed 3D-curve
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)
380 -- Keeps data for post treatment
382 RefineFaceInfoOn(me:out)
385 -- Refines the state On for the all faces having
388 UpdateFaceInfo(me:out;
389 theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS)
392 -- Updates the information about faces
394 ForceInterfVE(me:out;
395 nV : Integer from Standard;
396 aPB : out PaveBlock from BOPDS;
397 aMPB : out MapOfPaveBlock from BOPDS)
400 -- Updates tolerance of vertex with index <nV>
401 -- to make it interfere with edge
403 ForceInterfVF(me:out;
404 nV : Integer from Standard;
405 nF : Integer from Standard)
406 returns Boolean from Standard
409 -- Updates tolerance of vertex with index <nV>
410 -- to make it interfere with face with index <nF>
413 nF1 : Integer from Standard;
414 nF2 : Integer from Standard)
415 returns Boolean from Standard
418 -- Checks if there are any common or intersecting sub shapes
419 -- between two planar faces.
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
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.
433 UpdatePaveBlocks(me:out;
434 theDMI : DataMapOfIntegerInteger from BOPCol)
437 -- Updates pave blocks which have the paves with indices contained
438 -- in the map <theDMI>.
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;