diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 3e25f38..6ad89a2 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2023/07/19 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2023/08/10 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -72,6 +72,7 @@ -- 2023/08/01 Aggiunta gestione rinvio angolare solo per tasche 5 lati, da sotto e perfettamente verticali. -- 2023/08/02 Piccola correzione al calcolo della distanza di sicurezza in base al gambo dell'utensile. -- 2023/08/02 Corretto incremento della profondità pari al raggio utensile per tunnel con sega a catena. +-- 2023/08/10 Modificata scelta SCC per tasche in Y+/- in coda o quasi (anche per relativi antischeggia con lama). -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -3173,7 +3174,10 @@ local function MakePocket( Proc, nPartId, b3Solid, ptPs, tvtN, nFaceRef, sMchFin if AreSameVectorApprox( tvtN[2], Z_AX()) then nSCC = MCH_SCC.ADIR_YM elseif abs( tvtN[2]:getX()) < 0.1 then - nSCC = EgtIf( BL.IsPartFinalPhase( EgtGetCurrPhase()), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) + local bNearTail = ( Proc.Box:getMax():getX() < b3Solid:getCenter():getX() + 50 and + Proc.Box:getMax():getX() - b3Solid:getMin():getX() < 1000) + local bVeryShortPart = ( BD.LEN_VERY_SHORT_PART and b3Solid:getDimX() < BD.LEN_VERY_SHORT_PART) + nSCC = EgtIf( BL.IsPartFinalPhase( EgtGetCurrPhase()) or ( bNearTail and not bVeryShortPart), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) elseif tvtN[2]:getY() > 0.1 then nSCC = MCH_SCC.ADIR_YP end @@ -3949,7 +3953,7 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha end --------------------------------------------------------------------- -local function ManageAntiSplintBySaw( Proc, b3Raw, bIsU, vtN, nFacInd, sWarn, bMillDown, bReduceDepth) +local function ManageAntiSplintBySaw( Proc, b3Raw, b3Solid, bIsU, vtN, nFacInd, sWarn, bMillDown, bReduceDepth) local bMadeASbyBld = false local nNumFac = EgtIf( bIsU, 2, 1) @@ -3989,9 +3993,18 @@ local function ManageAntiSplintBySaw( Proc, b3Raw, bIsU, vtN, nFacInd, sWarn, bM if abs( vtN:getZ()) > 0.63 or abs( vtN:getY()) > 0.63 then -- se superficie principale parallela al piano XZ if nPrefSide == 0 then - -- se facce praticamente verticali || mandrino a destra + -- se facce praticamente verticali || if abs( vtNFc:getZ()) < 0.1 then - nPrefSide = 2 + -- se FAST, mandrino a destra o sinistra come svuotatura + if not BD.C_SIMM and not BD.TURN then + local bNearTail = ( Proc.Box:getMax():getX() < b3Solid:getCenter():getX() + 50 and + Proc.Box:getMax():getX() - b3Solid:getMin():getX() < 1000) + local bVeryShortPart = ( BD.LEN_VERY_SHORT_PART and b3Solid:getDimX() < BD.LEN_VERY_SHORT_PART) + nPrefSide = EgtIf( BL.IsPartFinalPhase( EgtGetCurrPhase()) or ( bNearTail and not bVeryShortPart), 1, 2) + -- altrimenti sempre a destra + else + nPrefSide = 2 + end -- se facce inclinate \\ allora mandrino a destra (per essere verso l'alto) elseif vtNFc:getX() * vtNFc:getZ() > 0 then nPrefSide = 2 @@ -5152,7 +5165,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa if nChamfer < 2 and nQAntisplintResult == 1 and (( bIsU or bIsL) and ( bPassThrou or bPassEdge)) and ( vtNOri:getZ() > -0.087 or BD.DOWN_HEAD or BD.TURN) then local bOk local bSawDown = ( bMillDown and not bMillUp) - bMadeASbyBld, bOk, sWarn = ManageAntiSplintBySaw( Proc, b3Raw, bIsU, vtNOri, nFacIndOri, sWarn, bSawDown, true) + bMadeASbyBld, bOk, sWarn = ManageAntiSplintBySaw( Proc, b3Raw, b3Solid, bIsU, vtNOri, nFacIndOri, sWarn, bSawDown, true) if not bOk then return false, sWarn end end -- in base al flag interno e al numero di facce e se ha forma ad U @@ -5391,7 +5404,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa if nChamfer < 2 and nQAntisplintResult == 1 and (( bIsU or bIsL) and ( bPassThrou or bPassEdge)) and ( vtNOri:getZ() > -0.087 or BD.DOWN_HEAD or BD.TURN) then local bOk local bSawDown = ( bMillDown and not bMillUp) - bMadeASbyBld, bOk, sWarn = ManageAntiSplintBySaw( Proc, b3Raw, bIsU, vtNOri, nFacIndOri, sWarn, bSawDown) + bMadeASbyBld, bOk, sWarn = ManageAntiSplintBySaw( Proc, b3Raw, b3Solid, bIsU, vtNOri, nFacIndOri, sWarn, bSawDown) if not bOk then return false, sWarn end end if nChamfer < 2 and nQAntisplintResult == 2 then diff --git a/LuaLibs/ProcessMortise.lua b/LuaLibs/ProcessMortise.lua index ffd34f5..a950d23 100644 --- a/LuaLibs/ProcessMortise.lua +++ b/LuaLibs/ProcessMortise.lua @@ -1,4 +1,4 @@ --- ProcessMortise.lua by Egaltech s.r.l. 2023/07/21 +-- ProcessMortise.lua by Egaltech s.r.l. 2023/08/10 -- Gestione calcolo mortase per Travi -- 2021/07/20 Aggiunta gestione rinvio angolare su FAST. -- 2021/12/01 Se frontale aggiungo taglio con Grp e Proc di vero taglio (per aggiornare ingombro di testa /coda). @@ -12,6 +12,7 @@ -- 2023/05/11 Se lavorazione in doppio e precedente no oppure di tipo diverso, forzo risalita a Zmax. -- 2023/06/27 Esclusa la ricerca lati aperti per le mortase passanti, per le quali il contorno finisce sulla faccia e il riconoscimento sbaglia. -- 2023/07/21 Correzioni per mortise passanti con curva Aux che guarda in basso. +-- 2023/08/10 Modificata scelta SCC per tasche in Y+/- in coda o quasi. -- Tabella per definizione modulo local ProcessMortise = {} @@ -469,11 +470,14 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) local nSCC = MCH_SCC.NONE if bPockAngTrasm then nSCC = MCH_SCC.ADIR_NEAR - elseif not BD.C_SIMM then - if abs( vtN:getX()) < GEO.EPS_SMALL and abs( vtN:getY()) < GEO.EPS_SMALL then + elseif not BD.C_SIMM and not BD.TURN then + if AreSameOrOppositeVectorApprox( vtN, Z_AX()) then nSCC = MCH_SCC.ADIR_YM - elseif abs( vtN:getX()) < GEO.EPS_SMALL then - nSCC = MCH_SCC.ADIR_XP + elseif abs( vtN:getX()) < 0.1 then + local bNearTail = ( Proc.Box:getMax():getX() < b3Solid:getCenter():getX() and + Proc.Box:getMax():getX() - b3Solid:getMin():getX() < 1000) + local bVeryShortPart = ( BD.LEN_VERY_SHORT_PART and b3Solid:getDimX() < BD.LEN_VERY_SHORT_PART) + nSCC = EgtIf( BL.IsPartFinalPhase( EgtGetCurrPhase()) or ( bNearTail and not bVeryShortPart), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) elseif vtN:getY() < GEO.EPS_SMALL then nSCC = EgtIf( bRevertSide, MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM) else @@ -551,11 +555,14 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtSetMachiningParam( MCH_MP.INVERT, EgtIf( bCW, true, false)) -- imposto posizione braccio porta testa local nSCC = MCH_SCC.NONE - if not BD.C_SIMM then - if abs( vtN:getX()) < GEO.EPS_SMALL and abs( vtN:getY()) < GEO.EPS_SMALL then + if not BD.C_SIMM and not BD.TURN then + if AreSameOrOppositeVectorApprox( vtN, Z_AX()) then nSCC = MCH_SCC.ADIR_YM - elseif abs( vtN:getX()) < GEO.EPS_SMALL then - nSCC = MCH_SCC.ADIR_XP + elseif abs( vtN:getX()) < 0.1 then + local bNearTail = ( Proc.Box:getMax():getX() < b3Solid:getCenter():getX() and + Proc.Box:getMax():getX() - b3Solid:getMin():getX() < 1000) + local bVeryShortPart = ( BD.LEN_VERY_SHORT_PART and b3Solid:getDimX() < BD.LEN_VERY_SHORT_PART) + nSCC = EgtIf( BL.IsPartFinalPhase( EgtGetCurrPhase()) or ( bNearTail and not bVeryShortPart), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) elseif vtN:getY() < GEO.EPS_SMALL then nSCC = MCH_SCC.ADIR_YP else diff --git a/LuaLibs/ProcessRidgeLap.lua b/LuaLibs/ProcessRidgeLap.lua index 0a42616..cd81679 100644 --- a/LuaLibs/ProcessRidgeLap.lua +++ b/LuaLibs/ProcessRidgeLap.lua @@ -1,4 +1,4 @@ --- ProcessRidgeLap.lua by Egaltech s.r.l. 2023/05/18 +-- ProcessRidgeLap.lua by Egaltech s.r.l. 2023/08/10 -- Gestione calcolo mezzolegno di testa per Travi -- Tabella per definizione modulo @@ -195,7 +195,7 @@ function ProcessRidgeLap.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) -- aggiornamento ingombro di testa o coda if Proc.Head then local dHCI = 0 - if abs( vtN[vFaceOrd[3]]:getZ()) > 0.1 then + if vtN[vFaceOrd[3]]:getZ() > 0.1 then local b3Fac1 = EgtSurfTmGetFacetBBoxGlob( Proc.Id, vFaceOrd[1] - 1, GDB_BB.STANDARD) if b3Fac1 then dHCI = b3Raw:getMax():getX() - dOvmHead - b3Fac1:getMin():getX() end else @@ -204,7 +204,7 @@ function ProcessRidgeLap.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) BL.UpdateHCING( nRawId, dHCI) elseif Proc.Tail then local dTCI = 0 - if abs( vtN[vFaceOrd[3]]:getZ()) > 0.1 then + if vtN[vFaceOrd[3]]:getZ() > 0.1 then local b3Fac1 = EgtSurfTmGetFacetBBoxGlob( Proc.Id, vFaceOrd[1] - 1, GDB_BB.STANDARD) if b3Fac1 then dTCI = b3Fac1:getMax():getX() - b3Solid:getMin():getX() end else diff --git a/Version.lua b/Version.lua index d5d871f..e77b0a6 100644 --- a/Version.lua +++ b/Version.lua @@ -1,6 +1,6 @@ --- Version.lua by Egaltech s.r.l. 2023/08/01 +-- Version.lua by Egaltech s.r.l. 2023/08/10 -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.5h1' +VERSION = '2.5h2' MIN_EXE = '2.5c1'