EgtGeomKernel :
- aggiunto a SurfTriMesh metodo RemoveFacet.
This commit is contained in:
@@ -221,6 +221,7 @@ class SurfTriMesh : public ISurfTriMesh, public IGeoObjRW
|
||||
bool GetFacetNormal( int nF, Vector3d& vtN) const override ;
|
||||
bool GetFacetArea( int nF, double& dArea) const override ;
|
||||
bool GetFacetsContact( int nF1, int nF2, bool& bAdjac, Point3d& ptP1, Point3d& ptP2, double& dAng) const override ;
|
||||
bool RemoveFacet( int nF) override ;
|
||||
SurfTriMesh* CloneFacet( int nF) const override ;
|
||||
bool SwapFacets( int nF1, int nF2) override ;
|
||||
bool GetFacetLocalBBox( int nF, BBox3d& b3Loc, int nFlag = BBF_STANDARD) const override ;
|
||||
|
||||
+31
-1
@@ -645,6 +645,8 @@ SurfTriMesh::GetFacetArea( int nF, double& dArea) const
|
||||
SurfTriMesh*
|
||||
SurfTriMesh::CloneFacet( int nF) const
|
||||
{
|
||||
if ( ! IsValid())
|
||||
return nullptr ;
|
||||
// alloco la nuova superficie
|
||||
PtrOwner<SurfTriMesh> pSTM( CreateBasicSurfTriMesh()) ;
|
||||
if ( IsNull( pSTM))
|
||||
@@ -689,12 +691,40 @@ SurfTriMesh::CloneFacet( int nF) const
|
||||
return Release( pSTM) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
SurfTriMesh::RemoveFacet( int nF)
|
||||
{
|
||||
// verifico esistenza delle due facce
|
||||
if ( ! IsValid() || nF < 0 || nF >= GetFacetCount())
|
||||
return false ;
|
||||
|
||||
// recupero l'elenco dei triangoli della faccia
|
||||
INTVECTOR vTria ;
|
||||
if ( ! GetAllTriaInFacet( nF, vTria))
|
||||
return false ;
|
||||
|
||||
// Rimuovo i triangoli della faccia
|
||||
for ( int i : vTria)
|
||||
RemoveTriangle( i) ;
|
||||
|
||||
// aggiorno le strutture di base dell'oggetto
|
||||
if ( ! DoCompacting())
|
||||
return false ;
|
||||
|
||||
// dichiaro necessità ricalcolo della grafica e di hashgrids3d
|
||||
m_OGrMgr.Reset() ;
|
||||
ResetHashGrids3d() ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
SurfTriMesh::SwapFacets( int nF1, int nF2)
|
||||
{
|
||||
// verifico esistenza delle due facce
|
||||
if ( nF1 < 0 || nF1 >= GetFacetCount() || nF2 < 0 || nF2 >= GetFacetCount())
|
||||
if ( ! IsValid() || nF1 < 0 || nF1 >= GetFacetCount() || nF2 < 0 || nF2 >= GetFacetCount())
|
||||
return false ;
|
||||
|
||||
// recupero gli indici dei triangoli della prima e seconda faccia
|
||||
|
||||
Reference in New Issue
Block a user