From e57d905b8b440bb3fcce99bcf8124a1e34ab6190 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 6 Apr 2021 21:13:34 +0000 Subject: [PATCH] DataBeam : - correzione tagli con lama per diverso utile verticale/orizzontale su PF - migliorato riconoscimento testa e coda per LapJoint. --- LuaLibs/ProcessCut.lua | 8 ++++---- LuaLibs/ProcessLapJoint.lua | 22 +++++++++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index eab02e4..9547041 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -1,4 +1,4 @@ --- ProcessCut.lua by Egaltech s.r.l. 2021/02/23 +-- ProcessCut.lua by Egaltech s.r.l. 2021/03/31 -- Gestione calcolo singoli tagli di lama per Travi -- Tabella per definizione modulo @@ -316,10 +316,10 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b vtExtra = X_AX() bAutoCalcSurf = false end - vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxDepth - BD.CUT_EXTRA) + vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxVertDepth - BD.CUT_EXTRA) -- se taglio sborda in coda e non è stato inserito nessun taglio a cubetti, lo rilancio con le dimensioni customizzate if ( bFillTail or bCustDiceCut) and #vCuts == 0 then - vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxDepth - BD.CUT_EXTRA, Proc.Box:getDimY()) + vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxVertDepth - BD.CUT_EXTRA, Proc.Box:getDimY()) end end -- se il ProcessCut viene lanciato dal ProcessSawCut e non ci sono tagli a cubetti, esco @@ -531,7 +531,7 @@ local function MakeFromDown( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead) vtExtra = X_AX() bAutoCalcSurf = false end - vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxDepth - BD.CUT_EXTRA) + vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxVertDepth - BD.CUT_EXTRA) end --DC.PrintOrderCut( vCuts) if #vCuts > 0 then diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 0a61554..cb10951 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -441,18 +441,20 @@ function ProcessLapJoint.IsHeadFeature( Proc, b3Raw, dCurrOvmH) if Proc.Box:getDimX() > min( BD.MAX_LEN_HTFEA, 0.6 *b3Raw:getDimX()) then return false end - -- se una o due facce ora è sicuramente di testa + -- recupero identificativo del pezzo + local nPartId = EgtGetParent( EgtGetParent( Proc.Id) or GDB_ID.NULL) + -- se una o due facce e interessa veramente la testa, allora di testa if Proc.Fct <= 2 then - return true + local b3Solid = EgtGetBBoxGlob( EgtGetFirstNameInGroup( nPartId, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD) + if Proc.Box:getMax():getX() > b3Solid:getMax():getX() - 1. then + return true + elseif Proc.Box:getMax():getX() < b3Solid:getMax():getX() - 5. then + return false + end end -- deve avere la normale principale diretta verso la testa - local nPartId = EgtGetParent( EgtGetParent( Proc.Id) or GDB_ID.NULL) - local nFacInd, dElev, nFacInd2, dElev2 = BL.GetFaceWithMostAdj( Proc.Id, nPartId) + local nFacInd, dElev = BL.GetFaceWithMostAdj( Proc.Id, nPartId) local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT) - if vtN and vtN:getZ() < BD.NZ_MINA and nFacInd2 then - ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacInd2, GDB_ID.ROOT) - nFacInd, nFacInd2 = nFacInd2, nFacInd - end if vtN and vtN:getX() < 0.499 then return false elseif Proc.Fct >= 5 then @@ -495,11 +497,13 @@ function ProcessLapJoint.IsTailFeature( Proc, b3Raw) end -- recupero identificativo del pezzo local nPartId = EgtGetParent( EgtGetParent( Proc.Id) or GDB_ID.NULL) - -- se due facce e interessa veramente la coda, allora di coda + -- se una o due facce e interessa veramente la coda, allora di coda if Proc.Fct <= 2 then local b3Solid = EgtGetBBoxGlob( EgtGetFirstNameInGroup( nPartId, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD) if Proc.Box:getMin():getX() < b3Solid:getMin():getX() + 1. then return true + elseif Proc.Box:getMin():getX() > b3Solid:getMin():getX() + 5. then + return false end end -- deve avere la normale principale diretta verso la coda (oppure tunnel)