From ffc119d46152ea96c6fa6ade9ca1d1b771612129 Mon Sep 17 00:00:00 2001 From: Annamaria Sassi Date: Tue, 1 Sep 2026 11:06:48 +0200 Subject: [PATCH] Window : - modifica offset in x per profilo di testa obliquo --- CAMAuto/LuaLibs/WinExec.lua | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/CAMAuto/LuaLibs/WinExec.lua b/CAMAuto/LuaLibs/WinExec.lua index efa3f47..647b790 100644 --- a/CAMAuto/LuaLibs/WinExec.lua +++ b/CAMAuto/LuaLibs/WinExec.lua @@ -543,17 +543,22 @@ function WinExec.ProcessFeatures( PARTS) local maxOffsetX = {} for i = 1, #PARTS do - --maxOffsetX[i] = 99 - PARTS[i].RawOffset.dOverMatLeft - PARTS[i].OffsetPartToRaw.X maxOffsetX[i] = 80 - PARTS[i].RawOffset.dOverMatLeft end for i = 1, #MACHININGS do if MACHININGS[i].AuxiliaryData.nPhase == 1 then -- aggiunge effettivamente la lavorazione e restituisce gli ingombri - local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- TODO ingombro lavorazione mi restituisce dati sbagliati. C'è un riferimento? + local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- 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 = max( b3MachEncumbrance:getMax():getX() - PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart]) + -- profilo di testa obliquo + if b3MachEncumbrance:getMax():getX() ~= b3MachEncumbrance:getMin():getX() and b3MachEncumbrance:getMax():getX() > b3MachEncumbrance:getMin():getX() then + local diff = b3MachEncumbrance:getMax():getX() - b3MachEncumbrance:getMin():getX() + PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase1.dOffsetX = max( b3MachEncumbrance:getMax():getX() - PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart]) + diff + else + PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase1.dOffsetX = max( b3MachEncumbrance:getMax():getX() - PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart]) + end end end end @@ -571,7 +576,6 @@ function WinExec.ProcessFeatures( PARTS) end for i = 1, #PARTS do - --maxOffsetX[i] = 99 - PARTS[i].RawOffset.dOverMatRight - PARTS[i].OffsetPartToRaw.X maxOffsetX[i] = 80 - PARTS[i].RawOffset.dOverMatRight end -- scrivo lavorazioni seconda fase @@ -580,10 +584,16 @@ function WinExec.ProcessFeatures( PARTS) for i = 1, #MACHININGS do if MACHININGS[i].AuxiliaryData.nPhase == 2 then -- aggiunge effettivamente la lavorazione - local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- TODO ingombro lavorazione mi restituisce dati sbagliati. C'è un riferimento? + local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- 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 = max( PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - b3MachEncumbrance:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart]) + -- profilo di testa obliquo + if b3MachEncumbrance:getMin():getX() ~= b3MachEncumbrance:getMax():getX() then + local diff = b3MachEncumbrance:getMax():getX() - b3MachEncumbrance:getMin():getX() + PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase2.dOffsetX = max( PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - b3MachEncumbrance:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart]) + diff + else + PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase2.dOffsetX = max( PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - b3MachEncumbrance:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart]) + end end end end