diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index b230700..9d13543 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -660,6 +660,8 @@ local function CollectFeatures( Part) end -- calcolo riduzione lunghezza pinzabile testa/coda Proc.NotClampableLength = FeatureLib.CalculateFeatureNotClampableLengths( Proc, Part) + -- si verifica se la feature, lavorata in questa fase, compromette lettura misura laser + Proc.bHindersLaserMeasure = FeatureLib.CalculateFeatureHindersLaserMeasure( Proc, Part) -- altrimenti errore (serviva riconoscimento topologico, ma non è stato possibile farlo) else EgtOutLog( ' Feature ' .. tostring( Proc.idFeature) .. ' : NO available strategies') @@ -1248,12 +1250,15 @@ local function GetBestResultFromCombinationsMatrix( ProcessingsOnPart, PartInfo) for nRotation = 1, 3 do -- se rotazione abilitata da combinazione if string.sub( PartInfo.CombinationList[i].sBitIndexCombination, nNextRot, nNextRot) == '1' then - -- controllo se è stata scelta una strategia - if ProcessingsOnPart.Rotation[nNextRot][nProc].ChosenStrategy then - local Proc = {} - Proc.nRotation = nNextRot - table.insert( Proc, ProcessingsOnPart.Rotation[nNextRot][nProc]) - table.insert( ResultsList, Proc) + -- se è ultima rotazione oppure se feature non impatta su misura laser, allora è valida e può essere effettivamente considerata + if nNextRot == nUnloadPos or not( ProcessingsOnPart.Rotation[nNextRot][nProc].bHindersLaserMeasure) then + -- controllo se è stata scelta una strategia + if ProcessingsOnPart.Rotation[nNextRot][nProc].ChosenStrategy then + local Proc = {} + Proc.nRotation = nNextRot + table.insert( Proc, ProcessingsOnPart.Rotation[nNextRot][nProc]) + table.insert( ResultsList, Proc) + end end end nNextRot = EgtIf( nNextRot + 1 > 4, nNextRot + 1 - 4, nNextRot + 1) diff --git a/LuaLibs/FeatureLib.lua b/LuaLibs/FeatureLib.lua index 5123b25..48d6738 100644 --- a/LuaLibs/FeatureLib.lua +++ b/LuaLibs/FeatureLib.lua @@ -510,6 +510,17 @@ function FeatureLib.GetFeatureVolume( Proc, Part) return dProcVolume end +------------------------------------------------------------------------------------------------------------- +-- funzione che verifica se la feature, lavorata in questa fase, compromette lettura misura laser +function FeatureLib.CalculateFeatureHindersLaserMeasure( Proc, Part) + local bFeatureHindersLaserMeasure = false + -- se la feature è aperta frontalmente, posteriormente e di testa, allora potrebbe impattare sulla misura laser, controllo caso per caso + if Proc.AffectedFaces.bRight and Proc.AffectedFaces.bFront and Proc.AffectedFaces.bBack then + bFeatureHindersLaserMeasure = true + end + return bFeatureHindersLaserMeasure +end + ------------------------------------------------------------------------------------------------------------- -- TODO funzione copiata direttamente da automatismo vecchio, da migliorare / completare function FeatureLib.CalculateFeatureNotClampableLengths( Proc, Part)