From 2f3d1a84efe6c2e6b1594d8c8cd37e155e3a52e8 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Wed, 22 May 2024 16:35:13 +0200 Subject: [PATCH 1/4] EgtExecutor : - aggiunta la funzione per modificare lo smooth angle delle surf trimesh. --- EXE_GdbModifySurf.cpp | 21 +++++++++++++++++++++ LUA_GdbModifySurf.cpp | 17 +++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/EXE_GdbModifySurf.cpp b/EXE_GdbModifySurf.cpp index f6df9d2..41265a3 100644 --- a/EXE_GdbModifySurf.cpp +++ b/EXE_GdbModifySurf.cpp @@ -1214,3 +1214,24 @@ ExeSurfBzTrim( int nId, int nCutterId) } return bOk ; } + +//---------------------------------------------------------------------------- +bool +ExeSurfTmSetSmoothAng( int nId, double dAngDeg) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie trimseh da trimmare + ISurfTriMesh* pSrfTm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + if ( pSrfTm == nullptr) + return false ; + pSrfTm->SetSmoothAngle( dAngDeg) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtSurfTmSetSmoothAng(" + ToString( nId) + "," + + ToString( dAngDeg) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return true ; +} diff --git a/LUA_GdbModifySurf.cpp b/LUA_GdbModifySurf.cpp index 58e046d..1a5ac46 100644 --- a/LUA_GdbModifySurf.cpp +++ b/LUA_GdbModifySurf.cpp @@ -582,6 +582,22 @@ LuaSurfBzTrim( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaSurfTmSetSmoothAng( lua_State* L) +{ + // 2 parametri : nId, nCutterId + int nId ; + LuaCheckParam( L, 1, nId) + double dAngDeg ; + LuaCheckParam( L, 2, dAngDeg) + LuaClearStack( L) ; + // taglio la prima superficie in base alla seconda + bool bOk = ExeSurfTmSetSmoothAng( nId, dAngDeg) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + //------------------------------------------------------------------------------- bool LuaInstallGdbModifySurf( LuaMgr& luaMgr) @@ -616,5 +632,6 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSetShowEdges", LuaSurfTmSetShowEdges) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetShowEdges", LuaSurfTmGetShowEdges) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzTrim", LuaSurfBzTrim) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSetSmoothAng", LuaSurfTmSetSmoothAng) ; return bOk ; } From 7c6c48b8b85ab7f371c82d30728b64b5e914a576 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Wed, 22 May 2024 16:41:05 +0200 Subject: [PATCH 2/4] EgtExecutor : - tolti refusi da un altro ramo. --- EXE_GdbGetCurve.cpp | 35 +---------------------------------- LUA_GdbGetCurve.cpp | 23 ----------------------- 2 files changed, 1 insertion(+), 57 deletions(-) diff --git a/EXE_GdbGetCurve.cpp b/EXE_GdbGetCurve.cpp index f42490d..5f1c641 100644 --- a/EXE_GdbGetCurve.cpp +++ b/EXE_GdbGetCurve.cpp @@ -677,37 +677,4 @@ ExeCurveCompoNormVersor( int nId, int nSimpCrv, int nRefId, Vector3d& vtNorm) } // gestione trasformazione ( eventuale) return TransformVector( pGeomDB, nId, nRefId, vtNorm) ; -} - -//---------------------------------------------------------------------------- -bool -ExeShowBezierCurveControlPoints( int nCrvId, int* pnCount) -{ - IGeomDB* pGeomDB = GetCurrGeomDB() ; - VERIFY_GEOMDB( pGeomDB, false) - // recupero la curva di bezier - const ICurveBezier* pCrvBezier = GetCurveBezier( pGeomDB->GetGeoObj( nCrvId)) ; - if ( pCrvBezier == nullptr || pCrvBezier->GetType() != CRV_BEZIER) - return false ; - int nParent = pGeomDB->GetParentId( nCrvId) ; - int nDeg = pCrvBezier->GetDegree() ; - bool bRat = pCrvBezier->IsRational() ; - int nFirstId = -1 ; - int nCount = 0 ; - for ( int i = 0 ; i < nDeg + 1 ; ++i) { - IGeoPoint3d* pGeoPt( CreateGeoPoint3d()) ; - if ( ! bRat) - pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ; - else - pGeoPt->Set( pCrvBezier->GetControlPoint( i) * pCrvBezier->GetControlWeight( i)) ; - int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParent, pGeoPt) ; - if ( nFirstId == GDB_ID_NULL) - nFirstId = nId ; - if ( nId != GDB_ID_NULL) - ++nCount ; - } - // restituisco i risultati - if ( pnCount != nullptr) - *pnCount = nCount ; - return nFirstId ; -} +} \ No newline at end of file diff --git a/LUA_GdbGetCurve.cpp b/LUA_GdbGetCurve.cpp index 7f31ff1..112d39d 100644 --- a/LUA_GdbGetCurve.cpp +++ b/LUA_GdbGetCurve.cpp @@ -531,28 +531,6 @@ LuaCurveCompoNormVersor( lua_State* L) return 1 ; } -//---------------------------------------------------------------------------- -static int -LuaShowBezierCurveControlPoint( lua_State* L) -{ - // 1 parametro : nCrvId - int nCrvId ; - LuaCheckParam( L, 1, nCrvId) - LuaClearStack( L) ; - int nCount = 0 ; - int nId = ExeShowBezierCurveControlPoints( nCrvId, &nCount) ; - // restituisco il risultato - if ( nId != GDB_ID_NULL) { - LuaSetParam( L, nId) ; - LuaSetParam( L, nCount) ; - } - else { - LuaSetParam( L) ; - LuaSetParam( L) ; - } - return 2 ; -} - //------------------------------------------------------------------------------- bool LuaInstallGdbGetCurve( LuaMgr& luaMgr) @@ -584,6 +562,5 @@ LuaInstallGdbGetCurve( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoRadius", LuaCurveCompoRadius) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoAngCenter", LuaCurveCompoAngCenter) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoNormVersor", LuaCurveCompoNormVersor) ; - bOk = bOk && luaMgr.RegisterFunction( "EgtShowBezierCurveControlPoints", LuaShowBezierCurveControlPoint) ; return bOk ; } From 16b72089621cf60ef38bb0f97fa0c1c02b18d184 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 23 May 2024 09:32:29 +0200 Subject: [PATCH 3/4] EgtExecutor : - corretto un commento. --- LUA_GdbModifySurf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LUA_GdbModifySurf.cpp b/LUA_GdbModifySurf.cpp index 1a5ac46..34802cd 100644 --- a/LUA_GdbModifySurf.cpp +++ b/LUA_GdbModifySurf.cpp @@ -592,7 +592,7 @@ LuaSurfTmSetSmoothAng( lua_State* L) double dAngDeg ; LuaCheckParam( L, 2, dAngDeg) LuaClearStack( L) ; - // taglio la prima superficie in base alla seconda + // aggiorno lo smooth angle della superficie bool bOk = ExeSurfTmSetSmoothAng( nId, dAngDeg) ; LuaSetParam( L, bOk) ; return 1 ; From 37c6e26a4373f744dbc2d7cec79304eae3a69971 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 23 May 2024 09:41:29 +0200 Subject: [PATCH 4/4] EgtExecutor : - riaggiunte le funzioni per mostrare i punti di controllo di una curva Bezier. --- EXE_GdbGetCurve.cpp | 34 ++++++++++++++++++++++++++++++++++ LUA_GdbGetCurve.cpp | 23 +++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/EXE_GdbGetCurve.cpp b/EXE_GdbGetCurve.cpp index 5f1c641..1a1a620 100644 --- a/EXE_GdbGetCurve.cpp +++ b/EXE_GdbGetCurve.cpp @@ -677,4 +677,38 @@ ExeCurveCompoNormVersor( int nId, int nSimpCrv, int nRefId, Vector3d& vtNorm) } // gestione trasformazione ( eventuale) return TransformVector( pGeomDB, nId, nRefId, vtNorm) ; +} + + +//---------------------------------------------------------------------------- +bool +ExeShowCurveBezierControlPoints( int nCrvId, int* pnCount) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la curva di bezier + const ICurveBezier* pCrvBezier = GetCurveBezier( pGeomDB->GetGeoObj( nCrvId)) ; + if ( pCrvBezier == nullptr || pCrvBezier->GetType() != CRV_BEZIER) + return false ; + int nParent = pGeomDB->GetParentId( nCrvId) ; + int nDeg = pCrvBezier->GetDegree() ; + bool bRat = pCrvBezier->IsRational() ; + int nFirstId = -1 ; + int nCount = 0 ; + for ( int i = 0 ; i < nDeg + 1 ; ++i) { + IGeoPoint3d* pGeoPt( CreateGeoPoint3d()) ; + if ( ! bRat) + pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ; + else + pGeoPt->Set( pCrvBezier->GetControlPoint( i) * pCrvBezier->GetControlWeight( i)) ; + int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParent, pGeoPt) ; + if ( nFirstId == GDB_ID_NULL) + nFirstId = nId ; + if ( nId != GDB_ID_NULL) + ++nCount ; + } + // restituisco i risultati + if ( pnCount != nullptr) + *pnCount = nCount ; + return nFirstId ; } \ No newline at end of file diff --git a/LUA_GdbGetCurve.cpp b/LUA_GdbGetCurve.cpp index 112d39d..3ab6b87 100644 --- a/LUA_GdbGetCurve.cpp +++ b/LUA_GdbGetCurve.cpp @@ -531,6 +531,28 @@ LuaCurveCompoNormVersor( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaShowCurveBezierControlPoint( lua_State* L) +{ + // 1 parametro : nCrvId + int nCrvId ; + LuaCheckParam( L, 1, nCrvId) + LuaClearStack( L) ; + int nCount = 0 ; + int nId = ExeShowCurveBezierControlPoints( nCrvId, &nCount) ; + // restituisco il risultato + if ( nId != GDB_ID_NULL) { + LuaSetParam( L, nId) ; + LuaSetParam( L, nCount) ; + } + else { + LuaSetParam( L) ; + LuaSetParam( L) ; + } + return 2 ; +} + //------------------------------------------------------------------------------- bool LuaInstallGdbGetCurve( LuaMgr& luaMgr) @@ -562,5 +584,6 @@ LuaInstallGdbGetCurve( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoRadius", LuaCurveCompoRadius) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoAngCenter", LuaCurveCompoAngCenter) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoNormVersor", LuaCurveCompoNormVersor) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtShowCurveBezierControlPoints", LuaShowCurveBezierControlPoint) ; return bOk ; }