diff --git a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.hxx b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.hxx index ea2db40e2a..5511fa849b 100644 --- a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.hxx +++ b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.hxx @@ -1,4 +1,4 @@ -//-Copyright: Open CASCADE 2014 +// Copyright: Open CASCADE 2014 // Created on: 2012-06-09 // Created by: jgv@ROLEX // Copyright (c) 2012-2014 OPEN CASCADE SAS @@ -34,34 +34,58 @@ class TopoDS_Shape; class ShapeUpgrade_UnifySameDomain; DEFINE_STANDARD_HANDLE(ShapeUpgrade_UnifySameDomain, Standard_Transient) -//! This tool tries to unify faces and edges of the shape which lies on the same geometry. -//! Faces/edges considering as 'same-domain' if a group of neighbouring faces/edges lying on coincident surfaces/curves. +//! This tool tries to unify faces and edges of the shape which lie on the same geometry. +//! Faces/edges are considering as 'same-domain' if a group of neighbouring faces/edges +//! are lying on coincident surfaces/curves. //! In this case these faces/edges can be unified into one face/edge. -//! ShapeUpgrade_UnifySameDomain initialized by the shape and the next optional parameters: +//! ShapeUpgrade_UnifySameDomain is initialized by a shape and the next optional parameters: //! UnifyFaces - tries to unify all possible faces //! UnifyEdges - tries to unify all possible edges -//! ConcatBSplines - if this flag set to true then all neighbouring edges which lays -//! on the BSpline or Bezier curves with C1 continuity on their common vertices will be merged into one common edge -//! The output result of tool is an unified shape +//! ConcatBSplines - if this flag is set to true then all neighbouring edges, which lay +//! on BSpline or Bezier curves with C1 continuity on their common vertices, +//! will be merged into one common edge. +//! +//! The input shape can be of any type containing faces or edges - compsolid, solid, shell, +//! wire, compound of any kind of shapes. The algorithm preserves the structure of compsolids, +//! solids, shells and wires. E.g., if two shells have a common edge and the faces sharing +//! this edge lie on the same surface the algorithm will not unify these faces, otherwise +//! the structure of shells would be broken. However, if such faces belong to different +//! compounds of faces they will be unified. +//! +//! The output result of the tool is the unified shape. +//! //! All the modifications of initial shape are recorded during unifying. //! Methods History are intended to:
-//! - set a place holder for the history of the changing of the sub-shapes of +//! - set a place holder for the history of modifications of sub-shapes of //! the initial shape;
//! - get the collected history.
//! The algorithm provides a place holder for the history and collects the //! history by default. -//! To avoid collecting of the history the place holder should be set to the null handle. +//! To avoid collecting of the history the place holder should be set to null handle. class ShapeUpgrade_UnifySameDomain : public Standard_Transient { public: - //! empty constructor + //! Empty constructor Standard_EXPORT ShapeUpgrade_UnifySameDomain(); - Standard_EXPORT ShapeUpgrade_UnifySameDomain(const TopoDS_Shape& aShape, const Standard_Boolean UnifyEdges = Standard_True, const Standard_Boolean UnifyFaces = Standard_True, const Standard_Boolean ConcatBSplines = Standard_False); + //! Constructor defining input shape and necessary flags. + //! It does not perform unification. + Standard_EXPORT ShapeUpgrade_UnifySameDomain + (const TopoDS_Shape& aShape, + const Standard_Boolean UnifyEdges = Standard_True, + const Standard_Boolean UnifyFaces = Standard_True, + const Standard_Boolean ConcatBSplines = Standard_False); - //! Initializes with a shape - Standard_EXPORT void Initialize (const TopoDS_Shape& aShape, const Standard_Boolean UnifyEdges = Standard_True, const Standard_Boolean UnifyFaces = Standard_True, const Standard_Boolean ConcatBSplines = Standard_False); + //! Initializes with a shape and necessary flags. + //! It does not perform unification. + //! If you intend to nullify the History place holder do it after + //! initialization. + Standard_EXPORT void Initialize + (const TopoDS_Shape& aShape, + const Standard_Boolean UnifyEdges = Standard_True, + const Standard_Boolean UnifyFaces = Standard_True, + const Standard_Boolean ConcatBSplines = Standard_False); //! Sets the flag defining whether it is allowed to create //! internal edges inside merged faces in the case of non-manifold @@ -69,16 +93,16 @@ public: //! is forbidden. Default value is false. Standard_EXPORT void AllowInternalEdges (const Standard_Boolean theValue); - //! Sets the shape for avoid merging of the faces in given places. + //! Sets the shape for avoid merging of the faces/edges. //! This shape can be vertex or edge. - //! If shape is vertex it forbids merging of connected edges. - //! If shape is edge it forbids merging of connected faces. + //! If the shape is a vertex it forbids merging of connected edges. + //! If the shape is a edge it forbids merging of connected faces. + //! This method can be called several times to keep several shapes. Standard_EXPORT void KeepShape(const TopoDS_Shape& theShape); - //! Sets the map of shapes for avoid merging of the faces in given places - //! These shapes can be vertexes or edges. - //! If shape is vertex it forbids merging of connected edges. - //! If shape is edge it forbids merging of connected faces. + //! Sets the map of shapes for avoid merging of the faces/edges. + //! It allows passing a ready to use map instead of calling many times + //! the method KeepShape. Standard_EXPORT void KeepShapes(const TopTools_MapOfShape& theShapes); //! Sets the flag defining the behavior of the algorithm regarding @@ -87,19 +111,21 @@ public: //! modified during modification process. Default value is true. Standard_EXPORT void SetSafeInputMode(Standard_Boolean theValue); - //! Sets the linear tolerance. Default value is Precision::Confusion(). + //! Sets the linear tolerance. It plays the role of chord error when + //! taking decision about merging of shapes. Default value is Precision::Confusion(). void SetLinearTolerance(const Standard_Real theValue) { myLinTol = theValue; } - //! Sets the angular tolerance. Default value is Precision::Angular(). + //! Sets the angular tolerance. If two shapes form a connection angle greater than + //! this value they will not be merged. Default value is Precision::Angular(). void SetAngularTolerance(const Standard_Real theValue) { myAngTol = theValue; } - //! Builds the resulting shape + //! Performs unification and builds the resulting shape. Standard_EXPORT void Build(); //! Gives the resulting shape @@ -124,12 +150,12 @@ public: protected: - //! this method makes if possible a common face from each + //! This method makes if possible a common face from each //! group of faces lying on coincident surfaces Standard_EXPORT void UnifyFaces(); - //! this method makes if possible a common edge from each - //! group of edges connecting common couple of faces + //! This method makes if possible a common edge from each + //! group of smothly connected edges, which are common for the same couple of faces Standard_EXPORT void UnifyEdges(); void IntUnifyFaces(const TopoDS_Shape& theInpShape, @@ -155,10 +181,4 @@ private: Handle(BRepTools_History) myHistory; //!< The history. }; - - - - - - #endif // _ShapeUpgrade_UnifySameDomain_HeaderFile