diff --git a/EXE_Scene.cpp b/EXE_Scene.cpp index 6593242..30f6e59 100644 --- a/EXE_Scene.cpp +++ b/EXE_Scene.cpp @@ -431,14 +431,40 @@ ExeGetShowCurveDirection( void) return pScene->GetShowCurveDirection() ; } +//----------------------------------------------------------------------------- +static bool +MyResetGroupObjGraphics( IGeomDB* pGDB, int nGroupId) +{ + int nEntId = pGDB->GetFirstInGroup( nGroupId) ; + while ( nEntId != GDB_ID_NULL) { + if ( pGDB->GetGdbType( nEntId) == GDB_TY_GROUP) { + MyResetGroupObjGraphics( pGDB, nEntId) ; + } + else { + IGeoObj* pGeoObj = pGDB->GetGeoObj( nEntId) ; + if ( pGeoObj != nullptr) + pGeoObj->SetObjGraphics( nullptr) ; + } + nEntId = pGDB->GetNext( nEntId) ; + } + return true ; +} + //----------------------------------------------------------------------------- bool ExeSetShowTriaAdv( bool bAdvanced, bool bRedraw) { IEGrScene* pScene = GetCurrScene() ; VERIFY_SCENE( pScene, false) - // imposto stato - pScene->SetShowTriaAdvanced( bAdvanced) ; + // se cambiato, imposto stato + if ( pScene->GetShowTriaAdvanced() != bAdvanced) { + // imposto il nuovo stato + pScene->SetShowTriaAdvanced( bAdvanced) ; + // forzo ricalcolo della grafica di tutti gli oggetti + IGeomDB* pGDB = pScene->GetGeomDB() ; + if ( pGDB != nullptr) + MyResetGroupObjGraphics( pGDB, GDB_ID_ROOT) ; + } if ( bRedraw) pScene->RedrawWindow() ; return TRUE ; diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 2207683..a8e6883 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ