1 -- Created by: Peter KURNEV
2 -- Copyright (c) 2010-2012 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 -- The content of this file is subject to the Open CASCADE Technology Public
8 -- License Version 6.5 (the "License"). You may not use the content of this file
9 -- except in compliance with the License. Please obtain a copy of the License
10 -- at http://www.opencascade.org and read it completely before using this file.
12 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
13 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
15 -- The Original Code and all software distributed under the License is
16 -- distributed on an "AS IS" basis, without warranty of any kind, and the
17 -- Initial Developer hereby disclaims all such warranties, including without
18 -- limitation, any warranties of merchantability, fitness for a particular
19 -- purpose or non-infringement. Please see the License for the specific terms
20 -- and conditions governing the rights and limitations under the License.
23 class PaveFiller from BOPAlgo
24 inherits Algo from BOPAlgo
33 BaseAllocator from BOPCol,
34 ListOfShape from BOPCol,
35 MapOfInteger from BOPCol,
36 ListOfInteger from BOPCol,
37 DataMapOfShapeInteger from BOPCol,
38 IndexedDataMapOfShapeInteger from BOPCol,
39 DataMapOfIntegerListOfInteger from BOPCol,
40 DataMapOfShapeListOfShape from BOPCol,
41 IndexedDataMapOfShapeListOfShape from BOPCol,
42 DataMapOfIntegerReal from BOPCol,
43 DataMapOfIntegerInteger from BOPCol,
47 SectionAttribute from BOPAlgo,
55 IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS,
56 MapOfPaveBlock from BOPDS,
57 ListOfPaveBlock from BOPDS,
58 ListOfPave from BOPDS,
59 ListOfPntOn2S from IntSurf,
62 DataMapOfPaveBlockListOfPaveBlock from BOPDS,
63 VectorOfCurve from BOPDS
69 returns PaveFiller from BOPAlgo;
70 ---C++: alias "Standard_EXPORT virtual ~BOPAlgo_PaveFiller();"
72 Create (theAllocator: BaseAllocator from BOPCol)
73 returns PaveFiller from BOPAlgo;
76 returns DS from BOPDS;
81 returns PDS from BOPDS;
84 returns PIterator from BOPDS;
88 returns ListOfShape from BOPCol;
89 ---C++: return const &
90 ---C++: alias "Standard_EXPORT void SetArguments(const BOPCol_ListOfShape& theLS);"
93 returns Context from BOPInt;
95 SetSectionAttribute(me:out;
96 theSecAttr : SectionAttribute from BOPAlgo);
104 is virtual protected;
107 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 PerformVerticesEE(me:out;
148 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
149 theAllocator:out BaseAllocator from BOPCol)
150 returns Integer from Standard
153 PerformVerticesEF(me:out;
154 theMVCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
155 theAllocator:out BaseAllocator from BOPCol)
156 returns Integer from Standard
159 CheckFacePaves(me:out;
160 theVnew:Vertex from TopoDS;
161 theMIF:MapOfInteger from BOPCol)
162 returns Boolean from Standard
165 CheckFacePaves(myclass;
166 theN:Integer from Standard;
167 theMIFOn:MapOfInteger from BOPCol;
168 theMIFIn:MapOfInteger from BOPCol)
169 returns Boolean from Standard
174 theTol:Real from Standard;
175 theMVOn:MapOfInteger from BOPCol)
176 returns Boolean from Standard
179 PutPavesOnCurve(me:out;
180 theMVOn : MapOfInteger from BOPCol;
181 theTolR3D : Real from Standard;
182 theNC : out Curve from BOPDS;
183 nF1 : Integer from Standard;
184 nF2 : Integer from Standard;
185 theMI : MapOfInteger from BOPCol;
186 theMVEF : MapOfInteger from BOPCol;
187 theMVTol : out DataMapOfIntegerReal from BOPCol)
190 -- Checks and puts paves from <theMVOn> on the curve <theNC>.
192 ExtendedTolerance(me:out;
193 nV : Integer from Standard;
194 aMI : MapOfInteger from BOPCol;
195 aTolVExt : out Real from Standard;
196 aType : Integer from Standard = 0)
197 returns Boolean from Standard
200 -- Depending on the parameter aType it checks whether
201 -- the vertex nV was created in EE or EF intersections.
202 -- If so, it increases aTolVExt from tolerance value of vertex to
203 -- the max distance from vertex nV to the ends of the range of common part.
204 -- Possible values of aType:
205 -- 1 - checks only EE;
206 -- 2 - checks only EF;
207 -- other - checks both types of intersections.
209 PutBoundPaveOnCurve(me:out;
210 theF1: Face from TopoDS;
211 theF2: Face from TopoDS;
212 theTolR3D:Real from Standard;
213 theNC:out Curve from BOPDS;
214 theMVOnIn:out MapOfInteger from BOPCol;
215 theMVB:out MapOfInteger from BOPCol)
218 IsExistingPaveBlock(me:out;
219 thePB:PaveBlock from BOPDS;
220 theNC:Curve from BOPDS;
221 theTolR3D:Real from Standard;
222 theMPB:MapOfPaveBlock from BOPDS;
223 thePBOut:out PaveBlock from BOPDS)
224 returns Boolean from Standard
227 IsExistingPaveBlock(me:out;
228 thePB:PaveBlock from BOPDS;
229 theNC:Curve from BOPDS;
230 theTolR3D:Real from Standard;
231 theLSE:ListOfInteger from BOPCol)
232 returns Boolean from Standard
236 theMSCPB:out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
237 theMVI:out DataMapOfShapeInteger from BOPCol;
238 theDMExEdges:out DataMapOfPaveBlockListOfPaveBlock from BOPDS;
239 theDMI:out DataMapOfIntegerInteger from BOPCol;
240 theAllocator:out BaseAllocator from BOPCol)
241 returns Integer from Standard
244 -- Treatment of section edges.
247 -- Treatment of degenerated edges
249 FindPaveBlocks(me:out;
250 theV:Integer from Standard;
251 theF:Integer from Standard;
252 theLPB:out ListOfPaveBlock from BOPDS)
256 theV:Integer from Standard;
257 theE:Integer from Standard;
258 theF:Integer from Standard;
259 theLPB: ListOfPaveBlock from BOPDS;
260 thePB: PaveBlock from BOPDS)
263 MakeSplitEdge(me:out;
264 theV:Integer from Standard;
265 theF:Integer from Standard)
269 nF1 : Integer from Standard;
270 nF2 : Integer from Standard;
271 aListOfPnts: out ListOfPntOn2S from IntSurf)
274 PutEFPavesOnCurve(me:out;
275 theNC : out Curve from BOPDS;
276 theMI : MapOfInteger from BOPCol;
277 theMVEF : MapOfInteger from BOPCol;
278 theMVTol : out DataMapOfIntegerReal from BOPCol)
281 -- Checks and puts paves created in EF intersections on the curve <theNC>.
283 PutStickPavesOnCurve(me:out;
284 aF1 : Face from TopoDS;
285 aF2 : Face from TopoDS;
286 theMI : MapOfInteger from BOPCol;
287 theNC : out Curve from BOPDS;
288 theMVStick : MapOfInteger from BOPCol;
289 theMVTol : out DataMapOfIntegerReal from BOPCol)
292 -- Puts stick paves on the curve <theNC>
294 GetStickVertices(me:out;
295 nF1 : Integer from Standard;
296 nF2 : Integer from Standard;
297 theMVStick : out MapOfInteger from BOPCol;
298 theMVEF : out MapOfInteger from BOPCol;
299 theMI : out MapOfInteger from BOPCol)
302 -- Collects indices of vertices created in all intersections between
303 -- two faces (<nF1> and <nF2>) to the map <theMVStick>.
304 -- Also, it collects indices of EF vertices to the <theMVEF> map
305 -- and indices of all subshapes of these two faces to the <theMI> map.
307 GetFullShapeMap(me:out;
308 nF : Integer from Standard;
309 theMI : out MapOfInteger from BOPCol)
312 -- Collects index nF and indices of all subshapes of the shape with index <nF>
313 -- to the map <theMI>.
315 RemoveUsedVertices(me:out;
316 theNC : out Curve from BOPDS;
317 theMV : out MapOfInteger from BOPCol)
320 -- Removes indices of vertices that are already on the
321 -- curve <theNC> from the map <theMV>.
322 -- It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.
324 PutPaveOnCurve(me:out;
325 nV : Integer from Standard;
326 theTolR3D : Real from Standard;
327 theNC : out Curve from BOPDS;
328 theMI : MapOfInteger from BOPCol;
329 theMVTol : out DataMapOfIntegerReal from BOPCol;
330 aType : Integer from Standard = 0)
333 -- Puts the pave nV on the curve theNC.
334 -- Parameter aType defines whether to check the pave with
335 -- extended tolerance:
336 -- 0 - do not perform the check;
337 -- other - perform the check (aType goes to ExtendedTolerance).
339 ProcessExistingPaveBlocks(me:out;
340 theInt : Integer from Standard;
341 theMPBOnIn : MapOfPaveBlock from BOPDS;
342 theMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
343 theMVI : out DataMapOfShapeInteger from BOPCol;
344 theMVB : MapOfInteger from BOPCol;
345 theMPB : out MapOfPaveBlock from BOPDS)
348 -- Adds the existing edges from the map <theMPBOnIn> which interfere
349 -- with the vertices from <theMVB> map to the post treatment of section edges.
351 UpdateExistingPaveBlocks(me:out;
352 thePB : PaveBlock from BOPDS;
353 theLPB : out ListOfPaveBlock from BOPDS;
354 nF1 : Integer from Standard;
355 nF2 : Integer from Standard)
358 -- Replaces existing pave block <thePB> with new pave blocks <theLPB>.
359 -- The list <theLPB> contains images of <thePB> which were created in
360 -- the post treatment of section edges.
362 TreatNewVertices(me:out;
363 theMVI : IndexedDataMapOfShapeInteger from BOPCol;
364 theImages : out IndexedDataMapOfShapeListOfShape from BOPCol)
367 -- Treatment of vertices that were created in EE intersections.
369 PutClosingPaveOnCurve (me:out;
370 aNC :out Curve from BOPDS)
373 -- Put paves on the curve <aBC> in case when <aBC>
374 -- is closed 3D-curve
376 PreparePostTreatFF(me:out;
377 aInt : Integer from Standard;
378 aPB : PaveBlock from BOPDS;
379 aMSCPB : out IndexedDataMapOfShapeCoupleOfPaveBlocks from BOPDS;
380 aMVI : out DataMapOfShapeInteger from BOPCol;
381 aVC : out VectorOfCurve from BOPDS)
384 -- Keeps data for post treatment
386 RefineFaceInfoOn(me:out)
389 -- Refines the state On for the all faces having
392 UpdateFaceInfo(me:out;
393 theDME:out DataMapOfPaveBlockListOfPaveBlock from BOPDS)
396 -- Updates the information about faces
398 ForceInterfVE(me:out;
399 nV : Integer from Standard;
400 aPB : out PaveBlock from BOPDS;
401 aMPB : out MapOfPaveBlock from BOPDS)
404 -- Updates tolerance of vertex with index <nV>
405 -- to make it interfere with edge
407 ForceInterfVF(me:out;
408 nV : Integer from Standard;
409 nF : Integer from Standard)
410 returns Boolean from Standard
413 -- Updates tolerance of vertex with index <nV>
414 -- to make it interfere with face with index <nF>
417 nF1 : Integer from Standard;
418 nF2 : Integer from Standard)
419 returns Boolean from Standard
422 -- Checks if there are any common or intersecting sub shapes
423 -- between two planar faces.
426 nE : Integer from Standard;
427 nV1 : Integer from Standard;
428 aT1 : Real from Standard;
429 nV2 : Integer from Standard;
430 aT2 : Real from Standard)
431 returns Integer from Standard
434 -- Creates new edge from the edge nE with vertices nV1 and nV2
435 -- and returns the index of that new edge in the DS.
437 UpdatePaveBlocks(me:out;
438 theDMI : DataMapOfIntegerInteger from BOPCol)
441 -- Updates pave blocks which have the paves with indices contained
442 -- in the map <theDMI>.
445 myArguments : ListOfShape from BOPCol is protected;
446 myDS : PDS from BOPDS is protected;
447 myIterator : PIterator from BOPDS is protected;
448 myContext : Context from BOPInt is protected;
449 mySectionAttribute : SectionAttribute from BOPAlgo is protected;