From 9f8be941b5980a9fe08ba7a859f39608ca25821b Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 30 Sep 2019 09:22:40 +0000 Subject: [PATCH] EgtExecutor 2.1i3 : - aggiunte funzioni Exe e Lua SurfTmSwapFacets, SurfTmGetFacetBBox e SurfTmGetFacetBBoxGlob. --- EXE_GdbModifySurf.cpp | 56 +++++++++++++++++++++++++++++++++ EgtExecutor.rc | Bin 16176 -> 16176 bytes LUA_GdbModifySurf.cpp | 70 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 125 insertions(+), 1 deletion(-) diff --git a/EXE_GdbModifySurf.cpp b/EXE_GdbModifySurf.cpp index 64ff4a8..7ea38bd 100644 --- a/EXE_GdbModifySurf.cpp +++ b/EXE_GdbModifySurf.cpp @@ -632,6 +632,62 @@ ExeCopySurfTmFacet( int nId, int nFacet, int nDestGrpId) return nFacId ; } +//------------------------------------------------------------------------------- +int +ExeSurfTmSwapFacets( int nId, int nFacet1, int nFacet2) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie TriMesh + ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + bool bOk = ( pStm != nullptr) ; + // eseguo lo scambio + bOk = bOk && pStm->SwapFacets( nFacet1, nFacet2) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtSurfTmSwapFacets(" + ToString( nId) + "," + + ToString( nFacet1) + "," + + ToString( nFacet2) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco risultato + return bOk ; +} + +//----------------------------------------------------------------------------- +bool +ExeSurfTmGetFacetBBox( int nId, int nFacet, int nFlag, BBox3d& b3Box) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie TriMesh + const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + if ( pStm == nullptr) + return false ; + // recupero il bounding box della faccia dell'oggetto in locale + return pStm->GetFacetLocalBBox( nFacet, b3Box, nFlag) ; +} + +//----------------------------------------------------------------------------- +bool +ExeSurfTmGetFacetBBoxGlob( int nId, int nFacet, int nFlag, BBox3d& b3Box) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie TriMesh + const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + if ( pStm == nullptr) + return false ; + // recupero il riferimento globale del gruppo cui appartiene + Frame3d frGlob ; + if ( nId != GDB_ID_ROOT && ! pGeomDB->GetGroupGlobFrame( pGeomDB->GetParentId( nId), frGlob)) + return false ; + // recupero il bounding box della faccia dell'oggetto in globale + return pStm->GetFacetBBox( nFacet, frGlob, b3Box, nFlag) ; +} + //------------------------------------------------------------------------------- bool ExeCutSurfTmPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, bool bSaveOnEq, int nRefType) diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 091743bd33728fc1dad629462770117db3cb2bed..603b7764b02040030f2eb2aaca3c749c51fa5158 100644 GIT binary patch delta 79 zcmdl`x1nysFE&Qw&A-`PnSqoe*K!sx?>N)s4T4pS#*-bnk~jAW*?>e(i-FY$N+HxV MD8kglDP58Q0D5;DV*mgE delta 79 zcmdl`x1nysFE&P_&A-`PnSqoe*K!sx?>N)s4T4pSMw1=6k~jAW*?>e(i-FY$N+HxV MD8kglDP58Q0C_7LTL1t6 diff --git a/LUA_GdbModifySurf.cpp b/LUA_GdbModifySurf.cpp index 7c2d433..749c6a3 100644 --- a/LUA_GdbModifySurf.cpp +++ b/LUA_GdbModifySurf.cpp @@ -283,7 +283,7 @@ LuaCopySurfTmFacet( lua_State* L) int nDestGrpId ; LuaCheckParam( L, 3, nDestGrpId) LuaClearStack( L) ; - // recupero i contorni della faccetta della superficie + // copio la faccia della superficie nel gruppo indicato int nNewId = ExeCopySurfTmFacet( nId, nFacet, nDestGrpId) ; // restituisco il risultato if ( nNewId != GDB_ID_NULL) @@ -293,6 +293,71 @@ LuaCopySurfTmFacet( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaSurfTmSwapFacets( lua_State* L) +{ + // 3 parametri : nId, nFacet1, nFacet2 + int nId ; + LuaCheckParam( L, 1, nId) + int nFacet1 ; + LuaCheckParam( L, 2, nFacet1) + int nFacet2 ; + LuaCheckParam( L, 3, nFacet2) + LuaClearStack( L) ; + // eseguo scambio facce della superficie + bool bOk = ExeSurfTmSwapFacets( nId, nFacet1, nFacet2) ; + // restituisco il risultato + LuaSetParam( L, bOk) ; + return 1 ; +} + +//---------------------------------------------------------------------------- +static int +LuaSurfTmGetFacetBBox( lua_State* L) +{ + // 3 parametri : nId, nFacet, nFlag + int nId ; + LuaCheckParam( L, 1, nId) + int nFacet ; + LuaCheckParam( L, 2, nFacet) + int nFlag ; + LuaCheckParam( L, 3, nFlag) + LuaClearStack( L) ; + // recupero il bounding box della faccia in locale + BBox3d b3Box ; + bool bOk = ExeSurfTmGetFacetBBox( nId, nFacet, nFlag, b3Box) ; + // restituisco il risultato + if ( bOk) + LuaSetParam( L, b3Box) ; + else + LuaSetParam( L) ; + return 1 ; +} + +//---------------------------------------------------------------------------- +static int +LuaSurfTmGetFacetBBoxGlob( lua_State* L) +{ + // 3 parametri : nId, nFacet, nFlag + int nId ; + LuaCheckParam( L, 1, nId) + int nFacet ; + LuaCheckParam( L, 2, nFacet) + int nFlag ; + LuaCheckParam( L, 3, nFlag) + LuaClearStack( L) ; + // recupero il bounding box della faccia in locale + BBox3d b3Box ; + bool bOk = ExeSurfTmGetFacetBBoxGlob( nId, nFacet, nFlag, b3Box) ; + // restituisco il risultato + if ( bOk) + LuaSetParam( L, b3Box) ; + else + LuaSetParam( L) ; + return 1 ; +} + //---------------------------------------------------------------------------- static int LuaCutSurfTmPlane( lua_State* L) @@ -353,6 +418,9 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtGetSurfTmSilhouette", LuaGetSurfTmSilhouette) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfTmFacetLoops", LuaExtractSurfTmFacetLoops) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCopySurfTmFacet", LuaCopySurfTmFacet) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSwapFacets", LuaSurfTmSwapFacets) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBox", LuaSurfTmGetFacetBBox) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBoxGlob", LuaSurfTmGetFacetBBoxGlob) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCutSurfTmPlane", LuaCutSurfTmPlane) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCutSurfTmClosedCurve", LuaCutSurfTmClosedCurve) ; return bOk ;