This commit is contained in:
luca.mazzoleni
2026-01-13 13:35:04 +01:00
2 changed files with 30 additions and 23 deletions
+1 -2
View File
@@ -775,8 +775,7 @@ if bToProcess then
end
end
-- se scarico a caduta (-101, -102) le lavorazioni dopo separazione vanno disattivate
-- TODO: se scarico a caduta (-101, -102) le lavorazioni dopo separazione vanno disattivate. Scrivere info feature incompleta su quelle feature
-- Salvo il progetto
EgtSaveFile( sNgeFile)
+29 -21
View File
@@ -617,6 +617,7 @@ local function CollectFeatures( Part, dRotIndex)
local nDo = EgtGetInfo( ProcId, 'DO', 'i') or 1
if nGrp and nPrc and nDo == 1 then
local Proc = {}
Proc.isVirtualProc = nInd == 1 -- feature non presente in lista originale BTL ma aggiunta da automatismo
Proc.idPart = Part.id
Proc.idRaw = Part.idRaw
Proc.nIndexPartInParts = Part.nIndexInParts
@@ -783,8 +784,8 @@ 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
-- verifico se il taglio aggiunto manualmente può essere saltato perchè nella stessa posizione c'è un altro taglio di testa
if ID.IsHeadCut( Proc) and ( ID.IsHeadCut( ProcB) and EgtGetInfo( ProcB.id, 'HEAD_ADD_CUT', 'i') == 1) then
-- se entrambi tagli di testa, si tiene sempre il primo ( ma non quello aggiunto dall'automatismo)
if ( ID.IsHeadCut( Proc) and not EgtGetInfo( Proc.id, 'HEAD_ADD_CUT', 'i')) and ID.IsHeadCut( ProcB) then
if not Proc.SlaveProcIndexes then
Proc.SlaveProcIndexes = {}
end
@@ -792,8 +793,8 @@ local function GetFeatureInfoAndDependency( vProcSingleRot, Part)
ProcB.nIndexMasterProc = i
ProcB.nFlg = 0
end
-- verifico se il taglio aggiunto manualmente può essere saltato perchè nella stessa posizione c'è un altro taglio di coda
if ID.IsTailCut( Proc) and ( ID.IsTailCut( ProcB) and EgtGetInfo( ProcB.id, 'HEAD_ADD_CUT', 'i') == 1) then
-- se entrambi tagli di coda, si tiene sempre il primo ( ma non quello aggiunto dall'automatismo)
if ( ID.IsTailCut( Proc) and not EgtGetInfo( Proc.id, 'HEAD_ADD_CUT', 'i')) and ID.IsTailCut( ProcB) then
if not Proc.SlaveProcIndexes then
Proc.SlaveProcIndexes = {}
end
@@ -1071,6 +1072,7 @@ local function AddFeatureResultToGlobalList( Proc, OptionalParameters)
local dCompletionIndex
local dCompositeRating
local sInfo
local sApplyInfo
if not OptionalParameters then
OptionalParameters = {}
@@ -1078,13 +1080,19 @@ local function AddFeatureResultToGlobalList( Proc, OptionalParameters)
local nRotation = OptionalParameters.nRotation or 1
if Proc.nIndexMasterProc then
-- se è una feature non presente in elenco ed è saltata perchè lavorata da un'altra feature, non si fa passare dai RESULT.
-- se non avesse una master associata, allora risulterà come messaggio su pezzo
if Proc.isVirtualProc then
return
end
local ChosenStrategyTable = PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexMasterProc].ChosenStrategy
if ChosenStrategyTable then
sStrategyId = ChosenStrategyTable.sStrategyId
sStatus = ChosenStrategyTable.Result.sStatus
dCompletionIndex = ChosenStrategyTable.Result.dCompletionIndex
dCompositeRating = ChosenStrategyTable.Result.dCompositeRating
sInfo = ChosenStrategyTable.Result.sInfo
local idFeature = PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexMasterProc].idFeature
sApplyInfo = 'Skipped. Feature machined: ' .. EgtNumToString( idFeature)
end
elseif Proc.ChosenStrategy then
sStrategyId = Proc.ChosenStrategy.sStrategyId
@@ -1108,7 +1116,8 @@ local function AddFeatureResultToGlobalList( Proc, OptionalParameters)
sStatus = sStatus,
dCompletionIndex = dCompletionIndex,
dCompositeRating = dCompositeRating,
sInfo = sInfo
sInfo = sInfo,
sApplyInfo = sApplyInfo
}
}
-- scrivo le strategie disponibili solo se ne esistono
@@ -1330,7 +1339,6 @@ local function GetBestCombination( ListToCompare, Part)
end
end
end
end
end
end
@@ -1448,14 +1456,14 @@ local function GetCombinationListFromMatrix( ProcessingsOnPart, PartInfo)
-- ciclo su tutte le feature, ad eccezione dei tagli testa/coda che dipendono dal risultato delle altre
-- tagli testa e coda vengono aggiunti sempre alla fine
for nProc = 1, #ProcessingsOnPart.Rotation[1] do
if not ID.IsHeadCut( ProcessingsOnPart.Rotation[1][nProc]) and not ID.IsTailCut( ProcessingsOnPart.Rotation[1][nProc]) then
-- Si controlla sempre la rotazione 1 perchè la dipendenza di una feature da un'altra non dipende dalla rotazione
-- se feature disattivata perchè eseguita da master a lei associata dichiaro comunque eseguita
if ProcessingsOnPart.Rotation[1][nProc].nFlg == 0 and ProcessingsOnPart.Rotation[1][nProc].nIndexMasterProc then
ProcessingsOnPart.Rotation[1][nProc].nIndexRotation = nUnloadPos
table.insert( SingleCombination.Rot0, ProcessingsOnPart.Rotation[1][nProc])
SingleCombination.nComplete = SingleCombination.nComplete + 1
else
-- Si controlla sempre la rotazione 1 perchè la dipendenza di una feature da un'altra non dipende dalla rotazione
-- se feature disattivata perchè eseguita da master a lei associata dichiaro comunque eseguita
if ProcessingsOnPart.Rotation[1][nProc].nFlg == 0 and ProcessingsOnPart.Rotation[1][nProc].nIndexMasterProc then
ProcessingsOnPart.Rotation[1][nProc].nIndexRotation = nUnloadPos
table.insert( SingleCombination.Rot0, ProcessingsOnPart.Rotation[1][nProc])
SingleCombination.nComplete = SingleCombination.nComplete + 1
else
if not ID.IsHeadCut( ProcessingsOnPart.Rotation[1][nProc]) and not ID.IsTailCut( ProcessingsOnPart.Rotation[1][nProc]) then
-- ciclo sulle rotazioni
local nNextRot = nUnloadPos
local nOffsetIndex = EgtIf( SingleCombination.bPartInCombiIsInverted, 4, 0)
@@ -1506,12 +1514,12 @@ local function GetCombinationListFromMatrix( ProcessingsOnPart, PartInfo)
table.insert( SingleCombination.Rot0, ProcessingsOnPart.Rotation[nUnloadPos+nOffsetIndex][nProc])
SingleCombination.nNotExecute = SingleCombination.nNotExecute + 1
end
end
else
if ID.IsHeadCut( ProcessingsOnPart.Rotation[1][nProc]) then
SingleCombination.nIndexHeadCutInVProc = nProc
elseif ID.IsTailCut( ProcessingsOnPart.Rotation[1][nProc]) then
SingleCombination.nIndexTailCutInVProc = nProc
else
if ID.IsHeadCut( ProcessingsOnPart.Rotation[1][nProc]) then
SingleCombination.nIndexHeadCutInVProc = nProc
elseif ID.IsTailCut( ProcessingsOnPart.Rotation[1][nProc]) then
SingleCombination.nIndexTailCutInVProc = nProc
end
end
end
end