]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
0020832: EDF 1359 SMESH : Automatic meshing of boundary layers
authoreap <eap@opencascade.com>
Tue, 21 Dec 2010 17:39:47 +0000 (17:39 +0000)
committereap <eap@opencascade.com>
Tue, 21 Dec 2010 17:39:47 +0000 (17:39 +0000)
 Move IsClosedEdge() to SMESH_MesherHelper from StdMeshers_ProjectionUtils

src/SMESH/SMESH_MesherHelper.cxx
src/SMESH/SMESH_MesherHelper.hxx
src/StdMeshers/StdMeshers_Prism_3D.cxx
src/StdMeshers/StdMeshers_ProjectionUtils.cxx
src/StdMeshers/StdMeshers_ProjectionUtils.hxx

index 1694926eccce73a0e05adf4f0f824f8d66caa59a..e8b20501b2768784d9e53889a75deb4f6d3dbb51 100644 (file)
@@ -1618,6 +1618,22 @@ double SMESH_MesherHelper::MaxTolerance( const TopoDS_Shape& shape )
   return tol;
 }
 
+
+//================================================================================
+/*!
+ * \brief Check if the first and last vertices of an edge are the same
+ * \param anEdge - the edge to check
+ * \retval bool - true if same
+ */
+//================================================================================
+
+bool SMESH_MesherHelper::IsClosedEdge( const TopoDS_Edge& anEdge )
+{
+  if ( anEdge.Orientation() >= TopAbs_INTERNAL )
+    return IsClosedEdge( TopoDS::Edge( anEdge.Oriented( TopAbs_FORWARD )));
+  return TopExp::FirstVertex( anEdge ).IsSame( TopExp::LastVertex( anEdge ));
+}
+
 //=======================================================================
 //function : IsQuadraticMesh
 //purpose  : Check mesh without geometry for: if all elements on this shape are quadratic,
index c854a30fde511578c8e20ffff8da182b0ffc0869..ebdb34871c6720ad815f5933b600d693aafcd543 100644 (file)
@@ -143,6 +143,8 @@ public:
 
   static double MaxTolerance( const TopoDS_Shape& shape );
 
+  static bool IsClosedEdge( const TopoDS_Edge& anEdge );
+
 
 public:
   // ---------- PUBLIC INSTANCE METHODS ----------
index c7bf42004ed9a15dc3a9b87437b0875b257ffa7e..5b70cf641ea4804e4abd96de97c0866e13c1bcc7 100644 (file)
@@ -1721,7 +1721,7 @@ bool StdMeshers_PrismAsBlock::IsForwardEdge(SMESHDS_Mesh*           meshDS,
                                             const int               sideFaceID)
 {
   bool isForward = false;
-  if ( TAssocTool::IsClosedEdge( bottomEdge ))
+  if ( SMESH_MesherHelper::IsClosedEdge( bottomEdge ))
   {
     isForward = ( bottomEdge.Orientation() == TopAbs_FORWARD );
   }
index b4d4c71972f1ea14917319a8cd850fbff6a57b22..bddedb625f09839986b9f87efc83f212021f0b81 100644 (file)
@@ -936,7 +936,8 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
         return true; // done
       }
     }
-    if ( IsClosedEdge( edge1 ) && IsClosedEdge( edge2 ))
+    if ( SMESH_MesherHelper::IsClosedEdge( edge1 ) &&
+         SMESH_MesherHelper::IsClosedEdge( edge2 ))
     {
       // TODO: find out a proper orientation (is it possible?)
       InsertAssociation( edge1, edge2, theMap, bidirect); // insert with a proper orientation
@@ -1151,7 +1152,7 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
       edge.Nullify();
       TopoDS_Shape wire = OuterShape( TopoDS::Face( expF.Current() ), TopAbs_WIRE );
       for ( expE.Init( wire, TopAbs_EDGE ); edge.IsNull() && expE.More(); expE.Next() )
-        if ( !IsClosedEdge( TopoDS::Edge( expE.Current() )))
+        if ( !SMESH_MesherHelper::IsClosedEdge( TopoDS::Edge( expE.Current() )))
           edge = expE.Current();
       if ( !edge.IsNull() )
         break;
@@ -1159,7 +1160,7 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
   } else if (edge.ShapeType() != TopAbs_EDGE) { // no faces
     edge.Nullify();
     for ( expE.Init( theShape1, TopAbs_EDGE ); edge.IsNull() && expE.More(); expE.Next() )
-      if ( !IsClosedEdge( TopoDS::Edge( expE.Current() )))
+      if ( !SMESH_MesherHelper::IsClosedEdge( TopoDS::Edge( expE.Current() )))
         edge = expE.Current();
   }
   if ( edge.IsNull() || edge.ShapeType() != TopAbs_EDGE )
@@ -1691,7 +1692,7 @@ FindMatchingNodesOnFaces( const TopoDS_Face&     face1,
   if ( hasNodesOnEdge )
   {
     int nbNodeToGet = 1;
-    if ( IsClosedEdge( edge1 ) || IsClosedEdge( edge2 ) )
+    if ( helper1.IsClosedEdge( edge1 ) || helper2.IsClosedEdge( edge2 ) )
       nbNodeToGet = 2;
     for ( int is2 = 0; is2 < 2; ++is2 )
     {
@@ -1899,19 +1900,6 @@ FindMatchingNodesOnFaces( const TopoDS_Face&     face1,
   return true;
 }
 
-//================================================================================
-/*!
- * \brief Check if the first and last vertices of an edge are the same
- * \param anEdge - the edge to check
- * \retval bool - true if same
- */
-//================================================================================
-
-bool StdMeshers_ProjectionUtils::IsClosedEdge( const TopoDS_Edge& anEdge )
-{
-  return TopExp::FirstVertex( anEdge ).IsSame( TopExp::LastVertex( anEdge ));
-}
-
 //================================================================================
   /*!
    * \brief Return any subshape of a face belonging to the outer wire
index 6a657e55d6ba481e0e5e234db783c9047df3fcda..9f53caf243c1dedafd08bebf5136f5c73e349a7b 100644 (file)
@@ -158,13 +158,6 @@ class StdMeshers_ProjectionUtils
                                         SMESH_Mesh*            mesh2,
                                         const TShapeShapeMap & assocMap,
                                         TNodeNodeMap &         nodeIn2OutMap);
-  /*!
-   * \brief Check if the first and last vertices of an edge are the same
-    * \param anEdge - the edge to check
-    * \retval bool - true if same
-   */
-  static bool IsClosedEdge( const TopoDS_Edge& anEdge );
-
   /*!
    * \brief Return any subshape of a face belonging to the outer wire
     * \param face - the face