OCCT3D OCCT 8.0.1
OCCT documentation

Search guides and API reference

Enter at least two characters.

    Open CASCADE Technology Reference Manual 8.0.1
    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:

    Data Structures

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

    Public Member Functions

     BOPAlgo_PaveFiller ()
     ~BOPAlgo_PaveFiller () override
     BOPAlgo_PaveFiller (const occ::handle< NCollection_BaseAllocator > &theAllocator)
    const BOPDS_DSDS ()
    BOPDS_PDS PDS ()
    const BOPDS_PIteratorIterator ()
    void SetArguments (const NCollection_List< TopoDS_Shape > &theLS)
     Sets the arguments for operation.
    void SetArguments (NCollection_List< TopoDS_Shape > &&theLS)
     Sets the arguments for operation (move semantics).
    void AddArgument (const TopoDS_Shape &theShape)
     Adds the argument for operation.
    const NCollection_List< TopoDS_Shape > & Arguments () const
     Returns the list of arguments.
    const occ::handle< IntTools_Context > & Context ()
    void SetSectionAttribute (const BOPAlgo_SectionAttribute &theSecAttr)
    void SetNonDestructive (const bool 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.
    bool 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.
    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.
    void SetGlue (const BOPAlgo_GlueEnum theGlue)
     Sets the glue option for the algorithm.
    BOPAlgo_GlueEnum Glue () const
     Returns the glue option of the algorithm.
    void SetAvoidBuildPCurve (const bool theValue)
     Sets the flag to avoid building of p-curves of edges on faces.
    bool IsAvoidBuildPCurve () const
     Returns the flag to avoid building of p-curves of edges on faces.
    Public Member Functions inherited from BOPAlgo_Options
     BOPAlgo_Options ()
     Empty constructor.
     BOPAlgo_Options (const occ::handle< NCollection_BaseAllocator > &theAllocator)
     Constructor with allocator.
    virtual ~BOPAlgo_Options ()
     Destructor.
    const occ::handle< NCollection_BaseAllocator > & Allocator () const
     Returns allocator.
    void AddError (const occ::handle< Message_Alert > &theAlert)
     Adds the alert as error (fail).
    void AddWarning (const occ::handle< Message_Alert > &theAlert)
     Adds the alert as warning.
    bool HasErrors () const
     Returns true if algorithm has failed.
    bool HasError (const occ::handle< Standard_Type > &theType) const
     Returns true if algorithm has generated error of specified type.
    bool HasWarnings () const
     Returns true if algorithm has generated some warning alerts.
    bool HasWarning (const occ::handle< Standard_Type > &theType) const
     Returns true if algorithm has generated warning of specified type.
    const occ::handle< Message_Report > & GetReport () const
     Returns report collecting all errors and warnings.
    void DumpErrors (Standard_OStream &theOS) const
     Dumps the error status into the given stream.
    void DumpWarnings (Standard_OStream &theOS) const
     Dumps the warning statuses into the given stream.
    void ClearWarnings ()
     Clears the warnings of the algorithm.
    void SetFuzzyValue (const double theFuzz)
     Sets the additional tolerance.
    double FuzzyValue () const
     Returns the additional tolerance.
    void SetUseOBB (const bool theUseOBB)
     Enables/Disables the usage of OBB.
    bool UseOBB () const
     Returns the flag defining usage of OBB.
    void SetRunParallel (const bool 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.
    bool RunParallel () const
     Returns the flag of parallel processing.

    Protected Types

    typedef NCollection_DataMap< occ::handle< BOPDS_PaveBlock >, Bnd_BoxBOPAlgo_DataMapOfPaveBlockBndBox
    typedef NCollection_DataMap< occ::handle< BOPDS_PaveBlock >, NCollection_List< int > > BOPAlgo_DataMapOfPaveBlockListOfInteger
    typedef NCollection_DataMap< int, NCollection_Map< occ::handle< BOPDS_PaveBlock > > > BOPAlgo_DataMapOfIntegerMapOfPaveBlock

    Protected Member Functions

    void SetNonDestructive ()
     Sets non-destructive mode automatically if an argument contains a locked sub-shape (see TopoDS_Shape::Locked()).
    void SetIsPrimary (const bool theFlag)
    bool IsPrimary () const
    virtual void PerformInternal (const Message_ProgressRange &theRange)
    void Clear () override
     Clears all warnings and errors, and any data cached by the algorithm. User defined options are not cleared.
    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 NCollection_IndexedDataMap< occ::handle< BOPDS_PaveBlock >, NCollection_List< int > > &theVEPairs, const Message_ProgressRange &theRange, const bool bAddInterfs=true)
     Performs the intersection of the vertices with edges.
    void SplitPaveBlocks (const NCollection_Map< int > &theMEdges, const bool 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.
    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 NCollection_DataMap< int, NCollection_List< int > > &aDMVLV, NCollection_DataMap< int, int > &theDMNewSD)
    void MakeSplitEdges (const Message_ProgressRange &theRange)
    void MakeBlocks (const Message_ProgressRange &theRange)
    void MakePCurves (const Message_ProgressRange &theRange)
    int MakeSDVertices (const NCollection_List< int > &theVertIndices, const bool theAddInterfs=true)
    void ProcessDE (const Message_ProgressRange &theRange)
    void FillShrunkData (occ::handle< BOPDS_PaveBlock > &thePB)
    void FillShrunkData (const TopAbs_ShapeEnum theType1, const TopAbs_ShapeEnum theType2)
    void AnalyzeShrunkData (const occ::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.
    void PerformNewVertices (NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > &theMVCPB, const occ::handle< NCollection_BaseAllocator > &theAllocator, const Message_ProgressRange &theRange, const bool theIsEEIntersection=true)
     Performs intersection of new vertices, obtained in E/E and E/F intersections.
    bool CheckFacePaves (const TopoDS_Vertex &theVnew, const NCollection_Map< int > &theMIF)
    bool IsExistingVertex (const gp_Pnt &theP, const double theTol, const NCollection_Map< int > &theMVOn) const
    void PutPavesOnCurve (const NCollection_Map< int > &theMVOnIn, const NCollection_Map< int > &theMVCommon, BOPDS_Curve &theNC, const NCollection_Map< int > &theMI, const NCollection_Map< int > &theMVEF, NCollection_DataMap< int, double > &theMVTol, NCollection_DataMap< int, NCollection_List< int > > &theDMVLV)
     Checks and puts paves from <theMVOnIn> on the curve <theNC>. At that, common (from theMVCommon) and not common vertices are processed differently.
    void FilterPavesOnCurves (const NCollection_DynamicArray< BOPDS_Curve > &theVNC, NCollection_DataMap< int, double > &theMVTol)
    bool ExtendedTolerance (const int nV, const NCollection_Map< int > &aMI, double &aTolVExt, const int 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.
    void PutBoundPaveOnCurve (const TopoDS_Face &theF1, const TopoDS_Face &theF2, BOPDS_Curve &theNC, NCollection_List< int > &theLBV)
    bool IsExistingPaveBlock (const occ::handle< BOPDS_PaveBlock > &thePB, const BOPDS_Curve &theNC, const double theTolR3D, const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > &theMPB, BOPTools_BoxTree &thePBTree, const NCollection_Map< occ::handle< BOPDS_PaveBlock > > &theMPBCommon, occ::handle< BOPDS_PaveBlock > &thePBOut, double &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.
    bool IsExistingPaveBlock (const occ::handle< BOPDS_PaveBlock > &thePB, const BOPDS_Curve &theNC, const NCollection_List< int > &theLSE, int &theNEOut, double &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.
    void PostTreatFF (NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > &theMSCPB, NCollection_DataMap< occ::handle< BOPDS_PaveBlock >, NCollection_List< occ::handle< BOPDS_PaveBlock > > > &theDMExEdges, NCollection_DataMap< int, int > &theDMNewSD, const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > &theMicroPB, const NCollection_IndexedMap< TopoDS_Shape, TopTools_ShapeMapHasher > &theVertsOnRejectedPB, const occ::handle< NCollection_BaseAllocator > &theAllocator, const Message_ProgressRange &theRange)
     Treatment of section edges.
    void FindPaveBlocks (const int theV, const int theF, NCollection_List< occ::handle< BOPDS_PaveBlock > > &theLPB)
    void FillPaves (const int theV, const int theE, const int theF, const NCollection_List< occ::handle< BOPDS_PaveBlock > > &theLPB, const occ::handle< BOPDS_PaveBlock > &thePB)
    void MakeSplitEdge (const int theV, const int theF)
    void GetEFPnts (const int nF1, const int nF2, NCollection_List< IntSurf_PntOn2S > &aListOfPnts)
    void PutEFPavesOnCurve (const NCollection_DynamicArray< BOPDS_Curve > &theVC, const int theIndex, const NCollection_Map< int > &theMI, const NCollection_Map< int > &theMVEF, NCollection_DataMap< int, double > &theMVTol, NCollection_DataMap< int, NCollection_List< int > > &aDMVLV)
     Checks and puts paves created in EF intersections on the curve <theNC>.
    void PutStickPavesOnCurve (const TopoDS_Face &aF1, const TopoDS_Face &aF2, const NCollection_Map< int > &theMI, const NCollection_DynamicArray< BOPDS_Curve > &theVC, const int theIndex, const NCollection_Map< int > &theMVStick, NCollection_DataMap< int, double > &theMVTol, NCollection_DataMap< int, NCollection_List< int > > &aDMVLV)
     Puts stick paves on the curve <theNC>.
    void GetStickVertices (const int nF1, const int nF2, NCollection_Map< int > &theMVStick, NCollection_Map< int > &theMVEF, NCollection_Map< int > &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.
    void GetFullShapeMap (const int nF, NCollection_Map< int > &theMI)
     Collects index nF and indices of all subshapes of the shape with index <nF> to the map <theMI>.
    void RemoveUsedVertices (const NCollection_DynamicArray< BOPDS_Curve > &theVC, NCollection_Map< int > &theMV)
     Removes indices of vertices that are already on the curve <theNC> from the map <theMV>. It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.
    void PutPaveOnCurve (const int nV, const double theTolR3D, const BOPDS_Curve &theNC, const NCollection_Map< int > &theMI, NCollection_DataMap< int, double > &theMVTol, NCollection_DataMap< int, NCollection_List< int > > &aDMVLV, const int 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).
    void ProcessExistingPaveBlocks (const int theInt, const int theCur, const int nF1, const int nF2, const TopoDS_Edge &theES, const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > &theMPBOnIn, BOPTools_BoxTree &thePBTree, NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > &theMSCPB, NCollection_DataMap< TopoDS_Shape, int, TopTools_ShapeMapHasher > &theMVI, NCollection_List< occ::handle< BOPDS_PaveBlock > > &theLPBC, BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap, NCollection_Map< occ::handle< BOPDS_PaveBlock > > &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.
    void ProcessExistingPaveBlocks (const int theInt, const int nF1, const int nF2, const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > &theMPBOnIn, BOPTools_BoxTree &thePBTree, const NCollection_DataMap< int, NCollection_List< int > > &theDMBV, NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > &theMSCPB, NCollection_DataMap< TopoDS_Shape, int, TopTools_ShapeMapHasher > &theMVI, BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap, NCollection_Map< occ::handle< BOPDS_PaveBlock > > &theMPB)
     Adds the existing edges from the map <theMPBOnIn> which interfere with the vertices from <theMVB> map to the post treatment of section edges.
    void UpdateExistingPaveBlocks (const occ::handle< BOPDS_PaveBlock > &thePB, NCollection_List< occ::handle< BOPDS_PaveBlock > > &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>.
    void TreatNewVertices (const NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > &theMVCPB, NCollection_IndexedDataMap< TopoDS_Shape, NCollection_List< TopoDS_Shape >, TopTools_ShapeMapHasher > &theImages)
     Treatment of vertices that were created in EE intersections.
    void PutClosingPaveOnCurve (BOPDS_Curve &aNC)
     Put paves on the curve <aBC> in case when <aBC> is closed 3D-curve.
    void PreparePostTreatFF (const int aInt, const int aCur, const occ::handle< BOPDS_PaveBlock > &aPB, NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > &aMSCPB, NCollection_DataMap< TopoDS_Shape, int, TopTools_ShapeMapHasher > &aMVI, NCollection_List< occ::handle< BOPDS_PaveBlock > > &aLPB)
     Keeps data for post treatment.
    void UpdateFaceInfo (NCollection_DataMap< occ::handle< BOPDS_PaveBlock >, NCollection_List< occ::handle< BOPDS_PaveBlock > > > &theDME, const NCollection_DataMap< int, int > &theDMV, const BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap)
     Updates the information about faces.
    bool ForceInterfVE (const int nV, occ::handle< BOPDS_PaveBlock > &aPB, NCollection_Map< int > &theMEdges)
     Updates tolerance of vertex with index <nV> to make it interfere with edge. Returns TRUE if intersection happened.
    bool ForceInterfVF (const int nV, const int nF)
     Updates tolerance of vertex with index <nV> to make it interfere with face with index <nF>.
    bool CheckPlanes (const int nF1, const int nF2) const
     Checks if there are any common or intersecting sub shapes between two planar faces.
    int SplitEdge (const int nE, const int nV1, const double aT1, const int nV2, const double aT2)
     Creates new edge from the edge nE with vertices nV1 and nV2 and returns the index of that new edge in the DS.
    void UpdatePaveBlocks (const NCollection_DataMap< int, int > &aDMNewSD)
     Updates pave blocks which have the paves with indices contained in the map <aDMNewSD>.
    int UpdateVertex (const int nV, const double aTolNew)
     Updates tolerance vertex nV due to V/E interference. It always creates new vertex if nV is from arguments.
    void UpdatePaveBlocksWithSDVertices ()
    void UpdateCommonBlocksWithSDVertices ()
    void UpdateBlocksWithSharedVertices ()
    void UpdateInterfsWithSDVertices ()
    bool EstimatePaveOnCurve (const int nV, const BOPDS_Curve &theNC, const double theTolR3D)
    void UpdateEdgeTolerance (const int nE, const double aTolNew)
    void RemovePaveBlocks (const NCollection_Map< int > &theEdges)
    void CorrectToleranceOfSE ()
    void ReduceIntersectionRange (const int theV1, const int theV2, const int theE, const int theF, double &theTS1, double &theTS2)
     Reduce the intersection range using the common ranges of Edge/Edge interferences to avoid creation of close intersection vertices.
    bool GetPBBox (const TopoDS_Edge &theE, const occ::handle< BOPDS_PaveBlock > &thePB, BOPAlgo_DataMapOfPaveBlockBndBox &thePBBox, double &theFirst, double &theLast, double &theSFirst, double &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.
    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.
    void CheckSelfInterference ()
     Analyzes the results of interferences of sub-shapes of the shapes looking for self-interfering entities by the following rules:
    void AddIntersectionFailedWarning (const TopoDS_Shape &theS1, const TopoDS_Shape &theS2)
     Adds the warning about failed intersection of pair of sub-shapes.
    void RepeatIntersection (const Message_ProgressRange &theRange)
     Repeat intersection of sub-shapes with increased vertices.
    void UpdateVerticesOfCB ()
     Updates vertices of CommonBlocks with real tolerance of CB.
    void ForceInterfEE (const Message_ProgressRange &theRange)
     The method looks for the additional common blocks among pairs of edges with the same bounding vertices.
    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.
    void ForceInterfEF (const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > &theMPB, const Message_ProgressRange &theRange, const bool theAddInterf)
     Performs intersection of given pave blocks with all faces from arguments.
    void RemoveMicroSectionEdges (NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > &theMSCPB, NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > &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.
    void RemoveMicroEdges ()
     Check all edges on the micro status and remove the positive ones.
    void fillPIConstants (const double theWhole, BOPAlgo_PISteps &theSteps) const override
     Analyzing Progress steps Filling steps for constant operations.
    void fillPISteps (BOPAlgo_PISteps &theSteps) const override
     Filling steps for all other operations.
    Protected Member Functions inherited from BOPAlgo_Algo
     BOPAlgo_Algo ()
     Default constructor.
     ~BOPAlgo_Algo () override
     BOPAlgo_Algo (const occ::handle< NCollection_BaseAllocator > &theAllocator)
    virtual void CheckData ()
     Checks input data.
    virtual void CheckResult ()
     Checks the obtained result.
    void analyzeProgress (const double theWhole, BOPAlgo_PISteps &theSteps) const
     Fills the values for constant operations - the operations having constant relative running time.
    bool UserBreak (const Message_ProgressScope &thePS)
     Adds error to the report if the break signal was caught. Returns true in this case, false otherwise.

    Static Protected Member Functions

    static bool CheckFacePaves (const int theN, const NCollection_Map< int > &theMIFOn, const NCollection_Map< int > &theMIFIn)

    Protected Attributes

    NCollection_List< TopoDS_ShapemyArguments
     Fields.
    BOPDS_PDS myDS
    BOPDS_PIterator myIterator
    occ::handle< IntTools_ContextmyContext
    BOPAlgo_SectionAttribute mySectionAttribute
    bool myNonDestructive
    bool myIsPrimary
    bool myAvoidBuildPCurve
    BOPAlgo_GlueEnum myGlue
    BOPAlgo_DataMapOfIntegerMapOfPaveBlock myFPBDone
     Fence map of intersected faces and pave blocks.
    NCollection_Map< int > myIncreasedSS
     Sub-shapes with increased tolerance during the operation.
    NCollection_Map< int > 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.
    NCollection_DataMap< BOPDS_Pair, NCollection_List< EdgeRangeDistance > > myDistances
     Map to store minimal distances between shapes which have no real intersections.
    occ::handle< NCollection_BaseAllocatormyAllocator
     Enables/Disables the usage of OBB.
    occ::handle< Message_ReportmyReport
     Enables/Disables the usage of OBB.
    bool myRunParallel
     Enables/Disables the usage of OBB.
    double myFuzzyValue
     Enables/Disables the usage of OBB.
    bool myUseOBB
     Enables/Disables the usage of OBB.

    Additional Inherited Members

    static bool GetParallelMode ()
     Gets the global parallel mode.
    static void SetParallelMode (const bool theNewMode)
     Sets the global parallel mode.

    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:

    • Section attributes - allows to customize the intersection of the faces (avoid approximation or building 2d curves);
    • Safe processing mode - allows to avoid modification of the input shapes during the operation (by default it is off);
    • Gluing options - allows to speed up the calculation on the special cases, in which some sub-shapes are coincide.

    The algorithm returns the following Warning statuses:

    • BOPAlgo_AlertSelfInterferingShape - in case some of the argument shapes are self-interfering shapes;
    • BOPAlgo_AlertTooSmallEdge - in case some edges of the input shapes have no valid range;
    • BOPAlgo_AlertNotSplittableEdge - in case some edges of the input shapes has such a small valid range so it cannot be split;
    • BOPAlgo_AlertBadPositioning - in case the positioning of the input shapes leads to creation of small edges;
    • BOPAlgo_AlertIntersectionOfPairOfShapesFailed - in case intersection of some of the sub-shapes has failed;
    • BOPAlgo_AlertAcquiredSelfIntersection - in case some sub-shapes of the argument become connected through other shapes;
    • BOPAlgo_AlertBuildingPCurveFailed - in case building 2D curve for some of the edges on the faces has failed.

    The algorithm returns the following Error alerts:

    • BOPAlgo_AlertTooFewArguments - in case there are no enough arguments to perform the operation;
    • BOPAlgo_AlertIntersectionFailed - in case some unexpected error occurred;
    • BOPAlgo_AlertNullInputShapes - in case some of the arguments are null shapes.

    Member Typedef Documentation

    ◆ BOPAlgo_DataMapOfIntegerMapOfPaveBlock

    ◆ BOPAlgo_DataMapOfPaveBlockBndBox

    ◆ BOPAlgo_DataMapOfPaveBlockListOfInteger

    Constructor & Destructor Documentation

    ◆ BOPAlgo_PaveFiller() [1/2]

    BOPAlgo_PaveFiller::BOPAlgo_PaveFiller ( )

    ◆ ~BOPAlgo_PaveFiller()

    BOPAlgo_PaveFiller::~BOPAlgo_PaveFiller ( )
    override

    ◆ BOPAlgo_PaveFiller() [2/2]

    BOPAlgo_PaveFiller::BOPAlgo_PaveFiller ( const occ::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 occ::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 NCollection_List< TopoDS_Shape > & BOPAlgo_PaveFiller::Arguments ( ) const
    inline

    Returns the list of arguments.

    ◆ CheckFacePaves() [1/2]

    bool BOPAlgo_PaveFiller::CheckFacePaves ( const int theN,
    const NCollection_Map< int > & theMIFOn,
    const NCollection_Map< int > & theMIFIn )
    staticprotected

    ◆ CheckFacePaves() [2/2]

    bool BOPAlgo_PaveFiller::CheckFacePaves ( const TopoDS_Vertex & theVnew,
    const NCollection_Map< int > & theMIF )
    protected

    ◆ CheckPlanes()

    bool BOPAlgo_PaveFiller::CheckPlanes ( const int nF1,
    const int 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()

    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 occ::handle< IntTools_Context > & BOPAlgo_PaveFiller::Context ( )

    ◆ CorrectToleranceOfSE()

    void BOPAlgo_PaveFiller::CorrectToleranceOfSE ( )
    protected

    ◆ DS()

    const BOPDS_DS & BOPAlgo_PaveFiller::DS ( )

    ◆ EstimatePaveOnCurve()

    bool BOPAlgo_PaveFiller::EstimatePaveOnCurve ( const int nV,
    const BOPDS_Curve & theNC,
    const double theTolR3D )
    protected

    ◆ ExtendedTolerance()

    bool BOPAlgo_PaveFiller::ExtendedTolerance ( const int nV,
    const NCollection_Map< int > & aMI,
    double & aTolVExt,
    const int 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 int theV,
    const int theE,
    const int theF,
    const NCollection_List< occ::handle< BOPDS_PaveBlock > > & theLPB,
    const occ::handle< BOPDS_PaveBlock > & thePB )
    protected

    ◆ fillPIConstants()

    void BOPAlgo_PaveFiller::fillPIConstants ( const double 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 ( occ::handle< BOPDS_PaveBlock > & thePB)
    protected

    ◆ FilterPavesOnCurves()

    void BOPAlgo_PaveFiller::FilterPavesOnCurves ( const NCollection_DynamicArray< BOPDS_Curve > & theVNC,
    NCollection_DataMap< int, double > & theMVTol )
    protected

    ◆ FindPaveBlocks()

    void BOPAlgo_PaveFiller::FindPaveBlocks ( const int theV,
    const int theF,
    NCollection_List< occ::handle< BOPDS_PaveBlock > > & 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 Message_ProgressRange & theRange)
    protected

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

    ◆ ForceInterfEF() [2/2]

    void BOPAlgo_PaveFiller::ForceInterfEF ( const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > & theMPB,
    const Message_ProgressRange & theRange,
    const bool theAddInterf )
    protected

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

    ◆ ForceInterfVE()

    bool BOPAlgo_PaveFiller::ForceInterfVE ( const int nV,
    occ::handle< BOPDS_PaveBlock > & aPB,
    NCollection_Map< int > & theMEdges )
    protected

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

    ◆ ForceInterfVF()

    bool BOPAlgo_PaveFiller::ForceInterfVF ( const int nV,
    const int nF )
    protected

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

    ◆ GetEFPnts()

    void BOPAlgo_PaveFiller::GetEFPnts ( const int nF1,
    const int nF2,
    NCollection_List< IntSurf_PntOn2S > & aListOfPnts )
    protected

    ◆ GetFullShapeMap()

    void BOPAlgo_PaveFiller::GetFullShapeMap ( const int nF,
    NCollection_Map< int > & theMI )
    protected

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

    ◆ GetPBBox()

    bool BOPAlgo_PaveFiller::GetPBBox ( const TopoDS_Edge & theE,
    const occ::handle< BOPDS_PaveBlock > & thePB,
    BOPAlgo_DataMapOfPaveBlockBndBox & thePBBox,
    double & theFirst,
    double & theLast,
    double & theSFirst,
    double & 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 int nF1,
    const int nF2,
    NCollection_Map< int > & theMVStick,
    NCollection_Map< int > & theMVEF,
    NCollection_Map< int > & 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 NCollection_IndexedDataMap< occ::handle< BOPDS_PaveBlock >, NCollection_List< int > > & theVEPairs,
    const Message_ProgressRange & theRange,
    const bool bAddInterfs = true )
    protected

    Performs the intersection of the vertices with edges.

    ◆ IsAvoidBuildPCurve()

    bool BOPAlgo_PaveFiller::IsAvoidBuildPCurve ( ) const
    inline

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

    ◆ IsExistingPaveBlock() [1/2]

    bool BOPAlgo_PaveFiller::IsExistingPaveBlock ( const occ::handle< BOPDS_PaveBlock > & thePB,
    const BOPDS_Curve & theNC,
    const double theTolR3D,
    const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > & theMPB,
    BOPTools_BoxTree & thePBTree,
    const NCollection_Map< occ::handle< BOPDS_PaveBlock > > & theMPBCommon,
    occ::handle< BOPDS_PaveBlock > & thePBOut,
    double & 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]

    bool BOPAlgo_PaveFiller::IsExistingPaveBlock ( const occ::handle< BOPDS_PaveBlock > & thePB,
    const BOPDS_Curve & theNC,
    const NCollection_List< int > & theLSE,
    int & theNEOut,
    double & 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()

    bool BOPAlgo_PaveFiller::IsExistingVertex ( const gp_Pnt & theP,
    const double theTol,
    const NCollection_Map< int > & theMVOn ) const
    protected

    ◆ IsPrimary()

    bool 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()

    int BOPAlgo_PaveFiller::MakeSDVertices ( const NCollection_List< int > & theVertIndices,
    const bool theAddInterfs = true )
    protected

    ◆ MakeSDVerticesFF()

    void BOPAlgo_PaveFiller::MakeSDVerticesFF ( const NCollection_DataMap< int, NCollection_List< int > > & aDMVLV,
    NCollection_DataMap< int, int > & theDMNewSD )
    protected

    ◆ MakeSplitEdge()

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

    ◆ MakeSplitEdges()

    void BOPAlgo_PaveFiller::MakeSplitEdges ( const Message_ProgressRange & theRange)
    protected

    ◆ NonDestructive()

    bool 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()

    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.

    ◆ 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 ( NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > & theMVCPB,
    const occ::handle< NCollection_BaseAllocator > & theAllocator,
    const Message_ProgressRange & theRange,
    const bool theIsEEIntersection = 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 ( NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > & theMSCPB,
    NCollection_DataMap< occ::handle< BOPDS_PaveBlock >, NCollection_List< occ::handle< BOPDS_PaveBlock > > > & theDMExEdges,
    NCollection_DataMap< int, int > & theDMNewSD,
    const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > & theMicroPB,
    const NCollection_IndexedMap< TopoDS_Shape, TopTools_ShapeMapHasher > & theVertsOnRejectedPB,
    const occ::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 int aInt,
    const int aCur,
    const occ::handle< BOPDS_PaveBlock > & aPB,
    NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > & aMSCPB,
    NCollection_DataMap< TopoDS_Shape, int, TopTools_ShapeMapHasher > & aMVI,
    NCollection_List< occ::handle< BOPDS_PaveBlock > > & 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 int theInt,
    const int nF1,
    const int nF2,
    const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > & theMPBOnIn,
    BOPTools_BoxTree & thePBTree,
    const NCollection_DataMap< int, NCollection_List< int > > & theDMBV,
    NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > & theMSCPB,
    NCollection_DataMap< TopoDS_Shape, int, TopTools_ShapeMapHasher > & theMVI,
    BOPAlgo_DataMapOfPaveBlockListOfInteger & thePBFacesMap,
    NCollection_Map< occ::handle< BOPDS_PaveBlock > > & 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 int theInt,
    const int theCur,
    const int nF1,
    const int nF2,
    const TopoDS_Edge & theES,
    const NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > & theMPBOnIn,
    BOPTools_BoxTree & thePBTree,
    NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > & theMSCPB,
    NCollection_DataMap< TopoDS_Shape, int, TopTools_ShapeMapHasher > & theMVI,
    NCollection_List< occ::handle< BOPDS_PaveBlock > > & theLPBC,
    BOPAlgo_DataMapOfPaveBlockListOfInteger & thePBFacesMap,
    NCollection_Map< occ::handle< BOPDS_PaveBlock > > & 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,
    NCollection_List< int > & 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 NCollection_DynamicArray< BOPDS_Curve > & theVC,
    const int theIndex,
    const NCollection_Map< int > & theMI,
    const NCollection_Map< int > & theMVEF,
    NCollection_DataMap< int, double > & theMVTol,
    NCollection_DataMap< int, NCollection_List< int > > & aDMVLV )
    protected

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

    ◆ PutPaveOnCurve()

    void BOPAlgo_PaveFiller::PutPaveOnCurve ( const int nV,
    const double theTolR3D,
    const BOPDS_Curve & theNC,
    const NCollection_Map< int > & theMI,
    NCollection_DataMap< int, double > & theMVTol,
    NCollection_DataMap< int, NCollection_List< int > > & aDMVLV,
    const int 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 NCollection_Map< int > & theMVOnIn,
    const NCollection_Map< int > & theMVCommon,
    BOPDS_Curve & theNC,
    const NCollection_Map< int > & theMI,
    const NCollection_Map< int > & theMVEF,
    NCollection_DataMap< int, double > & theMVTol,
    NCollection_DataMap< int, NCollection_List< int > > & 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 NCollection_Map< int > & theMI,
    const NCollection_DynamicArray< BOPDS_Curve > & theVC,
    const int theIndex,
    const NCollection_Map< int > & theMVStick,
    NCollection_DataMap< int, double > & theMVTol,
    NCollection_DataMap< int, NCollection_List< int > > & aDMVLV )
    protected

    Puts stick paves on the curve <theNC>.

    ◆ ReduceIntersectionRange()

    void BOPAlgo_PaveFiller::ReduceIntersectionRange ( const int theV1,
    const int theV2,
    const int theE,
    const int theF,
    double & theTS1,
    double & 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 ( NCollection_IndexedDataMap< TopoDS_Shape, BOPDS_CoupleOfPaveBlocks, TopTools_ShapeMapHasher > & theMSCPB,
    NCollection_IndexedMap< occ::handle< BOPDS_PaveBlock > > & 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 NCollection_Map< int > & theEdges)
    protected

    ◆ RemoveUsedVertices()

    void BOPAlgo_PaveFiller::RemoveUsedVertices ( const NCollection_DynamicArray< BOPDS_Curve > & theVC,
    NCollection_Map< int > & 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() [1/2]

    void BOPAlgo_PaveFiller::SetArguments ( const NCollection_List< TopoDS_Shape > & theLS)
    inline

    Sets the arguments for operation.

    ◆ SetArguments() [2/2]

    void BOPAlgo_PaveFiller::SetArguments ( NCollection_List< TopoDS_Shape > && theLS)
    inline

    Sets the arguments for operation (move semantics).

    ◆ SetAvoidBuildPCurve()

    void BOPAlgo_PaveFiller::SetAvoidBuildPCurve ( const bool 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 bool 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 bool 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()

    int BOPAlgo_PaveFiller::SplitEdge ( const int nE,
    const int nV1,
    const double aT1,
    const int nV2,
    const double 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 NCollection_Map< int > & theMEdges,
    const bool 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()

    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 int nE,
    const double aTolNew )
    protected

    ◆ UpdateExistingPaveBlocks()

    void BOPAlgo_PaveFiller::UpdateExistingPaveBlocks ( const occ::handle< BOPDS_PaveBlock > & thePB,
    NCollection_List< occ::handle< BOPDS_PaveBlock > > & 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 ( NCollection_DataMap< occ::handle< BOPDS_PaveBlock >, NCollection_List< occ::handle< BOPDS_PaveBlock > > > & theDME,
    const NCollection_DataMap< int, int > & theDMV,
    const BOPAlgo_DataMapOfPaveBlockListOfInteger & thePBFacesMap )
    protected

    Updates the information about faces.

    ◆ UpdateInterfsWithSDVertices()

    void BOPAlgo_PaveFiller::UpdateInterfsWithSDVertices ( )
    protected

    ◆ UpdatePaveBlocks()

    void BOPAlgo_PaveFiller::UpdatePaveBlocks ( const NCollection_DataMap< int, int > & aDMNewSD)
    protected

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

    ◆ UpdatePaveBlocksWithSDVertices()

    void BOPAlgo_PaveFiller::UpdatePaveBlocksWithSDVertices ( )
    protected

    ◆ UpdateVertex()

    int BOPAlgo_PaveFiller::UpdateVertex ( const int nV,
    const double 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

    NCollection_List<TopoDS_Shape> BOPAlgo_PaveFiller::myArguments
    protected

    Fields.

    ◆ myAvoidBuildPCurve

    bool BOPAlgo_PaveFiller::myAvoidBuildPCurve
    protected

    ◆ myContext

    occ::handle<IntTools_Context> BOPAlgo_PaveFiller::myContext
    protected

    ◆ myDistances

    NCollection_DataMap<BOPDS_Pair, NCollection_List<EdgeRangeDistance> > BOPAlgo_PaveFiller::myDistances
    protected

    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

    NCollection_Map<int> BOPAlgo_PaveFiller::myIncreasedSS
    protected

    Sub-shapes with increased tolerance during the operation.

    ◆ myIsPrimary

    bool BOPAlgo_PaveFiller::myIsPrimary
    protected

    ◆ myIterator

    BOPDS_PIterator BOPAlgo_PaveFiller::myIterator
    protected

    ◆ myNonDestructive

    bool BOPAlgo_PaveFiller::myNonDestructive
    protected

    ◆ mySectionAttribute

    BOPAlgo_SectionAttribute BOPAlgo_PaveFiller::mySectionAttribute
    protected

    ◆ myVertsToAvoidExtension

    NCollection_Map<int> 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: