EgtGeomKernel :
- modifiche a SurfTriMesh per superfici degeneri.
This commit is contained in:
@@ -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
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user