Open CASCADE Technology  7.2.0
Public Member Functions | Protected Member Functions | Protected Attributes

BOPAlgo_CheckerSI Class Reference

Checks the shape on self-interference. More...

#include <BOPAlgo_CheckerSI.hxx>

Inheritance diagram for BOPAlgo_CheckerSI:
Inheritance graph
[legend]

Public Member Functions

 BOPAlgo_CheckerSI ()
 
virtual ~BOPAlgo_CheckerSI ()
 
virtual void Perform () override
 
void SetLevelOfCheck (const Standard_Integer theLevel)
 Sets the level of checking shape on self-interference.
It defines which interferences will be checked:
0 - only V/V;
1 - V/V and V/E;
2 - V/V, V/E and E/E;
3 - V/V, V/E, E/E and V/F;
4 - V/V, V/E, E/E, V/F and E/F;
5 - V/V, V/E, E/E, V/F, E/F and F/F;
6 - V/V, V/E, E/E, V/F, E/F, F/F and V/S;
7 - V/V, V/E, E/E, V/F, E/F, F/F, V/S and E/S;
8 - V/V, V/E, E/E, V/F, E/F, F/F, V/S, E/S and F/S;
9 - V/V, V/E, E/E, V/F, E/F, F/F, V/S, E/S, F/S and S/S - all interferences (Default value) More...
 
- Public Member Functions inherited from BOPAlgo_PaveFiller
 BOPAlgo_PaveFiller ()
 
virtual ~BOPAlgo_PaveFiller ()
 
 BOPAlgo_PaveFiller (const BOPCol_BaseAllocator &theAllocator)
 
const BOPDS_DSDS ()
 
BOPDS_PDS PDS ()
 
const BOPDS_PIteratorIterator ()
 
void SetArguments (const BOPCol_ListOfShape &theLS)
 
const BOPCol_ListOfShapeArguments () const
 
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...
 
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 BOPCol_BaseAllocator &theAllocator)
 Constructor with allocator. More...
 
virtual ~BOPAlgo_Options ()
 Destructor. More...
 
const BOPCol_BaseAllocatorAllocator () 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 SetProgressIndicator (const Handle< Message_ProgressIndicator > &theObj)
 Set the Progress Indicator object. 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 Member Functions

virtual void Init () override
 
void PostTreat ()
 Treats the intersection results. More...
 
void CheckFaceSelfIntersection ()
 
virtual void PerformVZ ()
 Methods for intersection with solids. More...
 
virtual void PerformEZ ()
 Edge/Solid intersection. More...
 
virtual void PerformFZ ()
 Face/Solid intersection. More...
 
virtual void PerformZZ ()
 Solid/Solid intersection. More...
 
virtual void PerformSZ (const TopAbs_ShapeEnum aTS)
 Used for intersection of edges and faces with solids. More...
 
- Protected Member Functions inherited from BOPAlgo_PaveFiller
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 ()
 
virtual void Clear () override
 Clears all warnings and errors, and any data cached by the algorithm. User defined options are not cleared. More...
 
void Prepare ()
 
virtual void PerformVV ()
 
virtual void PerformVE ()
 
void IntersectVE (const BOPDS_IndexedDataMapOfPaveBlockListOfInteger &theVEPairs, const Standard_Boolean bAddInterfs=Standard_True)
 Performs the intersection of the vertices with edges. More...
 
void SplitPaveBlocks (const BOPCol_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 ()
 
virtual void PerformEE ()
 
virtual void PerformEF ()
 
virtual void PerformFF ()
 
void TreatVerticesEE ()
 
void MakeSDVerticesFF (const BOPCol_DataMapOfIntegerListOfInteger &aDMVLV, BOPCol_DataMapOfIntegerInteger &theDMNewSD)
 
void MakeSplitEdges ()
 
void MakeBlocks ()
 
void MakePCurves ()
 
Standard_Integer MakeSDVertices (const BOPCol_ListOfInteger &theVertIndices, const Standard_Boolean theAddInterfs=1)
 
void ProcessDE ()
 
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 BOPCol_BaseAllocator &theAllocator, 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 BOPCol_MapOfInteger &theMIF)
 
Standard_Boolean IsExistingVertex (const gp_Pnt &theP, const Standard_Real theTol, const BOPCol_MapOfInteger &theMVOn) const
 
void PutPavesOnCurve (const BOPCol_MapOfInteger &theMVOn, BOPDS_Curve &theNC, const Standard_Integer nF1, const Standard_Integer nF2, const BOPCol_MapOfInteger &theMI, const BOPCol_MapOfInteger &theMVEF, BOPCol_DataMapOfIntegerReal &theMVTol, BOPCol_DataMapOfIntegerListOfInteger &aDMVLV)
 Checks and puts paves from <theMVOn> on the curve <theNC>. More...
 
void FilterPavesOnCurves (const BOPDS_VectorOfCurve &theVNC)
 
Standard_Boolean ExtendedTolerance (const Standard_Integer nV, const BOPCol_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, BOPCol_ListOfInteger &theLBV)
 
Standard_Boolean IsExistingPaveBlock (const Handle< BOPDS_PaveBlock > &thePB, const BOPDS_Curve &theNC, const Standard_Real theTolR3D, const BOPDS_IndexedMapOfPaveBlock &theMPB, const BOPDS_MapOfPaveBlock &theMPBCommon, Handle< BOPDS_PaveBlock > &thePBOut, Standard_Real &theTolNew)
 
Standard_Boolean IsExistingPaveBlock (const Handle< BOPDS_PaveBlock > &thePB, const BOPDS_Curve &theNC, const BOPCol_ListOfInteger &theLSE)
 
void PostTreatFF (BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMSCPB, BOPDS_DataMapOfPaveBlockListOfPaveBlock &theDMExEdges, BOPCol_DataMapOfIntegerInteger &theDMNewSD, const BOPCol_IndexedMapOfShape &theMicroEdges, const BOPCol_BaseAllocator &theAllocator)
 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 (BOPDS_Curve &theNC, const BOPCol_MapOfInteger &theMI, const BOPCol_MapOfInteger &theMVEF, BOPCol_DataMapOfIntegerReal &theMVTol, BOPCol_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 BOPCol_MapOfInteger &theMI, BOPDS_Curve &theNC, const BOPCol_MapOfInteger &theMVStick, BOPCol_DataMapOfIntegerReal &theMVTol, BOPCol_DataMapOfIntegerListOfInteger &aDMVLV)
 Puts stick paves on the curve <theNC> More...
 
void GetStickVertices (const Standard_Integer nF1, const Standard_Integer nF2, BOPCol_MapOfInteger &theMVStick, BOPCol_MapOfInteger &theMVEF, BOPCol_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, BOPCol_MapOfInteger &theMI)
 Collects index nF and indices of all subshapes of the shape with index <nF> to the map <theMI>. More...
 
void RemoveUsedVertices (BOPDS_Curve &theNC, BOPCol_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 BOPCol_MapOfInteger &theMI, BOPCol_DataMapOfIntegerReal &theMVTol, BOPCol_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 BOPDS_IndexedMapOfPaveBlock &theMPBOnIn, const BOPCol_DataMapOfIntegerListOfInteger &theDMBV, BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMSCPB, BOPCol_DataMapOfShapeInteger &theMVI, 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 Standard_Integer nF1, const Standard_Integer nF2)
 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. More...
 
void TreatNewVertices (const BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMVCPB, BOPCol_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, BOPCol_DataMapOfShapeInteger &aMVI, BOPDS_ListOfPaveBlock &aLPB)
 Keeps data for post treatment. More...
 
void UpdateFaceInfo (BOPDS_DataMapOfPaveBlockListOfPaveBlock &theDME, const BOPCol_DataMapOfIntegerInteger &theDMV)
 Updates the information about faces. More...
 
void ForceInterfVE (const Standard_Integer nV, Handle< BOPDS_PaveBlock > &aPB, BOPCol_MapOfInteger &theMEdges)
 Updates tolerance of vertex with index <nV> to make it interfere with edge. 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 BOPCol_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 BOPCol_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 ()
 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...
 
- Protected Member Functions inherited from BOPAlgo_Algo
 BOPAlgo_Algo ()
 Default constructor. More...
 
virtual ~BOPAlgo_Algo ()
 
 BOPAlgo_Algo (const BOPCol_BaseAllocator &theAllocator)
 
virtual void CheckData ()
 Checks input data. More...
 
virtual void CheckResult ()
 Checks the obtained result. More...
 
- Protected Member Functions inherited from BOPAlgo_Options
void UserBreak () const
 Breaks the execution if the break signal is indicated by myProgressIndicator. More...
 

Protected Attributes

Standard_Integer myLevelOfCheck
 
- Protected Attributes inherited from BOPAlgo_PaveFiller
BOPCol_ListOfShape myArguments
 
BOPDS_PDS myDS
 
BOPDS_PIterator myIterator
 
Handle< IntTools_ContextmyContext
 
BOPAlgo_SectionAttribute mySectionAttribute
 
Standard_Boolean myNonDestructive
 
Standard_Boolean myIsPrimary
 
Standard_Boolean myAvoidBuildPCurve
 
BOPAlgo_GlueEnum myGlue
 
- Protected Attributes inherited from BOPAlgo_Options
BOPCol_BaseAllocator myAllocator
 Set the Progress Indicator object. More...
 
Handle< Message_ReportmyReport
 Set the Progress Indicator object. More...
 
Standard_Boolean myRunParallel
 Set the Progress Indicator object. More...
 
Standard_Real myFuzzyValue
 Set the Progress Indicator object. More...
 
Handle< Message_ProgressIndicatormyProgressIndicator
 Set the Progress Indicator object. 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...
 
- Protected Types inherited from BOPAlgo_PaveFiller
typedef NCollection_DataMap< Handle< BOPDS_PaveBlock >, Bnd_Box, TColStd_MapTransientHasherBOPAlgo_DataMapOfPaveBlockBndBox
 
- Static Protected Member Functions inherited from BOPAlgo_PaveFiller
static Standard_Boolean CheckFacePaves (const Standard_Integer theN, const BOPCol_MapOfInteger &theMIFOn, const BOPCol_MapOfInteger &theMIFIn)
 

Detailed Description

Checks the shape on self-interference.

The algorithm can set the following errors:

Constructor & Destructor Documentation

◆ BOPAlgo_CheckerSI()

BOPAlgo_CheckerSI::BOPAlgo_CheckerSI ( )

◆ ~BOPAlgo_CheckerSI()

virtual BOPAlgo_CheckerSI::~BOPAlgo_CheckerSI ( )
virtual

Member Function Documentation

◆ CheckFaceSelfIntersection()

void BOPAlgo_CheckerSI::CheckFaceSelfIntersection ( )
protected

◆ Init()

virtual void BOPAlgo_CheckerSI::Init ( )
overrideprotectedvirtual

Reimplemented from BOPAlgo_PaveFiller.

◆ Perform()

virtual void BOPAlgo_CheckerSI::Perform ( )
overridevirtual

Reimplemented from BOPAlgo_PaveFiller.

◆ PerformEZ()

virtual void BOPAlgo_CheckerSI::PerformEZ ( )
protectedvirtual

Edge/Solid intersection.

◆ PerformFZ()

virtual void BOPAlgo_CheckerSI::PerformFZ ( )
protectedvirtual

Face/Solid intersection.

◆ PerformSZ()

virtual void BOPAlgo_CheckerSI::PerformSZ ( const TopAbs_ShapeEnum  aTS)
protectedvirtual

Used for intersection of edges and faces with solids.

◆ PerformVZ()

virtual void BOPAlgo_CheckerSI::PerformVZ ( )
protectedvirtual

Methods for intersection with solids.

Vertex/Solid intersection

◆ PerformZZ()

virtual void BOPAlgo_CheckerSI::PerformZZ ( )
protectedvirtual

Solid/Solid intersection.

◆ PostTreat()

void BOPAlgo_CheckerSI::PostTreat ( )
protected

Treats the intersection results.

◆ SetLevelOfCheck()

void BOPAlgo_CheckerSI::SetLevelOfCheck ( const Standard_Integer  theLevel)

Sets the level of checking shape on self-interference.
It defines which interferences will be checked:
0 - only V/V;
1 - V/V and V/E;
2 - V/V, V/E and E/E;
3 - V/V, V/E, E/E and V/F;
4 - V/V, V/E, E/E, V/F and E/F;
5 - V/V, V/E, E/E, V/F, E/F and F/F;
6 - V/V, V/E, E/E, V/F, E/F, F/F and V/S;
7 - V/V, V/E, E/E, V/F, E/F, F/F, V/S and E/S;
8 - V/V, V/E, E/E, V/F, E/F, F/F, V/S, E/S and F/S;
9 - V/V, V/E, E/E, V/F, E/F, F/F, V/S, E/S, F/S and S/S - all interferences (Default value)

Field Documentation

◆ myLevelOfCheck

Standard_Integer BOPAlgo_CheckerSI::myLevelOfCheck
protected

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