diff --git a/EXE_MachMgr.cpp b/EXE_MachMgr.cpp index 4878da0..02bbfa1 100644 --- a/EXE_MachMgr.cpp +++ b/EXE_MachMgr.cpp @@ -2340,7 +2340,7 @@ ExeGetMachiningEndPoint( Point3d& ptEnd) //----------------------------------------------------------------------------- bool -ExeApplyAllMachinings( bool bStopOnFirstErr, string& sErrList) +ExeApplyAllMachinings( bool bRecalc, bool bStopOnFirstErr, string& sErrList) { sErrList.clear() ; IMachMgr* pMachMgr = GetCurrMachMgr() ; @@ -2357,7 +2357,7 @@ ExeApplyAllMachinings( bool bStopOnFirstErr, string& sErrList) while ( nOperId != GDB_ID_NULL) { if ( pMachMgr->GetOperationType( nOperId) == OPER_DISP) { pMachMgr->SetCurrPhase( pMachMgr->GetOperationPhase( nOperId)) ; - if ( ! pMachMgr->DispositionSpecialApply( nOperId, true)) { + if ( ! pMachMgr->DispositionSpecialApply( nOperId, bRecalc)) { bOk = false ; if ( pMachMgr->GetLastErrorId() != 0) sErrList += pMachMgr->GetOperationName( nOperId) + " -> " + pMachMgr->GetLastErrorString() + "\r\n" ; @@ -2367,7 +2367,7 @@ ExeApplyAllMachinings( bool bStopOnFirstErr, string& sErrList) } else { pMachMgr->SetCurrMachining( nOperId) ; - if ( ! pMachMgr->MachiningApply( true)) { + if ( ! pMachMgr->MachiningApply( bRecalc, true)) { bOk = false ; if ( pMachMgr->GetLastErrorId() != 0) { sErrList += pMachMgr->GetOperationName( nOperId) + " -> " + pMachMgr->GetLastErrorString() ; @@ -2390,11 +2390,13 @@ ExeApplyAllMachinings( bool bStopOnFirstErr, string& sErrList) pMachMgr->ResetCurrMachining() ; // Ripristino stato visualizzazione macchina pMachMgr->SetMachineLook( nCurrLook) ; - // Progetto modificato - ExeSetModified() ; + // Se richiesto ricalcolo, progetto modificato + if ( bRecalc) + ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { - string sLua = "EgtApplyAllMachinings(" + string( bStopOnFirstErr ? "true" : "false") + ")" + + string sLua = "EgtApplyAllMachinings(" + string( bRecalc ? "true" : "false") + ")" + + string( bStopOnFirstErr ? "true" : "false") + ")" + " -- Ok=" + ToString( bOk) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 0f6049d..ef8c80d 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ diff --git a/LUA_GdbObjAttribs.cpp b/LUA_GdbObjAttribs.cpp index 4abffc2..1dc43ae 100644 --- a/LUA_GdbObjAttribs.cpp +++ b/LUA_GdbObjAttribs.cpp @@ -498,40 +498,42 @@ LuaSetInfo( lua_State* L) string sKey ; LuaCheckParam( L, 2, sKey) bool bOk = false ; - if ( lua_isboolean( L, 3)) { - bool bVal ; - LuaGetParam( L, 3, bVal) ; - LuaClearStack( L) ; - bOk = ExeSetInfo( nId, sKey, bVal) ; - } - else if ( lua_isnumber( L, 3)) { - double dVal ; - LuaGetParam( L, 3, dVal) ; - LuaClearStack( L) ; - bOk = ExeSetInfo( nId, sKey, dVal) ; - } - else if ( lua_isstring( L, 3)) { - string sVal ; - LuaGetParam( L, 3, sVal) ; - LuaClearStack( L) ; - bOk = ExeSetInfo( nId, sKey, sVal) ; - } - else if ( lua_istable( L, 3)) { - Frame3d frVal ; - BBox3d b3Val ; - Vector3d vtVal ; // va bene anche per Point3d - if ( LuaGetParam( L, 3, frVal)) { + switch ( lua_type( L, 3)) { + case LUA_TBOOLEAN : + { bool bVal ; + LuaGetParam( L, 3, bVal) ; LuaClearStack( L) ; - bOk = ExeSetInfo( nId, sKey, frVal) ; - } - else if ( LuaGetParam( L, 3, b3Val)) { + bOk = ExeSetInfo( nId, sKey, bVal) ; + } break ; + case LUA_TNUMBER : + { double dVal ; + LuaGetParam( L, 3, dVal) ; LuaClearStack( L) ; - bOk = ExeSetInfo( nId, sKey, b3Val) ; - } - else if ( LuaGetParam( L, 3, vtVal)) { + bOk = ExeSetInfo( nId, sKey, dVal) ; + } break ; + case LUA_TSTRING : + { string sVal ; + LuaGetParam( L, 3, sVal) ; LuaClearStack( L) ; - bOk = ExeSetInfo( nId, sKey, vtVal) ; - } + bOk = ExeSetInfo( nId, sKey, sVal) ; + } break ; + case LUA_TTABLE : + { Frame3d frVal ; + BBox3d b3Val ; + Vector3d vtVal ; // va bene anche per Point3d + if ( LuaGetParam( L, 3, frVal)) { + LuaClearStack( L) ; + bOk = ExeSetInfo( nId, sKey, frVal) ; + } + else if ( LuaGetParam( L, 3, b3Val)) { + LuaClearStack( L) ; + bOk = ExeSetInfo( nId, sKey, b3Val) ; + } + else if ( LuaGetParam( L, 3, vtVal)) { + LuaClearStack( L) ; + bOk = ExeSetInfo( nId, sKey, vtVal) ; + } + } break ; } // restituisco il risultato LuaSetParam( L, bOk) ; diff --git a/LUA_MachMgr.cpp b/LUA_MachMgr.cpp index fd8f234..9ffabeb 100644 --- a/LUA_MachMgr.cpp +++ b/LUA_MachMgr.cpp @@ -2507,13 +2507,15 @@ LuaGetMachiningEndPoint( lua_State* L) static int LuaApplyAllMachinings( lua_State* L) { - // 1 o nessun parametro : [bStopOnFirstErr] + // 1 o 2 o nessun parametro : [ bRecalc [, bStopOnFirstErr]] + bool bRecalc = true ; bool bStopOnFirstErr = false ; - LuaGetParam( L, 1, bStopOnFirstErr) ; + if ( LuaGetParam( L, 1, bRecalc)) + LuaGetParam( L, 2, bStopOnFirstErr) ; LuaClearStack( L) ; // eseguo ricalcolo delle lavorazioni string sErrList ; - bool bOk = ExeApplyAllMachinings( bStopOnFirstErr, sErrList) ; + bool bOk = ExeApplyAllMachinings( bRecalc, bStopOnFirstErr, sErrList) ; // restituisco il risultato LuaSetParam( L, bOk) ; if ( ! bOk)