0026488: The class ShapeUpgrade_UnifySameDomain is not documented.
authorisn <isn@opencascade.com>
Fri, 7 Aug 2015 16:04:44 +0000 (19:04 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 10 Sep 2015 12:05:22 +0000 (15:05 +0300)
dox/user_guides/shape_healing/shape_healing.md
src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx
src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.hxx

index 8b3ccea..e70aaf9 100644 (file)
@@ -1447,11 +1447,42 @@ Handle(Geom_Surface) newSurf  = ConvSurf.ConvertToPeriodic(Standard_False);
 Standard_Real maxdist = ConvSurf.Gap(); 
 ~~~~~
 
+@subsubsection occt_shg_4_4_9 Unify Same Domain
+
+*ShapeUpgrade_UnifySameDomain* tool allows unifying all possible faces and edges of a shape, which lies on the same geometry. Faces/edges are considered as 'same-domain' if the neighboring faces/edges lie on coincident surfaces/curves.  Such faces/edges can be unified into one face/edge.
+This tool takes an input shape and returns a new one. All modifications of the initial shape are recorded during the operation.
+The following options are available:
+
+  * If the flag *UnifyFaces* is set to TRUE, *UnifySameDomain* tries to unify all possible faces;
+  * If the flag *UnifyEdges* is set to TRUE, *UnifySameDomain* tries to unify all possible edges;
+  * if the flag *ConcatBSplines* is set to TRUE, all neighboring edges, which lie on the BSpline or Bezier curves with C1 continuity on their common vertices will be merged into one common edge. 
+
+By default, *UnifyFaces* and *UnifyEdges* are set to TRUE; *ConcatBSplines* is set to FALSE.
+
+The common methods of this tool are as follows:
+  * Method *Build()* is used to unify.
+  * Method *Shape()* is used to get the resulting shape.
+  * Method *Generated()* is used to get a new common shape from the old shape. If a group of edges has been unified into one common edge then method *Generated()* called on any edge from this group will return the common edge. The same goes for the faces.
+
+The example of the usage is given below:
+~~~~~
+ // 'Sh' is the initial shape
+ ShapeUpgrade_UnifySameDomain USD(Sh, true, true, true); // UnifyFaces mode on, UnifyEdges mode on, ConcatBSplines mode on.
+ USD.Build();
+ //get the result
+ TopoDS_Shape Result = USD.Shape(); 
+ //Let Sh1 as a part of Sh
+ //get the new (probably unified) shape form the Sh1
+ TopoDS_Shape ResSh1 = USD.Generated(Sh1);
+~~~~~ 
+
 @section occt_shg_5_ Auxiliary tools for repairing, analysis and upgrading
 
 @subsection occt_shg_5_1 Tool for rebuilding shapes
 
-  Class *ShapeBuild_ReShape* rebuilds a shape by making pre-defined substitutions on some of its components. During the first phase, it records requests to replace or remove some individual shapes. For each shape, the last given request is recorded. Requests may be applied as *Oriented* (i.e. only to an item with the same orientation) or not (the orientation of the replacing shape corresponds to that of the original one). Then these requests may be applied to any shape, which may contain one or more of these individual shapes. 
+  Class *ShapeBuild_ReShape* rebuilds a shape by making predefined substitutions on some of its components. During the first phase, it records requests to replace or remove some individual shapes. For each shape, the last given request is recorded. Requests may be applied as *Oriented* (i.e. only to an item with the same orientation) or not (the orientation of the replacing shape corresponds to that of the original one). Then these requests may be applied to any shape, which may contain one or more of these individual shapes. 
 
 This tool has a flag for taking the location of shapes into account (for keeping the structure of assemblies) (*ModeConsiderLocation*). If this mode is equal to Standard_True, the shared shapes with locations will be kept. If this mode is equal to Standard_False, some different shapes will be produced from one shape with different locations after rebuilding. By default, this mode is equal to Standard_False. 
 
index 23d6603..60ef5a3 100644 (file)
@@ -526,6 +526,11 @@ static TopoDS_Edge GlueEdgesWithPCurves(const TopTools_SequenceOfShape& aChain,
   return ResEdge;
 }
 
+//=======================================================================
+//function : MergeSubSeq
+//purpose  : Merges a sequence of edges into one edge if possible
+//=======================================================================
+
 static Standard_Boolean MergeSubSeq(const TopTools_SequenceOfShape& aChain, TopoDS_Edge& OutEdge, double Tol, Standard_Boolean ConcatBSplines) 
 {
   ShapeAnalysis_Edge sae;
@@ -729,6 +734,11 @@ static Standard_Boolean MergeSubSeq(const TopTools_SequenceOfShape& aChain, Topo
   return Standard_False;
 }
 
+//=======================================================================
+//function : IsMergingPossible
+//purpose  : Checks if merging of two edges is possible
+//=======================================================================
+
 static Standard_Boolean IsMergingPossible(const TopoDS_Edge& edge1, const TopoDS_Edge& edge2, 
                                           double Tol, const TopTools_MapOfShape& DegEdgeVrt)
 {
@@ -776,6 +786,12 @@ static Standard_Boolean IsMergingPossible(const TopoDS_Edge& edge1, const TopoDS
   return Standard_True;
 }
 
+//=======================================================================
+//function : GenerateSubSeq
+//purpose  : Generates sub-sequences of edges from sequence of edges
+//Edges from each subsequences can be merged into the one edge  
+//=======================================================================
+
 static void GenerateSubSeq (const TopTools_SequenceOfShape& anInpEdgeSeq,
                             NCollection_Sequence<SubSequenceOfEdges>& SeqOfSubSeqOfEdges,
                             Standard_Boolean IsClosed, double Tol, const TopTools_MapOfShape& DegEdgeVrt )
@@ -892,6 +908,12 @@ static Standard_Boolean MergeEdges(const TopTools_SequenceOfShape& SeqEdges,
   return Standard_True;
 }
 
+//=======================================================================
+//function : MergeSeq
+//purpose  : Tries to unify the sequence of edges with the set of another edges 
+//which lies on the same geometry
+//=======================================================================
+
 static Standard_Boolean MergeSeq (const TopTools_SequenceOfShape& SeqEdges,
                                   const Standard_Real Tol,
                                   const Standard_Boolean ConcatBSplines,
@@ -923,6 +945,11 @@ static Standard_Boolean MergeSeq (const TopTools_SequenceOfShape& SeqEdges,
     return Standard_False;
 }
 
+//=======================================================================
+//function : CheckSharedVertices
+//purpose  : Checks the sequence of edges on the presence of shared vertex 
+//=======================================================================
+
 static void CheckSharedVertices(const TopTools_SequenceOfShape& theSeqEdges, 
                                 const TopTools_IndexedDataMapOfShapeListOfShape& theMapEdgesVertex,
                                 TopTools_MapOfShape& theShareVertMap)
index c9357eb..c578406 100644 (file)
@@ -31,7 +31,17 @@ class TopoDS_Shape;
 class ShapeUpgrade_UnifySameDomain;
 DEFINE_STANDARD_HANDLE(ShapeUpgrade_UnifySameDomain, MMgt_TShared)
 
-//! Unifies same domain faces and edges of specified shape
+//! 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.
+//! In this case these faces/edges can be unified into one face/edge.
+//! ShapeUpgrade_UnifySameDomain initialized by the 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
+//! All the modifications of initial shape are recorded during unifying.
+//! Method Generated() can be used to obtain the new (unified) shape from the old one 
 class ShapeUpgrade_UnifySameDomain : public MMgt_TShared
 {
 
@@ -43,6 +53,7 @@ public:
   
   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);
   
   //! Builds the resulting shape
@@ -51,6 +62,7 @@ public:
   //! Gives the resulting shape
   Standard_EXPORT const TopoDS_Shape& Shape() const;
   
+  //! Gets new common shape from the old one
   Standard_EXPORT TopoDS_Shape Generated (const TopoDS_Shape& aShape) const;
   
   //! this method makes if possible a common face from each