From b156c2d282990c7eb165f8c013c06aa7ef79beb7 Mon Sep 17 00:00:00 2001 From: Annamaria Sassi Date: Fri, 29 May 2026 12:28:23 +0200 Subject: [PATCH] CAMAuto : - gestione offset in X tenendo conto dei tagli obliqui. --- CAMAuto/LuaLibs/WinExec.lua | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/CAMAuto/LuaLibs/WinExec.lua b/CAMAuto/LuaLibs/WinExec.lua index b5cb390..0aec515 100644 --- a/CAMAuto/LuaLibs/WinExec.lua +++ b/CAMAuto/LuaLibs/WinExec.lua @@ -205,7 +205,7 @@ function WinExec.AddApplyResultToGlobalList( nErr, idCut, sMsg) end ------------------------------------------------------------------------------------------------------------- --- *** Inserimento delle lavorazioni nelle travi *** +-- *** Inserimento delle lavorazioni nei pezzi *** ------------------------------------------------------------------------------------------------------------- local function CollectFeatures( vProc, Part, nIndexPart) @@ -488,7 +488,7 @@ local function UpdateRawPosition( PARTS) end ------------------------------------------------------------------------------------------------------------- -local function CheckAndMovePawPart( nIdRawToMove, vtMove) +local function CheckAndMoveRawPart( nIdRawToMove, vtMove) EgtMoveRawPart( nIdRawToMove, vtMove) end @@ -506,7 +506,7 @@ function WinExec.ProcessFeatures( PARTS) -- si recuperano tutte le feature di tutti i pezzi in una lista unica for nPart = 1, #PARTS do - -- recupero le feature di lavorazione della trave + -- recupero le feature di lavorazione dei pezzi vProc = CollectFeatures( vProc, PARTS[nPart], nPart) -- recupero informazioni ausiliarie feature e dipendenze tra feature dello stesso pezzo @@ -525,6 +525,11 @@ function WinExec.ProcessFeatures( PARTS) -- ordina le lavorazioni OrderMachining( MACHININGS) + + local maxOffsetX = {} + for i = 1, #PARTS do + maxOffsetX[i] = 99 - PARTS[i].OffsetPartToRaw.X + end for i = 1, #MACHININGS do if MACHININGS[i].AuxiliaryData.nPhase == 1 then @@ -532,7 +537,7 @@ function WinExec.ProcessFeatures( PARTS) local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- TODO ingombro lavorazione mi restituisce dati sbagliati. C'è un riferimento? -- se feature di testa, sposto testa in base a ingombro lavorazione if MACHININGS[i].Proc.bHeadProfile and b3MachEncumbrance then - PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase1.dOffsetX = b3MachEncumbrance:getMax():getX() - PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMin():getX() + 5 + PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase1.dOffsetX = min( b3MachEncumbrance:getMax():getX() - PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart]) end end end @@ -545,7 +550,7 @@ function WinExec.ProcessFeatures( PARTS) -- TODO controllare calcolo ingombro local vtMove = Vector3d( - PARTS[i].DispOffsets.Phase1.dOffsetX, 0, 0) if vtMove ~= V_NULL() then - CheckAndMovePawPart( PARTS[i].idRaw, vtMove) + CheckAndMoveRawPart( PARTS[i].idRaw, vtMove) end end @@ -558,7 +563,7 @@ function WinExec.ProcessFeatures( PARTS) local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- TODO ingombro lavorazione mi restituisce dati sbagliati. C'è un riferimento? -- se feature di testa, sposto testa in base a ingombro lavorazione if MACHININGS[i].Proc.bHeadProfile and b3MachEncumbrance then - PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase2.dOffsetX = PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - b3MachEncumbrance:getMin():getX() + 5 + PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase2.dOffsetX = min( PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - b3MachEncumbrance:getMin():getX() + 5, 94) end end end @@ -567,7 +572,7 @@ function WinExec.ProcessFeatures( PARTS) -- TODO controllare calcolo ingombro local vtMove = Vector3d( PARTS[i].DispOffsets.Phase2.dOffsetX, 0, 0) if vtMove ~= V_NULL() then - CheckAndMovePawPart( PARTS[i].idRaw, vtMove) + CheckAndMoveRawPart( PARTS[i].idRaw, vtMove) end end