- in BatchProcessNew, in scrittura log txt, gestito caso in cui non sono state trovate strategie (ma al momento non possibile perchè quelle feature sono escluse a priori dal collect)

- in BeamExec -> AddFeatureResultToGlobalList refactoring e aggiunta gestione feature sostituita (ma al momento non possibile per problemi di riferimenti incrociati nella stessa tabella)
This commit is contained in:
luca.mazzoleni
2025-04-27 22:20:58 +02:00
parent d77cdd6c7d
commit dca28cbe1b
2 changed files with 34 additions and 8 deletions
+28 -7
View File
@@ -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