diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 42bbfb4..8139089 100644 Binary files a/EgtGeomKernel.rc and b/EgtGeomKernel.rc differ diff --git a/VolZmap.cpp b/VolZmap.cpp index 5bf2b56..f31e17d 100644 --- a/VolZmap.cpp +++ b/VolZmap.cpp @@ -1188,8 +1188,8 @@ VolZmap::ClonePart( int nPart) const -- nMinIndJ[nMap] ; if ( nMaxIndJ[nMap] < int( m_nNy[nMap]) - 1) ++ nMaxIndJ[nMap] ; - pVolume->m_nNx[nMap] = nMaxIndI[nMap] - nMinIndI[nMap] + 1 ; - pVolume->m_nNy[nMap] = nMaxIndJ[nMap] - nMinIndJ[nMap] + 1 ; + pVolume->m_nNx[nMap] = max( 0, nMaxIndI[nMap] - nMinIndI[nMap] + 1) ; + pVolume->m_nNy[nMap] = max( 0, nMaxIndJ[nMap] - nMinIndJ[nMap] + 1) ; pVolume->m_nDim[nMap] = pVolume->m_nNx[nMap] * pVolume->m_nNy[nMap] ; pVolume->m_Values[nMap].resize( pVolume->m_nDim[nMap]) ; } diff --git a/VolZmapGraphics.cpp b/VolZmapGraphics.cpp index a379ed9..24c127f 100644 --- a/VolZmapGraphics.cpp +++ b/VolZmapGraphics.cpp @@ -2216,8 +2216,8 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const double dYMax = ( nDexMaxJ + 0.5) * m_dStep ; double dZMax = ( nDexMaxK + 0.5) * m_dStep ; // Determino colore dei triangoli - int nFaceInfGrade = m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMin ; - int nFaceSupGrade = m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMax ; + int nFaceInfGrade = ( ! m_Values[1].empty() ? m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMin : 0) ; + int nFaceSupGrade = ( ! m_Values[1].empty() ? m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMax : 0) ; // Piano di coordinata x inferiore: versore normale rivolto come X- if ( nBlockIJK[0] == 0) { Triangle3dEx trTria1, trTria2 ; @@ -2255,8 +2255,8 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const double dXMax = ( nDexMaxI + 0.5) * m_dStep ; double dZMax = ( nDexMaxK + 0.5) * m_dStep ; // Determino colore dei triangoli - int nFaceInfGrade = m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMin ; - int nFaceSupGrade = m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMax ; + int nFaceInfGrade = ( ! m_Values[2].empty() ? m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMin : 0) ; + int nFaceSupGrade = ( ! m_Values[2].empty() ? m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMax : 0) ; // Piano di coordinata y inferiore: versore normale rivolto come Y- if ( nBlockIJK[1] == 0) { Triangle3dEx trTria1, trTria2 ; @@ -4024,7 +4024,7 @@ VolZmap::GetFirstVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( nj = 0 ; nj < 2 ; ++ nj) { int nDex = nj * int( m_nNx[0]) + ni ; - if ( m_Values[0][nDex].size() > 0) { + if ( ! m_Values[0].empty() && m_Values[0][nDex].size() > 0) { bNotEmpty = true ; break ; } @@ -4037,7 +4037,7 @@ VolZmap::GetFirstVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( mj = 0 ; mj < 2 ; ++ mj) { int nDex = mj * int( m_nNx[1]) + mi ; - if ( m_Values[1][nDex].size() > 0) { + if ( ! m_Values[1].empty() && m_Values[1][nDex].size() > 0) { bNotEmpty = true ; break ; } @@ -4067,7 +4067,7 @@ VolZmap::GetLastVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( nj = int( m_nNy[0]) - 1 ; nj > int( m_nNy[0]) - 3 ; -- nj) { int nDex = nj * int( m_nNx[0]) + ni ; - if ( m_Values[0][nDex].size() > 0) { + if ( ! m_Values[0].empty() && m_Values[0][nDex].size() > 0) { bNotEmpty = true ; break ; } @@ -4080,7 +4080,7 @@ VolZmap::GetLastVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( mj = int( m_nNy[1]) - 1 ; mj > int( m_nNy[1]) - 3 ; -- mj) { int nDex = mj * int( m_nNx[1]) + mi ; - if ( m_Values[1][nDex].size() > 0) { + if ( ! m_Values[1].empty() && m_Values[1][nDex].size() > 0) { bNotEmpty = true ; break ; }