Open CASCADE Technology 7.8.0
Public Member Functions | Protected Member Functions | Protected Attributes
BRepFeat_Builder Class Reference

Provides a basic tool to implement features topological operations. The main goal of the algorithm is to perform the result of the operation according to the kept parts of the tool. Input data: a) DS; b) The kept parts of the tool; If the map of the kept parts of the tool is not filled boolean operation of the given type will be performed; c) Operation required. Steps: a) Fill myShapes, myRemoved maps; b) Rebuild edges and faces; c) Build images of the object; d) Build the result of the operation. Result: Result shape of the operation required. More...

#include <BRepFeat_Builder.hxx>

Inheritance diagram for BRepFeat_Builder:
Inheritance graph
[legend]

Public Member Functions

 BRepFeat_Builder ()
 
virtual ~BRepFeat_Builder ()
 
virtual void Clear () override
 Clears internal fields and arguments.
 
void Init (const TopoDS_Shape &theShape)
 Initializes the object of local boolean operation.
 
void Init (const TopoDS_Shape &theShape, const TopoDS_Shape &theTool)
 Initializes the arguments of local boolean operation.
 
void SetOperation (const Standard_Integer theFuse)
 Sets the operation of local boolean operation. If theFuse = 0 than the operation is CUT, otherwise FUSE.
 
void SetOperation (const Standard_Integer theFuse, const Standard_Boolean theFlag)
 Sets the operation of local boolean operation. If theFlag = TRUE it means that no selection of parts of the tool is needed, t.e. no second part. In that case if theFuse = 0 than operation is COMMON, otherwise CUT21. If theFlag = FALSE SetOperation(theFuse) function is called.
 
void PartsOfTool (TopTools_ListOfShape &theLT)
 Collects parts of the tool.
 
void KeepParts (const TopTools_ListOfShape &theIm)
 Initializes parts of the tool for second step of algorithm. Collects shapes and all sub-shapes into myShapes map.
 
void KeepPart (const TopoDS_Shape &theS)
 Adds shape theS and all its sub-shapes into myShapes map.
 
void PerformResult (const Message_ProgressRange &theRange=Message_ProgressRange())
 Main function to build the result of the local operation required.
 
void RebuildFaces ()
 Rebuilds faces in accordance with the kept parts of the tool.
 
void RebuildEdge (const TopoDS_Shape &theE, const TopoDS_Face &theF, const TopTools_MapOfShape &theME, TopTools_ListOfShape &aLEIm)
 Rebuilds edges in accordance with the kept parts of the tool.
 
void CheckSolidImages ()
 Collects the images of the object, that contains in the images of the tool.
 
void FillRemoved ()
 Collects the removed parts of the tool into myRemoved map.
 
void FillRemoved (const TopoDS_Shape &theS, TopTools_MapOfShape &theM)
 Adds the shape S and its sub-shapes into myRemoved map.
 
- Public Member Functions inherited from BOPAlgo_BOP
 BOPAlgo_BOP ()
 Empty constructor.
 
virtual ~BOPAlgo_BOP ()
 
 BOPAlgo_BOP (const Handle< NCollection_BaseAllocator > &theAllocator)
 
void SetOperation (const BOPAlgo_Operation theOperation)
 
BOPAlgo_Operation Operation () const
 
virtual void Perform (const Message_ProgressRange &theRange=Message_ProgressRange()) override
 Performs the operation. The intersection will be performed also.
 
- Public Member Functions inherited from BOPAlgo_ToolsProvider
 BOPAlgo_ToolsProvider ()
 Empty constructor.
 
 BOPAlgo_ToolsProvider (const Handle< NCollection_BaseAllocator > &theAllocator)
 
virtual void AddTool (const TopoDS_Shape &theShape)
 Adds Tool argument of the operation.
 
virtual void SetTools (const TopTools_ListOfShape &theShapes)
 Adds the Tool arguments of the operation.
 
const TopTools_ListOfShapeTools () const
 Returns the Tool arguments of the operation.
 
- Public Member Functions inherited from BOPAlgo_Builder
 BOPAlgo_Builder ()
 Empty constructor.
 
virtual ~BOPAlgo_Builder ()
 
 BOPAlgo_Builder (const 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.
 
Handle< IntTools_ContextContext () const
 Returns the Context, tool for cashing heavy algorithms.
 
virtual void AddArgument (const TopoDS_Shape &theShape)
 Adds the argument to the operation.
 
virtual void SetArguments (const TopTools_ListOfShape &theLS)
 Sets the list of arguments for the operation.
 
const TopTools_ListOfShapeArguments () const
 Returns the list of arguments.
 
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. This flag is taken into account if internal PaveFiller is used only. In the case of calling PerformWithFiller the corresponding flag of that PaveFiller is in force.
 
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.
 
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 Standard_Boolean theCheck)
 Enables/Disables the check of the input solids for inverted status.
 
Standard_Boolean 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 TopTools_ListOfShape &theObjects, const TopAbs_State theObjState, const TopTools_ListOfShape &theTools, const TopAbs_State theToolsState, const Message_ProgressRange &theRange, Handle< Message_Report > theReport=NULL)
 Builds the result shape according to the given states for the objects and tools. These states can be unambiguously converted into the Boolean operation type. Thus, it performs the Boolean operation on the given groups of shapes.
 
void BuildBOP (const TopTools_ListOfShape &theObjects, const TopTools_ListOfShape &theTools, const BOPAlgo_Operation theOperation, const Message_ProgressRange &theRange, Handle< Message_Report > theReport=NULL)
 Builds the result of Boolean operation of given type basing on the result of Builder operation (GF or any other).
 
const TopTools_DataMapOfShapeListOfShapeImages () const
 Returns the map of images.
 
const TopTools_DataMapOfShapeListOfShapeOrigins () const
 Returns the map of origins.
 
const TopTools_DataMapOfShapeShapeShapesSD () 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
 Returns the result of algorithm.
 
const TopTools_ListOfShapeModified (const TopoDS_Shape &theS)
 Returns the list of shapes Modified from the shape theS.
 
const TopTools_ListOfShapeGenerated (const TopoDS_Shape &theS)
 Returns the list of shapes Generated from the shape theS.
 
Standard_Boolean 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.
 
Standard_Boolean HasModified () const
 Returns true if any of the input shapes has been modified during operation.
 
Standard_Boolean HasGenerated () const
 Returns true if any of the input shapes has generated shapes during operation.
 
Standard_Boolean HasDeleted () const
 Returns true if any of the input shapes has been deleted during operation.
 
Handle< BRepTools_HistoryHistory ()
 History Tool.
 
void SetToFillHistory (const Standard_Boolean theHistFlag)
 Allows disabling the history collection.
 
Standard_Boolean HasHistory () const
 Returns flag of history availability.
 
- 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 Member Functions

virtual void Prepare () override
 Prepares builder of local operation.
 
virtual void FillIn3DParts (TopTools_DataMapOfShapeShape &theDraftSolids, const Message_ProgressRange &theRange) override
 Function is redefined to avoid the usage of removed faces.
 
virtual Standard_Boolean CheckArgsForOpenSolid () override
 Avoid the check for open solids and always use the splits of solids for building the result shape.
 
- Protected Member Functions inherited from BOPAlgo_BOP
virtual void CheckData () override
 Checks the input data.
 
virtual void PerformInternal1 (const BOPAlgo_PaveFiller &thePF, const Message_ProgressRange &theRange) override
 Performs calculations using prepared Filler object <thePF>
 
virtual void BuildResult (const TopAbs_ShapeEnum theType) override
 Builds the result of operation. The method is called for each of the arguments type and adds into the result the splits of the arguments of that type.
 
void BuildShape (const Message_ProgressRange &theRange)
 
void BuildRC (const Message_ProgressRange &theRange)
 
void BuildSolid (const Message_ProgressRange &theRange)
 
Standard_Boolean TreatEmptyShape ()
 Treatment of the cases with empty shapes.
It returns TRUE if there is nothing to do, i.e. all shapes in one of the groups are empty shapes.
 
virtual void fillPIConstants (const Standard_Real theWhole, BOPAlgo_PISteps &theSteps) const override
 Fill PI steps.
 
- Protected Member Functions inherited from BOPAlgo_Builder
void PrepareHistory (const Message_ProgressRange &theRange)
 Prepare information for history support.
 
virtual const TopTools_ListOfShapeLocModified (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 TopTools_ListOfShapeLocGenerated (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. The method calls the PerformInternal1() method surrounded by a try-catch block.
 
void CheckFiller ()
 Checks if the intersection algorithm has Errors/Warnings.
 
void FillImagesVertices (const Message_ProgressRange &theRange)
 Fills the images of vertices.
 
void FillImagesEdges (const Message_ProgressRange &theRange)
 Fills the images of edges.
 
void FillImagesContainers (const TopAbs_ShapeEnum theType, const Message_ProgressRange &theRange)
 Fills the images of containers (WIRES/SHELLS/COMPSOLID).
 
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)
 Fills the images of faces. The method consists of three steps:
 
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)
 Fills the images of solids. The method consists of four steps:
 
void BuildDraftSolid (const TopoDS_Shape &theSolid, TopoDS_Shape &theDraftSolid, TopTools_ListOfShape &theLIF)
 Builds the draft solid by rebuilding the shells of the solid with the splits of faces.
 
void BuildSplitSolids (TopTools_DataMapOfShapeShape &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)
 Fills the images of compounds.
 
void FillImagesCompound (const TopoDS_Shape &theS, TopTools_MapOfShape &theMF)
 Builds the image of the given compound.
 
virtual void PostTreat (const Message_ProgressRange &theRange)
 Post treatment of the result of the operation. The method checks validity of the sub-shapes of the result and updates the tolerances to make them valid.
 
NbShapes getNbShapes () const
 Compute number of shapes of certain type participating in operation.
 
void fillPIConstants (const Standard_Real 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 ()
 Empty constructor.
 
 BOPAlgo_BuilderShape (const Handle< NCollection_BaseAllocator > &theAllocator)
 Constructor with allocator.
 
- Protected Member Functions inherited from BOPAlgo_Algo
 BOPAlgo_Algo ()
 Default constructor.
 
virtual ~BOPAlgo_Algo ()
 
 BOPAlgo_Algo (const Handle< NCollection_BaseAllocator > &theAllocator)
 
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.
 

Protected Attributes

TopTools_MapOfShape myShapes
 
TopTools_MapOfShape myRemoved
 
Standard_Integer myFuse
 
- Protected Attributes inherited from BOPAlgo_BOP
BOPAlgo_Operation myOperation
 
Standard_Integer myDims [2]
 
TopoDS_Shape myRC
 
- Protected Attributes inherited from BOPAlgo_ToolsProvider
TopTools_ListOfShape myTools
 
TopTools_MapOfShape myMapTools
 
- Protected Attributes inherited from BOPAlgo_Builder
TopTools_ListOfShape myArguments
 Arguments of the operation.
 
TopTools_MapOfShape myMapFence
 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.
 
Handle< IntTools_ContextmyContext
 Context - tool for cashing heavy algorithms such as Projectors and Classifiers.
 
Standard_Integer myEntryPoint
 EntryPoint - controls the deletion of the PaveFiller, which could live longer than the Builder.
 
TopTools_DataMapOfShapeListOfShape myImages
 Images - map of Images of the sub-shapes of arguments.
 
TopTools_DataMapOfShapeShape myShapesSD
 ShapesSD - map of SD Shapes.
 
TopTools_DataMapOfShapeListOfShape myOrigins
 Origins - map of Origins, back map of Images.
 
TopTools_DataMapOfShapeListOfShape myInParts
 InParts - map of own and acquired IN faces of the arguments solids.
 
Standard_Boolean 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.
 
Standard_Boolean 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.
 
TopTools_ListOfShape myHistShapes
 Storer for the history shapes.
 
TopTools_MapOfShape myMapShape
 cached map of all arguments shapes
 
Standard_Boolean myFillHistory
 Controls the history filling.
 
Handle< BRepTools_HistorymyHistory
 History tool.
 
- Protected Attributes inherited from BOPAlgo_Options
Handle< NCollection_BaseAllocatormyAllocator
 Enables/Disables the usage of OBB.
 
Handle< Message_ReportmyReport
 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.
 
- Protected Types inherited from BOPAlgo_BOP
enum  BOPAlgo_PIOperation { PIOperation_BuildShape = BOPAlgo_ToolsProvider::PIOperation_Last , PIOperation_Last }
 Extend list of operations to be supported by the Progress Indicator. More...
 
- 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
}
 List of operations to be supported by the Progress Indicator. More...
 

Detailed Description

Provides a basic tool to implement features topological operations. The main goal of the algorithm is to perform the result of the operation according to the kept parts of the tool. Input data: a) DS; b) The kept parts of the tool; If the map of the kept parts of the tool is not filled boolean operation of the given type will be performed; c) Operation required. Steps: a) Fill myShapes, myRemoved maps; b) Rebuild edges and faces; c) Build images of the object; d) Build the result of the operation. Result: Result shape of the operation required.

Constructor & Destructor Documentation

◆ BRepFeat_Builder()

BRepFeat_Builder::BRepFeat_Builder ( )

◆ ~BRepFeat_Builder()

virtual BRepFeat_Builder::~BRepFeat_Builder ( )
virtual

Member Function Documentation

◆ CheckArgsForOpenSolid()

virtual Standard_Boolean BRepFeat_Builder::CheckArgsForOpenSolid ( )
inlineoverrideprotectedvirtual

Avoid the check for open solids and always use the splits of solids for building the result shape.

Reimplemented from BOPAlgo_BOP.

◆ CheckSolidImages()

void BRepFeat_Builder::CheckSolidImages ( )

Collects the images of the object, that contains in the images of the tool.

◆ Clear()

virtual void BRepFeat_Builder::Clear ( )
overridevirtual

Clears internal fields and arguments.

Reimplemented from BOPAlgo_BOP.

◆ FillIn3DParts()

virtual void BRepFeat_Builder::FillIn3DParts ( TopTools_DataMapOfShapeShape theDraftSolids,
const Message_ProgressRange theRange 
)
overrideprotectedvirtual

Function is redefined to avoid the usage of removed faces.

Reimplemented from BOPAlgo_Builder.

◆ FillRemoved() [1/2]

void BRepFeat_Builder::FillRemoved ( )

Collects the removed parts of the tool into myRemoved map.

◆ FillRemoved() [2/2]

void BRepFeat_Builder::FillRemoved ( const TopoDS_Shape theS,
TopTools_MapOfShape theM 
)

Adds the shape S and its sub-shapes into myRemoved map.

◆ Init() [1/2]

void BRepFeat_Builder::Init ( const TopoDS_Shape theShape)

Initializes the object of local boolean operation.

◆ Init() [2/2]

void BRepFeat_Builder::Init ( const TopoDS_Shape theShape,
const TopoDS_Shape theTool 
)

Initializes the arguments of local boolean operation.

◆ KeepPart()

void BRepFeat_Builder::KeepPart ( const TopoDS_Shape theS)

Adds shape theS and all its sub-shapes into myShapes map.

◆ KeepParts()

void BRepFeat_Builder::KeepParts ( const TopTools_ListOfShape theIm)

Initializes parts of the tool for second step of algorithm. Collects shapes and all sub-shapes into myShapes map.

◆ PartsOfTool()

void BRepFeat_Builder::PartsOfTool ( TopTools_ListOfShape theLT)

Collects parts of the tool.

◆ PerformResult()

void BRepFeat_Builder::PerformResult ( const Message_ProgressRange theRange = Message_ProgressRange())

Main function to build the result of the local operation required.

◆ Prepare()

virtual void BRepFeat_Builder::Prepare ( )
overrideprotectedvirtual

Prepares builder of local operation.

Reimplemented from BOPAlgo_Builder.

◆ RebuildEdge()

void BRepFeat_Builder::RebuildEdge ( const TopoDS_Shape theE,
const TopoDS_Face theF,
const TopTools_MapOfShape theME,
TopTools_ListOfShape aLEIm 
)

Rebuilds edges in accordance with the kept parts of the tool.

◆ RebuildFaces()

void BRepFeat_Builder::RebuildFaces ( )

Rebuilds faces in accordance with the kept parts of the tool.

◆ SetOperation() [1/2]

void BRepFeat_Builder::SetOperation ( const Standard_Integer  theFuse)

Sets the operation of local boolean operation. If theFuse = 0 than the operation is CUT, otherwise FUSE.

◆ SetOperation() [2/2]

void BRepFeat_Builder::SetOperation ( const Standard_Integer  theFuse,
const Standard_Boolean  theFlag 
)

Sets the operation of local boolean operation. If theFlag = TRUE it means that no selection of parts of the tool is needed, t.e. no second part. In that case if theFuse = 0 than operation is COMMON, otherwise CUT21. If theFlag = FALSE SetOperation(theFuse) function is called.

Field Documentation

◆ myFuse

Standard_Integer BRepFeat_Builder::myFuse
protected

◆ myRemoved

TopTools_MapOfShape BRepFeat_Builder::myRemoved
protected

◆ myShapes

TopTools_MapOfShape BRepFeat_Builder::myShapes
protected

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