From 5c5fb6bdc1caa1101a25e092717eb650065fb50c Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 2 Oct 2017 17:48:22 +0000 Subject: [PATCH] EgtExecutor : - piccole migliorie in ExeExplodeSurface e ExeExplodeVolume. --- EXE_GdbModifySurf.cpp | 20 +++++++++++++++++--- EXE_GdbModifyVol.cpp | 9 ++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/EXE_GdbModifySurf.cpp b/EXE_GdbModifySurf.cpp index 36cb9d0..29bdae7 100644 --- a/EXE_GdbModifySurf.cpp +++ b/EXE_GdbModifySurf.cpp @@ -69,10 +69,17 @@ MyExplodeSurfTriMesh( int nId, int* pnCount) const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; if ( pStm == nullptr) return GDB_ID_NULL ; + // recupero il numero di facce + int nFacet = pStm->GetFacetCount() ; + // se c'è una sola faccia, non devo fare alcunché + if ( nFacet == 1) { + if ( pnCount != nullptr) + *pnCount = 1 ; + return nId ; + } // copio tutte le facce int nFirstId = GDB_ID_NULL ; int nCount = 0 ; - int nFacet = pStm->GetFacetCount() ; for ( int i = 0 ; i < nFacet ; ++ i) { ISurfTriMesh* pFac = pStm->CloneFacet( i) ; if ( pFac == nullptr) @@ -89,7 +96,7 @@ MyExplodeSurfTriMesh( int nId, int* pnCount) nFirstId = nFacId ; ++ nCount ; } - // elimino la superficie + // elimino la superficie originale pGeomDB->Erase( nId) ; // restituisco risultati if ( pnCount != nullptr) @@ -107,10 +114,17 @@ MyExplodeSurfFlatRegion( int nId, int* pnCount) const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ; if ( pSfr == nullptr) return GDB_ID_NULL ; + // recupero il numero di componenti connessi (chunk) + int nChunk = pSfr->GetChunkCount() ; + // se c'è un solo componente, non devo fare alcunché + if ( nChunk == 1) { + if ( pnCount != nullptr) + *pnCount = 1 ; + return nId ; + } // copio tutti i componenti connessi (chunk) int nFirstId = GDB_ID_NULL ; int nCount = 0 ; - int nChunk = pSfr->GetChunkCount() ; for ( int i = 0 ; i < nChunk ; ++ i) { ISurfFlatRegion* pChk = pSfr->CloneChunk( i) ; if ( pChk == nullptr) diff --git a/EXE_GdbModifyVol.cpp b/EXE_GdbModifyVol.cpp index edddce1..8ae9fa3 100644 --- a/EXE_GdbModifyVol.cpp +++ b/EXE_GdbModifyVol.cpp @@ -34,10 +34,17 @@ MyExplodeVolZmap( int nId, int* pnCount) const IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ; if ( pVZM == nullptr) return GDB_ID_NULL ; + // recupero il numero di parti connesse + int nPart = pVZM->GetPartCount() ; + // se c'è una sola parte, non devo fare alcunché + if ( nPart == 1) { + if ( pnCount != nullptr) + *pnCount = 1 ; + return nId ; + } // copio tutti i componenti connessi (parti) int nFirstId = GDB_ID_NULL ; int nCount = 0 ; - int nPart = pVZM->GetPartCount() ; for ( int i = 0 ; i < nPart ; ++ i) { IVolZmap* pPrt = pVZM->ClonePart( i) ; if ( pPrt == nullptr)