Open CASCADE Technology
7.3.0
|
The algorithm is based on the General Fuse algorithm (GFA). The result of GFA is all split parts of the Arguments.
More...
#include <BOPAlgo_CellsBuilder.hxx>
Public Member Functions | |
BOPAlgo_CellsBuilder () | |
BOPAlgo_CellsBuilder (const Handle< NCollection_BaseAllocator > &theAllocator) | |
virtual | ~BOPAlgo_CellsBuilder () |
virtual void | Clear () override |
Redefined method Clear - clears the contents. More... | |
void | AddToResult (const TopTools_ListOfShape &theLSToTake, const TopTools_ListOfShape &theLSToAvoid, const Standard_Integer theMaterial=0, const Standard_Boolean theUpdate=Standard_False) |
Adding the parts to result. The parts are defined by two lists of shapes: <theLSToTake> defines the arguments which parts should be taken into result; <theLSToAvoid> defines the arguments which parts should not be taken into result; To be taken into result the part must be IN for all shapes from the list <theLSToTake> and must be OUT of all shapes from the list <theLSToAvoid>. More... | |
void | AddAllToResult (const Standard_Integer theMaterial=0, const Standard_Boolean theUpdate=Standard_False) |
Add all split parts to result. <theMaterial> defines the removal of internal boundaries; <theUpdate> parameter defines whether to remove boundaries now or not. More... | |
void | RemoveFromResult (const TopTools_ListOfShape &theLSToTake, const TopTools_ListOfShape &theLSToAvoid) |
Removing the parts from result. The parts are defined by two lists of shapes: <theLSToTake> defines the arguments which parts should be removed from result; <theLSToAvoid> defines the arguments which parts should not be removed from result. To be removed from the result the part must be IN for all shapes from the list <theLSToTake> and must be OUT of all shapes from the list <theLSToAvoid>. More... | |
void | RemoveAllFromResult () |
Remove all parts from result. More... | |
void | RemoveInternalBoundaries () |
Removes internal boundaries between cells with the same material. If the result contains the cells with same material but of different dimension the removal of internal boundaries between these cells will not be performed. In case of some errors during the removal the method will set the appropriate warning status - use GetReport() to access them. More... | |
const TopoDS_Shape & | GetAllParts () const |
Get all split parts. More... | |
void | MakeContainers () |
Makes the Containers of proper type from the parts added to result. More... | |
Public Member Functions inherited from BOPAlgo_Builder | |
BOPAlgo_Builder () | |
Empty constructor. More... | |
virtual | ~BOPAlgo_Builder () |
BOPAlgo_Builder (const Handle< NCollection_BaseAllocator > &theAllocator) | |
BOPAlgo_PPaveFiller | PPaveFiller () |
Returns the PaveFiller, algorithm for sub-shapes intersection. More... | |
BOPDS_PDS | PDS () |
Returns the Data Structure, holder of intersection information. More... | |
Handle< IntTools_Context > | Context () const |
Returns the Context, tool for cashing heavy algorithms. More... | |
virtual void | AddArgument (const TopoDS_Shape &theShape) |
Adds the argument to the operation. More... | |
virtual void | SetArguments (const TopTools_ListOfShape &theLS) |
Sets the list of arguments for the operation. More... | |
const TopTools_ListOfShape & | Arguments () const |
Returns the list of arguments. More... | |
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. More... | |
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. More... | |
void | SetGlue (const BOPAlgo_GlueEnum theGlue) |
Sets the glue option for the algorithm. More... | |
BOPAlgo_GlueEnum | Glue () const |
Returns the glue option of the algorithm. More... | |
void | SetCheckInverted (const Standard_Boolean theCheck) |
Enables/Disables the check of the input solids for inverted status. More... | |
Standard_Boolean | CheckInverted () const |
Returns the flag defining whether the check for input solids on inverted status should be performed or not. More... | |
virtual void | Perform () override |
Performs the operation. The intersection will be performed also. More... | |
virtual void | PerformWithFiller (const BOPAlgo_PaveFiller &theFiller) |
Performs the operation with the prepared filler. The intersection will not be performed in this case. More... | |
const TopTools_DataMapOfShapeListOfShape & | Images () const |
Returns the map of images. More... | |
const TopTools_DataMapOfShapeListOfShape & | Origins () const |
Returns the map of origins. More... | |
const TopTools_DataMapOfShapeShape & | ShapesSD () const |
Returns the map of Same Domain (SD) shapes - coinciding shapes from different arguments. More... | |
virtual const TopTools_ListOfShape & | Generated (const TopoDS_Shape &theS) override |
Returns the list of shapes generated from the shape theS. More... | |
virtual const TopTools_ListOfShape & | Modified (const TopoDS_Shape &theS) override |
Returns the list of shapes modified from the shape theS. More... | |
virtual Standard_Boolean | IsDeleted (const TopoDS_Shape &theS) override |
Returns true if the shape theS has been deleted. More... | |
Public Member Functions inherited from BOPAlgo_BuilderShape | |
const TopoDS_Shape & | Shape () const |
Returns the result of algorithm. More... | |
Standard_Boolean | HasDeleted () const |
Returns true if the at least one shape(or subshape) of arguments has been deleted. More... | |
Standard_Boolean | HasGenerated () const |
Returns true if the at least one shape(or subshape) of arguments has generated shapes. More... | |
Standard_Boolean | HasModified () const |
Returns true if the at least one shape(or subshape) of arguments has modified shapes. More... | |
const TopTools_IndexedDataMapOfShapeListOfShape & | ImagesResult () const |
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... | |
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 Member Functions | |
virtual const TopTools_ListOfShape * | LocModified (const TopoDS_Shape &theS) override |
Prepare information for history support taking into account local modification map of unified elements - myMapModified. More... | |
virtual void | Prepare () override |
Redefined method Prepare - no need to prepare history information on the default result as it is empty compound. More... | |
virtual void | PerformInternal1 (const BOPAlgo_PaveFiller &thePF) override |
Redefined method PerformInternal1 - makes all split parts, nullifies the result <myShape>, and index all parts. More... | |
void | IndexParts () |
Indexes the parts for quick access to the arguments. More... | |
void | FindParts (const TopTools_ListOfShape &theLSToTake, const TopTools_ListOfShape &theLSToAvoid, TopTools_ListOfShape &theParts) |
Looking for the parts defined by two lists. More... | |
Standard_Boolean | RemoveInternals (const TopTools_ListOfShape &theLS, TopTools_ListOfShape &theLSNew, const TopTools_MapOfShape &theMapKeepBnd=TopTools_MapOfShape()) |
Removes internal boundaries between cells with the same material. Returns TRUE if any internal boundaries have been removed. More... | |
Protected Member Functions inherited from BOPAlgo_Builder | |
virtual void | PerformInternal (const BOPAlgo_PaveFiller &thePF) |
Performs the building of the result. The method calls the PerfromInternal1() method surrounded by a try-catch block. More... | |
virtual void | BuildResult (const TopAbs_ShapeEnum theType) |
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. More... | |
virtual void | CheckData () override |
Checks the input data. More... | |
void | CheckFiller () |
Checks if the intersection algorithm has Errors/Warnings. More... | |
void | FillImagesVertices () |
Fills the images of vertices. More... | |
void | FillImagesEdges () |
Fills the images of edges. More... | |
void | FillImagesContainers (const TopAbs_ShapeEnum theType) |
Fills the images of containers (WIRES/SHELLS/COMPSOLID). More... | |
void | FillImagesContainer (const TopoDS_Shape &theS, const TopAbs_ShapeEnum theType) |
Builds the image of the given container using the splits of its sub-shapes. More... | |
void | FillImagesFaces () |
Fills the images of faces. The method consists of three steps: More... | |
virtual void | BuildSplitFaces () |
Builds the splits of faces using the information from the intersection stage stored in Data Structure. More... | |
void | FillSameDomainFaces () |
Looks for the same domain faces among the splits of the faces. Updates the map of images with SD faces. More... | |
void | FillInternalVertices () |
Classifies the alone vertices on faces relatively its splits and adds them as INTERNAL into the splits. More... | |
void | FillImagesSolids () |
Fills the images of solids. The method consists of four steps: More... | |
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. More... | |
virtual void | FillIn3DParts (TopTools_DataMapOfShapeListOfShape &theInParts, TopTools_DataMapOfShapeShape &theDraftSolids, const Handle< NCollection_BaseAllocator > &theAllocator) |
Finds faces located inside each solid. More... | |
void | BuildSplitSolids (TopTools_DataMapOfShapeListOfShape &theInParts, TopTools_DataMapOfShapeShape &theDraftSolids, const Handle< NCollection_BaseAllocator > &theAllocator) |
Builds the splits of the solids using their draft versions and faces located inside. More... | |
void | FillInternalShapes () |
Classifies the vertices and edges from the arguments relatively splits of solids and makes them INTERNAL for solids. More... | |
void | FillImagesCompounds () |
Fills the images of compounds. More... | |
void | FillImagesCompound (const TopoDS_Shape &theS, TopTools_MapOfShape &theMF) |
Builds the image of the given compound. More... | |
virtual void | PostTreat () |
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. More... | |
virtual void | PrepareHistory () override |
Prepare information for history support. More... | |
Protected Member Functions inherited from BOPAlgo_BuilderShape | |
BOPAlgo_BuilderShape () | |
virtual | ~BOPAlgo_BuilderShape () |
BOPAlgo_BuilderShape (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 | 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 | |
TopoDS_Shape | myAllParts |
All split parts of the arguments. More... | |
TopTools_IndexedDataMapOfShapeListOfShape | myIndex |
Connection map from all splits parts to the argument shapes from which they were created. More... | |
TopTools_DataMapOfIntegerListOfShape | myMaterials |
Map of assigned materials (material -> list of shape) More... | |
TopTools_DataMapOfShapeInteger | myShapeMaterial |
Map of assigned materials (shape -> material) More... | |
TopTools_DataMapOfShapeShape | myMapModified |
Local modification map to track unification of the splits. More... | |
Protected Attributes inherited from BOPAlgo_Builder | |
TopTools_ListOfShape | myArguments |
Arguments of the operation. More... | |
TopTools_MapOfShape | myMapFence |
Fence map providing the uniqueness of the shapes in the list of arguments. More... | |
BOPAlgo_PPaveFiller | myPaveFiller |
Pave Filler - algorithm for sub-shapes intersection. More... | |
BOPDS_PDS | myDS |
Data Structure - holder of intersection information. More... | |
Handle< IntTools_Context > | myContext |
Context - tool for cashing heavy algorithms such as Projectors and Classifiers. More... | |
Standard_Integer | myEntryPoint |
EntryPoint - controls the deletion of the PaveFiller, which could live longer than the Builder. More... | |
TopTools_DataMapOfShapeListOfShape | myImages |
Images - map of Images of the sub-shapes of arguments. More... | |
TopTools_DataMapOfShapeShape | myShapesSD |
ShapesSD - map of SD Shapes. More... | |
TopTools_DataMapOfShapeListOfShape | myOrigins |
Origins - map of Origins, back map of Images. More... | |
Standard_Boolean | myNonDestructive |
Safe processing option allows avoiding modification of the input shapes. More... | |
BOPAlgo_GlueEnum | myGlue |
Gluing option allows speeding up the intersection of the input shapes. More... | |
Standard_Boolean | myCheckInverted |
Check inverted option allows disabling the check of input solids on inverted status. More... | |
Protected Attributes inherited from BOPAlgo_BuilderShape | |
TopoDS_Shape | myShape |
TopTools_ListOfShape | myHistShapes |
TopTools_MapOfShape | myMapShape |
Standard_Boolean | myHasDeleted |
Standard_Boolean | myHasGenerated |
Standard_Boolean | myHasModified |
TopTools_IndexedDataMapOfShapeListOfShape | myImagesResult |
Standard_Boolean | myFlagHistory |
Protected Attributes inherited from BOPAlgo_Options | |
Handle< NCollection_BaseAllocator > | myAllocator |
Enables/Disables the usage of OBB. More... | |
Handle< Message_Report > | myReport |
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_ProgressIndicator > | myProgressIndicator |
Enables/Disables the usage of OBB. More... | |
Standard_Boolean | myUseOBB |
Enables/Disables the usage of OBB. 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... | |
The algorithm is based on the General Fuse algorithm (GFA). The result of GFA is all split parts of the Arguments.
The purpose of this algorithm is to provide the result with the content of:
In other words the algorithm should provide the possibility for the user to add or remove any part to (from) result and remove any internal boundaries between parts.
Requirements for the Data:
All the requirements of GFA for the DATA are inherited in this algorithm - The arguments could be of any type (dimension) and should be valid in terms of BRepCheck_Analyzer and BOPAlgo_ArgumentAnalyzer.
Results:
The result of the algorithm is compound containing selected parts of the basic types (VERTEX, EDGE, FACE or SOLID). The default result is empty compound. It is possible to add any split part to the result by using the methods AddToRessult() and AddAllToResult(). It is also possible to remove any part from the result by using methods RemoveFromResult() and RemoveAllFromResult(). The method RemoveAllFromResult() is also suitable for clearing the result.
To remove Internal boundaries it is necessary to set the same material to the parts between which the boundaries should be removed and call the method RemoveInternalBoundaries(). The material should not be equal to 0, as this is default material value. The boundaries between parts with this value will not be removed. One part cannot be added with the different materials. It is also possible to remove the boundaries during combining the result. To do this it is necessary to set the material for parts (not equal to 0) and set the flag bUpdate to TRUE. For the arguments of the types FACE or EDGE it is recommended to remove the boundaries in the end when the result is completely built. It will help to avoid self-intersections in the result.
Note, that if the result contains the parts with same material but of different dimension the boundaries between such parts will not be removed. Currently, the removal of the internal boundaries between multi-dimensional shapes is not supported.
It is possible to create typed Containers from the parts added to result by using method MakeContainers(). The type of the containers will depend on the type of the arguments: WIRES for EEDGE, SHELLS for FACES and COMPSOLIDS for SOLIDS. The result will be compound containing containers. Adding of the parts to such result will not update containers. The result compound will contain the containers and new added parts (of basic type). Removing of the parts from such result may affect some containers if the parts that should be removed is in container. In this case this container will be rebuilt without that part.
History:
The algorithm supports history information for basic types of the shapes - VERTEX, EDGE, FACE. This information available through the methods IsDeleted() and Modified().
In DRAW Test Harness it is available through the same commands as for Boolean Operations (bmodified, bgenerated and bisdeleted).
The algorithm can return the following Error Statuses:
The algorithm can set the following Warning Statuses:
The Warning status can be checked with HasWarnings() method or printed with the DumpWarnings() method. If warnings are recorded, the result may be not as expected.
Examples:
BOPAlgo_CellsBuilder::BOPAlgo_CellsBuilder | ( | ) |
BOPAlgo_CellsBuilder::BOPAlgo_CellsBuilder | ( | const Handle< NCollection_BaseAllocator > & | theAllocator | ) |
|
virtual |
void BOPAlgo_CellsBuilder::AddAllToResult | ( | const Standard_Integer | theMaterial = 0 , |
const Standard_Boolean | theUpdate = Standard_False |
||
) |
Add all split parts to result.
<theMaterial> defines the removal of internal boundaries;
<theUpdate> parameter defines whether to remove boundaries now or not.
void BOPAlgo_CellsBuilder::AddToResult | ( | const TopTools_ListOfShape & | theLSToTake, |
const TopTools_ListOfShape & | theLSToAvoid, | ||
const Standard_Integer | theMaterial = 0 , |
||
const Standard_Boolean | theUpdate = Standard_False |
||
) |
Adding the parts to result.
The parts are defined by two lists of shapes:
<theLSToTake> defines the arguments which parts should be taken into result;
<theLSToAvoid> defines the arguments which parts should not be taken into result;
To be taken into result the part must be IN for all shapes from the list <theLSToTake> and must be OUT of all shapes from the list <theLSToAvoid>.
To remove internal boundaries between any cells in the result <theMaterial> variable should be used. The boundaries between cells with the same material will be removed. Default value is 0.
Thus, to remove any boundary the value of this variable should not be equal to 0.
<theUpdate> parameter defines whether to remove boundaries now or not.
|
overridevirtual |
Redefined method Clear - clears the contents.
Reimplemented from BOPAlgo_Builder.
|
protected |
Looking for the parts defined by two lists.
const TopoDS_Shape& BOPAlgo_CellsBuilder::GetAllParts | ( | ) | const |
Get all split parts.
|
protected |
Indexes the parts for quick access to the arguments.
|
overrideprotectedvirtual |
Prepare information for history support taking into account local modification map of unified elements - myMapModified.
Reimplemented from BOPAlgo_Builder.
void BOPAlgo_CellsBuilder::MakeContainers | ( | ) |
Makes the Containers of proper type from the parts added to result.
|
overrideprotectedvirtual |
Redefined method PerformInternal1 - makes all split parts, nullifies the result <myShape>, and index all parts.
Reimplemented from BOPAlgo_Builder.
|
overrideprotectedvirtual |
Redefined method Prepare - no need to prepare history information on the default result as it is empty compound.
Reimplemented from BOPAlgo_Builder.
void BOPAlgo_CellsBuilder::RemoveAllFromResult | ( | ) |
Remove all parts from result.
void BOPAlgo_CellsBuilder::RemoveFromResult | ( | const TopTools_ListOfShape & | theLSToTake, |
const TopTools_ListOfShape & | theLSToAvoid | ||
) |
Removing the parts from result.
The parts are defined by two lists of shapes:
<theLSToTake> defines the arguments which parts should be removed from result;
<theLSToAvoid> defines the arguments which parts should not be removed from result.
To be removed from the result the part must be IN for all shapes from the list <theLSToTake> and must be OUT of all shapes from the list <theLSToAvoid>.
void BOPAlgo_CellsBuilder::RemoveInternalBoundaries | ( | ) |
Removes internal boundaries between cells with the same material.
If the result contains the cells with same material but of different dimension the removal of internal boundaries between these cells will not be performed.
In case of some errors during the removal the method will set the appropriate warning status - use GetReport() to access them.
|
protected |
Removes internal boundaries between cells with the same material.
Returns TRUE if any internal boundaries have been removed.
|
protected |
All split parts of the arguments.
|
protected |
Connection map from all splits parts to the argument shapes from which they were created.
|
protected |
Local modification map to track unification of the splits.
|
protected |
Map of assigned materials (material -> list of shape)
|
protected |
Map of assigned materials (shape -> material)