Open CASCADE Technology 7.8.2.dev
|
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>
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_DS & | DS () |
BOPDS_PDS | PDS () |
const BOPDS_PIterator & | Iterator () |
void | SetArguments (const TopTools_ListOfShape &theLS) |
Sets the arguments for operation. | |
void | AddArgument (const TopoDS_Shape &theShape) |
Adds the argument for operation. | |
const TopTools_ListOfShape & | Arguments () const |
Returns the list of arguments. | |
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. | |
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. | |
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. | |
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 Standard_Boolean theValue) |
Sets the flag to avoid building of p-curves of edges on faces. | |
Standard_Boolean | IsAvoidBuildPCurve () const |
Returns the flag to avoid building of p-curves of edges on faces. | |
Public Member Functions inherited from BOPAlgo_Algo | |
Public Member Functions inherited from BOPAlgo_Options | |
BOPAlgo_Options () | |
Empty constructor. | |
BOPAlgo_Options (const Handle< NCollection_BaseAllocator > &theAllocator) | |
Constructor with allocator. | |
virtual | ~BOPAlgo_Options () |
Destructor. | |
const Handle< NCollection_BaseAllocator > & | Allocator () const |
Returns allocator. | |
void | AddError (const Handle< Message_Alert > &theAlert) |
Adds the alert as error (fail) | |
void | AddWarning (const Handle< Message_Alert > &theAlert) |
Adds the alert as warning. | |
Standard_Boolean | HasErrors () const |
Returns true if algorithm has failed. | |
Standard_Boolean | HasError (const Handle< Standard_Type > &theType) const |
Returns true if algorithm has generated error of specified type. | |
Standard_Boolean | HasWarnings () const |
Returns true if algorithm has generated some warning alerts. | |
Standard_Boolean | HasWarning (const Handle< Standard_Type > &theType) const |
Returns true if algorithm has generated warning of specified type. | |
const 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 Standard_Real theFuzz) |
Sets the additional tolerance. | |
Standard_Real | FuzzyValue () const |
Returns the additional tolerance. | |
void | SetUseOBB (const Standard_Boolean theUseOBB) |
Enables/Disables the usage of OBB. | |
Standard_Boolean | UseOBB () const |
Returns the flag defining usage of OBB. | |
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. | |
Standard_Boolean | RunParallel () const |
Returns the flag of parallel processing. | |
Protected Types | |
typedef NCollection_DataMap< Handle< BOPDS_PaveBlock >, Bnd_Box > | BOPAlgo_DataMapOfPaveBlockBndBox |
typedef NCollection_DataMap< Handle< BOPDS_PaveBlock >, TColStd_ListOfInteger > | BOPAlgo_DataMapOfPaveBlockListOfInteger |
typedef NCollection_DataMap< Standard_Integer, BOPDS_MapOfPaveBlock > | 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 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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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>. | |
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> | |
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. | |
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>. | |
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. | |
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). | |
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. | |
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. | |
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>. | |
void | TreatNewVertices (const BOPDS_IndexedDataMapOfShapeCoupleOfPaveBlocks &theMVCPB, TopTools_IndexedDataMapOfShapeListOfShape &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 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. | |
void | UpdateFaceInfo (BOPDS_DataMapOfPaveBlockListOfPaveBlock &theDME, const TColStd_DataMapOfIntegerInteger &theDMV, const BOPAlgo_DataMapOfPaveBlockListOfInteger &thePBFacesMap) |
Updates the information about faces. | |
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. | |
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> | |
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. | |
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. | |
void | UpdatePaveBlocks (const TColStd_DataMapOfIntegerInteger &aDMNewSD) |
Updates pave blocks which have the paves with indices contained in the map <aDMNewSD>. | |
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. | |
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. | |
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. | |
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 BOPDS_IndexedMapOfPaveBlock &theMPB, const Message_ProgressRange &theRange, const Standard_Boolean theAddInterf) |
Performs intersection of given pave blocks with all faces from arguments. | |
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. | |
void | RemoveMicroEdges () |
Check all edges on the micro status and remove the positive ones. | |
void | fillPIConstants (const Standard_Real theWhole, BOPAlgo_PISteps &theSteps) const override |
Analyzing Progress steps. | |
void | fillPISteps (BOPAlgo_PISteps &theSteps) const override |
Filling steps for all other operations. | |
Protected Member Functions inherited from BOPAlgo_Algo | |
BOPAlgo_Algo () | |
Default constructor. | |
virtual | ~BOPAlgo_Algo () |
BOPAlgo_Algo (const Handle< NCollection_BaseAllocator > &theAllocator) | |
virtual void | CheckData () |
Checks input data. | |
virtual void | CheckResult () |
Checks the obtained result. | |
void | analyzeProgress (const Standard_Real theWhole, BOPAlgo_PISteps &theSteps) const |
Analyze progress steps of the whole operation. | |
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. | |
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. | |
BOPDS_PDS | myDS |
BOPDS_PIterator | myIterator |
Handle< IntTools_Context > | myContext |
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. | |
TColStd_MapOfInteger | myIncreasedSS |
Sub-shapes with increased tolerance during the operation. | |
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. | |
NCollection_DataMap< BOPDS_Pair, NCollection_List< EdgeRangeDistance > > | myDistances |
Map to store minimal distances between shapes which have no real intersections. | |
Protected Attributes inherited from BOPAlgo_Options | |
Handle< NCollection_BaseAllocator > | myAllocator |
Enables/Disables the usage of OBB. | |
Handle< Message_Report > | myReport |
Enables/Disables the usage of OBB. | |
Standard_Boolean | myRunParallel |
Enables/Disables the usage of OBB. | |
Standard_Real | myFuzzyValue |
Enables/Disables the usage of OBB. | |
Standard_Boolean | myUseOBB |
Enables/Disables the usage of OBB. | |
Additional Inherited Members | |
Static Public Member Functions inherited from BOPAlgo_Options | |
static Standard_Boolean | GetParallelMode () |
Gets the global parallel mode. | |
static void | SetParallelMode (const Standard_Boolean theNewMode) |
Sets the global parallel mode. | |
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:
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:
|
protected |
|
protected |
|
protected |
BOPAlgo_PaveFiller::BOPAlgo_PaveFiller | ( | ) |
|
virtual |
BOPAlgo_PaveFiller::BOPAlgo_PaveFiller | ( | const Handle< NCollection_BaseAllocator > & | theAllocator | ) |
|
inline |
Adds the argument for operation.
|
protected |
Adds the warning about failed intersection of pair of sub-shapes.
|
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.
|
inline |
Returns the list of arguments.
|
staticprotected |
|
protected |
|
protected |
Checks if there are any common or intersecting sub shapes between two planar faces.
|
protected |
Analyzes the results of interferences of sub-shapes of the shapes looking for self-interfering entities by the following rules:
|
overrideprotectedvirtual |
Clears all warnings and errors, and any data cached by the algorithm. User defined options are not cleared.
Reimplemented from BOPAlgo_Options.
const Handle< IntTools_Context > & BOPAlgo_PaveFiller::Context | ( | ) |
|
protected |
const BOPDS_DS & BOPAlgo_PaveFiller::DS | ( | ) |
|
protected |
|
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.
|
protected |
|
overrideprotectedvirtual |
|
overrideprotectedvirtual |
Filling steps for all other operations.
Reimplemented from BOPAlgo_Algo.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
The method looks for the additional common blocks among pairs of edges with the same bounding vertices.
|
protected |
Performs intersection of given pave blocks with all faces from arguments.
|
protected |
The method looks for the additional edge/face common blocks among pairs of edge/face having the same vertices.
|
protected |
Updates tolerance of vertex with index <nV> to make it interfere with edge. Returns TRUE if intersection happened.
|
protected |
Updates tolerance of vertex with index <nV> to make it interfere with face with index <nF>
|
protected |
|
protected |
Collects index nF and indices of all subshapes of the shape with index <nF> to the map <theMI>.
|
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.
|
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.
BOPAlgo_GlueEnum BOPAlgo_PaveFiller::Glue | ( | ) | const |
Returns the glue option of the algorithm.
|
protectedvirtual |
Reimplemented in BOPAlgo_CheckerSI.
|
protected |
Performs the intersection of the vertices with edges.
|
inline |
Returns the flag to avoid building of p-curves of edges on faces.
|
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.
|
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.
|
protected |
|
protected |
const BOPDS_PIterator & BOPAlgo_PaveFiller::Iterator | ( | ) |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
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.
BOPDS_PDS BOPAlgo_PaveFiller::PDS | ( | ) |
|
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.
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protected |
Performs intersection of new vertices, obtained in E/E and E/F intersections.
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protected |
Treatment of section edges.
|
protected |
|
protected |
Keeps data for post treatment.
|
protected |
|
protected |
Adds the existing edges from the map <theMPBOnIn> which interfere with the vertices from <theMVB> map to the post treatment of section edges.
|
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.
|
protected |
|
protected |
Put paves on the curve <aBC> in case when <aBC> is closed 3D-curve.
|
protected |
Checks and puts paves created in EF intersections on the curve <theNC>.
|
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).
|
protected |
Checks and puts paves from <theMVOnIn> on the curve <theNC>. At that, common (from theMVCommon) and not common vertices are processed differently.
|
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.
|
protected |
Puts stick paves on the curve <theNC>
|
protected |
Reduce the intersection range using the common ranges of Edge/Edge interferences to avoid creation of close intersection vertices.
|
protected |
Check all edges on the micro status and remove the positive ones.
|
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.
|
protected |
|
protected |
Removes indices of vertices that are already on the curve <theNC> from the map <theMV>. It is used in PutEFPavesOnCurve and PutStickPavesOnCurve methods.
|
protected |
Repeat intersection of sub-shapes with increased vertices.
|
inline |
Sets the arguments for operation.
|
inline |
Sets the flag to avoid building of p-curves of edges on faces.
void BOPAlgo_PaveFiller::SetGlue | ( | const BOPAlgo_GlueEnum | theGlue | ) |
Sets the glue option for the algorithm.
|
protected |
|
protected |
Sets non-destructive mode automatically if an argument contains a locked sub-shape (see TopoDS_Shape::Locked()).
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.
void BOPAlgo_PaveFiller::SetSectionAttribute | ( | const BOPAlgo_SectionAttribute & | theSecAttr | ) |
|
protected |
Creates new edge from the edge nE with vertices nV1 and nV2 and returns the index of that new edge in the DS.
|
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.
|
protected |
Treatment of vertices that were created in EE intersections.
|
protected |
|
protected |
|
protected |
|
protected |
|
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>.
|
protected |
Updates the information about faces.
|
protected |
|
protected |
Updates pave blocks which have the paves with indices contained in the map <aDMNewSD>.
|
protected |
|
protected |
Updates tolerance vertex nV due to V/E interference. It always creates new vertex if nV is from arguments.
|
protected |
Updates vertices of CommonBlocks with real tolerance of CB.
|
protected |
Fields.
|
protected |
|
protected |
|
protected |
Map to store minimal distances between shapes which have no real intersections.
|
protected |
|
protected |
Fence map of intersected faces and pave blocks.
|
protected |
|
protected |
Sub-shapes with increased tolerance during the operation.
|
protected |
|
protected |
|
protected |
|
protected |
|
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.