EgtExecutor 2.2f4 :

- a funzioni Exe e Lua SurfTmAdd, SurfTmSubtract e SurfTmIntersect aggiunto parametro opzionale bTwoColors
- aggiunta funzione Exe e Lua SurfTmResetTwoColors.
This commit is contained in:
Dario Sassi
2020-06-14 09:50:51 +00:00
parent 512e666eb7
commit cf7301b9f7
3 changed files with 66 additions and 11 deletions
+39 -5
View File
@@ -504,7 +504,7 @@ ExeCutSurfTmClosedCurve( int nSurfId, int nCurveId, bool bSaveOnEq)
//----------------------------------------------------------------------------
bool
ExeSurfTmAdd( int nId1, int nId2)
ExeSurfTmAdd( int nId1, int nId2, bool bTwoColors)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
@@ -520,6 +520,9 @@ ExeSurfTmAdd( int nId1, int nId2)
bOk = bOk && ( pStm2L != nullptr) ;
// eseguo l'unione tra le due superfici
bOk = bOk && pStm1->Add( *pStm2L) ;
// se non richiesti due colori
if ( bOk && ! bTwoColors)
pStm1->ResetTFlags() ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
@@ -533,7 +536,7 @@ ExeSurfTmAdd( int nId1, int nId2)
//----------------------------------------------------------------------------
bool
ExeSurfTmSubtract( int nId1, int nId2)
ExeSurfTmSubtract( int nId1, int nId2, bool bTwoColors)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
@@ -550,8 +553,13 @@ ExeSurfTmSubtract( int nId1, int nId2)
// eseguo la sottrazione tra le due superfici
bOk = bOk && pStm1->Subtract( *pStm2L) ;
// se il risultato è vuoto, cancello la superficie
if ( bOk && ! pStm1->IsValid())
if ( bOk && ! pStm1->IsValid()) {
pGeomDB->Erase( nId1) ;
pStm1 = nullptr ;
}
// se non richiesti due colori
if ( bOk && ! bTwoColors && pStm1 != nullptr)
pStm1->ResetTFlags() ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
@@ -565,7 +573,7 @@ ExeSurfTmSubtract( int nId1, int nId2)
//----------------------------------------------------------------------------
bool
ExeSurfTmIntersect( int nId1, int nId2)
ExeSurfTmIntersect( int nId1, int nId2, bool bTwoColors)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
@@ -582,8 +590,13 @@ ExeSurfTmIntersect( int nId1, int nId2)
// eseguo l'intersezione tra le due superfici
bOk = bOk && pStm1->Intersect( *pStm2L) ;
// se il risultato è vuoto, cancello la superficie
if ( bOk && ! pStm1->IsValid())
if ( bOk && ! pStm1->IsValid()) {
pGeomDB->Erase( nId1) ;
pStm1 = nullptr ;
}
// se non richiesti due colori
if ( bOk && ! bTwoColors && pStm1 != nullptr)
pStm1->ResetTFlags() ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
@@ -595,6 +608,27 @@ ExeSurfTmIntersect( int nId1, int nId2)
return bOk ;
}
//----------------------------------------------------------------------------
bool
ExeSurfTmResetTwoColors( int nId)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
// recupero la superficie TriMesh
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
bool bOk = ( pStm != nullptr) ;
// reset dei flag sui triangoli per i due colori
bOk = bOk && pStm->ResetTFlags() ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtSurfTmResetTwoColors(" + ToString( nId) + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//----------------------------------------------------------------------------
static ISurfTriMesh*
MyCreateSubSurfTm( const ISurfTriMesh* pStm, const INTVECTOR& vTria)