From e66cfb74c092ea0029985d7a710d5f975a1cf6c7 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 13 Apr 2024 17:20:57 +0200 Subject: [PATCH] =?UTF-8?q?EgtExecutor=20:=20-=20eliminate=20funzioni=20Ex?= =?UTF-8?q?e=20e=20Lua=20CreateSurfTmBySurfBezier=20perch=C3=A8=20doppioni?= =?UTF-8?q?=20di=20ApproxSurface=20a=20cui=20=C3=A8=20stato=20aggiunto=20i?= =?UTF-8?q?l=20parametro=20dTriaMinSide.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EXE_GdbCreateSurf.cpp | 36 ------------------------------------ EXE_GdbModifySurf.cpp | 8 ++++---- LUA_GdbCreateSurf.cpp | 26 -------------------------- LUA_GdbModifySurf.cpp | 8 +++++--- 4 files changed, 9 insertions(+), 69 deletions(-) diff --git a/EXE_GdbCreateSurf.cpp b/EXE_GdbCreateSurf.cpp index 4bc12f7..4136b4d 100644 --- a/EXE_GdbCreateSurf.cpp +++ b/EXE_GdbCreateSurf.cpp @@ -1581,42 +1581,6 @@ ExeCreateSurfTmBySewing( int nParentId, const INTVECTOR& vIds, bool bErase) return nNewId ; } -//---------------------------------------------------------------------------- -int -ExeCreateSurfTmBySurfBezier( int nParentId, int nSbezId, double dTol, double dSideMin) -{ - IGeomDB* pGeomDB = GetCurrGeomDB() ; - VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL) - nParentId = AdjustId( nParentId) ; - // recupero la superficie di Bezier - const ISurfBezier* pSbez = GetSurfBezier( pGeomDB->GetGeoObj( nSbezId)) ; - bool bOk = ( pSbez != nullptr) ; - // recupero il riferimento della superficie sorgente - Frame3d frSou ; - bOk = bOk && pGeomDB->GetGlobFrame( nSbezId, frSou) ; - // recupero il riferimento locale - Frame3d frLoc ; - bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ; - // copio la superficie ausiliaria della Bezier - const ISurfTriMesh* pAuxSurf = ( bOk ? pSbez->GetAuxSurf( dTol, dSideMin) : nullptr) ; - PtrOwner pStm( pAuxSurf != nullptr ? pAuxSurf->Clone() : nullptr) ; - bOk = bOk && ! IsNull( pStm) ; - // la porto nel riferimento destinazione - bOk = bOk && pStm->LocToLoc( frSou, frLoc) ; - // inserisco la superficie trimesh nel DB - int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pStm)) : GDB_ID_NULL) ; - ExeSetModified() ; - // se richiesto, salvo il comando Lua equivalente - if ( IsCmdLog()) { - string sLua = "EgtSurfTmBySurfBezier(" + IdToString( nParentId) + "," + - IdToString( nSbezId) + ")" + - " -- Id=" + ToString( nNewId) ; - LOG_INFO( GetCmdLogger(), sLua.c_str()) ; - } - // restituisco il risultato - return nNewId ; -} - //---------------------------------------------------------------------------- int ExeCreateSurfTmByVolZmap( int nParentId, int nZmapId, int nPart) diff --git a/EXE_GdbModifySurf.cpp b/EXE_GdbModifySurf.cpp index 89d824b..a6b3269 100644 --- a/EXE_GdbModifySurf.cpp +++ b/EXE_GdbModifySurf.cpp @@ -209,7 +209,7 @@ ExeExplodeSurface( int nId, int* pnCount) //------------------------------------------------------------------------------- bool -ExeApproxSurface( int nId, double dLinTol) +ExeApproxSurface( int nId, double dLinTol, double dTriaMinSide) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) @@ -230,8 +230,7 @@ ExeApproxSurface( int nId, double dLinTol) else if ( nType == SRF_BEZIER) { // recupero la superficie ausiliaria della Bezier const ISurfBezier* pSbez = GetSurfBezier( pGeomDB->GetGeoObj( nId)) ; - const ISurfTriMesh* pAuxSurf = ( pSbez != nullptr ? pSbez->GetAuxSurf() : nullptr) ; - pStm.Set( pAuxSurf != nullptr ? pAuxSurf->Clone() : nullptr) ; + pStm.Set( ( pSbez != nullptr ? pSbez->GetApproxSurf( dLinTol, dTriaMinSide) : nullptr)) ; } bool bOk = ( ! IsNull( pStm)) ; // semplificazione della trimesh @@ -242,7 +241,8 @@ ExeApproxSurface( int nId, double dLinTol) // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtApproxSurf(" + ToString( nId) + "," + - ToString( dLinTol) + ")" + + ToString( dLinTol) + "," + + ToString( dTriaMinSide) + ")" + " -- Ok=" + ToString( bOk) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } diff --git a/LUA_GdbCreateSurf.cpp b/LUA_GdbCreateSurf.cpp index efa04cd..2d5b5e7 100644 --- a/LUA_GdbCreateSurf.cpp +++ b/LUA_GdbCreateSurf.cpp @@ -796,31 +796,6 @@ LuaCreateSurfTmBySewing( lua_State* L) return 1 ; } -//------------------------------------------------------------------------------- -static int -LuaCreateSurfTmBySurfBezier( lua_State* L) -{ - // 2 parametri : ParentId, nSbezId - int nParentId ; - LuaCheckParam( L, 1, nParentId) - int nBezId ; - LuaCheckParam( L, 2, nBezId) - double dTol = 50 * EPS_SMALL ; // valore di default - LuaGetParam( L, 3, dTol) ; - double dSideMin = 0.1 ; // valore di default - LuaGetParam( L, 4, dSideMin) ; - - LuaClearStack( L) ; - // creo STM partendo da superficie di Bezier - int nId = ExeCreateSurfTmBySurfBezier( nParentId, nBezId, dTol, dSideMin) ; - // restituisco il risultato - if ( nId != GDB_ID_NULL) - LuaSetParam( L, nId) ; - else - LuaSetParam( L) ; - return 1 ; -} - //------------------------------------------------------------------------------- static int LuaCreateSurfTmByVolZmap( lua_State* L) @@ -1035,7 +1010,6 @@ LuaInstallGdbCreateSurf( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRuled", LuaCreateSurfTmRuled) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByTriangles", LuaCreateSurfTmByTriangles) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmBySewing", LuaCreateSurfTmBySewing) ; - bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmBySurfBezier", LuaCreateSurfTmBySurfBezier) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByVolZmap", LuaCreateSurfTmByVolZmap) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezier", LuaCreateSurfBezier) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierRat", LuaCreateSurfBezierRational) ; diff --git a/LUA_GdbModifySurf.cpp b/LUA_GdbModifySurf.cpp index b698dc3..da4bedd 100644 --- a/LUA_GdbModifySurf.cpp +++ b/LUA_GdbModifySurf.cpp @@ -61,14 +61,16 @@ LuaExplodeSurf( lua_State* L) static int LuaApproxSurf( lua_State* L) { - // 1 o 2 parametri : Id [, dLinTol] + // 1 o 2 parametri : Id [, dLinTol [, dTriaMinSide]] int nId ; LuaCheckParam( L, 1, nId) double dLinTol = LIN_TOL_SRF ; - LuaGetParam( L, 2, dLinTol) ; + double dTriaMinSide = 100 * EPS_SMALL ; + if ( LuaGetParam( L, 2, dLinTol)) + LuaGetParam( L, 3, dTriaMinSide) ; LuaClearStack( L) ; // approssimazione della superficie - bool bOk = ExeApproxSurface( nId, dLinTol) ; + bool bOk = ExeApproxSurface( nId, dLinTol, dTriaMinSide) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ;