diff --git a/VolZmapCreation.cpp b/VolZmapCreation.cpp index f1a7a80..07f6f16 100644 --- a/VolZmapCreation.cpp +++ b/VolZmapCreation.cpp @@ -788,6 +788,11 @@ VolZmap::SubtractMapPart( int nMap, int nInfI, int nSupI, int nInfJ, int nSupJ, bool VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex, double dExtraBox) { + +#if false + #define MULTITHREAD +#endif + // Se la superficie non รจ chiusa oppure orientata al contrario non ha senso continuare double dVol ; if ( ! Surf.IsClosed() || ! Surf.GetVolume( dVol) || dVol < 0) @@ -804,7 +809,7 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex // quindi espandiamo il bounding box per ovviare al problema. if ( dExtraBox > EPS_ZERO) SurfBBox.Expand( dExtraBox) ; - + // Determino i punti estremi del bounding box Point3d ptMapOrig, ptMapEnd ; SurfBBox.GetMinMax( ptMapOrig, ptMapEnd) ; @@ -870,6 +875,8 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex // Oggetto per calcolo massivo intersezioni IntersParLinesSurfTm intPLSTM( frMapFrame, Surf) ; +#ifdef MULTITHREAD + // Numero massimo di thread int nThreadMax = max( 1, int( thread::hardware_concurrency()) - 1) ; vector< future> vRes ; @@ -910,15 +917,22 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex } } } +#endif + +#ifndef MULTITHREAD + // debug ///// NON multiTHREAD + CreateMapPart( nG, 0, m_nNx[nG], 0, m_nNy[nG], vtLen, ptMapOrig, Surf, intPLSTM) ; + // debug +#endif } // Assegno il minimo e massimo valore di Z della mappa - m_dMinZ[0] = 0 ; - m_dMaxZ[0] = vtLen.z ; - m_dMinZ[1] = 0 ; - m_dMaxZ[1] = ( bTriDex ? vtLen.x : 0) ; - m_dMinZ[2] = 0 ; - m_dMaxZ[2] = ( bTriDex ? vtLen.y : 0) ; + m_dMinZ[0] = dExtraBox ; + m_dMaxZ[0] = vtLen.z - dExtraBox ; + m_dMinZ[1] = dExtraBox ; + m_dMaxZ[1] = ( bTriDex ? vtLen.x - dExtraBox : 0) ; + m_dMinZ[2] = dExtraBox ; + m_dMaxZ[2] = ( bTriDex ? vtLen.y - dExtraBox : 0) ; // Tipologia m_nShape = ( dExtraBox > EPS_ZERO && IsBox() ? BOX : GENERIC) ;