Salome HOME
Fix to take into account qudratic edges also.
[modules/smesh.git] / src / OBJECT / SMESH_Object.cxx
index 0fa50848ad5ae2847471d101681c7c57cbb4d442..b4fcbf6dbf6563622362420662bc3275ae7a4b34 100644 (file)
@@ -103,6 +103,7 @@ static inline vtkIdType getCellType( const SMDSAbs_ElementType theType,
       else if ( theNbNodes == 6 )   return VTK_QUADRATIC_TRIANGLE;
       else if ( theNbNodes == 8 )   return VTK_QUADRATIC_QUAD;
       else if ( theNbNodes == 9 )   return VTK_BIQUADRATIC_QUAD;
+      else if ( theNbNodes == 7 )   return VTK_BIQUADRATIC_TRIANGLE;
       else return VTK_EMPTY_CELL;
       
     case SMDSAbs_Volume:
@@ -522,7 +523,7 @@ bool SMESH_VisualObjDef::GetEdgeNodes( const int theElemId,
   if ( anElem == 0 )
     return false;
     
-  int nbNodes = anElem->NbNodes();
+  int nbNodes = anElem->NbCornerNodes();
 
   if ( theEdgeNum < 0 || theEdgeNum > 3 || (nbNodes != 3 && nbNodes != 4) || theEdgeNum > nbNodes )
     return false;
@@ -530,7 +531,7 @@ bool SMESH_VisualObjDef::GetEdgeNodes( const int theElemId,
   vector<int> anIds( nbNodes );
   SMDS_ElemIteratorPtr anIter = anElem->nodesIterator();
   int i = 0;
-  while( anIter->more() )
+  while( anIter->more() && i < nbNodes )
     anIds[ i++ ] = anIter->next()->GetID();
 
   if ( theEdgeNum < nbNodes - 1 )