EgtGeomKernel 2.7f2 :

- Aggiunte funzioni per calcolo di Offset per superfici chiuse TriMesh
- Piccola miglioria alla triangolazione (con SaraP)
- Migliorie per rimozioni TJunction, calcolo delle normali dei triangoli e creazione di una TriMesh a partire da uno ZMap (con SaraP)
- Aggiunte funzioni di SubtractMap e piccole modifiche per estensione dei Box di creazione per gli Zmap.
This commit is contained in:
Riccardo Elitropi
2025-06-16 11:34:23 +02:00
parent 0bffa0039c
commit 626d5b0e51
14 changed files with 811 additions and 81 deletions
+31 -1
View File
@@ -19,6 +19,7 @@
#include "MC_Tables.h"
#include "PolygonPlane.h"
#include "IntersLineBox.h"
#include "SurfTriMesh.h"
#include "/EgtDev/Include/EGkIntervals.h"
#include "/EgtDev/Include/EGkStringUtils3d.h"
#include "/EgtDev/Include/EGkChainCurves.h"
@@ -571,6 +572,35 @@ VolZmap::GetBlockTriangles( int nBlock, TRIA3DEXVECTOR& vTria) const
}
}
//----------------------------------------------------------------------------
ISurfTriMesh*
VolZmap::GetSurfTriMesh( void) const
{
// controllo che lo Zmap sia valido
if ( ! IsValid())
return nullptr ;
// inizializzo la superficie
PtrOwner<SurfTriMesh> pStm( CreateBasicSurfTriMesh()) ;
if ( IsNull( pStm) || ! pStm->Init( 3, 1))
return nullptr ;
PointGrid3d VertGrid ; VertGrid.Init( 50000) ;
// ciclo lungo i blocchi dello Zmap
for ( int nB = 0 ; nB < GetBlockCount() ; ++ nB) {
TRIA3DEXVECTOR vTria ;
GetBlockTriangles( nB, vTria) ;
if ( ! pStm->AddTriaFromZMap( vTria, VertGrid))
return nullptr ;
}
// sistemo la topologia
if ( ! pStm->AdjustTopologyFromZMap())
return nullptr ;
return ( Release( pStm)) ;
}
//----------------------------------------------------------------------------
int
VolZmap::GetBlockCount( void) const
@@ -1142,7 +1172,7 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const
}
// Controllo se il voxel ha una sola faccia che giace in un piano canonico e quindi ha gestione speciale
if ( m_nShape != BOX) {
if ( m_nShape != BOX && m_nShape != OFFSET) {
// Faccia XY normale Z+
if ( nIndex == 15) {
int nTool ; double dPos ;