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,
41 Context from IntTools,
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 IntTools;
92 SetSectionAttribute(me:out;
93 theSecAttr : SectionAttribute from BOPAlgo);
100 PerformInternal (me:out)
101 is virtual protected;
104 is virtual protected;
107 is virtual protected;
113 is virtual protected;
116 is virtual protected;
119 is virtual protected;
122 is virtual protected;
125 is virtual protected;
128 is virtual protected;
131 TreatVerticesEE(me:out)
134 MakeSplitEdges(me:out)
146 FillShrunkData(me:out;
147 thePB:out PaveBlock from BOPDS)
150 FillShrunkData(me:out;
151 theType1: ShapeEnum from TopAbs;
152 theType2: ShapeEnum from TopAbs)
155 PerformVerticesEE(me:out;
156 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
157 theAllocator:out BaseAllocator from BOPCol)
158 returns Integer from Standard
161 PerformVerticesEF(me:out;
162 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
163 theAllocator:out BaseAllocator from BOPCol)
164 returns Integer from Standard
167 CheckFacePaves(me:out;
168 theVnew:Vertex from TopoDS;
169 theMIF:MapOfInteger from BOPCol)
170 returns Boolean from Standard
173 CheckFacePaves(myclass;
174 theN:Integer from Standard;
175 theMIFOn:MapOfInteger from BOPCol;
176 theMIFIn:MapOfInteger from BOPCol)
177 returns Boolean from Standard
182 theTol:Real from Standard;
183 theMVOn:MapOfInteger from BOPCol)
184 returns Boolean from Standard
187 PutPavesOnCurve(me:out;
188 theMVOn : MapOfInteger from BOPCol;
189 theTolR3D : Real from Standard;
190 theNC : out Curve from BOPDS;
191 nF1 : Integer from Standard;
192 nF2 : Integer from Standard;
193 theMI : MapOfInteger from BOPCol;
194 theMVEF : MapOfInteger from BOPCol;
195 theMVTol : out DataMapOfIntegerReal from BOPCol)
198 -- Checks and puts paves from <theMVOn> on the curve <theNC>.
200 ExtendedTolerance(me:out;
201 nV : Integer from Standard;
202 aMI : MapOfInteger from BOPCol;
203 aTolVExt : out Real from Standard;
204 aType : Integer from Standard = 0)
205 returns Boolean from Standard
208 -- Depending on the parameter aType it checks whether
209 -- the vertex nV was created in EE or EF intersections.
210 -- If so, it increases aTolVExt from tolerance value of vertex to
211 -- the max distance from vertex nV to the ends of the range of common part.
212 -- Possible values of aType:
213 -- 1 - checks only EE;
214 -- 2 - checks only EF;
215 -- other - checks both types of intersections.
217 PutBoundPaveOnCurve(me:out;
218 theF1: Face from TopoDS;
219 theF2: Face from TopoDS;
220 theTolR3D:Real from Standard;
221 theNC:out Curve from BOPDS;
222 theMVB:out MapOfInteger from BOPCol)
225 IsExistingPaveBlock(me:out;
226 thePB:PaveBlock from BOPDS;
227 theNC:Curve from BOPDS;
228 theTolR3D:Real from Standard;
229 theMPB:IndexedMapOfPaveBlock from BOPDS;
230 thePBOut:out PaveBlock from BOPDS)
231 returns Boolean from Standard
234 IsExistingPaveBlock(me:out;
235 thePB:PaveBlock from BOPDS;
236 theNC:Curve from BOPDS;
237 theTolR3D:Real from Standard;
238 theLSE:ListOfInteger from BOPCol)
239 returns Boolean from Standard
243 theMSCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
244 theMVI:out DataMapOfShapeInteger from BOPCol;
245 theDMExEdges:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
246 theDMI:out DataMapOfIntegerInteger from BOPCol;
247 theAllocator:out BaseAllocator from BOPCol)
248 returns Integer from Standard
251 -- Treatment of section edges.
254 -- Treatment of degenerated edges
256 FindPaveBlocks(me:out;
257 theV:Integer from Standard;
258 theF:Integer from Standard;
259 theLPB:out ListOfPaveBlock from BOPDS)
263 theV:Integer from Standard;
264 theE:Integer from Standard;
265 theF:Integer from Standard;
266 theLPB: ListOfPaveBlock from BOPDS;
267 thePB: PaveBlock from BOPDS)
270 MakeSplitEdge(me:out;
271 theV:Integer from Standard;
272 theF:Integer from Standard)
276 nF1 : Integer from Standard;
277 nF2 : Integer from Standard;
278 aListOfPnts: out ListOfPntOn2S from IntSurf)
281 PutEFPavesOnCurve(me:out;
282 theNC : out Curve from BOPDS;
283 theMI : MapOfInteger from BOPCol;
284 theMVEF : MapOfInteger from BOPCol;
285 theMVTol : out DataMapOfIntegerReal from BOPCol)
288 -- Checks and puts paves created in EF intersections on the curve <theNC>.
290 PutStickPavesOnCurve(me:out;
291 aF1 : Face from TopoDS;
292 aF2 : Face from TopoDS;
293 theMI : MapOfInteger from BOPCol;
294 theNC : out Curve from BOPDS;
295 theMVStick : MapOfInteger from BOPCol;
296 theMVTol : out DataMapOfIntegerReal from BOPCol)
299 -- Puts stick paves on the curve <theNC>
301 GetStickVertices(me:out;
302 nF1 : Integer from Standard;
303 nF2 : Integer from Standard;
304 theMVStick : out MapOfInteger from BOPCol;
305 theMVEF : out MapOfInteger from BOPCol;
306 theMI : out MapOfInteger from BOPCol)
309 -- Collects indices of vertices created in all intersections between
310 -- two faces (<nF1> and <nF2>) to the map <theMVStick>.
311 -- Also, it collects indices of EF vertices to the <theMVEF> map
312 -- and indices of all subshapes of these two faces to the <theMI> map.
314 GetFullShapeMap(me:out;
315 nF : Integer from Standard;
316 theMI : out MapOfInteger from BOPCol)
319 -- Collects index nF and indices of all subshapes of the shape with index <nF>
320 -- to the map <theMI>.
322 RemoveUsedVertices(me:out;
323 theNC : out Curve from BOPDS;
324 theMV : out MapOfInteger from BOPCol)
327 -- Removes indices of vertices that are already on the
328 -- curve <theNC> from the map <theMV>.
329 -- It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.
331 PutPaveOnCurve(me:out;
332 nV : Integer from Standard;
333 theTolR3D : Real from Standard;
334 theNC : out Curve from BOPDS;
335 theMI : MapOfInteger from BOPCol;
336 theMVTol : out DataMapOfIntegerReal from BOPCol;
337 aType : Integer from Standard = 0)
340 -- Puts the pave nV on the curve theNC.
341 -- Parameter aType defines whether to check the pave with
342 -- extended tolerance:
343 -- 0 - do not perform the check;
344 -- other - perform the check (aType goes to ExtendedTolerance).
346 ProcessExistingPaveBlocks(me:out;
347 theInt : Integer from Standard;
348 theMPBOnIn : IndexedMapOfPaveBlock from BOPDS;
349 theMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
350 theMVI : out DataMapOfShapeInteger from BOPCol;
351 theMVB : MapOfInteger from BOPCol;
352 theMPB : out MapOfPaveBlock from BOPDS)
355 -- Adds the existing edges from the map <theMPBOnIn> which interfere
356 -- with the vertices from <theMVB> map to the post treatment of section edges.
358 UpdateExistingPaveBlocks(me:out;
359 thePB : PaveBlock from BOPDS;
360 theLPB : out ListOfPaveBlock from BOPDS;
361 nF1 : Integer from Standard;
362 nF2 : Integer from Standard)
365 -- Replaces existing pave block <thePB> with new pave blocks <theLPB>.
366 -- The list <theLPB> contains images of <thePB> which were created in
367 -- the post treatment of section edges.
369 TreatNewVertices(me:out;
370 theMVI : IndexedDataMapOfShapeInteger from BOPCol;
371 theImages : out IndexedDataMapOfShapeListOfShape from BOPCol)
374 -- Treatment of vertices that were created in EE intersections.
376 PutClosingPaveOnCurve (me:out;
377 aNC :out Curve from BOPDS)
380 -- Put paves on the curve <aBC> in case when <aBC>
381 -- is closed 3D-curve
383 PreparePostTreatFF(me:out;
384 aInt : Integer from Standard;
385 aPB : PaveBlock from BOPDS;
386 aMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
387 aMVI : out DataMapOfShapeInteger from BOPCol;
388 aVC : out VectorOfCurve from BOPDS)
391 -- Keeps data for post treatment
393 RefineFaceInfoOn(me:out)
396 -- Refines the state On for the all faces having
399 UpdateFaceInfo(me:out;
400 theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS)
403 -- Updates the information about faces
405 ForceInterfVE(me:out;
406 nV : Integer from Standard;
407 aPB : out PaveBlock from BOPDS;
408 aMPB : out MapOfPaveBlock from BOPDS)
411 -- Updates tolerance of vertex with index <nV>
412 -- to make it interfere with edge
414 ForceInterfVF(me:out;
415 nV : Integer from Standard;
416 nF : Integer from Standard)
417 returns Boolean from Standard
420 -- Updates tolerance of vertex with index <nV>
421 -- to make it interfere with face with index <nF>
424 nF1 : Integer from Standard;
425 nF2 : Integer from Standard)
426 returns Boolean from Standard
429 -- Checks if there are any common or intersecting sub shapes
430 -- between two planar faces.
433 nE : Integer from Standard;
434 nV1 : Integer from Standard;
435 aT1 : Real from Standard;
436 nV2 : Integer from Standard;
437 aT2 : Real from Standard)
438 returns Integer from Standard
441 -- Creates new edge from the edge nE with vertices nV1 and nV2
442 -- and returns the index of that new edge in the DS.
444 UpdatePaveBlocks(me:out;
445 theDMI : DataMapOfIntegerInteger from BOPCol)
448 -- Updates pave blocks which have the paves with indices contained
449 -- in the map <theDMI>.
452 myArguments : ListOfShape from BOPCol is protected;
453 myDS : PDS from BOPDS is protected;
454 myIterator : PIterator from BOPDS is protected;
455 myContext : Context from IntTools is protected;
456 mySectionAttribute : SectionAttribute from BOPAlgo is protected;