diff --git a/BatchProcessNew.lua b/BatchProcessNew.lua index b643305..c44d016 100644 --- a/BatchProcessNew.lua +++ b/BatchProcessNew.lua @@ -516,6 +516,7 @@ if bToProcess then end sMsg = string.gsub( sMsg or '', '\n', ' ', 10) sMsg = string.gsub( sMsg or '', '\r', ' ', 10) + -- trovata almeno una strategia e feature lavorata completamente if RESULT[i].sType == 'Feature' and RESULT[i].ChosenStrategy.sStatus == 'Completed' then BEAM.ERR = 0 BEAM.MSG = '---' @@ -523,7 +524,11 @@ if bToProcess then BEAM.CUTID = RESULT[i].idCut BEAM.TASKID = RESULT[i].idTask WriteErrToLogFile( BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) - elseif RESULT[i].sType == 'Feature' and RESULT[i].ChosenStrategy.sStatus == 'Not-Applicable' then + -- trovata almeno una strategia ma nessuna applicabile oppure non trovata alcuna strategia + elseif RESULT[i].sType == 'Feature' + and ( ( RESULT[i].ChosenStrategy and RESULT[i].ChosenStrategy.sStatus == 'Not-Applicable') + or ( not RESULT[i].ChosenStrategy)) then + nErrCnt = nErrCnt + 1 sOutput = sOutput .. string.format( '[%d,%d] %s\n', RESULT[i].CutId, RESULT[i].TaskId, sMsg) BEAM.ERR = 19 diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 46d908e..895a1c1 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -764,6 +764,7 @@ local function GetFeatureInfoAndDependency( vProcSingleRot, Part) local ProcB = vProcSingleRot[j] -- non si controlla la feature con se stessa o se feature disabilitata if i ~= j and ProcB.nFlg ~= 0 then + -- TODO problemi di riferimenti a elementi della stessa tabella... spariscono le SubstitutedProc -- verifico se il taglio può essere saltato perchè è nella stessa posizione del taglio di testa if Proc.nPrc == 340 and ProcB.Topology.sFamily == 'Cut' and AreSameVectorApprox( ProcB.Faces[1].vtN, X_AX()) and abs( ProcB.Faces[1].ptCenter:getX() - Part.b3Part:getMax():getX()) < 10 * GEO.EPS_SMALL then @@ -1021,6 +1022,25 @@ end ------------------------------------------------------------------------------------------------------------- -- TODO gestire Proc che non hanno una ChosenStrategy, perchè sono specchiate, multi (si legge il risultato da un'altra feature?) o non è stata trovata una strategia local function AddFeatureResultToGlobalList( Proc, nRotation) + local sStrategyId + local sStatus + local nCompletionIndex + local dCompositeRating + local sInfo + -- TODO non funziona perchè il riferimento ad un elemento della stessa tabella fa sparire la Proc sostituita (GetFeatureInfoAndDependency) + if Proc.IsSubstitutedBy then + sStrategyId = Proc.IsSubstitutedBy.ChosenStrategy.sStrategyId + sStatus = Proc.IsSubstitutedBy.ChosenStrategy.Result.sStatus + nCompletionIndex = Proc.IsSubstitutedBy.ChosenStrategy.Result.nCompletionIndex + dCompositeRating = Proc.IsSubstitutedBy.ChosenStrategy.Result.dCompositeRating + sInfo = Proc.IsSubstitutedBy.ChosenStrategy.Result.sInfo + else + sStrategyId = Proc.ChosenStrategy.sStrategyId + sStatus = Proc.ChosenStrategy.Result.sStatus + nCompletionIndex = Proc.ChosenStrategy.Result.nCompletionIndex + dCompositeRating = Proc.ChosenStrategy.Result.dCompositeRating + sInfo = Proc.ChosenStrategy.Result.sInfo + end RESULT[#RESULT+1] = { sType = 'Feature', id = Proc.id, @@ -1031,11 +1051,11 @@ local function AddFeatureResultToGlobalList( Proc, nRotation) nRotation = nRotation, idPart = Proc.idPart, ChosenStrategy = { - sStrategyName = Proc.ChosenStrategy.sStrategyId, - sStatus = Proc.ChosenStrategy.Result.sStatus, - nCompletionIndex = Proc.ChosenStrategy.Result.nCompletionIndex, - dCompositeRating = Proc.ChosenStrategy.Result.dCompositeRating, - sInfo = Proc.ChosenStrategy.Result.sInfo + sStrategyName = sStrategyId, + sStatus = sStatus, + nCompletionIndex = nCompletionIndex, + dCompositeRating = dCompositeRating, + sInfo = sInfo }, AvailableStrategies = BeamLib.TableCopyDeep( Proc.AvailableStrategies) } @@ -1102,9 +1122,10 @@ local function CalculateMachinings( vProc, Part, nInitialRotation) bAreAllApplyOk = false end end - -- scrivo risultato in tabella globale - AddFeatureResultToGlobalList( Proc, nCurrRotation) end + -- scrivo risultato in tabella globale + -- TODO serve un modo per aggiungere anche le feature non lavorabili (no strategie disponibili); vengono scartate al Collect + AddFeatureResultToGlobalList( Proc, nCurrRotation) end -- ripristino pezzo in posizione originale