diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index de70a72..aa86217 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -1,4 +1,4 @@ --- BeamLib.lua by Egaltech s.r.l. 2019/04/13 +-- BeamLib.lua by Egaltech s.r.l. 2019/05/27 -- Libreria globale per Travi -- Tabella per definizione modulo @@ -190,18 +190,25 @@ end --------------------------------------------------------------------- function BeamLib.GetNearestParalOpposite( vtRef) - if abs( vtRef:getX()) > abs( vtRef:getY()) and abs( vtRef:getX()) > abs( vtRef:getZ()) then - if vtRef:getX() > 0 then - return MCH_MILL_FU.PARAL_LEFT - else - return MCH_MILL_FU.PARAL_RIGHT - end - elseif abs( vtRef:getY()) > abs( vtRef:getZ()) then - if vtRef:getY() > 0 then - return MCH_MILL_FU.PARAL_FRONT - else - return MCH_MILL_FU.PARAL_BACK + -- devo confrontare la componente orizzontale con quella verticale + local dHorSq = vtRef:getX() * vtRef:getX() + vtRef:getY() * vtRef:getY() + local dVertSq =vtRef:getZ() * vtRef:getZ() + -- se prevalente la componente orizzontale + if dHorSq >= dVertSq then + if abs( vtRef:getX()) > abs( vtRef:getY()) then + if vtRef:getX() > 0 then + return MCH_MILL_FU.PARAL_LEFT + else + return MCH_MILL_FU.PARAL_RIGHT + end + elseif abs( vtRef:getY()) > abs( vtRef:getZ()) then + if vtRef:getY() > 0 then + return MCH_MILL_FU.PARAL_FRONT + else + return MCH_MILL_FU.PARAL_BACK + end end + -- altrimenti prevale la verticale else if vtRef:getZ() > 0 then return MCH_MILL_FU.PARAL_DOWN @@ -214,18 +221,25 @@ end --------------------------------------------------------------------- function BeamLib.GetNearestOrthoOpposite( vtRef) - if abs( vtRef:getX()) > abs( vtRef:getY()) and abs( vtRef:getX()) > abs( vtRef:getZ()) then - if vtRef:getX() > 0 then - return MCH_MILL_FU.ORTHO_LEFT + -- devo confrontare la componente orizzontale con quella verticale + local dHorSq = vtRef:getX() * vtRef:getX() + vtRef:getY() * vtRef:getY() + local dVertSq =vtRef:getZ() * vtRef:getZ() + -- se prevalente la componente orizzontale + if dHorSq >= dVertSq then + if abs( vtRef:getX()) >= abs( vtRef:getY()) then + if vtRef:getX() > 0 then + return MCH_MILL_FU.ORTHO_LEFT + else + return MCH_MILL_FU.ORTHO_RIGHT + end else - return MCH_MILL_FU.ORTHO_RIGHT - end - elseif abs( vtRef:getY()) > abs( vtRef:getZ()) then - if vtRef:getY() > 0 then - return MCH_MILL_FU.ORTHO_FRONT - else - return MCH_MILL_FU.ORTHO_BACK + if vtRef:getY() > 0 then + return MCH_MILL_FU.ORTHO_FRONT + else + return MCH_MILL_FU.ORTHO_BACK + end end + -- altrimenti prevale la verticale else if vtRef:getZ() > 0 then return MCH_MILL_FU.ORTHO_DOWN diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index e6c7d03..15a2543 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -131,7 +131,7 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) if j ~= 1 then nNewOrthoOpposite = EgtIf( nOrthoOpposite == MCH_MILL_FU.ORTHO_FRONT, MCH_MILL_FU.ORTHO_BACK, MCH_MILL_FU.ORTHO_FRONT) end - local bOk, sErr = BL.MakeOneFaceBySaw( vCuts[i][j], 0, sCutting, dSawDiam, nNewOrthoOpposite, 0, BD.CUT_SIC, 0, nil, b3Raw) + local bOk, sErr = BL.MakeOneFaceBySaw( vCuts[i][j], 0, sCutting, dSawDiam, nNewOrthoOpposite, 0.1, BD.CUT_SIC, 0, nil, b3Raw) if not bOk then return bOk, sErr end @@ -139,7 +139,7 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) -- tutti gli altri casi vengono saltati -- caso generale else - local bOk, sErr = BL.MakeOneFaceBySaw( vCuts[i][j], 0, sCutting, dSawDiam, nOrthoOpposite, 0, BD.CUT_SIC, 0, nil, b3Raw) + local bOk, sErr = BL.MakeOneFaceBySaw( vCuts[i][j], 0, sCutting, dSawDiam, nOrthoOpposite, 0.1, BD.CUT_SIC, 0, nil, b3Raw) if not bOk then return bOk, sErr end diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 568e8aa..1a1383f 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -465,6 +465,12 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId) if dH < dMillDiam or dV < dMillDiam then return MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev) end + -- se troppo lunga, per il momento la salto, andrĂ  spezzata n parti + if dH > 3400 or dV > 3400 then + local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' feature too long' + EgtOutLog( sErr) + return false, sErr + end -- inserisco la lavorazione di svuotatura local sName = 'Pock_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) local nMchFId = EgtAddMachining( sName, sPocketing)