diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 06d1895..5356408 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1080,7 +1080,7 @@ local function OrderFeatures( vProc) end ------------------------------------------------------------------------------------------------------------- -local function AddFeatureResultToGlobalList( Proc, OptionalParameters) +local function AddFeatureResultToGlobalList( Part, Proc, OptionalParameters) local sStrategyId local sStatus local dCompletionIndex @@ -1099,13 +1099,14 @@ local function AddFeatureResultToGlobalList( Proc, OptionalParameters) if Proc.isVirtualProc then return end - local ChosenStrategyTable = PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexMasterProc].ChosenStrategy + local nOffsetIndex = EgtIf( Part.bPartInCombiIsInverted, 4, 0) + local ChosenStrategyTable = PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation+nOffsetIndex][Proc.nIndexMasterProc].ChosenStrategy if ChosenStrategyTable then sStrategyId = ChosenStrategyTable.sStrategyId sStatus = ChosenStrategyTable.Result.sStatus dCompletionIndex = ChosenStrategyTable.Result.dCompletionIndex dCompositeRating = ChosenStrategyTable.Result.dCompositeRating - local idFeature = PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexMasterProc].idFeature + local idFeature = PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation+nOffsetIndex][Proc.nIndexMasterProc].idFeature sApplyInfo = 'Skipped. Feature machined: ' .. EgtNumToString( idFeature) end elseif Proc.ChosenStrategy then @@ -1194,15 +1195,16 @@ local function CalculateMachinings( vProc, Part, nInitialRotation) _, _ = StrategyScript.Make( true, Proc, Part, Proc.ChosenStrategy) -- se tutte le strategie disponibili non sono applicabili else + local nOffsetIndex = EgtIf( Part.bPartInCombiIsInverted, 4, 0) -- se non esiste una strategia scelta (non dovrebbe mai succedere) cancello da lista generale - PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexInVProc].ChosenStrategy = nil + PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation+nOffsetIndex][Proc.nIndexInVProc].ChosenStrategy = nil -- TODO dare messaggio che la feature non รจ stata eseguita nonostante la presenza di strategie disponibili end end -- scrivo risultato in tabella globale - AddFeatureResultToGlobalList( Proc, { nRotation = nCurrRotation}) + AddFeatureResultToGlobalList( Part, Proc, { nRotation = nCurrRotation}) end -- ripristino pezzo in posizione originale @@ -1693,7 +1695,7 @@ function BeamExec.ProcessMachinings( PARTS) MACHININGS.Info.nSplitCutRotation = 1 -- anche se non ci sono feature da eseguire, bisogna comunque scrivrere i risultati for nProc = 1, #vProc do - AddFeatureResultToGlobalList( vProc[nProc]) + AddFeatureResultToGlobalList( PARTS[nPart], vProc[nProc]) end -- altrimenti si fanno tutti i calcoli else diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 8585232..6aaf8c6 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -1366,7 +1366,8 @@ function MachiningLib.AddOperations( MACHININGS, Part, sRotation) bAreAllMachiningApplyOk = false nErr, sErr = EgtGetLastMachMgrError() EgtSetOperationMode( nOperationId, false) - local CurrProc = PROCESSINGS[MACHININGS[i].Proc.nIndexPartInParts].Rotation[MACHININGS[i].Proc.nIndexRotation][MACHININGS[i].Proc.nIndexInVProc] + local nOffsetIndex = EgtIf( Part.bPartInCombiIsInverted, 4, 0) + local CurrProc = PROCESSINGS[MACHININGS[i].Proc.nIndexPartInParts].Rotation[MACHININGS[i].Proc.nIndexRotation+nOffsetIndex][MACHININGS[i].Proc.nIndexInVProc] -- si annulla la feature scelta, in modo che un successivo ricalcolo non la tenga in considerazione CurrProc.AvailableStrategies[CurrProc.nIndexBestStrategy].Result.sStatus = 'Not-Applicable' CurrProc.AvailableStrategies[CurrProc.nIndexBestStrategy].Result.sInfo = 'REJECTED (' .. sErr .. ')'