diff --git a/EXE_GdbCreateVol.cpp b/EXE_GdbCreateVol.cpp index 66bb808..87a43c2 100644 --- a/EXE_GdbCreateVol.cpp +++ b/EXE_GdbCreateVol.cpp @@ -187,3 +187,57 @@ ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDe // restituisco l'identificativo della nuova entità return nNewId ; } + +//------------------------------------------------------------------------------- +bool +ExeUpdateVolZmapByAddingSurfTm( int nVolZmapId, int nStmId) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL) + // recupero lo Zmap + IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nVolZmapId)) ; + bool bOk = ( pVZM != nullptr) ; + // recupero la trimesh + PtrOwner pStm( CloneSurfTriMesh( pGeomDB->GetGeoObj( nStmId))) ; + bOk = bOk && !IsNull( pStm) ; + // recupero il frame dello Zmap e della Trimesh + Frame3d frZmap, frStm ; + bOk = bOk && pGeomDB->GetGlobFrame( nVolZmapId, frZmap) && + pGeomDB->GetGlobFrame( nStmId, frStm) ; + // porto la Stm nel frame dello Zmap + bOk = bOk && pStm->LocToLoc( frStm, frZmap) ; + // aggiorno lo Zmap con la nuova superficie + bOk = bOk && pVZM->AddSurfTm( pStm) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtUpdateVolZmapByAddingSurfTm(" + ToString( nVolZmapId) + "," + + ToString( nStmId) + ")" + " -- bOk =" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} + +//------------------------------------------------------------------------------- +bool +ExeUniformVolZmap( int nVolZmapId, double dToler) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL) + // recupero lo Zmap + IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nVolZmapId)) ; + bool bOk = ( pVZM != nullptr) ; + // aggiorno lo Zmap + dToler = max( dToler, EPS_SMALL) ; + bOk = bOk && pVZM->MakeUniform( dToler) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtUniformZmap(" + ToString( nVolZmapId) + "," + + ToString( dToler) + ")" + " -- bOk =" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} diff --git a/LUA_GdbCreateVol.cpp b/LUA_GdbCreateVol.cpp index f5ec104..a9c2aef 100644 --- a/LUA_GdbCreateVol.cpp +++ b/LUA_GdbCreateVol.cpp @@ -140,6 +140,37 @@ LuaCreateVolZmapFromSurfTm( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaUpdateVolZmapByAddingSurfTm( lua_State* L) +{ + // 2 parametri : nVolZmapId, StmId, + int nVolZmapId ; + LuaCheckParam( L, 1, nVolZmapId) ; + int nStmId ; + LuaCheckParam( L, 2, nStmId) ; + LuaClearStack( L) ; + bool bOk = ExeUpdateVolZmapByAddingSurfTm( nVolZmapId, nStmId) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + +//------------------------------------------------------------------------------- +static int +LuaUniformVolZmap( lua_State* L) +{ + // 1 o 2 parametri : nVolZmapId [, dToler] + int nVolZmapId ; + LuaCheckParam( L, 1, nVolZmapId) ; + double dToler = EPS_SMALL ; + LuaGetParam( L, 2, dToler) ; + LuaClearStack( L) ; + bool bOk = ExeUniformVolZmap( nVolZmapId, dToler) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + + //------------------------------------------------------------------------------- bool LuaInstallGdbCreateVol( LuaMgr& luaMgr) @@ -149,5 +180,7 @@ LuaInstallGdbCreateVol( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapEmpty", LuaCreateVolZmapEmpty) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapByRegionExtrusion", LuaCreateVolZmapByRegionExtrusion) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapFromSurfTm", LuaCreateVolZmapFromSurfTm) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtUpdateVolZmapByAddingSurfTm", LuaUpdateVolZmapByAddingSurfTm ) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtUniformZmap", LuaUniformVolZmap) ; return bOk ; }