EgtGeomKernel :

- correzione alla creazione di un VolZmap da trimesh.
This commit is contained in:
Daniele Bariletti
2025-09-16 14:32:36 +02:00
parent 5930674d4a
commit 932e98d19c
+21 -7
View File
@@ -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<bool>> 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) ;