diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index 6f569ae..5cf8ac5 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -446,7 +446,7 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b local dVzLimDwnUp = dNzLimDwnUp local dCutExtra = BD.CUT_EXTRA if Proc.AdvTail then - if bHorizCut then dVzLimDwnUp = 0 end + if bHorizCut then dVzLimDwnUp = -0.01 end dCutExtra = -BD.ADVANCE_TAIL_OFFS end -- lavoro la faccia diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 4ebf1af..75649f7 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2022/06/13 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2022/06/15 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -43,6 +43,7 @@ -- 2022/05/04 Corretta classificazione due facce sotto. Modificati criteri assegnazione due facce alla coda. -- 2022/05/24 Miglioramenti vari per BH, compreso controlli per lavorazione da sotto. -- 2022/06/13 Modifiche per feature lunga con due facce non equivalenti a taglio long. doppio o singolo con faccia terminale. +-- 2022/06/15 Correzione calcolo normale alla faccia per sega catena di fianco. -- 2022/06/16 Implemento lavorazioni con fresatura di lato per L30 (al momento solo passanti) se parametro Q03=2. Modificate funzioni Make, MakeByPockets, Classify. -- Tabella per definizione modulo @@ -277,7 +278,7 @@ local function GetChainSawInitAngs( vtN, vtO, nInd) if BD.C_SIMM then return EgtIf( vtN:getY() > 0, 'C=180', 'C=-180') else - if nInd ==1 then + if nInd == 1 then return '' else return EgtIf( vtN:getY() > 0, 'C=180', 'C=-180') @@ -3012,10 +3013,10 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, end -- se continuo a lavorare di testa if bGoFromHead then - -- Calcolo uso faccia - local nFaceUse = BL.GetNearestParalOpposite( rfFac:getVersZ()) -- Calcolo normale faccia adiacente local vtN = EgtSurfTmFacetNormVersor( Proc.Id, nFacAdj, GDB_ID.ROOT) + -- Calcolo uso faccia + local nFaceUse = BL.GetNearestParalOpposite( rfFac:getVersZ(), vtN) -- Verifico se necessarie più passate local nStep = ceil( ( dV - 10 * GEO.EPS_SMALL) / dSawThick) local dStep = 0 @@ -3101,10 +3102,12 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, -- verifico se posso farlo con la sega-catena local bMakeChainSaw, sSawing2, dMaxMat2, dSawCornerRad2, dSawThick2 = VerifyChainSaw( Proc, dDimMin, dDimMax) if bMakeChainSaw then + -- Calcolo normale faccia da lavorare + local vtNL = EgtSurfTmFacetNormVersor( Proc.Id, nLundIdFace, GDB_ID.ROOT) -- Calcolo uso faccia local vtRef = Vector3d( vtOrtho) if vtRef:getY() > 0.5 or vtRef:getZ() < -0.1 then vtRef = -vtRef end - local nFaceUse = BL.GetNearestParalOpposite( vtRef, vtN) + local nFaceUse = BL.GetNearestParalOpposite( vtRef, vtNL) -- Verifico se necessarie più passate local nStep = ceil( ( dDimMin - 10 * GEO.EPS_SMALL) / dSawThick2) local dStep = 0 @@ -3126,7 +3129,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, EgtSetMachiningParam( MCH_MP.FACEUSE, nFaceUse) -- imposto angolo 3° asse rot EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, GetChainSawBlockedAxis( 1)) - EgtSetMachiningParam( MCH_MP.INITANGS, GetChainSawInitAngs( vtN, vtOrtho, 1)) + EgtSetMachiningParam( MCH_MP.INITANGS, GetChainSawInitAngs( vtNL, vtOrtho, 1)) -- imposto offset radiale local dOffs = ( i - 1) * dStep EgtSetMachiningParam( MCH_MP.OFFSR, dOffs) @@ -3157,7 +3160,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, end -- impostazione alternativa angolo 3° asse rot EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, GetChainSawBlockedAxis( 2)) - EgtSetMachiningParam( MCH_MP.INITANGS, GetChainSawInitAngs( vtN, vtOrtho, 2)) + EgtSetMachiningParam( MCH_MP.INITANGS, GetChainSawInitAngs( vtNL, vtOrtho, 2)) if not ML.ApplyMachining( true, false) then local _, sErr = EgtGetLastMachMgrError() EgtSetOperationMode( nMchFId, false)