Salome HOME
0020279: [CEA 334] control the "random" use when using mesh algorithms
authoreap <eap@opencascade.com>
Tue, 19 May 2009 15:19:52 +0000 (15:19 +0000)
committereap <eap@opencascade.com>
Tue, 19 May 2009 15:19:52 +0000 (15:19 +0000)
    fix IsQuadraticSubMesh() to work on mesh w/o shape

src/SMESH/SMESH_MesherHelper.cxx

index 35bfeef1a3246a03e8155175f7880ac976b175c0..dd0eabb69628afb81fffa2f6b9f20990da509f94 100644 (file)
@@ -27,7 +27,6 @@
 
 #include "SMDS_FacePosition.hxx" 
 #include "SMDS_EdgePosition.hxx"
-#include "SMESH_MeshEditor.hxx"
 
 #include <BRepAdaptor_Surface.hxx>
 #include <BRepTools.hxx>
@@ -80,6 +79,8 @@ bool SMESH_MesherHelper::IsQuadraticSubMesh(const TopoDS_Shape& aSh)
   TopAbs_ShapeEnum subType( aSh.ShapeType()==TopAbs_FACE ? TopAbs_EDGE : TopAbs_FACE );
   SMDSAbs_ElementType elemType( subType==TopAbs_FACE ? SMDSAbs_Face : SMDSAbs_Edge );
 
+  int nbOldLinks = myNLinkNodeMap.size();
+
   TopExp_Explorer exp( aSh, subType );
   for (; exp.More() && myCreateQuadratic; exp.Next()) {
     if ( SMESHDS_SubMesh * subMesh = meshDS->MeshElements( exp.Current() )) {
@@ -115,6 +116,9 @@ bool SMESH_MesherHelper::IsQuadraticSubMesh(const TopoDS_Shape& aSh)
     }
   }
 
+  if ( nbOldLinks == myNLinkNodeMap.size() )
+    myCreateQuadratic = false;
+
   if(!myCreateQuadratic) {
     myNLinkNodeMap.clear();
   }