EgtExecutor 2.7f2 :

- Aggiunte funzioni per Offset di SurfTriMesh chiuse
- Migliorata la creazione di una TriMesh a partire da uno ZMap (con SaraP).
This commit is contained in:
Riccardo Elitropi
2025-06-16 11:37:23 +02:00
parent 092896750c
commit 362c845ed3
6 changed files with 160 additions and 22 deletions
+6 -22
View File
@@ -1813,28 +1813,12 @@ ExeCreateSurfTmByVolZmap( int nParentId, int nZmapId, int nPart)
// recupero il riferimento locale
Frame3d frLoc ;
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
// Costruttore di trimesh da insieme disordinato di triangoli
StmFromTriangleSoup StmFts ;
bOk = bOk && StmFts.Start() ;
// recupero i triangoli del bordo dello Zmap
int nCount = ( bOk ? pVZM->GetBlockCount() : 0) ;
for ( int i = 0 ; i < nCount && bOk ; ++ i) {
// recupero i triangoli del blocco
TRIA3DEXVECTOR vTria ;
pVZM->GetBlockTriangles( i, vTria) ;
for ( auto& Tria : vTria) {
// aggiusto per i sistemi di riferimento
Tria.LocToLoc( frSou, frLoc) ;
// inserisco il triangolo nella nuova superficie
if ( ! StmFts.AddTriangle( Tria))
bOk = false ;
}
}
// valido la superficie e calcolo le adiacenze
bOk = bOk && StmFts.End() ;
// chiudo eventuali fessure tra i triangoli
PtrOwner<ISurfTriMesh> pStm( StmFts.GetSurf()) ;
bOk = bOk && pStm->Repair() ;
// Recupero la TriMesh
PtrOwner<ISurfTriMesh> pStm ;
bOk = bOk && pStm.Set( pVZM->GetSurfTriMesh()) ;
bOk = bOk && ( ! IsNull( pStm)) ;
// la porto in locale al frame di destinazione
bOk = bOk && pStm->LocToLoc( frSou, frLoc) ;
// inserisco la superficie trimesh nel DB
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pStm)) : GDB_ID_NULL) ;
ExeSetModified() ;