Salome HOME
IPAL21363 Compute hangs up on Hypothesis Distribution of Layers.
authordmv <dmv@opencascade.com>
Mon, 12 Oct 2009 13:16:41 +0000 (13:16 +0000)
committerdmv <dmv@opencascade.com>
Mon, 12 Oct 2009 13:16:41 +0000 (13:16 +0000)
src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx

index 303d68ab049ba0bc0246ecf0e237bdf8731fa27f..fdb026293d54ea0d58b250f3d6f789d1b8ae8f00 100644 (file)
@@ -221,20 +221,23 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh,
     bool ok = _gen->Compute( aMesh, CircEdge, false, MeshDim_1D );
     if( !ok ) return false;
     std::map< double, const SMDS_MeshNode* > theNodes;
     bool ok = _gen->Compute( aMesh, CircEdge, false, MeshDim_1D );
     if( !ok ) return false;
     std::map< double, const SMDS_MeshNode* > theNodes;
-    GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes);
+    ok = GetSortedNodesOnEdge(aMesh.GetMeshDS(),CircEdge,true,theNodes);
+    if( !ok ) return false;
 
     CNodes.clear();
     std::map< double, const SMDS_MeshNode* >::iterator itn = theNodes.begin();
     const SMDS_MeshNode* NF = (*itn).second;
     CNodes.push_back( (*itn).second );
     double fang = (*itn).first;
 
     CNodes.clear();
     std::map< double, const SMDS_MeshNode* >::iterator itn = theNodes.begin();
     const SMDS_MeshNode* NF = (*itn).second;
     CNodes.push_back( (*itn).second );
     double fang = (*itn).first;
-    itn++;
-    for(; itn != theNodes.end(); itn++ ) {
-      CNodes.push_back( (*itn).second );
-      double ang = (*itn).first - fang;
-      if( ang>PI ) ang = ang - 2*PI;
-      if( ang<-PI ) ang = ang + 2*PI;
-      Angles.Append( ang );
+    if ( itn != theNodes.end() ) {
+      itn++;
+      for(; itn != theNodes.end(); itn++ ) {
+        CNodes.push_back( (*itn).second );
+        double ang = (*itn).first - fang;
+        if( ang>PI ) ang = ang - 2*PI;
+        if( ang<-PI ) ang = ang + 2*PI;
+        Angles.Append( ang ); 
+      }
     }
     P1 = gp_Pnt( NF->X(), NF->Y(), NF->Z() );
     P0 = aCirc->Location();
     }
     P1 = gp_Pnt( NF->X(), NF->Y(), NF->Z() );
     P0 = aCirc->Location();