diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 770065f..009bb28 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1468,14 +1468,14 @@ local function VerifyDtMortiseMirrored( Proc, vProc, b3Raw) ( BD.DOWN_HEAD and AreOppositeVectorApprox( vtExtr, Y_AX())) then Proc.Double = 2 Proc.MirrorId = ProcMirror.Id - Proc.MirrorCurId = ProcMirror.CutId + Proc.MirrorCutId = ProcMirror.CutId Proc.MirrorTaskId = ProcMirror.TaskId ProcMirror.Flg = 0 ProcMirror.Double = 0 elseif BD.DOWN_HEAD and AreSameVectorApprox( vtExtr, Z_AX()) then Proc.Double = 3 Proc.MirrorId = ProcMirror.Id - Proc.MirrorCurId = ProcMirror.CutId + Proc.MirrorCutId = ProcMirror.CutId Proc.MirrorTaskId = ProcMirror.TaskId ProcMirror.Flg = 0 ProcMirror.Double = 0 @@ -1715,7 +1715,7 @@ function BeamExec.ProcessFeatures() else table.insert( Stats, {Err=0, Msg='', Rot=-2, CutId=Proc.CutId, TaskId=Proc.TaskId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=0, Msg='', Rot=-2, CutId=Proc.MirrorCurId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=-2, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) end end -- se è taglio di separazione, verifico se ha già aggiunto una nuova fase oppure se è da creare @@ -1788,7 +1788,7 @@ function BeamExec.ProcessFeatures() else table.insert( Stats, {Err=0, Msg='', Rot=-1, CutId=Proc.CutId, TaskId=Proc.TaskId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=0, Msg='', Rot=-1, CutId=Proc.MirrorCurId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=-1, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) end end if bOk then nSideMchOk = nSideMchOk + 1 end @@ -1849,7 +1849,7 @@ function BeamExec.ProcessFeatures() else table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.MirrorCurId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) end end -- se era taglio di separazione, aggiungo nuova fase diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 9938b98..aadd5fb 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -3919,7 +3919,7 @@ local function ManageAntiSplintBySaw( Proc, b3Raw, bIsU, vtN, nFacInd, sWarn, bM nPrefSide = 0 elseif abs( vtN:getZ()) > 0.63 or abs( vtN:getY()) > 0.63 then -- se X è negativa allora devo tenere il motore a destra - if vtN:getX() < -(10 * GEO.EPS_SMALL) then + if vtN:getX() < 0.087 then nPrefSide = 2 end end @@ -3944,14 +3944,16 @@ local function ManageAntiSplintBySaw( Proc, b3Raw, bIsU, vtN, nFacInd, sWarn, bM local bInvertMach = false local dDepth = 0 if bIsU then - if abs(vtN:getZ()) > 0.63 or abs(vtN:getY()) > 0.63 then --- if abs(vtN:getZ()) > 0.7 or abs(vtN:getY()) > 0.7 then - -- prendo il vettore normale alla faccia - local _, vtNFc = EgtSurfTmFacetCenter( Proc.Id, nFacet, GDB_ID.ROOT) + -- prendo il vettore normale alla faccia + local vtNFc = EgtSurfTmFacetNormVersor( Proc.Id, nFacet, GDB_ID.ROOT) + 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 + if abs( vtNFc:getZ()) < 0.1 then + nPrefSide = 2 -- se facce inclinate \\ allora mandrino a destra (per essere verso l'alto) - if vtNFc:getX() * vtNFc:getZ() > 0 then + elseif vtNFc:getX() * vtNFc:getZ() > 0 then nPrefSide = 2 -- altrimenti facce inclinate // quindi mandrino a sinistra (per essere ancora verso l'alto) else @@ -3972,20 +3974,37 @@ local function ManageAntiSplintBySaw( Proc, b3Raw, bIsU, vtN, nFacInd, sWarn, bM end end end - end - -- eseguo inversione - if bInvertMach then - local bToolInvert = EgtGetMachiningParam( MCH_MP.TOOLINVERT) - local nWS = EgtGetMachiningParam( MCH_MP.WORKSIDE) - local nInvWS = EgtIf( nWS == MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT) - local nFaceUse = EgtGetMachiningParam( MCH_MP.FACEUSE) - local bOrtUp = ( nFaceUse >= MCH_MILL_FU.ORTUP_DOWN and nFaceUse <= MCH_MILL_FU.ORTUP_RIGHT) - if not bOrtUp then - -- assegno i parametri invertiti - EgtSetMachiningParam( MCH_MP.WORKSIDE, nInvWS) - EgtSetMachiningParam( MCH_MP.TOOLINVERT, not bToolInvert) - -- setto l'offset pari allo spessore lama - EgtSetMachiningParam( MCH_MP.OFFSL, -dSawThick) + -- eseguo inversione + if bInvertMach then + local bToolInvert = EgtGetMachiningParam( MCH_MP.TOOLINVERT) + local nWS = EgtGetMachiningParam( MCH_MP.WORKSIDE) + local nInvWS = EgtIf( nWS == MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT) + local nFaceUse = EgtGetMachiningParam( MCH_MP.FACEUSE) + local bOrtUp = ( nFaceUse >= MCH_MILL_FU.ORTUP_DOWN and nFaceUse <= MCH_MILL_FU.ORTUP_RIGHT) + if not bOrtUp then + -- assegno i parametri invertiti + EgtSetMachiningParam( MCH_MP.WORKSIDE, nInvWS) + EgtSetMachiningParam( MCH_MP.TOOLINVERT, not bToolInvert) + -- setto l'offset pari allo spessore lama + EgtSetMachiningParam( MCH_MP.OFFSL, -dSawThick) + end + end + -- per diminuire scheggiature su facce davanti + if nPrefSide == 2 then + local dSpeed = EgtGetMachiningParam( MCH_MP.SPEED) + if dSpeed < 0 and vtN:getY() < -0.996 then + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT) + EgtSetMachiningParam( MCH_MP.INVERT, vtNFc:getX() > 0) + elseif dSpeed > 0 and vtN:getY() > 0.996 then + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) + EgtSetMachiningParam( MCH_MP.INVERT, vtNFc:getX() < 0) + elseif dSpeed < 0 and vtN:getZ() > 0.996 then + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT) + EgtSetMachiningParam( MCH_MP.INVERT, vtNFc:getX() > 0) + elseif dSpeed > 0 and vtN:getZ() > 0.996 then + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) + EgtSetMachiningParam( MCH_MP.INVERT, vtNFc:getX() < 0) + end end end -- posizione del braccio : se primo taglio la recupero, altrimenti la imposto diff --git a/LuaLibs/ProcessLongDoubleCut.lua b/LuaLibs/ProcessLongDoubleCut.lua index 26bc9a2..303e153 100644 --- a/LuaLibs/ProcessLongDoubleCut.lua +++ b/LuaLibs/ProcessLongDoubleCut.lua @@ -375,7 +375,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster vOrd = EgtIf( ptC[1]:getY() < ptRef:getY(), { 1, 2}, { 2, 1}) vFaceUse = { BL.GetNearestParalOpposite( ptC[1] - ptM), BL.GetNearestParalOpposite( ptC[2] - ptM)} else - local bFront = ( vtN[1]:getY() < 0 or vtN[2]:getY() < 0) + local bFront = ( ( vtN[1]:getY() + vtN[2]:getY()) < 0) if bFront then vOrd = EgtIf( ptC[1]:getZ() < ptRef:getZ(), { 1, 2}, { 2, 1}) vFaceUse = { BL.GetNearestOrthoOpposite( ptC[1] - ptM), BL.GetNearestOrthoOpposite( ptC[2] - ptM)}