Migliorie calcolo prerotazioni
This commit is contained in:
+16
-9
@@ -1197,7 +1197,7 @@ local function CalculateMachinings( vProc, Part, nInitialRotation)
|
||||
else
|
||||
local nOffsetIndex = EgtIf( Part.bPartInCombiIsInverted, 4, 0)
|
||||
-- se non esiste una strategia scelta (non dovrebbe mai succedere) cancello da lista generale
|
||||
PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation+nOffsetIndex][Proc.nIndexInVProc].ChosenStrategy = nil
|
||||
PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexInVProc].ChosenStrategy = nil
|
||||
|
||||
-- TODO dare messaggio che la feature non è stata eseguita nonostante la presenza di strategie disponibili
|
||||
|
||||
@@ -1771,7 +1771,8 @@ function BeamExec.ProcessMachinings( PARTS, bIsFlipRot)
|
||||
end
|
||||
|
||||
|
||||
-- TODO VERIFICARE ROTAZIONI!!!
|
||||
local nInitialPosition = MatrixResult.nInitialPosition
|
||||
-- PREROTAZIONE PEZZO
|
||||
if MatrixResult.nInitialPosition ~= 1 or PARTS[nPart].bPartInCombiIsInverted then
|
||||
-- si toglie il pezzo dal grezzo per poter fare operazioni
|
||||
EgtRemovePartFromRawPart( PARTS[nPart].id)
|
||||
@@ -1780,22 +1781,27 @@ function BeamExec.ProcessMachinings( PARTS, bIsFlipRot)
|
||||
if bIsFlipRot then
|
||||
BEAM.PREROTATE90 = MatrixResult.nInitialPosition - 1
|
||||
BEAM.PREINVERT = EgtIf( PARTS[nPart].bPartInCombiIsInverted, 1, 0)
|
||||
-- se c'è stata inversione, si inverte il pezzo anche in disegna
|
||||
end
|
||||
|
||||
-- se la soluzione trovata era invertita, dopo aver rimesso pezzo inverto di nuovo
|
||||
-- se c'è stata inversione, si inverte il pezzo anche in disegna
|
||||
if PARTS[nPart].bPartInCombiIsInverted then
|
||||
local ptInv = PARTS[nPart].b3PartOriginal:getMin() + Vector3d( PARTS[nPart].b3PartOriginal:getDimX() / 2, PARTS[nPart].b3PartOriginal:getDimY() / 2, 0)
|
||||
EgtRotate( PARTS[nPart].id, ptInv, Z_AX(), 180, GDB_RT.GLOB)
|
||||
PARTS[nPart].bIsInverted = true
|
||||
end
|
||||
|
||||
local ptRot = PARTS[nPart].b3PartOriginal:getMin() + Vector3d( 0, PARTS[nPart].b3PartOriginal:getDimY() / 2, PARTS[nPart].b3PartOriginal:getDimZ() / 2)
|
||||
local nRotationDeg = 90 * ( MatrixResult.nInitialPosition - 1)
|
||||
EgtRotate( PARTS[nPart].id, ptRot, X_AX(), nRotationDeg, GDB_RT.GLOB)
|
||||
-- se c'è una prerotazione, si inverte il pezzo
|
||||
if MatrixResult.nInitialPosition ~= 1 then
|
||||
local ptRot = PARTS[nPart].b3PartOriginal:getMin() + Vector3d( 0, PARTS[nPart].b3PartOriginal:getDimY() / 2, PARTS[nPart].b3PartOriginal:getDimZ() / 2)
|
||||
local nRotationDeg = 90 * ( MatrixResult.nInitialPosition - 1)
|
||||
EgtRotate( PARTS[nPart].id, ptRot, X_AX(), nRotationDeg, GDB_RT.GLOB)
|
||||
end
|
||||
|
||||
-- si rimette il pezzo nel grezzo
|
||||
EgtAddPartToRawPart( PARTS[nPart].id, {0,0,0}, PARTS[nPart].idRaw)
|
||||
|
||||
MatrixResult.nInitialPosition = 1
|
||||
-- dico che il pezzo originale è nella posizione iniziale come arriva da BTL ( è stato appena ruotato qui sopra)
|
||||
nInitialPosition = 1
|
||||
end
|
||||
|
||||
-- salvo sul PART la posizione di partenza che è stata scelta
|
||||
@@ -1815,7 +1821,6 @@ function BeamExec.ProcessMachinings( PARTS, bIsFlipRot)
|
||||
-- creazione effettiva delle lavorazioni
|
||||
MACHININGS.Info = {}
|
||||
local nCurrPosition = 1
|
||||
local nInitialPosition = MatrixResult.nInitialPosition
|
||||
-- se c'è almeno una lavorazione in posizionamento con trave ribaltata
|
||||
if MatrixResult.bSomeFeatureDown then
|
||||
local nRotation = EgtIf( nInitialPosition + 2 > 4, nInitialPosition + 2 - 4, nInitialPosition + 2)
|
||||
@@ -1892,6 +1897,8 @@ function BeamExec.ProcessMachinings( PARTS, bIsFlipRot)
|
||||
if PARTS[nPart].bPartInCombiIsInverted then
|
||||
BeamLib.InvertRawPart( PARTS[nPart], -2)
|
||||
end
|
||||
-- ripristino anche eventuali pre-rotazioni
|
||||
nInitialPosition = nInitialPosition + ( BEAM.PREROTATE90 or 0)
|
||||
-- si ribalta il pezzo in posizione iniziale
|
||||
BeamLib.RotateRawPart( PARTS[nPart], 1 - nInitialPosition)
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user