Open CASCADE Technology  7.6.0
Data Structures | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes

BOPAlgo_PaveFiller Class Reference

The class represents the Intersection phase of the Boolean Operations algorithm.
It performs the pairwise intersection of the sub-shapes of the arguments in the following order:
More...

#include <BOPAlgo_PaveFiller.hxx>

Inheritance diagram for BOPAlgo_PaveFiller:
Inheritance graph
[legend]

Data Structures

struct  EdgeRangeDistance
 Auxiliary structure to hold the edge distance to the face. More...
 

Public Member Functions

 BOPAlgo_PaveFiller ()
 
virtual ~BOPAlgo_PaveFiller ()
 
 BOPAlgo_PaveFiller (const Handle< NCollection_BaseAllocator > &theAllocator)
 
const BOPDS_DSDS ()
 
BOPDS_PDS PDS ()
 
const BOPDS_PIteratorIterator ()
 
void SetArguments (const TopTools_ListOfShape &theLS)
 Sets the arguments for operation. More...
 
void AddArgument (const TopoDS_Shape &theShape)
 Adds the argument for operation. More...
 
const TopTools_ListOfShapeArguments () const
 Returns the list of arguments. More...
 
const Handle< IntTools_Context > & Context ()
 
void SetSectionAttribute (const BOPAlgo_SectionAttribute &theSecAttr)
 
void SetNonDestructive (const Standard_Boolean theFlag)
 Sets the flag that defines the mode of treatment. In non-destructive mode the argument shapes are not modified. Instead a copy of a sub-shape is created in the result if it is needed to be updated. More...
 
Standard_Boolean NonDestructive () const
 Returns the flag that defines the mode of treatment. In non-destructive mode the argument shapes are not modified. Instead a copy of a sub-shape is created in the result if it is needed to be updated. More...
 
virtual void Perform (const Message_ProgressRange &theRange=Message_ProgressRange()) override
 The main method to implement the operation Providing the range allows to enable Progress indicator User break functionalities. More...
 
void SetGlue (const BOPAlgo_GlueEnum theGlue)
 Sets the glue option for the algorithm. More...
 
BOPAlgo_GlueEnum Glue () const
 Returns the glue option of the algorithm. More...
 
void SetAvoidBuildPCurve (const Standard_Boolean theValue)
 Sets the flag to avoid building of p-curves of edges on faces. More...
 
Standard_Boolean IsAvoidBuildPCurve () const
 Returns the flag to avoid building of p-curves of edges on faces. More...
 
- Public Member Functions inherited from BOPAlgo_Options
 BOPAlgo_Options ()
 Empty constructor. More...
 
 BOPAlgo_Options (const Handle< NCollection_BaseAllocator > &theAllocator)
 Constructor with allocator. More...
 
virtual ~BOPAlgo_Options ()
 Destructor. More...
 
const Handle< NCollection_BaseAllocator > & Allocator () const
 Returns allocator. More...
 
void AddError (const Handle< Message_Alert > &theAlert)
 Adds the alert as error (fail) More...
 
void AddWarning (const Handle< Message_Alert > &theAlert)
 Adds the alert as warning. More...
 
Standard_Boolean HasErrors () const
 Returns true if algorithm has failed. More...
 
Standard_Boolean HasError (const Handle< Standard_Type > &theType) const
 Returns true if algorithm has generated error of specified type. More...
 
Standard_Boolean HasWarnings () const
 Returns true if algorithm has generated some warning alerts. More...
 
Standard_Boolean HasWarning (const Handle< Standard_Type > &theType) const
 Returns true if algorithm has generated warning of specified type. More...
 
const Handle< Message_Report > & GetReport () const
 Returns report collecting all errors and warnings. More...
 
void DumpErrors (Standard_OStream &theOS) const
 Dumps the error status into the given stream. More...
 
void DumpWarnings (Standard_OStream &theOS) const
 Dumps the warning statuses into the given stream. More...
 
void ClearWarnings ()
 Clears the warnings of the algorithm. More...
 
void SetFuzzyValue (const Standard_Real theFuzz)
 Sets the additional tolerance. More...
 
Standard_Real FuzzyValue () const
 Returns the additional tolerance. More...
 
void SetUseOBB (const Standard_Boolean theUseOBB)
 Enables/Disables the usage of OBB. More...
 
Standard_Boolean UseOBB () const
 Returns the flag defining usage of OBB. More...
 
void SetRunParallel (const Standard_Boolean theFlag)
 Set the flag of parallel processing if <theFlag> is true the parallel processing is switched on if <theFlag> is false the parallel processing is switched off. More...
 
Standard_Boolean RunParallel () const
 Returns the flag of parallel processing. More...
 

Protected Types

typedef NCollection_DataMap< Handle< BOPDS_PaveBlock >, Bnd_Box, TColStd_MapTransientHasherBOPAlgo_DataMapOfPaveBlockBndBox
 
typedef NCollection_DataMap< Handle< BOPDS_PaveBlock >, TColStd_ListOfInteger, TColStd_MapTransientHasherBOPAlgo_DataMapOfPaveBlockListOfInteger
 
typedef NCollection_DataMap< Standard_Integer, BOPDS_MapOfPaveBlockBOPAlgo_DataMapOfIntegerMapOfPaveBlock
 

Protected Member Functions

void SetNonDestructive ()
 Sets non-destructive mode automatically if an argument contains a locked sub-shape (see TopoDS_Shape::Locked()). More...
 
void SetIsPrimary (const Standard_Boolean theFlag)
 
Standard_Boolean IsPrimary () const
 
virtual void PerformInternal (const Message_ProgressRange &theRange)
 
virtual void Clear () override
 Clears all warnings and errors, and any data cached by the algorithm. User defined options are not cleared. More...
 
virtual void Init (const Message_ProgressRange &theRange)
 
void Prepare (const Message_ProgressRange &theRange)
 
virtual void PerformVV (const Message_ProgressRange &theRange)
 
virtual void PerformVE (const Message_ProgressRange &theRange)
 
void IntersectVE (const BOPDS_IndexedDataMapOfPaveBlockListOfInteger &theVEPairs, const Message_ProgressRange &theRange, const Standard_Boolean bAddInterfs=Standard_True)
 Performs the intersection of the vertices with edges. More...
 
void SplitPaveBlocks (const TColStd_MapOfInteger &theMEdges, const Standard_Boolean theAddInterfs)
 Splits the Pave Blocks of the given edges with the extra paves.
The method also builds the shrunk data for the new pave blocks and in case there is no valid range on the pave block, the vertices of this pave block will be united making SD vertex.
Parameter <theAddInterfs> defines whether this interference will be added into common table of interferences or not.
If some of the Pave Blocks are forming the Common Blocks, the splits of the Pave Blocks will also form a Common Block. More...
 
virtual void PerformVF (const Message_ProgressRange &theRange)
 
virtual void PerformEE (const Message_ProgressRange &theRange)
 
virtual void PerformEF (const Message_ProgressRange &theRange)
 
virtual void PerformFF (const Message_ProgressRange &theRange)
 
void TreatVerticesEE ()
 
void MakeSDVerticesFF (const TColStd_DataMapOfIntegerListOfInteger &aDMVLV, TColStd_DataMapOfIntegerInteger &theDMNewSD)
 
void MakeSplitEdges (const Message_ProgressRange &theRange)
 
void MakeBlocks (const Message_ProgressRange &theRange)
 
void MakePCurves (const Message_ProgressRange &theRange)
 
Standard_Integer MakeSDVertices (const TColStd_ListOfInteger &theVertIndices, const Standard_Boolean theAddInterfs=1)
 
void ProcessDE (const Message_ProgressRange &theRange)
 
void FillShrunkData (Handle< BOPDS_PaveBlock > &thePB)
 
void FillShrunkData (const TopAbs_ShapeEnum theType1, const TopAbs_ShapeEnum theType2)
 
void AnalyzeShrunkData (const Handle< BOPDS_PaveBlock > &thePB, const IntTools_ShrunkRange &theSR)
 Analyzes the results of computation of the valid range for the pave block and in case of error adds the warning status, otherwise saves the valid range in the pave block. More...
 
void PerformNewVertices (BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMVCPB, const Handle< NCollection_BaseAllocator > &theAllocator, const Message_ProgressRange &theRange, const Standard_Boolean theIsEEIntersection=Standard_True)
 Performs intersection of new vertices, obtained in E/E and E/F intersections. More...
 
Standard_Boolean CheckFacePaves (const TopoDS_Vertex &theVnew, const TColStd_MapOfInteger &theMIF)
 
Standard_Boolean IsExistingVertex (const gp_Pnt &theP, const Standard_Real theTol, const TColStd_MapOfInteger &theMVOn) const
 
void PutPavesOnCurve (const TColStd_MapOfInteger &theMVOnIn, const TColStd_MapOfInteger &theMVCommon, BOPDS_Curve &theNC, const TColStd_MapOfInteger &theMI, const TColStd_MapOfInteger &theMVEF, TColStd_DataMapOfIntegerReal &theMVTol, TColStd_DataMapOfIntegerListOfInteger &theDMVLV)
 Checks and puts paves from <theMVOnIn> on the curve <theNC>. At that, common (from theMVCommon) and not common vertices are processed differently. More...
 
void FilterPavesOnCurves (const BOPDS_VectorOfCurve &theVNC, TColStd_DataMapOfIntegerReal &theMVTol)
 
Standard_Boolean ExtendedTolerance (const Standard_Integer nV, const TColStd_MapOfInteger &aMI, Standard_Real &aTolVExt, const Standard_Integer aType=0)
 Depending on the parameter aType it checks whether the vertex nV was created in EE or EF intersections. If so, it increases aTolVExt from tolerance value of vertex to the max distance from vertex nV to the ends of the range of common part. Possible values of aType: 1 - checks only EE; 2 - checks only EF; other - checks both types of intersections. More...
 
void PutBoundPaveOnCurve (const TopoDS_Face &theF1, const TopoDS_Face &theF2, BOPDS_Curve &theNC, TColStd_ListOfInteger &theLBV)
 
Standard_Boolean IsExistingPaveBlock (const Handle< BOPDS_PaveBlock > &thePB, const BOPDS_Curve &theNC, const Standard_Real theTolR3D, const BOPDS_IndexedMapOfPaveBlock &theMPB, BOPTools_BoxTree &thePBTree, const BOPDS_MapOfPaveBlock &theMPBCommon, Handle< BOPDS_PaveBlock > &thePBOut, Standard_Real &theTolNew)
 Checks if the given pave block (created on section curve) coincides with any of the pave blocks of the faces created the section curve. More...
 
Standard_Boolean IsExistingPaveBlock (const Handle< BOPDS_PaveBlock > &thePB, const BOPDS_Curve &theNC, const TColStd_ListOfInteger &theLSE, Standard_Integer &theNEOut, Standard_Real &theTolNew)
 Checks if the given pave block (created on section curve) coincides with any of the edges shared between the faces created the section curve. More...
 
void PostTreatFF (BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMSCPB, BOPDS_DataMapOfPaveBlockListOfPaveBlock &theDMExEdges, TColStd_DataMapOfIntegerInteger &theDMNewSD, const BOPDS_IndexedMapOfPaveBlock &theMicroPB, const TopTools_IndexedMapOfShape &theVertsOnRejectedPB, const Handle< NCollection_BaseAllocator > &theAllocator, const Message_ProgressRange &theRange)
 Treatment of section edges. More...
 
void FindPaveBlocks (const Standard_Integer theV, const Standard_Integer theF, BOPDS_ListOfPaveBlock &theLPB)
 
void FillPaves (const Standard_Integer theV, const Standard_Integer theE, const Standard_Integer theF, const BOPDS_ListOfPaveBlock &theLPB, const Handle< BOPDS_PaveBlock > &thePB)
 
void MakeSplitEdge (const Standard_Integer theV, const Standard_Integer theF)
 
void GetEFPnts (const Standard_Integer nF1, const Standard_Integer nF2, IntSurf_ListOfPntOn2S &aListOfPnts)
 
void PutEFPavesOnCurve (const BOPDS_VectorOfCurve &theVC, const Standard_Integer theIndex, const TColStd_MapOfInteger &theMI, const TColStd_MapOfInteger &theMVEF, TColStd_DataMapOfIntegerReal &theMVTol, TColStd_DataMapOfIntegerListOfInteger &aDMVLV)
 Checks and puts paves created in EF intersections on the curve <theNC>. More...
 
void PutStickPavesOnCurve (const TopoDS_Face &aF1, const TopoDS_Face &aF2, const TColStd_MapOfInteger &theMI, const BOPDS_VectorOfCurve &theVC, const Standard_Integer theIndex, const TColStd_MapOfInteger &theMVStick, TColStd_DataMapOfIntegerReal &theMVTol, TColStd_DataMapOfIntegerListOfInteger &aDMVLV)
 Puts stick paves on the curve <theNC> More...
 
void GetStickVertices (const Standard_Integer nF1, const Standard_Integer nF2, TColStd_MapOfInteger &theMVStick, TColStd_MapOfInteger &theMVEF, TColStd_MapOfInteger &theMI)
 Collects indices of vertices created in all intersections between two faces (<nF1> and <nF2>) to the map <theMVStick>. Also, it collects indices of EF vertices to the <theMVEF> map and indices of all subshapes of these two faces to the <theMI> map. More...
 
void GetFullShapeMap (const Standard_Integer nF, TColStd_MapOfInteger &theMI)
 Collects index nF and indices of all subshapes of the shape with index <nF> to the map <theMI>. More...
 
void RemoveUsedVertices (const BOPDS_VectorOfCurve &theVC, TColStd_MapOfInteger &theMV)
 Removes indices of vertices that are already on the curve <theNC> from the map <theMV>. It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods. More...
 
void PutPaveOnCurve (const Standard_Integer nV, const Standard_Real theTolR3D, const BOPDS_Curve &theNC, const TColStd_MapOfInteger &theMI, TColStd_DataMapOfIntegerReal &theMVTol, TColStd_DataMapOfIntegerListOfInteger &aDMVLV, const Standard_Integer aType=0)
 Puts the pave nV on the curve theNC. Parameter aType defines whether to check the pave with extended tolerance: 0 - do not perform the check; other - perform the check (aType goes to ExtendedTolerance). More...
 
void ProcessExistingPaveBlocks (const Standard_Integer theInt, const Standard_Integer theCur, const Standard_Integer nF1, const Standard_Integer nF2, const TopoDS_Edge &theES, const BOPDS_IndexedMapOfPaveBlock &theMPBOnIn, BOPTools_BoxTree &thePBTree, BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMSCPB, TopTools_DataMapOfShapeInteger &theMVI, BOPDS_ListOfPaveBlock &theLPBC, BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap, BOPDS_MapOfPaveBlock &theMPB)
 Adds the existing edges for intersection with section edges by checking the possible intersection with the faces comparing pre-saved E-F distances with new tolerances. More...
 
void ProcessExistingPaveBlocks (const Standard_Integer theInt, const Standard_Integer nF1, const Standard_Integer nF2, const BOPDS_IndexedMapOfPaveBlock &theMPBOnIn, BOPTools_BoxTree &thePBTree, const TColStd_DataMapOfIntegerListOfInteger &theDMBV, BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMSCPB, TopTools_DataMapOfShapeInteger &theMVI, BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap, BOPDS_MapOfPaveBlock &theMPB)
 Adds the existing edges from the map <theMPBOnIn> which interfere with the vertices from <theMVB> map to the post treatment of section edges. More...
 
void UpdateExistingPaveBlocks (const Handle< BOPDS_PaveBlock > &thePB, BOPDS_ListOfPaveBlock &theLPB, const BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap)
 Replaces existing pave block <thePB> with new pave blocks <theLPB>. The list <theLPB> contains images of <thePB> which were created in the post treatment of section edges. Tries to project the new edges on the faces contained in the <thePBFacesMap>. More...
 
void TreatNewVertices (const BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMVCPB, TopTools_IndexedDataMapOfShapeListOfShape &theImages)
 Treatment of vertices that were created in EE intersections. More...
 
void PutClosingPaveOnCurve (BOPDS_Curve &aNC)
 Put paves on the curve <aBC> in case when <aBC> is closed 3D-curve. More...
 
void PreparePostTreatFF (const Standard_Integer aInt, const Standard_Integer aCur, const Handle< BOPDS_PaveBlock > &aPB, BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &aMSCPB, TopTools_DataMapOfShapeInteger &aMVI, BOPDS_ListOfPaveBlock &aLPB)
 Keeps data for post treatment. More...
 
void UpdateFaceInfo (BOPDS_DataMapOfPaveBlockListOfPaveBlock &theDME, const TColStd_DataMapOfIntegerInteger &theDMV, const BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap)
 Updates the information about faces. More...
 
Standard_Boolean ForceInterfVE (const Standard_Integer nV, Handle< BOPDS_PaveBlock > &aPB, TColStd_MapOfInteger &theMEdges)
 Updates tolerance of vertex with index <nV> to make it interfere with edge. Returns TRUE if intersection happened. More...
 
Standard_Boolean ForceInterfVF (const Standard_Integer nV, const Standard_Integer nF)
 Updates tolerance of vertex with index <nV> to make it interfere with face with index <nF> More...
 
Standard_Boolean CheckPlanes (const Standard_Integer nF1, const Standard_Integer nF2) const
 Checks if there are any common or intersecting sub shapes between two planar faces. More...
 
Standard_Integer SplitEdge (const Standard_Integer nE, const Standard_Integer nV1, const Standard_Real aT1, const Standard_Integer nV2, const Standard_Real aT2)
 Creates new edge from the edge nE with vertices nV1 and nV2 and returns the index of that new edge in the DS. More...
 
void UpdatePaveBlocks (const TColStd_DataMapOfIntegerInteger &aDMNewSD)
 Updates pave blocks which have the paves with indices contained in the map <aDMNewSD>. More...
 
Standard_Integer UpdateVertex (const Standard_Integer nV, const Standard_Real aTolNew)
 Updates tolerance vertex nV due to V/E interference. It always creates new vertex if nV is from arguments. More...
 
void UpdatePaveBlocksWithSDVertices ()
 
void UpdateCommonBlocksWithSDVertices ()
 
void UpdateBlocksWithSharedVertices ()
 
void UpdateInterfsWithSDVertices ()
 
Standard_Boolean EstimatePaveOnCurve (const Standard_Integer nV, const BOPDS_Curve &theNC, const Standard_Real theTolR3D)
 
void UpdateEdgeTolerance (const Standard_Integer nE, const Standard_Real aTolNew)
 
void RemovePaveBlocks (const TColStd_MapOfInteger theEdges)
 
void CorrectToleranceOfSE ()
 
void ReduceIntersectionRange (const Standard_Integer theV1, const Standard_Integer theV2, const Standard_Integer theE, const Standard_Integer theF, Standard_Real &theTS1, Standard_Real &theTS2)
 Reduce the intersection range using the common ranges of Edge/Edge interferences to avoid creation of close intersection vertices. More...
 
Standard_Boolean GetPBBox (const TopoDS_Edge &theE, const Handle< BOPDS_PaveBlock > &thePB, BOPAlgo_DataMapOfPaveBlockBndBox &thePBBox, Standard_Real &theFirst, Standard_Real &theLast, Standard_Real &theSFirst, Standard_Real &theSLast, Bnd_Box &theBox)
 Gets the bounding box for the given Pave Block. If Pave Block has shrunk data it will be used to get the box, and the Shrunk Range (<theSFirst>, <theSLast>). Otherwise the box will be computed using BndLib_Add3dCurve method, and the Shrunk Range will be equal to the PB's range. To avoid re-computation of the bounding box for the same Pave Block it will be saved in the map <thePBBox>. Returns FALSE in case the PB's range is less than the Precision::PConfusion(), otherwise returns TRUE. More...
 
void PutSEInOtherFaces (const Message_ProgressRange &theRange)
 Treatment of the possible common zones, not detected by the Face/Face intersection algorithm, by intersection of each section edge with all faces not participated in creation of that section edge. If the intersection says that the section edge is lying on the face it will be added into FaceInfo structure of the face as IN edge and will be used for splitting. More...
 
void CheckSelfInterference ()
 Analyzes the results of interferences of sub-shapes of the shapes looking for self-interfering entities by the following rules:
More...
 
void AddIntersectionFailedWarning (const TopoDS_Shape &theS1, const TopoDS_Shape &theS2)
 Adds the warning about failed intersection of pair of sub-shapes. More...
 
void RepeatIntersection (const Message_ProgressRange &theRange)
 Repeat intersection of sub-shapes with increased vertices. More...
 
void UpdateVerticesOfCB ()
 Updates vertices of CommonBlocks with real tolerance of CB. More...
 
void ForceInterfEE (const Message_ProgressRange &theRange)
 The method looks for the additional common blocks among pairs of edges with the same bounding vertices. More...
 
void ForceInterfEF (const Message_ProgressRange &theRange)
 The method looks for the additional edge/face common blocks among pairs of edge/face having the same vertices. More...
 
void ForceInterfEF (const BOPDS_IndexedMapOfPaveBlock &theMPB, const Message_ProgressRange &theRange, const Standard_Boolean theAddInterf)
 Performs intersection of given pave blocks with all faces from arguments. More...
 
void RemoveMicroSectionEdges (BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMSCPB, BOPDS_IndexedMapOfPaveBlock &theMicroPB)
 When all section edges are created and no increase of the tolerance of vertices put on the section edges is expected, make sure that the created sections have valid range. If any of the section edges do not have valid range, remove them from Face/Face intersection info and from the input <theMSCPB> map. Put such edges into <MicroPB> map for further unification of their vertices in the PostTreatFF method. More...
 
void RemoveMicroEdges ()
 Check all edges on the micro status and remove the positive ones. More...
 
void fillPIConstants (const Standard_Real theWhole, BOPAlgo_PISteps &theSteps) const override
 Analyzing Progress steps. More...
 
void fillPISteps (BOPAlgo_PISteps &theSteps) const override
 Filling steps for all other operations. More...
 
- Protected Member Functions inherited from BOPAlgo_Algo
 BOPAlgo_Algo ()
 Default constructor. More...
 
virtual ~BOPAlgo_Algo ()
 
 BOPAlgo_Algo (const Handle< NCollection_BaseAllocator > &theAllocator)
 
virtual void CheckData ()
 Checks input data. More...
 
virtual void CheckResult ()
 Checks the obtained result. More...
 
void analyzeProgress (const Standard_Real theWhole, BOPAlgo_PISteps &theSteps) const
 Analyze progress steps of the whole operation. More...
 
- Protected Member Functions inherited from BOPAlgo_Options
Standard_Boolean UserBreak (const Message_ProgressScope &thePS)
 Adds error to the report if the break signal was caught. Returns true in this case, false otherwise. More...
 

Static Protected Member Functions

static Standard_Boolean CheckFacePaves (const Standard_Integer theN, const TColStd_MapOfInteger &theMIFOn, const TColStd_MapOfInteger &theMIFIn)
 

Protected Attributes

TopTools_ListOfShape myArguments
 Fields. More...
 
BOPDS_PDS myDS
 
BOPDS_PIterator myIterator
 
Handle< IntTools_ContextmyContext
 
BOPAlgo_SectionAttribute mySectionAttribute
 
Standard_Boolean myNonDestructive
 
Standard_Boolean myIsPrimary
 
Standard_Boolean myAvoidBuildPCurve
 
BOPAlgo_GlueEnum myGlue
 
BOPAlgo_DataMapOfIntegerMapOfPaveBlock myFPBDone
 Fence map of intersected faces and pave blocks. More...
 
TColStd_MapOfInteger myIncreasedSS
 Sub-shapes with increased tolerance during the operation. More...
 
TColStd_MapOfInteger myVertsToAvoidExtension
 Vertices located close to E/E or E/F intersection points which has already been extended to cover the real intersection points, and should not be extended any longer to be put on a section curve. More...
 
NCollection_DataMap< BOPDS_Pair, NCollection_List< EdgeRangeDistance >, BOPDS_PairMapHashermyDistances
 Map to store minimal distances between shapes which have no real intersections. More...
 
- Protected Attributes inherited from BOPAlgo_Options
Handle< NCollection_BaseAllocatormyAllocator
 Enables/Disables the usage of OBB. More...
 
Handle< Message_ReportmyReport
 Enables/Disables the usage of OBB. More...
 
Standard_Boolean myRunParallel
 Enables/Disables the usage of OBB. More...
 
Standard_Real myFuzzyValue
 Enables/Disables the usage of OBB. More...
 
Standard_Boolean myUseOBB
 Enables/Disables the usage of OBB. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from BOPAlgo_Options
static Standard_Boolean GetParallelMode ()
 Gets the global parallel mode. More...
 
static void SetParallelMode (const Standard_Boolean theNewMode)
 Sets the global parallel mode. More...
 

Detailed Description

The class represents the Intersection phase of the Boolean Operations algorithm.
It performs the pairwise intersection of the sub-shapes of the arguments in the following order:

  1. Vertex/Vertex;
  2. Vertex/Edge;
  3. Edge/Edge;
  4. Vertex/Face;
  5. Edge/Face;
  6. Face/Face.

The results of intersection are stored into the Data Structure of the algorithm.

Additionally to the options provided by the parent class, the algorithm has the following options:

The algorithm returns the following Warning statuses:

The algorithm returns the following Error alerts:

Member Typedef Documentation

◆ BOPAlgo_DataMapOfIntegerMapOfPaveBlock

◆ BOPAlgo_DataMapOfPaveBlockBndBox

◆ BOPAlgo_DataMapOfPaveBlockListOfInteger

Constructor & Destructor Documentation

◆ BOPAlgo_PaveFiller() [1/2]

BOPAlgo_PaveFiller::BOPAlgo_PaveFiller ( )

◆ ~BOPAlgo_PaveFiller()

virtual BOPAlgo_PaveFiller::~BOPAlgo_PaveFiller ( )
virtual

◆ BOPAlgo_PaveFiller() [2/2]

BOPAlgo_PaveFiller::BOPAlgo_PaveFiller ( const Handle< NCollection_BaseAllocator > &  theAllocator)

Member Function Documentation

◆ AddArgument()

void BOPAlgo_PaveFiller::AddArgument ( const TopoDS_Shape theShape)
inline

Adds the argument for operation.

◆ AddIntersectionFailedWarning()

void BOPAlgo_PaveFiller::AddIntersectionFailedWarning ( const TopoDS_Shape theS1,
const TopoDS_Shape theS2 
)
protected

Adds the warning about failed intersection of pair of sub-shapes.

◆ AnalyzeShrunkData()

void BOPAlgo_PaveFiller::AnalyzeShrunkData ( const Handle< BOPDS_PaveBlock > &  thePB,
const IntTools_ShrunkRange theSR 
)
protected

Analyzes the results of computation of the valid range for the pave block and in case of error adds the warning status, otherwise saves the valid range in the pave block.

◆ Arguments()

const TopTools_ListOfShape& BOPAlgo_PaveFiller::Arguments ( ) const
inline

Returns the list of arguments.

◆ CheckFacePaves() [1/2]

static Standard_Boolean BOPAlgo_PaveFiller::CheckFacePaves ( const Standard_Integer  theN,
const TColStd_MapOfInteger theMIFOn,
const TColStd_MapOfInteger theMIFIn 
)
staticprotected

◆ CheckFacePaves() [2/2]

Standard_Boolean BOPAlgo_PaveFiller::CheckFacePaves ( const TopoDS_Vertex theVnew,
const TColStd_MapOfInteger theMIF 
)
protected

◆ CheckPlanes()

Standard_Boolean BOPAlgo_PaveFiller::CheckPlanes ( const Standard_Integer  nF1,
const Standard_Integer  nF2 
) const
protected

Checks if there are any common or intersecting sub shapes between two planar faces.

◆ CheckSelfInterference()

void BOPAlgo_PaveFiller::CheckSelfInterference ( )
protected

Analyzes the results of interferences of sub-shapes of the shapes looking for self-interfering entities by the following rules:

  1. The Faces of the same shape considered interfering in case they:
    • Interfere with the other shapes in the same place (in the same vertex) or;
    • Included in the same common block.
  2. The Faces of the same shape considered interfering in case they share the IN or SECTION edges.
    In case self-interference is found the warning is added.

◆ Clear()

virtual void BOPAlgo_PaveFiller::Clear ( )
overrideprotectedvirtual

Clears all warnings and errors, and any data cached by the algorithm. User defined options are not cleared.

Reimplemented from BOPAlgo_Options.

◆ Context()

const Handle< IntTools_Context >& BOPAlgo_PaveFiller::Context ( )

◆ CorrectToleranceOfSE()

void BOPAlgo_PaveFiller::CorrectToleranceOfSE ( )
protected

◆ DS()

const BOPDS_DS& BOPAlgo_PaveFiller::DS ( )

◆ EstimatePaveOnCurve()

Standard_Boolean BOPAlgo_PaveFiller::EstimatePaveOnCurve ( const Standard_Integer  nV,
const BOPDS_Curve theNC,
const Standard_Real  theTolR3D 
)
protected

◆ ExtendedTolerance()

Standard_Boolean BOPAlgo_PaveFiller::ExtendedTolerance ( const Standard_Integer  nV,
const TColStd_MapOfInteger aMI,
Standard_Real aTolVExt,
const Standard_Integer  aType = 0 
)
protected

Depending on the parameter aType it checks whether the vertex nV was created in EE or EF intersections. If so, it increases aTolVExt from tolerance value of vertex to the max distance from vertex nV to the ends of the range of common part. Possible values of aType: 1 - checks only EE; 2 - checks only EF; other - checks both types of intersections.

◆ FillPaves()

void BOPAlgo_PaveFiller::FillPaves ( const Standard_Integer  theV,
const Standard_Integer  theE,
const Standard_Integer  theF,
const BOPDS_ListOfPaveBlock theLPB,
const Handle< BOPDS_PaveBlock > &  thePB 
)
protected

◆ fillPIConstants()

void BOPAlgo_PaveFiller::fillPIConstants ( const Standard_Real  theWhole,
BOPAlgo_PISteps theSteps 
) const
overrideprotectedvirtual

Analyzing Progress steps.

Filling steps for constant operations

Reimplemented from BOPAlgo_Algo.

◆ fillPISteps()

void BOPAlgo_PaveFiller::fillPISteps ( BOPAlgo_PISteps theSteps) const
overrideprotectedvirtual

Filling steps for all other operations.

Reimplemented from BOPAlgo_Algo.

◆ FillShrunkData() [1/2]

void BOPAlgo_PaveFiller::FillShrunkData ( const TopAbs_ShapeEnum  theType1,
const TopAbs_ShapeEnum  theType2 
)
protected

◆ FillShrunkData() [2/2]

void BOPAlgo_PaveFiller::FillShrunkData ( Handle< BOPDS_PaveBlock > &  thePB)
protected

◆ FilterPavesOnCurves()

void BOPAlgo_PaveFiller::FilterPavesOnCurves ( const BOPDS_VectorOfCurve theVNC,
TColStd_DataMapOfIntegerReal theMVTol 
)
protected

◆ FindPaveBlocks()

void BOPAlgo_PaveFiller::FindPaveBlocks ( const Standard_Integer  theV,
const Standard_Integer  theF,
BOPDS_ListOfPaveBlock theLPB 
)
protected

◆ ForceInterfEE()

void BOPAlgo_PaveFiller::ForceInterfEE ( const Message_ProgressRange theRange)
protected

The method looks for the additional common blocks among pairs of edges with the same bounding vertices.

◆ ForceInterfEF() [1/2]

void BOPAlgo_PaveFiller::ForceInterfEF ( const BOPDS_IndexedMapOfPaveBlock theMPB,
const Message_ProgressRange theRange,
const Standard_Boolean  theAddInterf 
)
protected

Performs intersection of given pave blocks with all faces from arguments.

◆ ForceInterfEF() [2/2]

void BOPAlgo_PaveFiller::ForceInterfEF ( const Message_ProgressRange theRange)
protected

The method looks for the additional edge/face common blocks among pairs of edge/face having the same vertices.

◆ ForceInterfVE()

Standard_Boolean BOPAlgo_PaveFiller::ForceInterfVE ( const Standard_Integer  nV,
Handle< BOPDS_PaveBlock > &  aPB,
TColStd_MapOfInteger theMEdges 
)
protected

Updates tolerance of vertex with index <nV> to make it interfere with edge. Returns TRUE if intersection happened.

◆ ForceInterfVF()

Standard_Boolean BOPAlgo_PaveFiller::ForceInterfVF ( const Standard_Integer  nV,
const Standard_Integer  nF 
)
protected

Updates tolerance of vertex with index <nV> to make it interfere with face with index <nF>

◆ GetEFPnts()

void BOPAlgo_PaveFiller::GetEFPnts ( const Standard_Integer  nF1,
const Standard_Integer  nF2,
IntSurf_ListOfPntOn2S aListOfPnts 
)
protected

◆ GetFullShapeMap()

void BOPAlgo_PaveFiller::GetFullShapeMap ( const Standard_Integer  nF,
TColStd_MapOfInteger theMI 
)
protected

Collects index nF and indices of all subshapes of the shape with index <nF> to the map <theMI>.

◆ GetPBBox()

Standard_Boolean BOPAlgo_PaveFiller::GetPBBox ( const TopoDS_Edge theE,
const Handle< BOPDS_PaveBlock > &  thePB,
BOPAlgo_DataMapOfPaveBlockBndBox thePBBox,
Standard_Real theFirst,
Standard_Real theLast,
Standard_Real theSFirst,
Standard_Real theSLast,
Bnd_Box theBox 
)
protected

Gets the bounding box for the given Pave Block. If Pave Block has shrunk data it will be used to get the box, and the Shrunk Range (<theSFirst>, <theSLast>). Otherwise the box will be computed using BndLib_Add3dCurve method, and the Shrunk Range will be equal to the PB's range. To avoid re-computation of the bounding box for the same Pave Block it will be saved in the map <thePBBox>. Returns FALSE in case the PB's range is less than the Precision::PConfusion(), otherwise returns TRUE.

◆ GetStickVertices()

void BOPAlgo_PaveFiller::GetStickVertices ( const Standard_Integer  nF1,
const Standard_Integer  nF2,
TColStd_MapOfInteger theMVStick,
TColStd_MapOfInteger theMVEF,
TColStd_MapOfInteger theMI 
)
protected

Collects indices of vertices created in all intersections between two faces (<nF1> and <nF2>) to the map <theMVStick>. Also, it collects indices of EF vertices to the <theMVEF> map and indices of all subshapes of these two faces to the <theMI> map.

◆ Glue()

BOPAlgo_GlueEnum BOPAlgo_PaveFiller::Glue ( ) const

Returns the glue option of the algorithm.

◆ Init()

virtual void BOPAlgo_PaveFiller::Init ( const Message_ProgressRange theRange)
protectedvirtual

Reimplemented in BOPAlgo_CheckerSI.

◆ IntersectVE()

void BOPAlgo_PaveFiller::IntersectVE ( const BOPDS_IndexedDataMapOfPaveBlockListOfInteger theVEPairs,
const Message_ProgressRange theRange,
const Standard_Boolean  bAddInterfs = Standard_True 
)
protected

Performs the intersection of the vertices with edges.

◆ IsAvoidBuildPCurve()

Standard_Boolean BOPAlgo_PaveFiller::IsAvoidBuildPCurve ( ) const
inline

Returns the flag to avoid building of p-curves of edges on faces.

◆ IsExistingPaveBlock() [1/2]

Standard_Boolean BOPAlgo_PaveFiller::IsExistingPaveBlock ( const Handle< BOPDS_PaveBlock > &  thePB,
const BOPDS_Curve theNC,
const Standard_Real  theTolR3D,
const BOPDS_IndexedMapOfPaveBlock theMPB,
BOPTools_BoxTree thePBTree,
const BOPDS_MapOfPaveBlock theMPBCommon,
Handle< BOPDS_PaveBlock > &  thePBOut,
Standard_Real theTolNew 
)
protected

Checks if the given pave block (created on section curve) coincides with any of the pave blocks of the faces created the section curve.

◆ IsExistingPaveBlock() [2/2]

Standard_Boolean BOPAlgo_PaveFiller::IsExistingPaveBlock ( const Handle< BOPDS_PaveBlock > &  thePB,
const BOPDS_Curve theNC,
const TColStd_ListOfInteger theLSE,
Standard_Integer theNEOut,
Standard_Real theTolNew 
)
protected

Checks if the given pave block (created on section curve) coincides with any of the edges shared between the faces created the section curve.

◆ IsExistingVertex()

Standard_Boolean BOPAlgo_PaveFiller::IsExistingVertex ( const gp_Pnt theP,
const Standard_Real  theTol,
const TColStd_MapOfInteger theMVOn 
) const
protected

◆ IsPrimary()

Standard_Boolean BOPAlgo_PaveFiller::IsPrimary ( ) const
protected

◆ Iterator()

const BOPDS_PIterator& BOPAlgo_PaveFiller::Iterator ( )

◆ MakeBlocks()

void BOPAlgo_PaveFiller::MakeBlocks ( const Message_ProgressRange theRange)
protected

◆ MakePCurves()

void BOPAlgo_PaveFiller::MakePCurves ( const Message_ProgressRange theRange)
protected

◆ MakeSDVertices()

Standard_Integer BOPAlgo_PaveFiller::MakeSDVertices ( const TColStd_ListOfInteger theVertIndices,
const Standard_Boolean  theAddInterfs = 1 
)
protected

◆ MakeSDVerticesFF()

void BOPAlgo_PaveFiller::MakeSDVerticesFF ( const TColStd_DataMapOfIntegerListOfInteger aDMVLV,
TColStd_DataMapOfIntegerInteger theDMNewSD 
)
protected

◆ MakeSplitEdge()

void BOPAlgo_PaveFiller::MakeSplitEdge ( const Standard_Integer  theV,
const Standard_Integer  theF 
)
protected

◆ MakeSplitEdges()

void BOPAlgo_PaveFiller::MakeSplitEdges ( const Message_ProgressRange theRange)
protected

◆ NonDestructive()

Standard_Boolean BOPAlgo_PaveFiller::NonDestructive ( ) const

Returns the flag that defines the mode of treatment. In non-destructive mode the argument shapes are not modified. Instead a copy of a sub-shape is created in the result if it is needed to be updated.

◆ PDS()

BOPDS_PDS BOPAlgo_PaveFiller::PDS ( )

◆ Perform()

virtual void BOPAlgo_PaveFiller::Perform ( const Message_ProgressRange theRange = Message_ProgressRange())
overridevirtual

The main method to implement the operation Providing the range allows to enable Progress indicator User break functionalities.

Implements BOPAlgo_Algo.

Reimplemented in BOPAlgo_CheckerSI.

◆ PerformEE()

virtual void BOPAlgo_PaveFiller::PerformEE ( const Message_ProgressRange theRange)
protectedvirtual

◆ PerformEF()

virtual void BOPAlgo_PaveFiller::PerformEF ( const Message_ProgressRange theRange)
protectedvirtual

◆ PerformFF()

virtual void BOPAlgo_PaveFiller::PerformFF ( const Message_ProgressRange theRange)
protectedvirtual

◆ PerformInternal()

virtual void BOPAlgo_PaveFiller::PerformInternal ( const Message_ProgressRange theRange)
protectedvirtual

◆ PerformNewVertices()

void BOPAlgo_PaveFiller::PerformNewVertices ( BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks theMVCPB,
const Handle< NCollection_BaseAllocator > &  theAllocator,
const Message_ProgressRange theRange,
const Standard_Boolean  theIsEEIntersection = Standard_True 
)
protected

Performs intersection of new vertices, obtained in E/E and E/F intersections.

◆ PerformVE()

virtual void BOPAlgo_PaveFiller::PerformVE ( const Message_ProgressRange theRange)
protectedvirtual

◆ PerformVF()

virtual void BOPAlgo_PaveFiller::PerformVF ( const Message_ProgressRange theRange)
protectedvirtual

◆ PerformVV()

virtual void BOPAlgo_PaveFiller::PerformVV ( const Message_ProgressRange theRange)
protectedvirtual

◆ PostTreatFF()

void BOPAlgo_PaveFiller::PostTreatFF ( BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks theMSCPB,
BOPDS_DataMapOfPaveBlockListOfPaveBlock theDMExEdges,
TColStd_DataMapOfIntegerInteger theDMNewSD,
const BOPDS_IndexedMapOfPaveBlock theMicroPB,
const TopTools_IndexedMapOfShape theVertsOnRejectedPB,
const Handle< NCollection_BaseAllocator > &  theAllocator,
const Message_ProgressRange theRange 
)
protected

Treatment of section edges.

◆ Prepare()

void BOPAlgo_PaveFiller::Prepare ( const Message_ProgressRange theRange)
protected

◆ PreparePostTreatFF()

void BOPAlgo_PaveFiller::PreparePostTreatFF ( const Standard_Integer  aInt,
const Standard_Integer  aCur,
const Handle< BOPDS_PaveBlock > &  aPB,
BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks aMSCPB,
TopTools_DataMapOfShapeInteger aMVI,
BOPDS_ListOfPaveBlock aLPB 
)
protected

Keeps data for post treatment.

◆ ProcessDE()

void BOPAlgo_PaveFiller::ProcessDE ( const Message_ProgressRange theRange)
protected

◆ ProcessExistingPaveBlocks() [1/2]

void BOPAlgo_PaveFiller::ProcessExistingPaveBlocks ( const Standard_Integer  theInt,
const Standard_Integer  nF1,
const Standard_Integer  nF2,
const BOPDS_IndexedMapOfPaveBlock theMPBOnIn,
BOPTools_BoxTree thePBTree,
const TColStd_DataMapOfIntegerListOfInteger theDMBV,
BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks theMSCPB,
TopTools_DataMapOfShapeInteger theMVI,
BOPAlgo_DataMapOfPaveBlockListOfInteger thePBFacesMap,
BOPDS_MapOfPaveBlock theMPB 
)
protected

Adds the existing edges from the map <theMPBOnIn> which interfere with the vertices from <theMVB> map to the post treatment of section edges.

◆ ProcessExistingPaveBlocks() [2/2]

void BOPAlgo_PaveFiller::ProcessExistingPaveBlocks ( const Standard_Integer  theInt,
const Standard_Integer  theCur,
const Standard_Integer  nF1,
const Standard_Integer  nF2,
const TopoDS_Edge theES,
const BOPDS_IndexedMapOfPaveBlock theMPBOnIn,
BOPTools_BoxTree thePBTree,
BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks theMSCPB,
TopTools_DataMapOfShapeInteger theMVI,
BOPDS_ListOfPaveBlock theLPBC,
BOPAlgo_DataMapOfPaveBlockListOfInteger thePBFacesMap,
BOPDS_MapOfPaveBlock theMPB 
)
protected

Adds the existing edges for intersection with section edges by checking the possible intersection with the faces comparing pre-saved E-F distances with new tolerances.

◆ PutBoundPaveOnCurve()

void BOPAlgo_PaveFiller::PutBoundPaveOnCurve ( const TopoDS_Face theF1,
const TopoDS_Face theF2,
BOPDS_Curve theNC,
TColStd_ListOfInteger theLBV 
)
protected

◆ PutClosingPaveOnCurve()

void BOPAlgo_PaveFiller::PutClosingPaveOnCurve ( BOPDS_Curve aNC)
protected

Put paves on the curve <aBC> in case when <aBC> is closed 3D-curve.

◆ PutEFPavesOnCurve()

void BOPAlgo_PaveFiller::PutEFPavesOnCurve ( const BOPDS_VectorOfCurve theVC,
const Standard_Integer  theIndex,
const TColStd_MapOfInteger theMI,
const TColStd_MapOfInteger theMVEF,
TColStd_DataMapOfIntegerReal theMVTol,
TColStd_DataMapOfIntegerListOfInteger aDMVLV 
)
protected

Checks and puts paves created in EF intersections on the curve <theNC>.

◆ PutPaveOnCurve()

void BOPAlgo_PaveFiller::PutPaveOnCurve ( const Standard_Integer  nV,
const Standard_Real  theTolR3D,
const BOPDS_Curve theNC,
const TColStd_MapOfInteger theMI,
TColStd_DataMapOfIntegerReal theMVTol,
TColStd_DataMapOfIntegerListOfInteger aDMVLV,
const Standard_Integer  aType = 0 
)
protected

Puts the pave nV on the curve theNC. Parameter aType defines whether to check the pave with extended tolerance: 0 - do not perform the check; other - perform the check (aType goes to ExtendedTolerance).

◆ PutPavesOnCurve()

void BOPAlgo_PaveFiller::PutPavesOnCurve ( const TColStd_MapOfInteger theMVOnIn,
const TColStd_MapOfInteger theMVCommon,
BOPDS_Curve theNC,
const TColStd_MapOfInteger theMI,
const TColStd_MapOfInteger theMVEF,
TColStd_DataMapOfIntegerReal theMVTol,
TColStd_DataMapOfIntegerListOfInteger theDMVLV 
)
protected

Checks and puts paves from <theMVOnIn> on the curve <theNC>. At that, common (from theMVCommon) and not common vertices are processed differently.

◆ PutSEInOtherFaces()

void BOPAlgo_PaveFiller::PutSEInOtherFaces ( const Message_ProgressRange theRange)
protected

Treatment of the possible common zones, not detected by the Face/Face intersection algorithm, by intersection of each section edge with all faces not participated in creation of that section edge. If the intersection says that the section edge is lying on the face it will be added into FaceInfo structure of the face as IN edge and will be used for splitting.

◆ PutStickPavesOnCurve()

void BOPAlgo_PaveFiller::PutStickPavesOnCurve ( const TopoDS_Face aF1,
const TopoDS_Face aF2,
const TColStd_MapOfInteger theMI,
const BOPDS_VectorOfCurve theVC,
const Standard_Integer  theIndex,
const TColStd_MapOfInteger theMVStick,
TColStd_DataMapOfIntegerReal theMVTol,
TColStd_DataMapOfIntegerListOfInteger aDMVLV 
)
protected

Puts stick paves on the curve <theNC>

◆ ReduceIntersectionRange()

void BOPAlgo_PaveFiller::ReduceIntersectionRange ( const Standard_Integer  theV1,
const Standard_Integer  theV2,
const Standard_Integer  theE,
const Standard_Integer  theF,
Standard_Real theTS1,
Standard_Real theTS2 
)
protected

Reduce the intersection range using the common ranges of Edge/Edge interferences to avoid creation of close intersection vertices.

◆ RemoveMicroEdges()

void BOPAlgo_PaveFiller::RemoveMicroEdges ( )
protected

Check all edges on the micro status and remove the positive ones.

◆ RemoveMicroSectionEdges()

void BOPAlgo_PaveFiller::RemoveMicroSectionEdges ( BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks theMSCPB,
BOPDS_IndexedMapOfPaveBlock theMicroPB 
)
protected

When all section edges are created and no increase of the tolerance of vertices put on the section edges is expected, make sure that the created sections have valid range. If any of the section edges do not have valid range, remove them from Face/Face intersection info and from the input <theMSCPB> map. Put such edges into <MicroPB> map for further unification of their vertices in the PostTreatFF method.

All these section edges have already been checked to have valid range. Current check is necessary for the edges whose vertices have also been put on other section edges with greater tolerance, which has caused increase of the tolerance value of the vertices.

◆ RemovePaveBlocks()

void BOPAlgo_PaveFiller::RemovePaveBlocks ( const TColStd_MapOfInteger  theEdges)
protected

◆ RemoveUsedVertices()

void BOPAlgo_PaveFiller::RemoveUsedVertices ( const BOPDS_VectorOfCurve theVC,
TColStd_MapOfInteger theMV 
)
protected

Removes indices of vertices that are already on the curve <theNC> from the map <theMV>. It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.

◆ RepeatIntersection()

void BOPAlgo_PaveFiller::RepeatIntersection ( const Message_ProgressRange theRange)
protected

Repeat intersection of sub-shapes with increased vertices.

◆ SetArguments()

void BOPAlgo_PaveFiller::SetArguments ( const TopTools_ListOfShape theLS)
inline

Sets the arguments for operation.

◆ SetAvoidBuildPCurve()

void BOPAlgo_PaveFiller::SetAvoidBuildPCurve ( const Standard_Boolean  theValue)
inline

Sets the flag to avoid building of p-curves of edges on faces.

◆ SetGlue()

void BOPAlgo_PaveFiller::SetGlue ( const BOPAlgo_GlueEnum  theGlue)

Sets the glue option for the algorithm.

◆ SetIsPrimary()

void BOPAlgo_PaveFiller::SetIsPrimary ( const Standard_Boolean  theFlag)
protected

◆ SetNonDestructive() [1/2]

void BOPAlgo_PaveFiller::SetNonDestructive ( )
protected

Sets non-destructive mode automatically if an argument contains a locked sub-shape (see TopoDS_Shape::Locked()).

◆ SetNonDestructive() [2/2]

void BOPAlgo_PaveFiller::SetNonDestructive ( const Standard_Boolean  theFlag)

Sets the flag that defines the mode of treatment. In non-destructive mode the argument shapes are not modified. Instead a copy of a sub-shape is created in the result if it is needed to be updated.

◆ SetSectionAttribute()

void BOPAlgo_PaveFiller::SetSectionAttribute ( const BOPAlgo_SectionAttribute theSecAttr)

◆ SplitEdge()

Standard_Integer BOPAlgo_PaveFiller::SplitEdge ( const Standard_Integer  nE,
const Standard_Integer  nV1,
const Standard_Real  aT1,
const Standard_Integer  nV2,
const Standard_Real  aT2 
)
protected

Creates new edge from the edge nE with vertices nV1 and nV2 and returns the index of that new edge in the DS.

◆ SplitPaveBlocks()

void BOPAlgo_PaveFiller::SplitPaveBlocks ( const TColStd_MapOfInteger theMEdges,
const Standard_Boolean  theAddInterfs 
)
protected

Splits the Pave Blocks of the given edges with the extra paves.
The method also builds the shrunk data for the new pave blocks and in case there is no valid range on the pave block, the vertices of this pave block will be united making SD vertex.
Parameter <theAddInterfs> defines whether this interference will be added into common table of interferences or not.
If some of the Pave Blocks are forming the Common Blocks, the splits of the Pave Blocks will also form a Common Block.

◆ TreatNewVertices()

void BOPAlgo_PaveFiller::TreatNewVertices ( const BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks theMVCPB,
TopTools_IndexedDataMapOfShapeListOfShape theImages 
)
protected

Treatment of vertices that were created in EE intersections.

◆ TreatVerticesEE()

void BOPAlgo_PaveFiller::TreatVerticesEE ( )
protected

◆ UpdateBlocksWithSharedVertices()

void BOPAlgo_PaveFiller::UpdateBlocksWithSharedVertices ( )
protected

◆ UpdateCommonBlocksWithSDVertices()

void BOPAlgo_PaveFiller::UpdateCommonBlocksWithSDVertices ( )
protected

◆ UpdateEdgeTolerance()

void BOPAlgo_PaveFiller::UpdateEdgeTolerance ( const Standard_Integer  nE,
const Standard_Real  aTolNew 
)
protected

◆ UpdateExistingPaveBlocks()

void BOPAlgo_PaveFiller::UpdateExistingPaveBlocks ( const Handle< BOPDS_PaveBlock > &  thePB,
BOPDS_ListOfPaveBlock theLPB,
const BOPAlgo_DataMapOfPaveBlockListOfInteger thePBFacesMap 
)
protected

Replaces existing pave block <thePB> with new pave blocks <theLPB>. The list <theLPB> contains images of <thePB> which were created in the post treatment of section edges. Tries to project the new edges on the faces contained in the <thePBFacesMap>.

◆ UpdateFaceInfo()

void BOPAlgo_PaveFiller::UpdateFaceInfo ( BOPDS_DataMapOfPaveBlockListOfPaveBlock theDME,
const TColStd_DataMapOfIntegerInteger theDMV,
const BOPAlgo_DataMapOfPaveBlockListOfInteger thePBFacesMap 
)
protected

Updates the information about faces.

◆ UpdateInterfsWithSDVertices()

void BOPAlgo_PaveFiller::UpdateInterfsWithSDVertices ( )
protected

◆ UpdatePaveBlocks()

void BOPAlgo_PaveFiller::UpdatePaveBlocks ( const TColStd_DataMapOfIntegerInteger aDMNewSD)
protected

Updates pave blocks which have the paves with indices contained in the map <aDMNewSD>.

◆ UpdatePaveBlocksWithSDVertices()

void BOPAlgo_PaveFiller::UpdatePaveBlocksWithSDVertices ( )
protected

◆ UpdateVertex()

Standard_Integer BOPAlgo_PaveFiller::UpdateVertex ( const Standard_Integer  nV,
const Standard_Real  aTolNew 
)
protected

Updates tolerance vertex nV due to V/E interference. It always creates new vertex if nV is from arguments.

Returns
DS index of updated vertex.

◆ UpdateVerticesOfCB()

void BOPAlgo_PaveFiller::UpdateVerticesOfCB ( )
protected

Updates vertices of CommonBlocks with real tolerance of CB.

Field Documentation

◆ myArguments

TopTools_ListOfShape BOPAlgo_PaveFiller::myArguments
protected

Fields.

◆ myAvoidBuildPCurve

Standard_Boolean BOPAlgo_PaveFiller::myAvoidBuildPCurve
protected

◆ myContext

Handle< IntTools_Context > BOPAlgo_PaveFiller::myContext
protected

◆ myDistances

Map to store minimal distances between shapes which have no real intersections.

◆ myDS

BOPDS_PDS BOPAlgo_PaveFiller::myDS
protected

◆ myFPBDone

BOPAlgo_DataMapOfIntegerMapOfPaveBlock BOPAlgo_PaveFiller::myFPBDone
protected

Fence map of intersected faces and pave blocks.

◆ myGlue

BOPAlgo_GlueEnum BOPAlgo_PaveFiller::myGlue
protected

◆ myIncreasedSS

TColStd_MapOfInteger BOPAlgo_PaveFiller::myIncreasedSS
protected

Sub-shapes with increased tolerance during the operation.

◆ myIsPrimary

Standard_Boolean BOPAlgo_PaveFiller::myIsPrimary
protected

◆ myIterator

BOPDS_PIterator BOPAlgo_PaveFiller::myIterator
protected

◆ myNonDestructive

Standard_Boolean BOPAlgo_PaveFiller::myNonDestructive
protected

◆ mySectionAttribute

BOPAlgo_SectionAttribute BOPAlgo_PaveFiller::mySectionAttribute
protected

◆ myVertsToAvoidExtension

TColStd_MapOfInteger BOPAlgo_PaveFiller::myVertsToAvoidExtension
protected

Vertices located close to E/E or E/F intersection points which has already been extended to cover the real intersection points, and should not be extended any longer to be put on a section curve.


The documentation for this class was generated from the following file: