From 8d218b85b7cee078e5994814ac97d5b9d84a7855 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 3 Apr 2021 17:59:22 +0000 Subject: [PATCH] EgtExecutor : - aggiunte funzioni Exe e Lua ModifyCurveCompoCurveToArc e ModifyCurveCompoCurveToLine. --- EXE_GdbModifyCurve.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++ LUA_GdbModifyCurve.cpp | 38 +++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/EXE_GdbModifyCurve.cpp b/EXE_GdbModifyCurve.cpp index 882061c..c966d34 100644 --- a/EXE_GdbModifyCurve.cpp +++ b/EXE_GdbModifyCurve.cpp @@ -1748,6 +1748,61 @@ ExeRemoveCurveCompoJoint( int nId, int nU) return bOk ; } +//------------------------------------------------------------------------------- +bool +ExeModifyCurveCompoCurveToArc( int nId, int nCrv, const Point3d& ptMid, int nRefType) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + bool bOk = true ; + // recupero la curva composita + ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; + bOk = bOk && ( pCompo != nullptr) ; + // recupero il riferimento locale + Frame3d frLoc ; + bOk = bOk && pGeomDB->GetGlobFrame( nId, frLoc) ; + // porto in locale il nuovo punto + Point3d ptMidL = GetPointLocal( pGeomDB, ptMid, nRefType, frLoc) ; + // eseguo la modifica + bOk = bOk && pCompo-> ModifyCurveToArc( nCrv, ptMidL) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtModifyCurveCompoCurveToArc(" + ToString( nId) + "," + + ToString( nCrv) + ",{" + + ToString( ptMid) + "}," + + RefTypeToString( nRefType) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; +} + +//------------------------------------------------------------------------------- +bool +ExeModifyCurveCompoCurveToLine( int nId, int nCrv) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + bool bOk = true ; + // recupero la curva composita + ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; + bOk = bOk && ( pCompo != nullptr) ; + // eseguo la modifica + bOk = bOk && pCompo->ModifyCurveToLine( nCrv) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtModifyCurveCompoCurveToLine(" + ToString( nId) + "," + + ToString( nCrv) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; +} + //------------------------------------------------------------------------------- int ExeExplodeCurveCompo( int nId, int* pnCount) diff --git a/LUA_GdbModifyCurve.cpp b/LUA_GdbModifyCurve.cpp index 0e5a168..434366f 100644 --- a/LUA_GdbModifyCurve.cpp +++ b/LUA_GdbModifyCurve.cpp @@ -712,6 +712,42 @@ LuaRemoveCurveCompoJoint( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaModifyCurveCompoCurveToArc( lua_State* L) +{ + // 3 o 4 parametri : Id, nCrv, ptMid [, nRefType] + int nId ; + LuaCheckParam( L, 1, nId) + int nCrv ; + LuaCheckParam( L, 2, nCrv) + Point3d ptMid ; + LuaCheckParam( L, 3, ptMid) + int nRefType = RTY_DEFAULT ; + LuaGetParam( L, 4, nRefType) ; + LuaClearStack( L) ; + // modifico la curva in arco + bool bOk = ExeModifyCurveCompoCurveToArc( nId, nCrv, ptMid, nRefType) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + +//---------------------------------------------------------------------------- +static int +LuaModifyCurveCompoCurveToLine( lua_State* L) +{ + // 2 parametri : Id, nCrv + int nId ; + LuaCheckParam( L, 1, nId) + int nCrv ; + LuaCheckParam( L, 2, nCrv) + LuaClearStack( L) ; + // modifico la curva in segmento di retta + bool bOk = ExeModifyCurveCompoCurveToLine( nId, nCrv) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + //------------------------------------------------------------------------------- static int LuaExplodeCurveCompo( lua_State* L) @@ -846,6 +882,8 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtAddCurveCompoJoint", LuaAddCurveCompoJoint) ; bOk = bOk && luaMgr.RegisterFunction( "EgtModifyCurveCompoJoint", LuaModifyCurveCompoJoint) ; bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveCurveCompoJoint", LuaRemoveCurveCompoJoint) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtModifyCurveCompoCurveToArc", LuaModifyCurveCompoCurveToArc) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtModifyCurveCompoCurveToLine", LuaModifyCurveCompoCurveToLine) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeCurveCompo", LuaExplodeCurveCompo) ; bOk = bOk && luaMgr.RegisterFunction( "EgtMergeCurvesInCurveCompo", LuaMergeCurvesInCurveCompo) ; bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveCurveCompoUndercutOnY", LuaRemoveCurveCompoUndercutOnY) ;