Open CASCADE Technology 7.8.2.dev
|
The RemoveFeatures algorithm is intended for reconstruction of the shape by removal of the unwanted parts from it. These parts can be holes, protrusions, spikes, fillets etc. The shape itself is not modified, the new shape is built in the result. More...
#include <BOPAlgo_RemoveFeatures.hxx>
Public Member Functions | |
Constructors | |
BOPAlgo_RemoveFeatures () | |
Empty constructor. | |
Setting input data for the algorithm | |
void | SetShape (const TopoDS_Shape &theShape) |
Sets the shape for processing. | |
const TopoDS_Shape & | InputShape () const |
Returns the input shape. | |
void | AddFaceToRemove (const TopoDS_Shape &theFace) |
Adds the face to remove from the input shape. | |
void | AddFacesToRemove (const TopTools_ListOfShape &theFaces) |
Adds the faces to remove from the input shape. | |
const TopTools_ListOfShape & | FacesToRemove () const |
Returns the list of faces which have been requested for removal from the input shape. | |
Performing the operation | |
virtual void | Perform (const Message_ProgressRange &theRange=Message_ProgressRange()) override |
Performs the operation. | |
Clearing the contents of the algorithm | |
virtual void | Clear () override |
Clears the contents of the algorithm from previous run, allowing reusing it for following removals. | |
Public Member Functions inherited from BOPAlgo_BuilderShape | |
const TopoDS_Shape & | Shape () const |
Returns the result of algorithm. | |
const TopTools_ListOfShape & | Modified (const TopoDS_Shape &theS) |
Returns the list of shapes Modified 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) |
Allows disabling the history collection. | |
Standard_Boolean | HasHistory () const |
Returns flag of history availability. | |
Public Member Functions inherited from BOPAlgo_Algo | |
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 | |
Protected methods performing the removal | |
virtual void | CheckData () override |
Checks the input data on validity for the algorithm: | |
void | PrepareFeatures (const Message_ProgressRange &theRange) |
Prepares the faces to remove: | |
void | RemoveFeatures (const Message_ProgressRange &theRange) |
Removes the features and fills the created gaps by extension of the adjacent faces. Processes each feature separately. | |
void | RemoveFeature (const TopoDS_Shape &theFeature, const TopTools_IndexedMapOfShape &theSolids, const TopTools_MapOfShape &theFeatureFacesMap, const Standard_Boolean theHasAdjacentFaces, const TopTools_IndexedDataMapOfShapeListOfShape &theAdjFaces, const Handle< BRepTools_History > &theAdjFacesHistory, const Standard_Boolean theSolidsHistoryNeeded, const Message_ProgressRange &theRange) |
Remove the single feature from the shape. | |
void | UpdateHistory (const Message_ProgressRange &theRange) |
Updates history with the removed features. | |
void | SimplifyResult (const Message_ProgressRange &theRange) |
Simplifies the result by removing extra edges and vertices created during removal of the features. | |
void | PostTreat () |
Post treatment - restore the type of the initial shape. | |
void | fillPIConstants (const Standard_Real theWhole, BOPAlgo_PISteps &theSteps) const override |
Filling steps for constant 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. | |
virtual void | fillPISteps (BOPAlgo_PISteps &theSteps) const |
Fills the values for the operations dependent on the inputs. Filled values may not be normalized to represent percentage of total running time. The values should just correlate to each other. E.g. if progress depends on the number of input shapes, the values may look like this: step1 = number_of_input_vertices; step2 = 2 * number_of_input_edges; step3 = 10 * number_of_input_faces. Normalization of these values will be done automatically in analyzeProgress() method. | |
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 | |
Fields | |
TopoDS_Shape | myInputShape |
Input shape. | |
TopTools_ListOfShape | myFacesToRemove |
Faces to remove. | |
TopTools_ListOfShape | myFeatures |
List of not connected features to remove (each feature is a compound of faces) | |
TopTools_IndexedMapOfShape | myInputsMap |
Map of all sub-shapes of the input shape. | |
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_History > | myHistory |
History tool. | |
Protected Attributes inherited from BOPAlgo_Options | |
Handle< NCollection_BaseAllocator > | myAllocator |
Enables/Disables the usage of OBB. | |
Handle< Message_Report > | myReport |
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. | |
The RemoveFeatures algorithm is intended for reconstruction of the shape by removal of the unwanted parts from it. These parts can be holes, protrusions, spikes, fillets etc. The shape itself is not modified, the new shape is built in the result.
Currently, only the shapes of type SOLID, COMPSOLID, and COMPOUND of Solids are supported. And only the FACEs can be removed from the shape.
On the input the algorithm accepts the shape itself and the faces which have to be removed. It does not matter how the faces are given. It could be the separate faces or the collections of faces. The faces should belong to the initial shape, and those that do not belong will be ignored. Before reconstructing the shape, the algorithm will sort all the given faces on the connected blocks (features).
The features will be removed from the shape one by one. It will allow removing all possible features even if there were problems with the removal of some of them.
The removed feature is filled by the extension of the faces adjacent to the feature. In general, the algorithm of removing of the single feature from the shape looks as follows:
If the removal is successful, the result is overwritten with the new shape and the next feature is treated. Otherwise, the warning will be given.
The algorithm has the following options:
and the options available from base class:
Please note that the other options of the base class are not supported here and will have no effect.
History support allows tracking modification of the input shape in terms of Modified, IsDeleted and Generated. The history is available through the methods of the history tool BRepTools_History, which can be accessed here through the method History(). By default, the history is collected, but it is possible to disable it using the method SetToFillHistory(false);
Error/Warning reporting system - allows obtaining the extended overview of the Errors/Warnings occurred during the operation. As soon as any error appears the algorithm stops working. The warnings allow continuing the job, informing the user that something went wrong. The algorithm returns the following errors/warnings:
Parallel processing mode - allows running the algorithm in parallel mode obtaining the result faster.
The algorithm has certain limitations:
Note that for successful removal of the feature, the extended faces adjacent to the feature should cover the feature completely, otherwise the solids will not be rebuild.
Here is the example of usage of the algorithm:
The algorithm preserves the type of the input shape in the result shape. Thus, if the input shape is a COMPSOLID, the resulting solids will also be put into a COMPSOLID.
When all possible features are removed, the shape is simplified by removing extra edges and vertices, created during operation, from the result shape.
|
inline |
Empty constructor.
|
inline |
Adds the faces to remove from the input shape.
theFaces | [in] The list of shapes to extract the faces for removal. |
|
inline |
Adds the face to remove from the input shape.
theFace | [in] The shape to extract the faces for removal. |
|
overrideprotectedvirtual |
Checks the input data on validity for the algorithm:
Reimplemented from BOPAlgo_Algo.
|
inlineoverridevirtual |
Clears the contents of the algorithm from previous run, allowing reusing it for following removals.
Reimplemented from BOPAlgo_BuilderShape.
|
inline |
Returns the list of faces which have been requested for removal from the input shape.
|
overrideprotectedvirtual |
Filling steps for constant operations.
Reimplemented from BOPAlgo_Algo.
|
inline |
Returns the input shape.
|
overridevirtual |
Performs the operation.
Implements BOPAlgo_Algo.
|
protected |
Post treatment - restore the type of the initial shape.
|
protected |
Prepares the faces to remove:
|
protected |
Remove the single feature from the shape.
theFeature | [in] The feature to remove; |
theSolids | [in] The solids to be reconstructed after feature removal; |
theFeatureFacesMap | [in] The map of feature faces; |
theHasAdjacentFaces | [in] Shows whether the adjacent faces have been found for the feature or not; |
theAdjFaces | [in] The reconstructed adjacent faces covering the feature; |
theAdjFacesHistory | [in] The history of the adjacent faces reconstruction; |
theSolidsHistoryNeeded | [in] Defines whether the history of solids modifications should be tracked or not. |
|
protected |
Removes the features and fills the created gaps by extension of the adjacent faces. Processes each feature separately.
|
inline |
Sets the shape for processing.
theShape | [in] The shape to remove the faces from. It should either be the SOLID, COMPSOLID or COMPOUND of Solids. |
|
protected |
Simplifies the result by removing extra edges and vertices created during removal of the features.
|
protected |
Updates history with the removed features.
|
protected |
Faces to remove.
|
protected |
List of not connected features to remove (each feature is a compound of faces)
|
protected |
Input shape.
|
protected |
Map of all sub-shapes of the input shape.