Salome HOME
PAL9787
[modules/smesh.git] / src / SMDS / SMDS_VolumeTool.cxx
index dd98851eb8f84f9239f18fd5a1e6bded4ec87b69..fe3c56adc05b583ad86211243b1c73d0c81cdc42 100644 (file)
@@ -536,6 +536,15 @@ bool SMDS_VolumeTool::GetFaceNormal (int faceIndex, double & X, double & Y, doub
   XYZ aVec13( p3 - p1 );
   XYZ cross = aVec12.Crossed( aVec13 );
 
+  if ( myFaceNbNodes == 4 ) {
+    XYZ p4 ( myFaceNodes[3] );
+    XYZ aVec14( p4 - p1 );
+    XYZ cross2 = aVec13.Crossed( aVec14 );
+    cross.x += cross2.x;
+    cross.y += cross2.y;
+    cross.z += cross2.z;    
+  }
+
   double size = cross.Magnitude();
   if ( size <= DBL_MIN )
     return false;
@@ -952,8 +961,9 @@ bool SMDS_VolumeTool::setFace( int faceIndex )
 
     // set face nodes
     myFaceNodes = new const SMDS_MeshNode* [myFaceNbNodes + 1];
-    for ( int iNode = 0; iNode <= myFaceNbNodes; iNode++ )
+    for ( int iNode = 0; iNode < myFaceNbNodes; iNode++ )
       myFaceNodes[ iNode ] = myVolumeNodes[ myFaceNodeIndices[ iNode ]];
+    myFaceNodes[ myFaceNbNodes ] = myFaceNodes[ 0 ];
   }
 
   myCurFace = faceIndex;