Open CASCADE Technology  7.4.0

BOPAlgo_BuilderSolid Class Reference

Solid Builder is the algorithm for building solids from set of faces. The given faces should be non-intersecting, i.e. all coinciding parts of the faces should be shared among them. More...

#include <BOPAlgo_BuilderSolid.hxx>

Inheritance diagram for BOPAlgo_BuilderSolid:
Inheritance graph
[legend]

Public Member Functions

Constructors
 BOPAlgo_BuilderSolid ()
 Empty constructor. More...
 
virtual ~BOPAlgo_BuilderSolid ()
 Empty constructor. More...
 
 BOPAlgo_BuilderSolid (const Handle< NCollection_BaseAllocator > &theAllocator)
 Constructor with allocator. More...
 
Performing the operation
virtual void Perform () override
 Performs the construction of the solids from the given faces. More...
 
Getting the bounding boxes of the created solids
const TopTools_DataMapOfShapeBoxGetBoxesMap () const
 For classification purposes the algorithm builds the bounding boxes for all created solids. This method returns the data map of solid - box pairs. More...
 
- Public Member Functions inherited from BOPAlgo_BuilderArea
void SetContext (const Handle< IntTools_Context > &theContext)
 Sets the context for the algorithms. More...
 
const TopTools_ListOfShapeShapes () const
 Returns the input shapes. More...
 
void SetShapes (const TopTools_ListOfShape &theLS)
 Sets the shapes for building areas. More...
 
const TopTools_ListOfShapeLoops () const
 Returns the found loops. More...
 
const TopTools_ListOfShapeAreas () const
 Returns the found areas. More...
 
void SetAvoidInternalShapes (const Standard_Boolean theAvoidInternal)
 Defines the preventing of addition of internal parts into result. The default value is FALSE, i.e. the internal parts are added into result. More...
 
Standard_Boolean IsAvoidInternalShapes () const
 Returns the AvoidInternalShapes flag. More...
 
- Public Member Functions inherited from BOPAlgo_Options
 BOPAlgo_Options ()
 Empty constructor. More...
 
 BOPAlgo_Options (const Handle< NCollection_BaseAllocator > &theAllocator)
 Constructor with allocator. More...
 
virtual ~BOPAlgo_Options ()
 Destructor. More...
 
const Handle< NCollection_BaseAllocator > & Allocator () const
 Returns allocator. More...
 
virtual void Clear ()
 Clears all warnings and errors, and any data cached by the algorithm. User defined options are not cleared. More...
 
void AddError (const Handle< Message_Alert > &theAlert)
 Adds the alert as error (fail) More...
 
void AddWarning (const Handle< Message_Alert > &theAlert)
 Adds the alert as warning. More...
 
Standard_Boolean HasErrors () const
 Returns true if algorithm has failed. More...
 
Standard_Boolean HasError (const Handle< Standard_Type > &theType) const
 Returns true if algorithm has generated error of specified type. More...
 
Standard_Boolean HasWarnings () const
 Returns true if algorithm has generated some warning alerts. More...
 
Standard_Boolean HasWarning (const Handle< Standard_Type > &theType) const
 Returns true if algorithm has generated warning of specified type. More...
 
const Handle< Message_Report > & GetReport () const
 Returns report collecting all errors and warnings. More...
 
void DumpErrors (Standard_OStream &theOS) const
 Dumps the error status into the given stream. More...
 
void DumpWarnings (Standard_OStream &theOS) const
 Dumps the warning statuses into the given stream. More...
 
void ClearWarnings ()
 Clears the warnings of the algorithm. More...
 
void SetFuzzyValue (const Standard_Real theFuzz)
 Sets the additional tolerance. More...
 
Standard_Real FuzzyValue () const
 Returns the additional tolerance. More...
 
void SetProgressIndicator (const Handle< Message_ProgressIndicator > &theObj)
 Set the Progress Indicator object. More...
 
void SetUseOBB (const Standard_Boolean theUseOBB)
 Enables/Disables the usage of OBB. More...
 
Standard_Boolean UseOBB () const
 Returns the flag defining usage of OBB. More...
 
void SetRunParallel (const Standard_Boolean theFlag)
 Set the flag of parallel processing if <theFlag> is true the parallel processing is switched on if <theFlag> is false the parallel processing is switched off. More...
 
Standard_Boolean RunParallel () const
 Returns the flag of parallel processing. More...
 

Protected methods performing the operation

virtual void PerformShapesToAvoid () override
 Collect the faces: More...
 
virtual void PerformLoops () override
 Build all possible closed shells from the given faces. The method fills the following maps: More...
 
virtual void PerformAreas () override
 Classifies the created shells on the Holes and Growths. Creates the solids from the Growths shells. Puts the Hole shells into the closest Growths solids. More...
 
virtual void PerformInternalShapes () override
 Classifies the unused faces relatively the created solids. Puts the classified faces into the closest solids as internal shells. Warns the user about unclassified faces if any. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from BOPAlgo_Options
static Standard_Boolean GetParallelMode ()
 Gets the global parallel mode. More...
 
static void SetParallelMode (const Standard_Boolean theNewMode)
 Sets the global parallel mode. More...
 
- Protected Member Functions inherited from BOPAlgo_BuilderArea
 BOPAlgo_BuilderArea ()
 
virtual ~BOPAlgo_BuilderArea ()
 
 BOPAlgo_BuilderArea (const Handle< NCollection_BaseAllocator > &theAllocator)
 
- Protected Member Functions inherited from BOPAlgo_Algo
 BOPAlgo_Algo ()
 Default constructor. More...
 
virtual ~BOPAlgo_Algo ()
 
 BOPAlgo_Algo (const Handle< NCollection_BaseAllocator > &theAllocator)
 
virtual void CheckData ()
 Checks input data. More...
 
virtual void CheckResult ()
 Checks the obtained result. More...
 
- Protected Member Functions inherited from BOPAlgo_Options
void UserBreak () const
 Breaks the execution if the break signal is indicated by myProgressIndicator. More...
 
- Protected Attributes inherited from BOPAlgo_BuilderArea
Handle< IntTools_ContextmyContext
 
TopTools_ListOfShape myShapes
 
TopTools_ListOfShape myLoops
 
TopTools_ListOfShape myLoopsInternal
 
TopTools_ListOfShape myAreas
 
TopTools_IndexedMapOfOrientedShape myShapesToAvoid
 
Standard_Boolean myAvoidInternalShapes
 
- Protected Attributes inherited from BOPAlgo_Options
Handle< NCollection_BaseAllocatormyAllocator
 Enables/Disables the usage of OBB. More...
 
Handle< Message_ReportmyReport
 Enables/Disables the usage of OBB. More...
 
Standard_Boolean myRunParallel
 Enables/Disables the usage of OBB. More...
 
Standard_Real myFuzzyValue
 Enables/Disables the usage of OBB. More...
 
Handle< Message_ProgressIndicatormyProgressIndicator
 Enables/Disables the usage of OBB. More...
 
Standard_Boolean myUseOBB
 Enables/Disables the usage of OBB. More...
 

Detailed Description

Solid Builder is the algorithm for building solids from set of faces. The given faces should be non-intersecting, i.e. all coinciding parts of the faces should be shared among them.

The algorithm performs the following steps to build the solids:

  1. Find:
    • faces orientated INTERNAL;
    • alone faces given twice with different orientation;
  2. Build all possible closed shells from the rest of the faces (BOPAlgo_ShellSplitter is used for that);
  3. Classify the obtained shells on the Holes and Growths;
  4. Build solids from the Growth shells, put Hole shells into closest Growth solids;
  5. Classify all unused faces relatively created solids and put them as internal shells into the closest solids;
  6. Find all unclassified faces, i.e. faces outside of all created solids, make internal shells from them and put these shells into a warning.

It is possible to avoid all internal shells in the resulting solids. For that it is necessary to use the method SetAvoidInternalShapes(true) of the base class. In this case the steps 5 and 6 will not be performed at all.

The algorithm may return the following warnings:

Example of usage of the algorithm:

const TopTools_ListOfShape& aFaces = ...; // Faces to build the solids
Standard_Boolean isAvoidInternals = ...; // Flag which defines whether to create the internal shells or not
BOPAlgo_BuilderSolid aBS; // Solid Builder tool
aBS.SetShapes(aFaces); // Set the faces
aBS.SetAvoidInternalShapes(isAvoidInternals); // Set the AvoidInternalShapesFlag
aBS.Perform(); // Perform the operation
if (!aBS.IsDone()) // Check for the errors
{
// error treatment
Standard_SStream aSStream;
aBS.DumpErrors(aSStream);
return;
}
if (aBS.HasWarnings()) // Check for the warnings
{
// warnings treatment
Standard_SStream aSStream;
aBS.DumpWarnings(aSStream);
}
const TopTools_ListOfShape& aSolids = aBS.Areas(); // Obtaining the result solids

Constructor & Destructor Documentation

◆ BOPAlgo_BuilderSolid() [1/2]

BOPAlgo_BuilderSolid::BOPAlgo_BuilderSolid ( )

Empty constructor.

◆ ~BOPAlgo_BuilderSolid()

virtual BOPAlgo_BuilderSolid::~BOPAlgo_BuilderSolid ( )
virtual

Empty constructor.

◆ BOPAlgo_BuilderSolid() [2/2]

BOPAlgo_BuilderSolid::BOPAlgo_BuilderSolid ( const Handle< NCollection_BaseAllocator > &  theAllocator)

Constructor with allocator.

Member Function Documentation

◆ GetBoxesMap()

const TopTools_DataMapOfShapeBox& BOPAlgo_BuilderSolid::GetBoxesMap ( ) const
inline

For classification purposes the algorithm builds the bounding boxes for all created solids. This method returns the data map of solid - box pairs.

◆ Perform()

virtual void BOPAlgo_BuilderSolid::Perform ( )
overridevirtual

Performs the construction of the solids from the given faces.

Implements BOPAlgo_Algo.

◆ PerformAreas()

virtual void BOPAlgo_BuilderSolid::PerformAreas ( )
overrideprotectedvirtual

Classifies the created shells on the Holes and Growths. Creates the solids from the Growths shells. Puts the Hole shells into the closest Growths solids.

Implements BOPAlgo_BuilderArea.

◆ PerformInternalShapes()

virtual void BOPAlgo_BuilderSolid::PerformInternalShapes ( )
overrideprotectedvirtual

Classifies the unused faces relatively the created solids. Puts the classified faces into the closest solids as internal shells. Warns the user about unclassified faces if any.

Implements BOPAlgo_BuilderArea.

◆ PerformLoops()

virtual void BOPAlgo_BuilderSolid::PerformLoops ( )
overrideprotectedvirtual

Build all possible closed shells from the given faces. The method fills the following maps:

  • myLoops - Created closed shells;
  • myLoopsInternal - The shells created from unused faces.

Implements BOPAlgo_BuilderArea.

◆ PerformShapesToAvoid()

virtual void BOPAlgo_BuilderSolid::PerformShapesToAvoid ( )
overrideprotectedvirtual

Collect the faces:

  • with INTERNAL orientation;
  • that are alone but given twice with different orientation. These faces will be put into the map myShapesToAvoid and will be avoided in shells construction, but will be classified later on.

Implements BOPAlgo_BuilderArea.


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