From: eap Date: Wed, 8 Aug 2012 14:59:54 +0000 (+0000) Subject: 0021783: EDF 785 SMESH : Bad display of Groups of Volumes X-Git-Tag: V6_6_0a1~211 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=beabd65174d09267a4c31a8690bb343fdb8d69c0;p=modules%2Fsmesh.git 0021783: EDF 785 SMESH : Bad display of Groups of Volumes fix iteration on types of elements --- diff --git a/src/OBJECT/SMESH_Object.cxx b/src/OBJECT/SMESH_Object.cxx index e137a1c6d..b6c1c265c 100644 --- a/src/OBJECT/SMESH_Object.cxx +++ b/src/OBJECT/SMESH_Object.cxx @@ -82,14 +82,14 @@ static int MYDEBUGWITHFILES = 0; // purpose : Get type of VTK cell //================================================================================= static inline vtkIdType getCellType( const SMDSAbs_ElementType theType, - const bool thePoly, - const int theNbNodes ) + const bool thePoly, + const int theNbNodes ) { switch( theType ) { case SMDSAbs_0DElement: return VTK_VERTEX; - case SMDSAbs_Ball: return VTK_POLY_VERTEX; + case SMDSAbs_Ball: return VTK_POLY_VERTEX; case SMDSAbs_Edge: if( theNbNodes == 2 ) return VTK_LINE; @@ -345,14 +345,15 @@ void SMESH_VisualObjDef::buildElemPrs() // Calculate cells size - static SMDSAbs_ElementType aTypes[ 5 ] = - { SMDSAbs_Ball, SMDSAbs_0DElement, SMDSAbs_Edge, SMDSAbs_Face, SMDSAbs_Volume }; + const int nbTypes = 5; + static SMDSAbs_ElementType aTypes[ nbTypes ] = + { SMDSAbs_Edge, SMDSAbs_Face, SMDSAbs_Volume, SMDSAbs_Ball, SMDSAbs_0DElement }; // get entity data map nbEnts; map anEnts; - for ( int i = 0; i <= 3; i++ ) + for ( int i = 0; i < nbTypes; i++ ) nbEnts[ aTypes[ i ] ] = GetEntities( aTypes[ i ], anEnts[ aTypes[ i ] ] ); // PAL16631: without swap, bad_alloc is not thrown but hung up and crash instead, @@ -362,8 +363,12 @@ void SMESH_VisualObjDef::buildElemPrs() vtkIdType aCellsSize = 2 * nbEnts[ SMDSAbs_0DElement ] + 3 * nbEnts[ SMDSAbs_Edge ]; aCellsSize += 2 * nbEnts[ SMDSAbs_Ball ]; - for ( int i = 2; i <= 3; i++ ) // iterate through faces and volumes + vtkIdType aNbCells = 0; + + for ( int i = 1; i <= 2; i++ ) // iterate through faces and volumes { + aNbCells += nbEnts[ aTypes[ i ]]; + if ( nbEnts[ aTypes[ i ] ] ) { const TEntityList& aList = anEnts[ aTypes[ i ] ]; @@ -388,11 +393,6 @@ void SMESH_VisualObjDef::buildElemPrs() } } } - - vtkIdType aNbCells = - nbEnts[ SMDSAbs_0DElement ] + nbEnts[ SMDSAbs_Ball ] + nbEnts[ SMDSAbs_Edge ] + - nbEnts[ SMDSAbs_Face ] + nbEnts[ SMDSAbs_Volume ]; - if ( MYDEBUG ) MESSAGE( "Update - aNbCells = "<