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 ListOfPaveBlock from BOPDS,
53 ListOfPave from BOPDS,
54 ListOfPntOn2S from IntSurf,
57 DataMapOfPaveBlockListOfPaveBlock from BOPDS,
58 VectorOfCurve from BOPDS
64 returns PaveFiller from BOPAlgo;
65 ---C++: alias "Standard_EXPORT virtual ~BOPAlgo_PaveFiller();"
67 Create (theAllocator: BaseAllocator from BOPCol)
68 returns PaveFiller from BOPAlgo;
71 returns DS from BOPDS;
76 returns PDS from BOPDS;
79 returns PIterator from BOPDS;
83 returns ListOfShape from BOPCol;
84 ---C++: return const &
85 ---C++: alias "Standard_EXPORT void SetArguments(const BOPCol_ListOfShape& theLS);"
88 returns Context from BOPInt;
90 SetSectionAttribute(me:out;
91 theSecAttr : SectionAttribute from BOPAlgo);
102 is virtual protected;
105 is virtual protected;
108 is virtual protected;
111 is virtual protected;
114 is virtual protected;
117 is virtual protected;
120 is virtual protected;
123 TreatVerticesEE(me:out)
126 MakeSplitEdges(me:out)
138 FillShrunkData(me:out;
139 thePB:out PaveBlock from BOPDS)
142 PerformVerticesEE(me:out;
143 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
144 theAllocator:out BaseAllocator from BOPCol)
145 returns Integer from Standard
148 PerformVerticesEF(me:out;
149 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
150 theAllocator:out BaseAllocator from BOPCol)
151 returns Integer from Standard
154 CheckFacePaves(me:out;
155 theVnew:Vertex from TopoDS;
156 theMIF:MapOfInteger from BOPCol)
157 returns Boolean from Standard
160 CheckFacePaves(myclass;
161 theN:Integer from Standard;
162 theMIFOn:MapOfInteger from BOPCol;
163 theMIFIn:MapOfInteger from BOPCol)
164 returns Boolean from Standard
169 theTol:Real from Standard;
170 theMVOn:MapOfInteger from BOPCol)
171 returns Boolean from Standard
174 PutPavesOnCurve(me:out;
175 theMVOn : MapOfInteger from BOPCol;
176 theTolR3D : Real from Standard;
177 theNC : out Curve from BOPDS;
178 nF1 : Integer from Standard;
179 nF2 : Integer from Standard;
180 theMI : MapOfInteger from BOPCol;
181 theMVEF : MapOfInteger from BOPCol;
182 theMVTol : out DataMapOfIntegerReal from BOPCol)
185 -- Checks and puts paves from <theMVOn> on the curve <theNC>.
187 ExtendedTolerance(me:out;
188 nV : Integer from Standard;
189 aMI : MapOfInteger from BOPCol;
190 aTolVExt : out Real from Standard;
191 aType : Integer from Standard = 0)
192 returns Boolean from Standard
195 -- Depending on the parameter aType it checks whether
196 -- the vertex nV was created in EE or EF intersections.
197 -- If so, it increases aTolVExt from tolerance value of vertex to
198 -- the max distance from vertex nV to the ends of the range of common part.
199 -- Possible values of aType:
200 -- 1 - checks only EE;
201 -- 2 - checks only EF;
202 -- other - checks both types of intersections.
204 PutBoundPaveOnCurve(me:out;
205 theF1: Face from TopoDS;
206 theF2: Face from TopoDS;
207 theTolR3D:Real from Standard;
208 theNC:out Curve from BOPDS;
209 theMVOnIn:out MapOfInteger from BOPCol;
210 theMVB:out MapOfInteger from BOPCol)
213 IsExistingPaveBlock(me:out;
214 thePB:PaveBlock from BOPDS;
215 theNC:Curve from BOPDS;
216 theTolR3D:Real from Standard;
217 theMPB:MapOfPaveBlock from BOPDS;
218 thePBOut:out PaveBlock from BOPDS)
219 returns Boolean from Standard
222 IsExistingPaveBlock(me:out;
223 thePB:PaveBlock from BOPDS;
224 theNC:Curve from BOPDS;
225 theTolR3D:Real from Standard;
226 theLSE:ListOfInteger from BOPCol)
227 returns Boolean from Standard
231 theMSCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
232 theMVI:out DataMapOfShapeInteger from BOPCol;
233 theDMExEdges:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
234 theDMI:out DataMapOfIntegerInteger from BOPCol;
235 theAllocator:out BaseAllocator from BOPCol)
236 returns Integer from Standard
239 -- Treatment of section edges.
242 -- Treatment of degenerated edges
244 FindPaveBlocks(me:out;
245 theV:Integer from Standard;
246 theF:Integer from Standard;
247 theLPB:out ListOfPaveBlock from BOPDS)
251 theV:Integer from Standard;
252 theE:Integer from Standard;
253 theF:Integer from Standard;
254 theLPB: ListOfPaveBlock from BOPDS;
255 thePB: PaveBlock from BOPDS)
258 MakeSplitEdge(me:out;
259 theV:Integer from Standard;
260 theF:Integer from Standard)
264 nF1 : Integer from Standard;
265 nF2 : Integer from Standard;
266 aListOfPnts: out ListOfPntOn2S from IntSurf)
269 PutEFPavesOnCurve(me:out;
270 theNC : out Curve from BOPDS;
271 theMI : MapOfInteger from BOPCol;
272 theMVEF : MapOfInteger from BOPCol;
273 theMVTol : out DataMapOfIntegerReal from BOPCol)
276 -- Checks and puts paves created in EF intersections on the curve <theNC>.
278 PutStickPavesOnCurve(me:out;
279 aF1 : Face from TopoDS;
280 aF2 : Face from TopoDS;
281 theMI : MapOfInteger from BOPCol;
282 theNC : out Curve from BOPDS;
283 theMVStick : MapOfInteger from BOPCol;
284 theMVTol : out DataMapOfIntegerReal from BOPCol)
287 -- Puts stick paves on the curve <theNC>
289 GetStickVertices(me:out;
290 nF1 : Integer from Standard;
291 nF2 : Integer from Standard;
292 theMVStick : out MapOfInteger from BOPCol;
293 theMVEF : out MapOfInteger from BOPCol;
294 theMI : out MapOfInteger from BOPCol)
297 -- Collects indices of vertices created in all intersections between
298 -- two faces (<nF1> and <nF2>) to the map <theMVStick>.
299 -- Also, it collects indices of EF vertices to the <theMVEF> map
300 -- and indices of all subshapes of these two faces to the <theMI> map.
302 GetFullShapeMap(me:out;
303 nF : Integer from Standard;
304 theMI : out MapOfInteger from BOPCol)
307 -- Collects index nF and indices of all subshapes of the shape with index <nF>
308 -- to the map <theMI>.
310 RemoveUsedVertices(me:out;
311 theNC : out Curve from BOPDS;
312 theMV : out MapOfInteger from BOPCol)
315 -- Removes indices of vertices that are already on the
316 -- curve <theNC> from the map <theMV>.
317 -- It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.
319 PutPaveOnCurve(me:out;
320 nV : Integer from Standard;
321 theTolR3D : Real from Standard;
322 theNC : out Curve from BOPDS;
323 theMI : MapOfInteger from BOPCol;
324 theMVTol : out DataMapOfIntegerReal from BOPCol;
325 aType : Integer from Standard = 0)
328 -- Puts the pave nV on the curve theNC.
329 -- Parameter aType defines whether to check the pave with
330 -- extended tolerance:
331 -- 0 - do not perform the check;
332 -- other - perform the check (aType goes to ExtendedTolerance).
334 ProcessExistingPaveBlocks(me:out;
335 theInt : Integer from Standard;
336 theMPBOnIn : MapOfPaveBlock from BOPDS;
337 theMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
338 theMVI : out DataMapOfShapeInteger from BOPCol;
339 theMVB : MapOfInteger from BOPCol;
340 theMPB : out MapOfPaveBlock from BOPDS)
343 -- Adds the existing edges from the map <theMPBOnIn> which interfere
344 -- with the vertices from <theMVB> map to the post treatment of section edges.
346 UpdateExistingPaveBlocks(me:out;
347 thePB : PaveBlock from BOPDS;
348 theLPB : out ListOfPaveBlock from BOPDS;
349 nF1 : Integer from Standard;
350 nF2 : Integer from Standard)
353 -- Replaces existing pave block <thePB> with new pave blocks <theLPB>.
354 -- The list <theLPB> contains images of <thePB> which were created in
355 -- the post treatment of section edges.
357 TreatNewVertices(me:out;
358 theMVI : IndexedDataMapOfShapeInteger from BOPCol;
359 theImages : out IndexedDataMapOfShapeListOfShape from BOPCol)
362 -- Treatment of vertices that were created in EE intersections.
364 PutClosingPaveOnCurve (me:out;
365 aNC :out Curve from BOPDS)
368 -- Put paves on the curve <aBC> in case when <aBC>
369 -- is closed 3D-curve
371 PreparePostTreatFF(me:out;
372 aInt : Integer from Standard;
373 aPB : PaveBlock from BOPDS;
374 aMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
375 aMVI : out DataMapOfShapeInteger from BOPCol;
376 aVC : out VectorOfCurve from BOPDS)
379 -- Keeps data for post treatment
381 RefineFaceInfoOn(me:out)
384 -- Refines the state On for the all faces having
387 UpdateFaceInfo(me:out;
388 theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS)
391 -- Updates the information about faces
393 ForceInterfVE(me:out;
394 nV : Integer from Standard;
395 aPB : out PaveBlock from BOPDS;
396 aMPB : out MapOfPaveBlock from BOPDS)
399 -- Updates tolerance of vertex with index <nV>
400 -- to make it interfere with edge
402 ForceInterfVF(me:out;
403 nV : Integer from Standard;
404 nF : Integer from Standard)
405 returns Boolean from Standard
408 -- Updates tolerance of vertex with index <nV>
409 -- to make it interfere with face with index <nF>
412 nF1 : Integer from Standard;
413 nF2 : Integer from Standard)
414 returns Boolean from Standard
417 -- Checks if there are any common or intersecting sub shapes
418 -- between two planar faces.
421 nE : Integer from Standard;
422 nV1 : Integer from Standard;
423 aT1 : Real from Standard;
424 nV2 : Integer from Standard;
425 aT2 : Real from Standard)
426 returns Integer from Standard
429 -- Creates new edge from the edge nE with vertices nV1 and nV2
430 -- and returns the index of that new edge in the DS.
432 UpdatePaveBlocks(me:out;
433 theDMI : DataMapOfIntegerInteger from BOPCol)
436 -- Updates pave blocks which have the paves with indices contained
437 -- in the map <theDMI>.
440 myArguments : ListOfShape from BOPCol is protected;
441 myDS : PDS from BOPDS is protected;
442 myIterator : PIterator from BOPDS is protected;
443 myContext : Context from BOPInt is protected;
444 mySectionAttribute : SectionAttribute from BOPAlgo is protected;