Merge branch 'Feature/LapJointAsLong2CutFix' into develop

This commit is contained in:
andrea.villa
2023-10-25 17:12:28 +02:00
2 changed files with 43 additions and 4 deletions
+17 -2
View File
@@ -79,6 +79,7 @@
-- 2023/09/27 In MakeMoreFaces e Classify refactoring della gestione scanalatura chiusa.
-- 2023/09/27 In MakeLongMoreFaces aggiunto Topology.Classify alla Proc creata.
-- 2023/10/03 In MakePocket aggiunto messaggio in caso si rovini il pezzo successivo.
-- 2023/10/25 In LapJoint 2 facce longitudinali faccio di lama solo se taglio completamente. Altrimenti fresa.
-- Tabella per definizione modulo
local ProcessLapJoint = {}
@@ -5743,7 +5744,14 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
-- leggo i parametri Q per utilizzare la fresa di fianco e/o lama
local nUseSideTool = EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'i') or 0
local bUseBlade = EgtGetInfo( Proc.Id, Q_ANTISPLINT_TYPE, 'i') == 1
return Long2Cut.Make( Proc, nPhase, nRawId, nPartId, bUseBlade, nUseSideTool)
local bOk, sMyWarn = Long2Cut.Make( Proc, nPhase, nRawId, nPartId, bUseBlade, nUseSideTool)
-- se non sono riuscito a farlo di lama, riprovo con la fresa
if not bOk and bUseBlade then
bUseBlade = false
return Long2Cut.Make( Proc, nPhase, nRawId, nPartId, bUseBlade, nUseSideTool)
else
return bOk, sMyWarn
end
-- prima faccia terminale
elseif b3Fac1:getDimX() < 1 and abs( vtN2:getX()) < GEO.EPS_SMALL then
-- la faccia 0 deve essere quella lunga
@@ -5827,7 +5835,14 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
if Proc.Box:getDimX() > 0.8 * b3Solid:getDimX() and
abs( b3Fac1:getDimX() - b3Fac2:getDimX()) < 50 and abs( b3Fac1:getCenter():getX() - b3Fac2:getCenter():getX()) < 50 then
local nUseSideTool = EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'i') or 0
return Long2Cut.Make( Proc, nPhase, nRawId, nPartId, bUseBlade, nUseSideTool)
local bOk, sMyWarn = Long2Cut.Make( Proc, nPhase, nRawId, nPartId, bUseBlade, nUseSideTool)
-- se non sono riuscito a farlo di lama, riprovo con la fresa
if not bOk and bUseBlade then
bUseBlade = false
return Long2Cut.Make( Proc, nPhase, nRawId, nPartId, bUseBlade, nUseSideTool)
else
return bOk, sMyWarn
end
-- altrimenti
else
-- verifico se da lavorare con testa da sotto
+26 -2
View File
@@ -19,6 +19,7 @@
-- 2023/03/23 Correzione per caso con doppia lama da sotto.
-- 2023/06/07 Sistemazione SCC per macchina TURN
-- 2023/10/24 Migliorata spezzatura taglio passante con due spezzoni
-- 2023/10/25 Se effettivamente un taglio longitudinale e lama non taglia completamente, limito la lavorazione. Altrimenti esco.
-- Tabella per definizione modulo
local ProcessLong2Cut = {}
@@ -817,6 +818,18 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
end
-- altrimenti concavo
else
-- se effettivamente un taglio longitudinale e lama non taglia completamente, limito la lavorazione. Altrimenti esco.
for k = 1, #vOrd do
if vWidth[vOrd[k]] + BD.CUT_SIC > dMaxDepth then
if not( ProcessLong2Cut.Identify( Proc)) then
return false
else
local sWarn2 = 'Warning in ' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) .. ' : elevation (' .. EgtNumToString( vWidth[vOrd[k]], 1) .. ') bigger than max saw depth (' .. EgtNumToString( dMaxDepth, 1) .. ')'
if not sWarn then sWarn = '' end
sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2)
end
end
end
-- si percorrono i lati alto e basso della faccia
for i = 1, nC do
-- Posizione braccio portatesta
@@ -857,16 +870,27 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
-- ciclo sulle passate
local dOffset
local dLioPerp
if j == 1 then -- il primo taglio lo faccio completo se angolo interno maggiore di 90
local dMinOffsBigFace = max( vWidth[vOrd[j]] - dMaxDepth, 0)
-- se la faccia è più grande del massimo materiale lama, allora limito lavorazione
if dMinOffsBigFace > 0 then
dOffset = dMinOffsBigFace
-- se angolo interno inferiore di 90° calcolo l'arretramento della lama + un piccolo delta di 0.3
if dAng < - ( 90 + 10 * GEO.EPS_SMALL) then
elseif dAng < - ( 90 + 10 * GEO.EPS_SMALL) then
dOffset = 0.3 + ((dToolThick* vtN[vOrd[1]]) * vtN[vOrd[2]] * vtN[vOrd[2]]):len()
else
dOffset = 0
end
dLioPerp = vWidth[vOrd[j]] + BD.CUT_SIC
else -- il secondo ridotto della distanza minima e della componente spessore della lama
dOffset = dDimStrip + ((dToolThick* vtN[vOrd[1]]) - (dToolThick* vtN[vOrd[1]]) * vtN[vOrd[2]] * vtN[vOrd[2]]):len()
local dMinOffsBigFace = max( vWidth[vOrd[j]] - dMaxDepth, 0)
-- se la faccia è più grande del massimo materiale lama, allora limito lavorazione
if dMinOffsBigFace > 0 then
dOffset = dMinOffsBigFace
else
dOffset = dDimStrip + ((dToolThick* vtN[vOrd[1]]) - (dToolThick* vtN[vOrd[1]]) * vtN[vOrd[2]] * vtN[vOrd[2]]):len()
end
dLioPerp = vWidth[vOrd[j]] - dOffset + BD.CUT_SIC
end
local dLioTang = 0