From 6d619351e487ee6cf78bee245475ea651dd06215 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 26 Jun 2024 08:43:48 +0200 Subject: [PATCH] EgtExecutor 2.6f4 : - ora ExplodeSurfTriMesh gestisce anche le shell. --- EXE_GdbModifySurf.cpp | 27 +++++++++++++++++++++++++++ EgtExecutor.rc | Bin 18890 -> 18890 bytes 2 files changed, 27 insertions(+) diff --git a/EXE_GdbModifySurf.cpp b/EXE_GdbModifySurf.cpp index 41265a3..4e4d3cf 100644 --- a/EXE_GdbModifySurf.cpp +++ b/EXE_GdbModifySurf.cpp @@ -102,6 +102,33 @@ MyExplodeSurfTriMesh( int nId, int& nCount) // restituisco risultati return nFirstId ; } + // recupero il numero di gusci + int nShells = pStm->GetShellCount() ; + // se ci sono più gusci, separo questi + if ( nShells > 1) { + int nFirstId = GDB_ID_NULL ; + nCount = 0 ; + for ( int i = 0 ; i < nShells ; ++ i) { + ISurfTriMesh* pFac = pStm->CloneShell( i) ; + if ( pFac == nullptr) + continue ; + // inserisco la superficie nello stesso gruppo e nello stesso posto del GeomDB + int nNewId = pGeomDB->InsertGeoObj( GDB_ID_NULL, nId, GDB_BEFORE, pFac) ; + if ( nNewId == GDB_ID_NULL) + return GDB_ID_NULL ; + // copio gli attributi + if ( ! pGeomDB->CopyAttributes( nId, nNewId)) + return GDB_ID_NULL ; + // aggiorno contatori + if ( nFirstId == GDB_ID_NULL) + nFirstId = nNewId ; + ++ nCount ; + } + // elimino la superficie originale + pGeomDB->Erase( nId) ; + // restituisco risultati + return nFirstId ; + } // recupero il numero di facce int nFacets = pStm->GetFacetCount() ; // se ci sono più facce, separo queste diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 09688230ae9e73b6f5827dd7db5c06af56e31a94..16bdbac7694b1b867101aa004a8bf767910f87f8 100644 GIT binary patch delta 81 zcmX>#neo(Q#tpyN7)>_+W^-i*QjT29S-`yGOp`YVRxz4PcH~Ol+$UrM5#neo(Q#tpyN7>zgoW^-i*QjT29S-`yGOp`YVRxuh+cH~Ol+$UrM5