EgtGeomKernel 1.9i3 :
- versione NGE portata a 1014 - modifiche per velocizzare il calcolo della grafica di un VolZmap se box.
This commit is contained in:
+52
-8
@@ -30,11 +30,9 @@ GEOOBJ_REGISTER( VOL_ZMAP, NGE_V_ZMP, VolZmap) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
VolZmap::VolZmap(void)
|
||||
: m_nStatus( TO_VERIFY), m_dStep( EPS_SMALL), m_nTempProp( 0), m_nVoxNumPerBlock( N_VOXBLOCK), m_Tool( true)
|
||||
: m_nStatus( TO_VERIFY), m_nMapNum( 0), m_nNumBlock( 0), m_nConnectedCompoCount( 0), m_dStep( 10.0),
|
||||
m_nVoxNumPerBlock( N_VOXBLOCK), m_nShape( GENERIC), m_nTempProp( 0), m_Tool( true)
|
||||
{
|
||||
m_nMapNum = 0 ;
|
||||
m_nNumBlock = 0 ;
|
||||
m_nConnectedCompoCount = 0 ;
|
||||
for ( int i = 0 ; i < N_MAPS ; ++ i) {
|
||||
m_nNx[i] = 0 ;
|
||||
m_nNy[i] = 0 ;
|
||||
@@ -56,6 +54,7 @@ VolZmap::Clear( void)
|
||||
{
|
||||
m_nStatus = TO_VERIFY ;
|
||||
m_nMapNum = 0 ;
|
||||
m_nShape = GENERIC ;
|
||||
m_nNumBlock = 0 ;
|
||||
m_nConnectedCompoCount = 0 ;
|
||||
m_MapFrame.Reset() ;
|
||||
@@ -68,9 +67,8 @@ VolZmap::Clear( void)
|
||||
m_Values[i].clear() ;
|
||||
}
|
||||
m_dStep = EPS_SMALL ;
|
||||
|
||||
m_nTempProp = 0 ;
|
||||
|
||||
m_Tool.Clear() ;
|
||||
// imposto ricalcolo della grafica
|
||||
m_OGrMgr.Reset() ;
|
||||
|
||||
@@ -111,6 +109,7 @@ VolZmap::CopyFrom( const VolZmap& vzmSrc)
|
||||
return true ;
|
||||
|
||||
m_nMapNum = vzmSrc.m_nMapNum ;
|
||||
m_nShape = vzmSrc.m_nShape ;
|
||||
m_nNumBlock = vzmSrc.m_nNumBlock ;
|
||||
m_nVoxNumPerBlock = vzmSrc.m_nVoxNumPerBlock ;
|
||||
m_nFracLin[0] = vzmSrc.m_nFracLin[0] ;
|
||||
@@ -181,6 +180,13 @@ VolZmap::Dump( string& sOut, bool bMM, const char* szNewLine) const
|
||||
{
|
||||
// tipo
|
||||
sOut += "Type=" + string( m_nMapNum == 1 ? "dexel" : "tridexel") + szNewLine ;
|
||||
// forma
|
||||
switch ( m_nShape) {
|
||||
default : sOut += "Shape=generic" ; break ;
|
||||
case BOX : sOut += "Shape=box" ; break ;
|
||||
case EXTRUSION : sOut += "Shape=extrusion" ; break ;
|
||||
}
|
||||
sOut += szNewLine ;
|
||||
// passo
|
||||
sOut += "Step=" + ToString( GetInUiUnits( m_dStep, bMM), 3) + szNewLine ;
|
||||
// dimensioni
|
||||
@@ -230,6 +236,9 @@ VolZmap::Save( NgeWriter& ngeOut) const
|
||||
// passo di campionamento (distanza tra spilloni)
|
||||
if ( ! ngeOut.WriteDouble( m_dStep, ";", true))
|
||||
return false ;
|
||||
// forma
|
||||
if ( ! ngeOut.WriteInt( m_nShape, ";", true))
|
||||
return false ;
|
||||
// sistema di riferimento
|
||||
if ( ! ngeOut.WriteFrame( m_MapFrame, ";", true))
|
||||
return false ;
|
||||
@@ -301,12 +310,17 @@ VolZmap::Load( NgeReader& ngeIn)
|
||||
if ( ! ngeIn.ReadInt( m_nFracLin[i], ",", false))
|
||||
return false ;
|
||||
}
|
||||
// numero di componenti connesse
|
||||
if ( ! ngeIn.ReadInt( m_nConnectedCompoCount, ",", false))
|
||||
// numero di componenti connesse
|
||||
if ( ! ngeIn.ReadInt( m_nConnectedCompoCount, ",", false))
|
||||
return false ;
|
||||
// passo di campionamento (distanza tra spilloni)
|
||||
if ( ! ngeIn.ReadDouble( m_dStep, ";", true))
|
||||
return false ;
|
||||
// da versione 1014 : aggiunto flag Shape
|
||||
if ( ngeIn.GetFileVersion() >= NGE_VER_1014) {
|
||||
if ( ! ngeIn.ReadInt( m_nShape, ";", true))
|
||||
return false ;
|
||||
}
|
||||
// sistema di riferimento
|
||||
if ( ! ngeIn.ReadFrame( m_MapFrame, ";", true))
|
||||
return false ;
|
||||
@@ -1102,6 +1116,9 @@ VolZmap::ClonePart( int nPart) const
|
||||
Point3d ptNewO = m_MapFrame.Orig() + Vector3d( dNewOx, dNewOy, dNewOz) ;
|
||||
pVolume->m_MapFrame.Set( ptNewO, X_AX, Y_AX, Z_AX) ;
|
||||
|
||||
// Determino la forma
|
||||
pVolume->m_nShape = ( pVolume->IsBox() ? BOX : GENERIC) ;
|
||||
|
||||
// Setto lo stato del nuovo Solido
|
||||
pVolume->m_nStatus = m_nStatus ;
|
||||
|
||||
@@ -1310,6 +1327,33 @@ VolZmap::SetToModifyDexelBlocks( int nGrid, int nDex, int nInt)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
VolZmap::IsBox( void)
|
||||
{
|
||||
for ( int nMap = 0 ; nMap < 3 ; ++ nMap) {
|
||||
double dMinZ = m_dMaxZ[nMap] ;
|
||||
double dMaxZ = m_dMinZ[nMap] ;
|
||||
for ( int n = 0 ; n < int( m_nDim[nMap]) ; ++ n) {
|
||||
int nSize = int( m_Values[nMap][n].size()) ;
|
||||
if ( nSize > 1)
|
||||
return false ;
|
||||
else if ( nSize > 0) {
|
||||
if ( dMinZ > dMaxZ) {
|
||||
dMinZ = m_Values[nMap][n][0].dMin ;
|
||||
dMaxZ = m_Values[nMap][n][0].dMax ;
|
||||
}
|
||||
else {
|
||||
if ( abs( m_Values[nMap][n][0].dMin - dMinZ) > EPS_SMALL ||
|
||||
abs( m_Values[nMap][n][0].dMax - dMaxZ) > EPS_SMALL)
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
VolZmap::SetTolerances( double dLinTol, double dAngTolDeg)
|
||||
|
||||
Reference in New Issue
Block a user