Corretto indice rotazione da verificare in caso di soluzione invertita. Si aggiunge un offset di 4, l'indice nella tabella delle rotazioni sono 5-6-7-8

This commit is contained in:
andrea.villa
2026-04-01 13:17:28 +02:00
parent 98a48522ee
commit aaa06c1af5
2 changed files with 10 additions and 7 deletions
+8 -6
View File
@@ -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