From 187b45cec0e1269cdbbcf9d2b999f8448e8437bb Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 3 Nov 2015 21:27:09 +0000 Subject: [PATCH] EgtExecutor 1.6k1 : - aggiunto offset di regione - se operazioni su regioni producono regione vuota, si cancella. --- EXE_GdbCreateSurf.cpp | 2 +- EXE_GdbModifySurf.cpp | 32 ++++++++++++++++++++++++++++++++ EgtExecutor.rc | Bin 11694 -> 11694 bytes LUA_GdbModifySurf.cpp | 20 ++++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/EXE_GdbCreateSurf.cpp b/EXE_GdbCreateSurf.cpp index aa91bc6..478d1a6 100644 --- a/EXE_GdbCreateSurf.cpp +++ b/EXE_GdbCreateSurf.cpp @@ -239,7 +239,7 @@ ExeCreateSurfFlatRegion( int nParentId, INTVECTOR& vCrvIds, int* pnCount) // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtSurfFlatRegion(" + IdToString( nParentId) + ",{" + - IdListToString( vCrvIds) + "}," + + IdListToString( vCrvIds) + "})" + " -- Id=" + ToString( nFirstId) + ",Nbr=" + ToString( nCount) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } diff --git a/EXE_GdbModifySurf.cpp b/EXE_GdbModifySurf.cpp index c50c9b9..9ea5d52 100644 --- a/EXE_GdbModifySurf.cpp +++ b/EXE_GdbModifySurf.cpp @@ -232,6 +232,9 @@ ExeSurfFrSubtract( int nId1, int nId2) } // eseguo la sottrazione della seconda superficie dalla prima bOk = bOk && pSfr1->Subtract( *pSfr2L) ; + // se il risultato è vuoto, cancello la FlatRegion + if ( bOk && ! pSfr1->IsValid()) + pGeomDB->Erase( nId1) ; ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { @@ -272,6 +275,9 @@ ExeSurfFrIntersect( int nId1, int nId2) } // eseguo l'intersezione tra le due superfici bOk = bOk && pSfr1->Intersect( *pSfr2L) ; + // se il risultato è vuoto, cancello la FlatRegion + if ( bOk && ! pSfr1->IsValid()) + pGeomDB->Erase( nId1) ; ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { @@ -283,6 +289,32 @@ ExeSurfFrIntersect( int nId1, int nId2) return bOk ; } +//---------------------------------------------------------------------------- +bool +ExeSurfFrOffset( int nId, double dDist, int nType) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL) + // recupero la superficie FlatRegion + ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ; + bool bOk = ( pSfr != nullptr) ; + // eseguo l'offset + bOk = bOk && pSfr->Offset( dDist, nType) ; + // se il risultato è vuoto, cancello la FlatRegion + if ( bOk && ! pSfr->IsValid()) + pGeomDB->Erase( nId) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtSurfFrOffset(" + ToString( nId) + "," + + ToString( dDist) + "," + + ToString( nType) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} + //---------------------------------------------------------------------------- int ExeExtractSurfFrChunkLoops( int nId, int nChunk, int nDestGrpId, int* pnCount) diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 797247e99b07db37a055d636e47abaa2d7080e30..02b2b029733ea5aadec1c1c6d29dd833763fd9de 100644 GIT binary patch delta 121 zcmZ1%y)Jsg4>ndq1|0^&%@@V4Gflq2nZumTU^qFDTX%B-R|N}H?x5UdrpX5c5po7f iZj75332QOKH9IpSY4l^nc<1|0^o%@@V4Gflq2nZuYhIZ;G%asj8<<^rw?7O3n&xywwG4+tX5 k8YsCjZeAp;#SAyVnHfd1ALHgp(s1d6a`wp521<3@0A;`?FaQ7m diff --git a/LUA_GdbModifySurf.cpp b/LUA_GdbModifySurf.cpp index 76f7623..e6b0571 100644 --- a/LUA_GdbModifySurf.cpp +++ b/LUA_GdbModifySurf.cpp @@ -16,6 +16,7 @@ #include "LUA.h" #include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EXeConst.h" +#include "/EgtDev/Include/EGkCurve.h" #include "/EgtDev/Include/EGkGdbConst.h" #include "/EgtDev/Include/EGkLuaAux.h" @@ -104,6 +105,24 @@ LuaSurfFrIntersect( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaSurfFrOffset( lua_State* L) +{ + // 3 parametri : Id, dDist, nType + int nId ; + LuaCheckParam( L, 1, nId) + double dDist ; + LuaCheckParam( L, 2, dDist) + int nType = ICurve::OFF_FILLET ; + LuaGetParam( L, 3, nType) ; + LuaClearStack( L) ; + // eseguo l'offset della regione + bool bOk = ExeSurfFrOffset( nId, dDist, nType) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + //---------------------------------------------------------------------------- static int LuaExtractSurfFrChunkLoops( lua_State* L) @@ -162,6 +181,7 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrAdd", LuaSurfFrAdd) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrSubtract", LuaSurfFrSubtract) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrIntersect", LuaSurfFrIntersect) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrOffset", LuaSurfFrOffset) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfFrChunkLoops", LuaExtractSurfFrChunkLoops) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfTmFacetLoops", LuaExtractSurfTmFacetLoops) ; return bOk ;