EgtGeomKernel :

- modifiche a SurfTriMesh per superfici degeneri.
This commit is contained in:
Dario Sassi
2020-12-31 11:14:30 +00:00
parent 743c47d0e0
commit 5b0dfd16e1
3 changed files with 25 additions and 21 deletions
-8
View File
@@ -119,14 +119,6 @@ StmFromTriangleSoup::End( void)
// verifico inizializzazione
if ( m_pSTM == nullptr)
return false ;
// verifica sul numero minimo di vertici e triangoli
if ( m_pSTM->GetVertexCount() < 3 || m_pSTM->GetTriangleCount() < 1) {
delete m_pSTM ;
m_pSTM = CreateSurfTriMesh() ;
if ( m_pSTM == nullptr)
return false ;
m_pSTM->Init( 3, 1) ;
}
// sistemazioni finali della superficie
return m_pSTM->AdjustTopology() ;
}
+24 -13
View File
@@ -82,6 +82,23 @@ SurfTriMesh::Init( int nNumVert, int nNumTria, int nNumFacet)
return true ;
}
//----------------------------------------------------------------------------
bool
SurfTriMesh::Clear( void)
{
m_nStatus = OK ;
m_bOriented = false ;
m_bClosed = false ;
m_bFaceted = false ;
m_vVert.clear() ;
m_vTria.clear() ;
m_vFacet.clear() ;
ResetHashGrids3d() ;
m_nMaxTFlag = 0 ;
m_nParts = -1 ;
return true ;
}
//----------------------------------------------------------------------------
int
SurfTriMesh::AddVertex( const Point3d& ptVert)
@@ -1586,6 +1603,13 @@ SurfTriMesh::TestSealing( void)
bool
SurfTriMesh::AdjustTopology( void)
{
// se non è rimasto alcunché di valido, pulisco tutto ed esco
if ( GetVertexCount() < 3 || GetTriangleCount() < 1) {
Clear() ;
m_bOriented = true ;
m_bClosed = true ;
return true ;
}
// dichiaro sfaccettatura da ricalcolare
ResetFaceting() ;
// invalido calcolo connessione
@@ -3483,19 +3507,6 @@ SurfTriMesh::Cut( const Plane3d& plPlane, bool bSaveOnEq)
// aggiorno tutto
if ( ! AdjustVertices() || ! DoCompacting())
return false ;
// se non è rimasto alcunché di valido, pulisco tutto
if ( bModif && ( GetVertexCount() < 3 || GetTriangleCount() < 1)) {
m_nStatus = OK ;
m_bOriented = false ;
m_bClosed = false ;
m_bFaceted = false ;
m_vVert.clear() ;
m_vTria.clear() ;
m_vFacet.clear() ;
ResetHashGrids3d() ;
m_nMaxTFlag = 0 ;
m_nParts = -1 ;
}
}
return true ;
+1
View File
@@ -261,6 +261,7 @@ class SurfTriMesh : public ISurfTriMesh, public IGeoObjRW
{ if ( ! CopyFrom( stSrc))
LOG_ERROR( GetEGkLogger(), "SurfTriMesh : copy error")
return *this ; }
bool Clear( void) ;
bool GetTriangleAdjacencies( int nId, int nIdAdjTriaId[3]) const ;
bool GetTriangleFlag( int nId, int& nFlag) const ;
bool GetTriangleTempInt( int nId, int& nTempInt) const ;