The class is a General Fuse algorithm - base algorithm for the algorithms in the Boolean Component. Its main purpose is to build the split parts of the argument shapes from which the result of the operations is combined.
The result of the General Fuse algorithm itself is a compound containing all split parts of the arguments.
More...
|
| BOPAlgo_Builder () |
| Empty constructor.
|
|
virtual | ~BOPAlgo_Builder () |
|
| BOPAlgo_Builder (const Handle< NCollection_BaseAllocator > &theAllocator) |
|
virtual void | Clear () override |
| Clears the content of the algorithm.
|
|
BOPAlgo_PPaveFiller | PPaveFiller () |
| Returns the PaveFiller, algorithm for sub-shapes intersection.
|
|
BOPDS_PDS | PDS () |
| Returns the Data Structure, holder of intersection information.
|
|
Handle< IntTools_Context > | Context () const |
| Returns the Context, tool for cashing heavy algorithms.
|
|
|
Adds the argument to the operation.
|
virtual void | AddArgument (const TopoDS_Shape &theShape) |
| Sets the list of arguments for the operation.
|
|
virtual void | SetArguments (const TopTools_ListOfShape &theLS) |
| Sets the list of arguments for the operation.
|
|
const TopTools_ListOfShape & | Arguments () const |
| Returns the list of arguments.
|
|
|
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.
|
void | SetNonDestructive (const Standard_Boolean 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.
|
|
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.
|
|
|
Performs the operation. The intersection will be performed also.
|
virtual void | Perform (const Message_ProgressRange &theRange=Message_ProgressRange()) override |
| Performs the operation with the prepared filler. The intersection will not be performed in this case.
|
|
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.
|
|
|
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.
The result is built basing on the result of Builder operation (GF or any other). The only condition for the Builder is that the splits of faces should be created and classified relatively solids.
The method uses classification approach for choosing the faces which will participate in building the result shape:
- All faces from each group having the given state for the opposite group will be taken into result.
Such approach shows better results (in comparison with BOPAlgo_BuilderSolid approach) when working with open solids. However, the result may not be always correct on such data (at least, not as expected) as the correct classification of the faces relatively open solids is not always possible and may vary depending on the chosen classification point on the face.
History is not created for the solids in this method.
To avoid pollution of the report of Builder algorithm, there is a possibility to pass the different report to collect the alerts of the method only. But, if the new report is not given, the Builder report will be used. So, even if Builder passed without any errors, but some error has been stored into its report in this method, for the following calls the Builder report must be cleared.
The method may set the following errors:
- BOPAlgo_AlertBuilderFailed - Building operation has not been performed yet or failed;
- BOPAlgo_AlertBOPNotSet - invalid BOP type is given (COMMON/FUSE/CUT/CUT21 are supported);
- BOPAlgo_AlertTooFewArguments - arguments are not given;
- BOPAlgo_AlertUnknownShape - the shape is unknown for the operation.
Parameters: - Parameters
-
theObjects | - The group of Objects for BOP; |
theObjState | - State for objects faces to pass into result; |
theTools | - The group of Tools for BOP; |
theToolsState | - State for tools faces to pass into result; |
theReport | - The alternative report to avoid pollution of the main one. |
|
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 of Boolean operation of given type basing on the result of Builder operation (GF or any other).
|
|
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).
|
|
|
Returns the map of images.
|
const TopTools_DataMapOfShapeListOfShape & | Images () const |
| Returns the map of origins.
|
|
const TopTools_DataMapOfShapeListOfShape & | Origins () const |
| Returns the map of origins.
|
|
const TopTools_DataMapOfShapeShape & | ShapesSD () const |
| Returns the map of Same Domain (SD) shapes - coinciding shapes from different arguments.
|
|
const TopoDS_Shape & | Shape () const |
|
const TopTools_ListOfShape & | Modified (const TopoDS_Shape &theS) |
| Returns the list of shapes Generated from the shape theS.
|
|
const TopTools_ListOfShape & | Generated (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_History > | History () |
| History Tool.
|
|
void | SetToFillHistory (const Standard_Boolean theHistFlag) |
| Returns flag of history availability.
|
|
Standard_Boolean | HasHistory () const |
| Returns flag of history availability.
|
|
| 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.
|
|
|
|
Prepare information for history support.
|
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 TopTools_ListOfShape * | 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 TopTools_ListOfShape & | 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.
|
|
|
Performs the building of the result. The method calls the PerformInternal1() method surrounded by a try-catch block.
|
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.
|
|
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.
|
|
|
|
virtual void | CheckData () override |
| Checks if the intersection algorithm has Errors/Warnings.
|
|
void | CheckFiller () |
| Checks if the intersection algorithm has Errors/Warnings.
|
|
virtual void | Prepare () |
| Prepares the result shape by making it empty compound.
|
|
|
Fills the images of vertices.
|
void | FillImagesVertices (const Message_ProgressRange &theRange) |
|
|
Fills the images of edges.
|
void | FillImagesEdges (const Message_ProgressRange &theRange) |
|
|
Fills the images of containers (WIRES/SHELLS/COMPSOLID).
|
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.
|
|
|
Fills the images of faces. The method consists of three steps:
- Build the splits of faces;
- Find SD faces;
- Add internal vertices (if any) to faces.
|
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.
|
|
|
Fills the images of solids. The method consists of four steps:
- Build the draft solid - just rebuild the solid using the splits of faces;
- Find faces from other arguments located inside the solids;
- Build splits of solid using the inside faces;
- Fill internal shapes for the splits (Wires and vertices).
|
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, TopTools_ListOfShape &theLIF) |
| Builds the draft solid by rebuilding the shells of the solid with the splits of faces.
|
|
virtual void | FillIn3DParts (TopTools_DataMapOfShapeShape &theDraftSolids, const Message_ProgressRange &theRange) |
| Finds faces located inside each solid.
|
|
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.
|
|
|
Fills the images of compounds.
|
void | FillImagesCompounds (const Message_ProgressRange &theRange) |
| Builds the image of the given compound.
|
|
void | FillImagesCompound (const TopoDS_Shape &theS, TopTools_MapOfShape &theMF) |
| Builds the image of the given compound.
|
|
|
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.
|
virtual void | PostTreat (const Message_ProgressRange &theRange) |
|
| BOPAlgo_BuilderShape () |
| Constructor with allocator.
|
|
| BOPAlgo_BuilderShape (const Handle< NCollection_BaseAllocator > &theAllocator) |
| Constructor with allocator.
|
|
| 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 |
| Fills the values for constant operations - the operations having constant relative running time.
|
|
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.
|
|
The class is a General Fuse algorithm - base algorithm for the algorithms in the Boolean Component. Its main purpose is to build the split parts of the argument shapes from which the result of the operations is combined.
The result of the General Fuse algorithm itself is a compound containing all split parts of the arguments.
Additionally to the options of the base classes, the algorithm has the following options:
- Safe processing mode - allows to avoid modification of the input shapes during the operation (by default it is off);
- Gluing options - allows to speed up the calculation of the intersections on the special cases, in which some sub-shapes are coinciding.
- Disabling the check for inverted solids - Disables/Enables the check of the input solids for inverted status (holes in the space). The default value is TRUE, i.e. the check is performed. Setting this flag to FALSE for inverted solids, most likely will lead to incorrect results.
The algorithm returns the following warnings:
- BOPAlgo_AlertUnableToOrientTheShape - in case the check on the orientation of the split shape to match the orientation of the original shape has failed.
The algorithm returns the following Error statuses:
- BOPAlgo_AlertTooFewArguments - in case there are no enough arguments to perform the operation;
- BOPAlgo_AlertNoFiller - in case the intersection tool has not been created;
- BOPAlgo_AlertIntersectionFailed - in case the intersection of the arguments has failed;
- BOPAlgo_AlertBuilderFailed - in case building splits of arguments has failed with some unexpected error.