From 969f144d5cf834190f49af77aaf4fdee6287cefe Mon Sep 17 00:00:00 2001 From: DarioS Date: Fri, 28 Jan 2022 15:12:03 +0100 Subject: [PATCH] =?UTF-8?q?DataBeam=20:=20-=20in=20travi=20con=20scarico?= =?UTF-8?q?=20a=20caduta=20aggiunta=20possibilit=C3=A0=20di=20taglio=20par?= =?UTF-8?q?ziale=20obliquo=20in=20coda=20(prima=20versione).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/BeamExec.lua | 14 ++++++++++---- LuaLibs/ProcessCut.lua | 18 ++++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 52b215e..ef3aa14 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -310,6 +310,11 @@ end local function IsTailFeature( Proc, b3Raw, dCurrOvmH) -- feature sempre di testa o coda per il gruppo (se non troppo lunga) if Proc.Grp == 1 or Proc.Grp == 2 then + -- se pezzo corto (quindi a caduta) e in coda, provo a cambiare tipo + if BD.ADVANCE_TAIL_CUT and Proc.Prc == 10 and b3Raw:getDimX() < BD.LEN_SHORT_PART and Proc.Box:getCenter():getX() < b3Raw:getCenter():getX() - 0.5 * dCurrOvmH then + return false, true + end + -- standard return ( Proc.Box:getCenter():getX() < b3Raw:getCenter():getX() - 0.5 * dCurrOvmH and Proc.Box:getDimX() < BD.MAX_LEN_HTFEA) end -- feature sempre di testa o coda nonostante il gruppo @@ -347,7 +352,8 @@ local function PrintFeatures( vProc, b3Raw) local Proc = vProc[i] local sOut = string.format( ' Id=%3d Grp=%1d Prc=%3d TC=%2d/%d Flg=%2d Down=%s Side=%s Head=%s Tail=%s Fcse=%1d,%1d Diam=%.2f Fct=%2d Box=%s', Proc.Id, Proc.Grp, Proc.Prc, Proc.TaskId, Proc.CutId, - Proc.Flg, EgtIf( Proc.Down, 'T', 'F'), EgtIf( Proc.Side, 'T', 'F'), EgtIf( Proc.Head, 'T', 'F'), EgtIf( Proc.Tail, 'T', 'F'), + Proc.Flg, EgtIf( Proc.Down, 'T', 'F'), EgtIf( Proc.Side, 'T', 'F'), + EgtIf( Proc.Head, 'T', 'F'), EgtIf( Proc.Tail, 'T', EgtIf( Proc.AdvTail, 'A', 'F')), Proc.Fcs, Proc.Fce, Proc.Diam, Proc.Fct, tostring( Proc.Box)) -- info speciali per Block Haus Half Lap if Proc.Prc == 37 then @@ -391,7 +397,7 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH) Proc.Box = EgtGetBBoxGlob( ProcId, GDB_BB.STANDARD) if Proc.Box and not Proc.Box:isEmpty() then Proc.Head = IsHeadFeature( Proc, b3Raw, dCurrOvmH) - Proc.Tail = IsTailFeature( Proc, b3Raw, dCurrOvmH) + Proc.Tail, Proc.AdvTail = IsTailFeature( Proc, b3Raw, dCurrOvmH) table.insert( vProc, Proc) -- se foro if Drill.Identify( Proc) then @@ -401,8 +407,8 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH) if Drill.Split( Proc, b3Raw) then -- aggiorno flags prima parte foro (dati tabelle sempre per riferimento) Proc.Flg = 2 - Proc.Head = IsHeadFeature( Proc, b3Raw, dCurrOvmH) - Proc.Tail = IsTailFeature( Proc, b3Raw, dCurrOvmH) + Proc.Head = Drill.IsHeadFeature( Proc, b3Raw, dCurrOvmH) + Proc.Tail = Drill.IsTailFeature( Proc, b3Raw, dCurrOvmH) -- definisco dati seconda parte local Proc2 = {} Proc2.Id = ProcId diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index f120cce..bcdfc97 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -317,7 +317,7 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b -- verifico se necessari tagli supplementari EgtOutLog( string.format( 'MaxDepth=%.1f MaxVertDepth=%.1f CutH=%.1f CutV=%.1f', dMaxDepth, dMaxVertDepth, dCutH, dCutV), 3) local vCuts = {} - if dCutH > dMaxDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC or dCutV > dMaxVertDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC then + if not Proc.AdvTail and dCutH > dMaxDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC or dCutV > dMaxVertDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC then local ptExtra, vtExtra local bAutoCalcSurf = true if bFillAreaPiece or bFillTail then @@ -475,7 +475,13 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b vtOrthoO = EgtIf( vtN:getY() > 0.02, Y_AX(), -Y_AX()) end -- taglio - local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, vtOrthoO, dNzLimDwnUp, BD.CUT_EXTRA, BD.CUT_SIC, 0, 0, 0, nil, b3Raw) + local dVzLimDwnUp = dNzLimDwnUp + local dCutExtra = BD.CUT_EXTRA + if Proc.AdvTail then + dVzLimDwnUp = 0 + dCutExtra = -10 + end + local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, vtOrthoO, dVzLimDwnUp, dCutExtra, BD.CUT_SIC, 0, 0, 0, nil, b3Raw) if not bOk then return bOk, sErr end @@ -524,7 +530,7 @@ local function MakeFromDown( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead) -- verifico se necessari tagli supplementari EgtOutLog( string.format( 'MaxDepth=%.1f MaxVertDepth=%.1f CutH=%.1f CutV=%.1f', dMaxDepth, dMaxVertDepth, dCutH, dCutV), 3) local vCuts = {} - if dCutH > dMaxDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC or dCutV > dMaxVertDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC then + if not Proc.AdvTail and dCutH > dMaxDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC or dCutV > dMaxVertDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC then local ptExtra, vtExtra local bAutoCalcSurf = true if bFillAreaPiece or bFillTail then @@ -665,7 +671,11 @@ local function MakeFromDown( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead) end end -- taglio (limite Vz Down Up messo a -2 per non farlo mai intervenire) - local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, vtOrthoO, -2, BD.CUT_EXTRA, BD.CUT_SIC, 0, 0, 0, nil, b3Raw) + local dCutExtra = BD.CUT_EXTRA + if Proc.AdvTail then + dCutExtra = -10 + end + local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, vtOrthoO, -2, dCutExtra, BD.CUT_SIC, 0, 0, 0, nil, b3Raw) if not bOk then return bOk, sErr end