diff --git a/LuaLibs/ProcessLongCut.lua b/LuaLibs/ProcessLongCut.lua index f2a325a..891ac4f 100644 --- a/LuaLibs/ProcessLongCut.lua +++ b/LuaLibs/ProcessLongCut.lua @@ -115,10 +115,10 @@ function GetProcessSpecificVectors( Proc, nFacet, nFaceUse, bInvert, sMachining) vtTg = ptP2 - ptP1 ; vtTg:normalize() end end - local bWsRight = ( not bInvert) + local bWsRight = ( bInvert) -- Versore di riferimento local vtRef = Vector3d( vtTg) - vtRef:rotate( vtN, EgtIf( bInvert, -90, 90)) + vtRef:rotate( vtN, 90) -- Versore esterno local vtOut = vtRef - vtRef * vtTg * vtTg ; vtOut:normalize() -- Versore ausiliario (direzione braccio) @@ -169,7 +169,7 @@ function ProcessLongCut.GetSCC( Proc, nFacet, sMachining, nFaceUse, bInvert, nCu elseif not BD.C_SIMM and AreSameVectorApprox( vtN, Z_AX()) then nSCC = MCH_SCC.ADIR_YM -- se Fast ( escluso caso speciale con taglio non passante e inclinato in X) posiziono l'aggregato in X per ottimizzare il pinzaggio - elseif not BD.C_SIMM and ( not ( bCustUseBlade and abs(vtN:getX()) > 0.009 + 5 * GEO.EPS_SMALL) or not bIsBlade) then + elseif not BD.C_SIMM and ( not ( bCustUseBlade and abs(vtN:getX()) > 0.009) or not bIsBlade) then if bAreCuttingStepsTowardsHead then nSCC = EgtIf( ( not ( nCuttingStep == 1 or nCuttingStep == nC - 1)), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM) else @@ -187,7 +187,12 @@ function ProcessLongCut.GetSCC( Proc, nFacet, sMachining, nFaceUse, bInvert, nCu end -- per PF o simili e lama con aggregato lo posiziono per stare il più lontano possibile dalla trave elseif ( bIsBlade and bIsTopBlade) then - nSCC = MCH_SCC.ADIR_XP + if abs( vtN:getX()) > 0.009 then + local vtAux = GetProcessSpecificVectors( Proc, nFacet, nFaceUse, bInvert, sMachining) + nSCC = EgtIf( ( vtAux:getY() > -GEO.EPS_SMALL), MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM) + else + nSCC = MCH_SCC.ADIR_XP + end -- per PF o simili e lama senza aggregato o fresa non do alcuna preferenza else nSCC = MCH_SCC.NONE