|
|
|
@@ -1,4 +1,4 @@
|
|
|
|
|
-- ProcessLongCut.lua by Egaltech s.r.l. 2023/03/06
|
|
|
|
|
-- ProcessLongCut.lua by Egaltech s.r.l. 2023/05/03
|
|
|
|
|
-- Gestione calcolo taglio longitudinale per Travi
|
|
|
|
|
-- 2021/02/03 Corretto FaceUse con fresa orizzontale su taglio orizzontale.
|
|
|
|
|
-- 2021/05/18 Possibile taglio con lama anche di fianco su macchina con testa da sotto.
|
|
|
|
@@ -26,6 +26,7 @@
|
|
|
|
|
-- 2023/03/15 Modifica alla lavorazione ulteriore con sega a catena per togliere il codolo e lasciare solo dei punti di supporto.
|
|
|
|
|
-- 2023/03/22 Correzione a SCC lama a seguito di modifiche alle direzioni dei tagli.
|
|
|
|
|
-- 2023/04/17 Gestione unificata SCC tramite funzione apposita GetSCC
|
|
|
|
|
-- 2023/05/03 Corretto SCC in caso di asse utensile allineato con Z.
|
|
|
|
|
|
|
|
|
|
-- Tabella per definizione modulo
|
|
|
|
|
local ProcessLongCut = {}
|
|
|
|
@@ -115,10 +116,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)
|
|
|
|
@@ -165,17 +166,17 @@ function ProcessLongCut.GetSCC( Proc, nFacet, sMachining, nFaceUse, bInvert, nCu
|
|
|
|
|
elseif nFaceUse == MCH_MILL_FU.ORTHO_BACK or ( nFaceUse == MCH_MILL_FU.PARAL_DOWN or nFaceUse == MCH_MILL_FU.PARAL_TOP) then
|
|
|
|
|
nSCC = MCH_SCC.ADIR_YM
|
|
|
|
|
end
|
|
|
|
|
-- se Fast e asse utensile diretto come Z posiziono l'aggregato in Y per avere il minore ingombro possibile
|
|
|
|
|
elseif not BD.C_SIMM and AreSameVectorApprox( vtN, Z_AX()) then
|
|
|
|
|
-- se Fast e fresa con asse utensile diretto come Z posiziono l'aggregato in Ym per avere il minore ingombro possibile
|
|
|
|
|
elseif not BD.C_SIMM and not bIsBlade 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
|
|
|
|
|
-- se Fast ( escluso caso speciale con taglio non passante e inclinato in X e escluso caso con lama esattamente diretta in Z) posiziono l'aggregato in X per ottimizzare il pinzaggio
|
|
|
|
|
elseif not BD.C_SIMM and ( not ( bCustUseBlade and abs(vtN:getX()) > 0.009) or not bIsBlade) and not ( bIsBlade and AreSameVectorApprox( vtN, Z_AX())) then
|
|
|
|
|
if bAreCuttingStepsTowardsHead then
|
|
|
|
|
nSCC = EgtIf( ( not ( nCuttingStep == 1 or nCuttingStep == nC - 1)), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)
|
|
|
|
|
else
|
|
|
|
|
nSCC = EgtIf( ( not ( nCuttingStep == 1 or nCuttingStep == nC - 1)), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP)
|
|
|
|
|
end
|
|
|
|
|
-- per Fast ( caso speciale con taglio non passante e inclinato in X)
|
|
|
|
|
-- per Fast ( caso speciale con taglio non passante e inclinato in X e caso lama diretta esattamente in Z)
|
|
|
|
|
elseif not BD.C_SIMM then
|
|
|
|
|
local vtAux = GetProcessSpecificVectors( Proc, nFacet, nFaceUse, bInvert, sMachining)
|
|
|
|
|
if bCustUseBlade then
|
|
|
|
@@ -187,7 +188,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
|
|
|
|
|