EgtExecutor :
- prime sistemazioni per offset superfici trimesh tramite Zmap - eliminate funzioni exe/lua CreateVolZmapFromSurfTmOffset e CreateVolZmapFromSurfTmThickeningOffset.
This commit is contained in:
@@ -188,120 +188,6 @@ ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDe
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int ExeCreateVolZmapFromSurfTmOffset( int nParentId, const INTVECTOR& vStmId, double dOffs, double dPrec, int nType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// definisco il vettore di puntatori esclusivi alle superfici TriMesh
|
||||
CISURFTMPVECTOR vStm ;
|
||||
// recupero le superfici
|
||||
for ( size_t i = 0 ; i < vStmId.size() ; ++ i) {
|
||||
int nStmId = vStmId[i] ;
|
||||
// recupero il riferimento della regione
|
||||
Frame3d frStm ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nStmId, frStm))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero la superficie trimesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nStmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// ne faccio una copia
|
||||
PtrOwner<ISurfTriMesh> pCopyStm( pStm->Clone()) ;
|
||||
if ( IsNull( pCopyStm))
|
||||
return false ;
|
||||
// eseguo la trasformazione (viene eseguita solo se i riferimenti sono diversi)
|
||||
pCopyStm->LocToLoc( frStm, frLoc) ;
|
||||
// lo assegno al vettore di superfici
|
||||
vStm.emplace_back( Release( pCopyStm)) ;
|
||||
}
|
||||
// creo lo Zmap nel riferimento intrinseco
|
||||
PtrOwner<IVolZmap> pVZM( CreateVolZmap()) ;
|
||||
bool bOk = ( ! IsNull( pVZM)) ;
|
||||
bOk = bOk && pVZM->CreateFromTriMeshOffset( vStm, dOffs, dPrec, nType) ;
|
||||
// dealloco le superfici
|
||||
for ( auto& pStm : vStm) {
|
||||
delete ( pStm) ;
|
||||
pStm = nullptr ;
|
||||
}
|
||||
// inserisco lo Zmap nel DB
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pVZM)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtVolZmapFromSurfTmOffset(" + IdToString( nParentId) + "," +
|
||||
ToString( vStmId) + "," +
|
||||
ToString( dOffs) + "," +
|
||||
ToString( dPrec) + "," ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int ExeCreateVolZmapFromSurfTmThickeningOffset( int nParentId, const INTVECTOR& vStmId, double dOffs, double dPrec, int nType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// definisco il vettore di puntatori esclusivi alle superfici TriMesh
|
||||
CISURFTMPVECTOR vStm ;
|
||||
// recupero le superfici
|
||||
for ( size_t i = 0 ; i < vStmId.size() ; ++ i) {
|
||||
int nStmId = vStmId[i] ;
|
||||
// recupero il riferimento della regione
|
||||
Frame3d frStm ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nStmId, frStm))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero la superficie trimesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nStmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// ne faccio una copia
|
||||
PtrOwner<ISurfTriMesh> pCopyStm( pStm->Clone()) ;
|
||||
if ( IsNull( pCopyStm))
|
||||
return false ;
|
||||
// eseguo la trasformazione (viene eseguita solo se i riferimenti sono diversi)
|
||||
pCopyStm->LocToLoc( frStm, frLoc) ;
|
||||
// lo assegno al vettore di superfici
|
||||
vStm.emplace_back( Release( pCopyStm)) ;
|
||||
}
|
||||
// creo lo Zmap nel riferimento intrinseco
|
||||
PtrOwner<IVolZmap> pVZM( CreateVolZmap()) ;
|
||||
bool bOk = ( ! IsNull( pVZM)) ;
|
||||
bOk = bOk && pVZM->CreateFromTriMeshThickeningOffset( vStm, dOffs, dPrec, nType) ;
|
||||
// dealloco le superfici
|
||||
for ( auto& pStm : vStm) {
|
||||
delete ( pStm) ;
|
||||
pStm = nullptr ;
|
||||
}
|
||||
// inserisco lo Zmap nel DB
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pVZM)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCreateVolZmapFromSurfTmThickeningOffset(" + IdToString( nParentId) + "," +
|
||||
ToString( vStmId) + "," +
|
||||
ToString( dOffs) + "," +
|
||||
ToString( dPrec) + "," ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeUpdateVolZmapByAddingSurfTm( int nVolZmapId, int nStmId)
|
||||
|
||||
Reference in New Issue
Block a user