- update versione minima Cam5

- in BeamExec corretto il calcolo di nCycles: ora il calcolo dell'inversione si fa solo se richiesto
- in BeamExec rimossa cancellazione entità temporanee: si mette tutto nel gruppo idTemp; adeguate le funzioni che creano geometrie temporanee
- in MachiningLib Check2DBladeCollision migliorata e ultimata: da testare
This commit is contained in:
luca.mazzoleni
2025-11-04 17:40:48 +01:00
parent ddff655240
commit d9d505fc44
7 changed files with 94 additions and 97 deletions
+4 -16
View File
@@ -1205,7 +1205,8 @@ function BeamExec.GetProcessings( PARTS, bCalcBestPieceUnloadPosition)
if not PARTS[nPart].id and PARTS[nPart].b3Raw:getDimX() < BeamData.dMinRaw then break end
local vProcRot = {}
local nCycles = EgtIf( bCalcBestPieceUnloadPosition, 2, 1) -- se è prerotazione, oltre al ciclo normale, si devono verificare anche invertiti
-- se è prerotazione, oltre al ciclo normale, si devono verificare anche invertiti
local nCycles = EgtIf( bCalcBestPieceUnloadPosition and PARTS[nPart].GeneralParameters.GEN_sPiecesLoadingPosition ~= 'BTL_POSITION', 2, 1)
-- per ogni inversione
for nInvertIndex = 1, nCycles do
-- per ogni rotazione
@@ -1529,7 +1530,7 @@ end
function BeamExec.GetCombinationMatrix( PARTS, bCalcBestPieceUnloadPosition)
-- ricerca strategia di lavorazione per ogni pezzo e applicazione lavorazioni
for nPart = 1, #PARTS do
local nCycles = EgtIf( bCalcBestPieceUnloadPosition, 2, 1)
local nCycles = EgtIf( bCalcBestPieceUnloadPosition and PARTS[nPart].GeneralParameters.GEN_sPiecesLoadingPosition ~= 'BTL_POSITION', 2, 1)
-- per ogni inversione
for nInvertIndex = 1, nCycles do
-- calcolo della migliore strategia per ogni rotazione del pezzo
@@ -1703,21 +1704,8 @@ function BeamExec.ProcessMachinings( PARTS)
bAllStrategiesApplied = false
MACHININGS, bAllStrategiesApplied = CalculateMachinings( vProcHeadTail, PARTS[nPart], MatrixResult.nInitialPosition)
-- cancellazione entità create ma non usate
-- TODO funzione?
local idAddGroup = BeamLib.GetAddGroup( PARTS[nPart].id)
local idCurrentEntity = EgtGetFirstInGroup( idAddGroup or GDB_ID.NULL)
while idCurrentEntity do
if EgtGetLevel( idCurrentEntity) == GDB_LV.TEMP then
local idEntityToDelete = idCurrentEntity
idCurrentEntity = EgtGetNext( idCurrentEntity)
EgtErase( idEntityToDelete)
else
idCurrentEntity = EgtGetNext( idCurrentEntity)
end
end
-- ordinamento lavorazioni
-- TODO sostituire con sorting Egt
-- TODO completare ordinamento. Mancano le dipendenze.
-- TODO la FinalizeSorting andrebbe rimossa e usato un sorting che non viola le dipendenze
MACHININGS = MachiningLib.PrepareMachiningsForSorting( PARTS[nPart])