Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions
BOPAlgo_Splitter Class Reference

The Splitter algorithm is the algorithm for splitting a group of arbitrary shapes by the other group of arbitrary shapes. The arguments of the operation are divided on two groups: Objects - shapes that will be split; Tools - shapes by which the Objects will be split. The result of the operation contains only the split parts of the shapes from the group of Objects. The split parts of the shapes from the group of Tools are excluded from the result. The shapes can be split by the other shapes from the same group (in case these shapes are interfering). More...

#include <BOPAlgo_Splitter.hxx>

Inheritance diagram for BOPAlgo_Splitter:
Inheritance graph
[legend]

Public Member Functions

 BOPAlgo_Splitter ()
 Empty constructor.
 
 ~BOPAlgo_Splitter () override
 
 BOPAlgo_Splitter (const occ::handle< NCollection_BaseAllocator > &theAllocator)
 
void Perform (const Message_ProgressRange &theRange=Message_ProgressRange()) override
 Performs the operation.
 
- Public Member Functions inherited from BOPAlgo_ToolsProvider
 BOPAlgo_ToolsProvider ()
 Empty constructor.
 
 BOPAlgo_ToolsProvider (const occ::handle< NCollection_BaseAllocator > &theAllocator)
 
void Clear () override
 Clears internal fields and arguments.
 
virtual void AddTool (const TopoDS_Shape &theShape)
 Adds Tool argument of the operation.
 
virtual void SetTools (const NCollection_List< TopoDS_Shape > &theShapes)
 Adds the Tool arguments of the operation.
 
const NCollection_List< TopoDS_Shape > & Tools () const
 Returns the Tool arguments of the operation.
 
- Public Member Functions inherited from BOPAlgo_Builder
 BOPAlgo_Builder ()
 Empty constructor.
 
 ~BOPAlgo_Builder () override
 
 BOPAlgo_Builder (const occ::handle< NCollection_BaseAllocator > &theAllocator)
 
BOPAlgo_PPaveFiller PPaveFiller ()
 Returns the PaveFiller, algorithm for sub-shapes intersection.
 
BOPDS_PDS PDS ()
 Returns the Data Structure, holder of intersection information.
 
occ::handle< IntTools_ContextContext () const
 Returns the Context, tool for cashing heavy algorithms.
 
virtual void AddArgument (const TopoDS_Shape &theShape)
 Sets the list of arguments for the operation.
 
virtual void SetArguments (const NCollection_List< TopoDS_Shape > &theLS)
 Sets the list of arguments for the operation.
 
const NCollection_List< TopoDS_Shape > & Arguments () const
 Returns the list of arguments.
 
void SetNonDestructive (const bool theFlag)
 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.
 
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 SetGlue (const BOPAlgo_GlueEnum theGlue)
 Sets the glue option for the algorithm.
 
BOPAlgo_GlueEnum Glue () const
 Returns the glue option of the algorithm.
 
void SetCheckInverted (const bool theCheck)
 Enables/Disables the check of the input solids for inverted status.
 
bool CheckInverted () const
 Returns the flag defining whether the check for input solids on inverted status should be performed or not.
 
virtual void PerformWithFiller (const BOPAlgo_PaveFiller &theFiller, const Message_ProgressRange &theRange=Message_ProgressRange())
 Performs the operation with the prepared filler. The intersection will not be performed in this case.
 
virtual void BuildBOP (const NCollection_List< TopoDS_Shape > &theObjects, const TopAbs_State theObjState, const NCollection_List< TopoDS_Shape > &theTools, const TopAbs_State theToolsState, const Message_ProgressRange &theRange, occ::handle< Message_Report > theReport=nullptr)
 Builds the result of Boolean operation of given type basing on the result of Builder operation (GF or any other).
 
void BuildBOP (const NCollection_List< TopoDS_Shape > &theObjects, const NCollection_List< TopoDS_Shape > &theTools, const BOPAlgo_Operation theOperation, const Message_ProgressRange &theRange, occ::handle< Message_Report > theReport=nullptr)
 Builds the result of Boolean operation of given type basing on the result of Builder operation (GF or any other).
 
const NCollection_DataMap< TopoDS_Shape, NCollection_List< TopoDS_Shape >, TopTools_ShapeMapHasher > & Images () const
 Returns the map of origins.
 
const NCollection_DataMap< TopoDS_Shape, NCollection_List< TopoDS_Shape >, TopTools_ShapeMapHasher > & Origins () const
 Returns the map of origins.
 
const NCollection_DataMap< TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher > & ShapesSD () const
 Returns the map of Same Domain (SD) shapes - coinciding shapes from different arguments.
 
- Public Member Functions inherited from BOPAlgo_BuilderShape
const TopoDS_ShapeShape () const
 
const NCollection_List< TopoDS_Shape > & Modified (const TopoDS_Shape &theS)
 Returns the list of shapes Generated from the shape theS.
 
const NCollection_List< TopoDS_Shape > & Generated (const TopoDS_Shape &theS)
 Returns the list of shapes Generated from the shape theS.
 
bool IsDeleted (const TopoDS_Shape &theS)
 Returns true if the shape theS has been deleted. In this case the shape will have no Modified elements, but can have Generated elements.
 
bool HasModified () const
 Returns true if any of the input shapes has been modified during operation.
 
bool HasGenerated () const
 Returns true if any of the input shapes has generated shapes during operation.
 
bool HasDeleted () const
 Returns true if any of the input shapes has been deleted during operation.
 
occ::handle< BRepTools_HistoryHistory ()
 History Tool.
 
void SetToFillHistory (const bool theHistFlag)
 Returns flag of history availability.
 
bool HasHistory () const
 Returns flag of history availability.
 
- 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 Member Functions

void CheckData () override
 Checks the input data.
 
void BuildResult (const TopAbs_ShapeEnum theType) override
 Adds images of the argument shapes into result. When called the for the last time (for compound) it rebuilds the result shape to avoid multiple enclosure into compounds.
 
- Protected Member Functions inherited from BOPAlgo_Builder
void PrepareHistory (const Message_ProgressRange &theRange)
 Prepare history information for the input shapes taking into account possible operation-specific modifications. For instance, in the CellsBuilder operation, additionally to splitting input shapes the splits of the shapes (or the shapes themselves) may be unified during removal of internal boundaries. In this case each split should be linked to the unified shape.
 
virtual const NCollection_List< TopoDS_Shape > * LocModified (const TopoDS_Shape &theS)
 Prepare history information for the input shapes taking into account possible operation-specific modifications. For instance, in the CellsBuilder operation, additionally to splitting input shapes the splits of the shapes (or the shapes themselves) may be unified during removal of internal boundaries. In this case each split should be linked to the unified shape.
 
virtual const NCollection_List< TopoDS_Shape > & LocGenerated (const TopoDS_Shape &theS)
 Returns the list of shapes generated from the shape theS. Similarly to LocModified must be redefined for specific operations, obtaining Generated elements differently.
 
virtual void PerformInternal (const BOPAlgo_PaveFiller &thePF, const Message_ProgressRange &theRange)
 Performs the building of the result. To build the result of any other operation it will be necessary to override this method.
 
virtual void PerformInternal1 (const BOPAlgo_PaveFiller &thePF, const Message_ProgressRange &theRange)
 Performs the building of the result. To build the result of any other operation it will be necessary to override this method.
 
void CheckFiller ()
 Checks if the intersection algorithm has Errors/Warnings.
 
virtual void Prepare ()
 Prepares the result shape by making it empty compound.
 
void FillImagesVertices (const Message_ProgressRange &theRange)
 
void FillImagesEdges (const Message_ProgressRange &theRange)
 
void FillImagesContainers (const TopAbs_ShapeEnum theType, const Message_ProgressRange &theRange)
 Builds the image of the given container using the splits of its sub-shapes.
 
void FillImagesContainer (const TopoDS_Shape &theS, const TopAbs_ShapeEnum theType)
 Builds the image of the given container using the splits of its sub-shapes.
 
void FillImagesFaces (const Message_ProgressRange &theRange)
 Builds the splits of faces using the information from the intersection stage stored in Data Structure.
 
virtual void BuildSplitFaces (const Message_ProgressRange &theRange)
 Builds the splits of faces using the information from the intersection stage stored in Data Structure.
 
void FillSameDomainFaces (const Message_ProgressRange &theRange)
 Looks for the same domain faces among the splits of the faces. Updates the map of images with SD faces.
 
void FillInternalVertices (const Message_ProgressRange &theRange)
 Classifies the alone vertices on faces relatively its splits and adds them as INTERNAL into the splits.
 
void FillImagesSolids (const Message_ProgressRange &theRange)
 Builds the draft solid by rebuilding the shells of the solid with the splits of faces.
 
void BuildDraftSolid (const TopoDS_Shape &theSolid, TopoDS_Shape &theDraftSolid, NCollection_List< TopoDS_Shape > &theLIF)
 Builds the draft solid by rebuilding the shells of the solid with the splits of faces.
 
virtual void FillIn3DParts (NCollection_DataMap< TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher > &theDraftSolids, const Message_ProgressRange &theRange)
 Finds faces located inside each solid.
 
void BuildSplitSolids (NCollection_DataMap< TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher > &theDraftSolids, const Message_ProgressRange &theRange)
 Builds the splits of the solids using their draft versions and faces located inside.
 
void FillInternalShapes (const Message_ProgressRange &theRange)
 Classifies the vertices and edges from the arguments relatively splits of solids and makes them INTERNAL for solids.
 
void FillImagesCompounds (const Message_ProgressRange &theRange)
 Builds the image of the given compound.
 
void FillImagesCompound (const TopoDS_Shape &theS, NCollection_Map< TopoDS_Shape, TopTools_ShapeMapHasher > &theMF)
 Builds the image of the given compound.
 
virtual void PostTreat (const Message_ProgressRange &theRange)
 
NbShapes getNbShapes () const
 Compute number of shapes of certain type participating in operation.
 
void fillPIConstants (const double theWhole, BOPAlgo_PISteps &theSteps) const override
 Filling steps for constant operations.
 
void fillPISteps (BOPAlgo_PISteps &theSteps) const override
 Filling steps for all other operations.
 
- Protected Member Functions inherited from BOPAlgo_BuilderShape
 BOPAlgo_BuilderShape ()
 Constructor with allocator.
 
 BOPAlgo_BuilderShape (const occ::handle< NCollection_BaseAllocator > &theAllocator)
 Constructor with allocator.
 
- Protected Member Functions inherited from BOPAlgo_Algo
 BOPAlgo_Algo ()
 Default constructor.
 
 ~BOPAlgo_Algo () override
 
 BOPAlgo_Algo (const occ::handle< NCollection_BaseAllocator > &theAllocator)
 
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.
 
- Protected Member Functions inherited from BOPAlgo_Options
bool UserBreak (const Message_ProgressScope &thePS)
 Adds error to the report if the break signal was caught. Returns true in this case, false otherwise.
 

Additional Inherited Members

- Static Public Member Functions inherited from BOPAlgo_Options
static bool GetParallelMode ()
 Gets the global parallel mode.
 
static void SetParallelMode (const bool theNewMode)
 Sets the global parallel mode.
 
- Protected Types inherited from BOPAlgo_Builder
enum  BOPAlgo_PIOperation {
  PIOperation_TreatVertices = 0 , PIOperation_TreatEdges , PIOperation_TreatWires , PIOperation_TreatFaces ,
  PIOperation_TreatShells , PIOperation_TreatSolids , PIOperation_TreatCompsolids , PIOperation_TreatCompounds ,
  PIOperation_FillHistory , PIOperation_PostTreat , PIOperation_Last
}
 Compute number of shapes of certain type participating in operation. More...
 
- Protected Attributes inherited from BOPAlgo_ToolsProvider
NCollection_List< TopoDS_ShapemyTools
 
NCollection_Map< TopoDS_Shape, TopTools_ShapeMapHashermyMapTools
 
- Protected Attributes inherited from BOPAlgo_Builder
NCollection_List< TopoDS_ShapemyArguments
 Arguments of the operation.
 
NCollection_Map< TopoDS_Shape, TopTools_ShapeMapHashermyMapFence
 Fence map providing the uniqueness of the shapes in the list of arguments.
 
BOPAlgo_PPaveFiller myPaveFiller
 Pave Filler - algorithm for sub-shapes intersection.
 
BOPDS_PDS myDS
 Data Structure - holder of intersection information.
 
occ::handle< IntTools_ContextmyContext
 Context - tool for cashing heavy algorithms such as Projectors and Classifiers.
 
int myEntryPoint
 EntryPoint - controls the deletion of the PaveFiller, which could live longer than the Builder.
 
NCollection_DataMap< TopoDS_Shape, NCollection_List< TopoDS_Shape >, TopTools_ShapeMapHashermyImages
 Images - map of Images of the sub-shapes of arguments.
 
NCollection_DataMap< TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHashermyShapesSD
 ShapesSD - map of SD Shapes.
 
NCollection_DataMap< TopoDS_Shape, NCollection_List< TopoDS_Shape >, TopTools_ShapeMapHashermyOrigins
 Origins - map of Origins, back map of Images.
 
NCollection_DataMap< TopoDS_Shape, NCollection_List< TopoDS_Shape >, TopTools_ShapeMapHashermyInParts
 InParts - map of own and acquired IN faces of the arguments solids.
 
bool myNonDestructive
 Safe processing option allows avoiding modification of the input shapes.
 
BOPAlgo_GlueEnum myGlue
 Gluing option allows speeding up the intersection of the input shapes.
 
bool myCheckInverted
 Check inverted option allows disabling the check of input solids on inverted status.
 
- Protected Attributes inherited from BOPAlgo_BuilderShape
TopoDS_Shape myShape
 Result of the operation.
 
NCollection_List< TopoDS_ShapemyHistShapes
 Storer for the history shapes.
 
NCollection_Map< TopoDS_Shape, TopTools_ShapeMapHashermyMapShape
 cached map of all arguments shapes
 
bool myFillHistory
 Controls the history filling.
 
occ::handle< BRepTools_HistorymyHistory
 History tool.
 
- Protected Attributes inherited from BOPAlgo_Options
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.
 

Detailed Description

The Splitter algorithm is the algorithm for splitting a group of arbitrary shapes by the other group of arbitrary shapes. The arguments of the operation are divided on two groups: Objects - shapes that will be split; Tools - shapes by which the Objects will be split. The result of the operation contains only the split parts of the shapes from the group of Objects. The split parts of the shapes from the group of Tools are excluded from the result. The shapes can be split by the other shapes from the same group (in case these shapes are interfering).

The class is a General Fuse based algorithm. Thus, all options of the General Fuse algorithm such as Fuzzy mode, safe processing mode, parallel processing mode, gluing mode and history support are also available in this algorithm. There is no requirement on the existence of the Tools shapes. And if there are no Tools shapes, the result of the splitting operation will be equivalent to the General Fuse result.

The implementation of the algorithm is minimal - only the methods CheckData() and Perform() have been overridden. The method BOPAlgo_Builder::BuildResult(), which adds the split parts of the arguments into result, does not have to be overridden, because its native implementation performs the necessary actions for the Splitter algorithm - it adds the split parts of only Objects into result, avoiding the split parts of Tools.

Constructor & Destructor Documentation

◆ BOPAlgo_Splitter() [1/2]

BOPAlgo_Splitter::BOPAlgo_Splitter ( )

Empty constructor.

◆ ~BOPAlgo_Splitter()

BOPAlgo_Splitter::~BOPAlgo_Splitter ( )
override

◆ BOPAlgo_Splitter() [2/2]

BOPAlgo_Splitter::BOPAlgo_Splitter ( const occ::handle< NCollection_BaseAllocator > & theAllocator)

Member Function Documentation

◆ BuildResult()

void BOPAlgo_Splitter::BuildResult ( const TopAbs_ShapeEnum theType)
overrideprotectedvirtual

Adds images of the argument shapes into result. When called the for the last time (for compound) it rebuilds the result shape to avoid multiple enclosure into compounds.

Reimplemented from BOPAlgo_Builder.

◆ CheckData()

void BOPAlgo_Splitter::CheckData ( )
overrideprotectedvirtual

Checks the input data.

Reimplemented from BOPAlgo_Builder.

◆ Perform()

void BOPAlgo_Splitter::Perform ( const Message_ProgressRange & theRange = Message_ProgressRange())
overridevirtual

Performs the operation.

Reimplemented from BOPAlgo_Builder.


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