Completata funzione applicazione lavorazione in fase appropriata. MANCA prerotazione
This commit is contained in:
+47
-23
@@ -1046,7 +1046,7 @@ local function GetProcessingListFromCombination( BestCombination)
|
||||
local vProc = {}
|
||||
local bSomeFeatureDown = false
|
||||
local bSomeFeatureSide = false
|
||||
local nStartPosition = BestCombination.nIndexRotation
|
||||
local nInitialPosition = BestCombination.nIndexRotation
|
||||
|
||||
-- aggiungo processing da fare in fase ribaltata
|
||||
if #BestCombination.Rot180 > 0 then
|
||||
@@ -1073,7 +1073,7 @@ local function GetProcessingListFromCombination( BestCombination)
|
||||
end
|
||||
end
|
||||
|
||||
return vProc, nStartPosition, bSomeFeatureDown, bSomeFeatureSide
|
||||
return vProc, nInitialPosition, bSomeFeatureDown, bSomeFeatureSide
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
@@ -1177,9 +1177,9 @@ local function WriteCombinationLog( CombinationsList, BestCombination)
|
||||
|
||||
EgtOutLog( sLogLine)
|
||||
end
|
||||
EgtOutLog( '----------------------------------------')
|
||||
EgtOutLog( ' BEST ROTATION : ' .. BestCombination.sBitIndexCombination .. ' (' .. BestCombination.nUnloadPos .. ')')
|
||||
EgtOutLog( '---------------------------------------------------------------------------')
|
||||
EgtOutLog( ' BEST ROTATION : ' .. BestCombination.sBitIndexCombination .. ' (' .. BestCombination.nUnloadPos .. ')')
|
||||
EgtOutLog( '---------------------------')
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
@@ -1252,9 +1252,9 @@ local function GetBestResultFromCombinationsMatrix( ProcessingsOnPart)
|
||||
SingleCombination.nComplete = SingleCombination.nComplete + EgtIf( Data.bComplete, 1, 0)
|
||||
SingleCombination.nNotComplete = SingleCombination.nNotComplete + EgtIf( Data.bNotComplete, 1, 0)
|
||||
SingleCombination.nNotExecute = SingleCombination.nNotExecute + EgtIf( Data.bNotExecute, 1, 0)
|
||||
SingleCombination.nIndexRotation = Data.nIndexRotation
|
||||
SingleCombination.nIndexRotation = nUnloadPos
|
||||
else
|
||||
SingleCombination.nIndexRotation = SingleCombination.nNotExecute + 1
|
||||
SingleCombination.nNotExecute = SingleCombination.nNotExecute + 1
|
||||
end
|
||||
end
|
||||
-- aggiungo rotazioni
|
||||
@@ -1276,9 +1276,9 @@ local function GetBestResultFromCombinationsMatrix( ProcessingsOnPart)
|
||||
WriteCombinationLog( CombinationsList, BestCombination)
|
||||
end
|
||||
|
||||
local vFinalProc, nStartPosition, bSomeFeatureDown, bSomeFeatureSide = GetProcessingListFromCombination( BestCombination)
|
||||
local vFinalProc, nInitialPosition, bSomeFeatureDown, bSomeFeatureSide = GetProcessingListFromCombination( BestCombination)
|
||||
|
||||
return vFinalProc, nStartPosition, bSomeFeatureDown, bSomeFeatureSide
|
||||
return vFinalProc, nInitialPosition, bSomeFeatureDown, bSomeFeatureSide
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
@@ -1320,7 +1320,7 @@ function BeamExec.ProcessMachinings( PROCESSINGS, PARTS)
|
||||
PROCESSINGS[nPart].Rotation[dRotIndex] = GetBestStrategy( PROCESSINGS[nPart].Rotation[dRotIndex])
|
||||
end
|
||||
-- si calcola la combinazione di lavorazione migliore
|
||||
local vProc, nStartPosition, bSomeFeatureDown, bSomeFeatureSide = GetBestResultFromCombinationsMatrix( PROCESSINGS[nPart])
|
||||
local vProc, nInitialPosition, bSomeFeatureDown, bSomeFeatureSide = GetBestResultFromCombinationsMatrix( PROCESSINGS[nPart])
|
||||
|
||||
-- debug
|
||||
if EgtGetDebugLevel() >= 1 then
|
||||
@@ -1336,10 +1336,9 @@ function BeamExec.ProcessMachinings( PROCESSINGS, PARTS)
|
||||
|
||||
-- TODO riordinare lavorazioni ottimizzando cambio utensile/spezzone ecc..., mantenendo dipendenze definite prima
|
||||
-- ordino le lavorazioni
|
||||
|
||||
-- MACHININGS = OrderMachining( MACHININGS, PARTS[nPart])
|
||||
-- ruoto il pezzo in caso di cambio di fase finale
|
||||
-- TODO se la posizioen di partenza cambia, devo ruotare il pezzo
|
||||
|
||||
-- TODO se la posizione di partenza cambia, devo ruotare il pezzo!
|
||||
|
||||
-- aggiungo la fase, se non è la prima
|
||||
if nOrd == 1 then
|
||||
@@ -1347,6 +1346,10 @@ function BeamExec.ProcessMachinings( PROCESSINGS, PARTS)
|
||||
else
|
||||
BeamLib.AddPhaseWithRawParts( PARTS[nPart].idRaw, BeamData.ptOriXR, BeamData.dPosXR, 0)
|
||||
end
|
||||
local bAreAllMachiningApplyOk
|
||||
local sErr
|
||||
local bSplitAlreadyExecuted = false
|
||||
local bSplitExecutedOnRot = false
|
||||
local nPhase = EgtGetCurrPhase()
|
||||
local nDispId = EgtGetPhaseDisposition( nPhase)
|
||||
EgtSetInfo( nDispId, 'TYPE', 'START')
|
||||
@@ -1363,16 +1366,26 @@ function BeamExec.ProcessMachinings( PROCESSINGS, PARTS)
|
||||
nRId = EgtGetNextRawPart( nRId)
|
||||
end
|
||||
EgtSetInfo( nDispId, 'ROT', -2)
|
||||
MachiningLib.AddOperations( MACHININGS, PARTS[nPart], 'DOWN')
|
||||
bAreAllMachiningApplyOk, sErr, bSplitExecutedOnRot = MachiningLib.AddOperations( MACHININGS, PARTS[nPart], 'DOWN')
|
||||
bSplitAlreadyExecuted = bSplitAlreadyExecuted or bSplitExecutedOnRot
|
||||
end
|
||||
|
||||
-- se c'è almeno una lavorazione in posizionamento con trave ribaltata
|
||||
if bSomeFeatureSide then
|
||||
|
||||
-- TODO se bSomeFeatureDown = true, allora devo creare altra fase. Altrimenti già creata da prima
|
||||
-- devo sapere se c'è stata separazione, perchè devo scrivere MID o MID2, ritorno info da MachiningLib.AddOperations?
|
||||
|
||||
-- se ci sono state lavorazioni in rotazione precedente devo creare altra fase. Altrimenti già creata da prima
|
||||
if bSomeFeatureDown then
|
||||
BeamLib.AddPhaseWithRawParts( PARTS[nPart].idRaw, BeamData.ptOriXR, BeamData.dPosXR, 0)
|
||||
nPhase = EgtGetCurrPhase()
|
||||
nDispId = EgtGetPhaseDisposition( nPhase)
|
||||
EgtSetInfo( nDispId, 'ORD', nOrd)
|
||||
-- se c'è già stata seoparazione
|
||||
if bSplitAlreadyExecuted then
|
||||
EgtSetInfo( nDispId, 'TYPE', 'MID2')
|
||||
else
|
||||
EgtSetInfo( nDispId, 'TYPE', 'MID')
|
||||
end
|
||||
end
|
||||
-- vettore movimento grezzi per rotazione di 90deg
|
||||
-- TODO rivedere i calcoli. Non son sicuro che serve il bPreMove
|
||||
local dDeltaYZ = EgtGetRawPartBBox( PARTS[nPart].idRaw):getDimY() - EgtGetRawPartBBox( PARTS[nPart].idRaw):getDimZ()
|
||||
local vtMove = Vector3d( 0, dDeltaYZ / 2 * EgtIf( BeamData.RIGHT_LOAD, -1, 1), dDeltaYZ / 2)
|
||||
local bPreMove = dDeltaYZ < 0
|
||||
@@ -1385,12 +1398,23 @@ function BeamExec.ProcessMachinings( PROCESSINGS, PARTS)
|
||||
nRId = EgtGetNextRawPart( nRId)
|
||||
end
|
||||
EgtSetInfo( nDispId, 'ROT', -1)
|
||||
MachiningLib.AddOperations( MACHININGS, PARTS[nPart], 'SIDE')
|
||||
bAreAllMachiningApplyOk, sErr, bSplitExecutedOnRot = MachiningLib.AddOperations( MACHININGS, PARTS[nPart], 'SIDE')
|
||||
bSplitAlreadyExecuted = bSplitAlreadyExecuted or bSplitExecutedOnRot
|
||||
end
|
||||
|
||||
-- se ci sono state lavorazioni in rotazione precedente devo creare altra fase. Altrimenti già creata da prima
|
||||
if bSomeFeatureDown or bSomeFeatureSide then
|
||||
BeamLib.AddPhaseWithRawParts( PARTS[nPart].idRaw, BeamData.ptOriXR, BeamData.dPosXR, 0)
|
||||
nPhase = EgtGetCurrPhase()
|
||||
nDispId = EgtGetPhaseDisposition( nPhase)
|
||||
EgtSetInfo( nDispId, 'ORD', nOrd)
|
||||
-- se c'è già stata seoparazione
|
||||
if bSplitAlreadyExecuted then
|
||||
EgtSetInfo( nDispId, 'TYPE', 'END2')
|
||||
else
|
||||
EgtSetInfo( nDispId, 'TYPE', 'MID')
|
||||
end
|
||||
end
|
||||
|
||||
-- TODO se bSomeFeatureDown or bSomeFeatureSide = true, allora devo creare altra fase. Altrimenti già creata da prima
|
||||
-- devo sapere se c'è stata separazione, perchè devo scrivere END o END2, ritorno info da MachiningLib.AddOperations?
|
||||
BeamLib.AddPhaseWithRawParts( PARTS[nPart].idRaw, BeamData.ptOriXR, BeamData.dPosXR, 0)
|
||||
|
||||
-- aggiunta lavorazioni in ultima fase
|
||||
MachiningLib.AddOperations( MACHININGS, PARTS[nPart], 'STD')
|
||||
|
||||
Reference in New Issue
Block a user