DataBeam :
- migliorato calcolo tagli di lama su faccia con due lati da considerare - migliorato calcolo sicurezza utensile di fianco su taglio longitudinale singolo.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
-- ProcessLongCut.lua by Egaltech s.r.l. 2021/10/29
|
||||
-- ProcessLongCut.lua by Egaltech s.r.l. 2021/11/04
|
||||
-- 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.
|
||||
@@ -7,6 +7,7 @@
|
||||
-- è possibile fare doppio taglio opposto su tutte le facce(sopra, sotto e fianchi)
|
||||
-- 2021/09/03 Gestione facce lunghe non passanti con taglio di lama
|
||||
-- 2021/10/29 Aggiunta opzione tipo lavorazione 'LongCut'.
|
||||
-- 2021/11/04 Migliorata gestione sicurezza aggiuntiva in fresate di fianco (distinzione tra larga come tutta la faccia o meno).
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessLongCut = {}
|
||||
@@ -361,6 +362,13 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus
|
||||
elseif vtN:getY() > 0.7072 then
|
||||
nSide = 2
|
||||
end
|
||||
-- Verifico se largo come faccia
|
||||
local bLarghAsFace = false
|
||||
if nSide == 1 or nSide == -1 then
|
||||
bLarghAsFace = ( Proc.Box:getDimY() > b3Solid:getDimY() - 10)
|
||||
else
|
||||
bLarghAsFace = ( Proc.Box:getDimZ() > b3Solid:getDimZ() - 10)
|
||||
end
|
||||
-- determino se lavorazione da davanti o da dietro
|
||||
local bFront = ( vtN:getY() < 0)
|
||||
-- ottengo la distanza tra la fine del pezzo e il pezzo successivo
|
||||
@@ -1259,8 +1267,11 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus
|
||||
dSicOnLegth = dExtraForSafety / 2
|
||||
end
|
||||
dCollSicMin = max( BD.COLL_SIC, ( dThDiam - dToolDiam) / 2 * abs( EgtIf( abs(vtN:getY()) >= abs(vtN:getZ()), vtN:getZ(), vtN:getY()) / dNzMin))
|
||||
-- dCollSic = max( BD.COLL_SIC, dSicOnRad * EgtIf( abs(dNz) < GEO.EPS_SMALL, 1, abs( EgtIf( abs(nSide) == 1, vtN:getZ(), vtN:getY()) / dNz)) + dSicOnLegth)
|
||||
dCollSic = max( BD.COLL_SIC, dSicOnRad * abs( EgtIf( abs(vtN:getY()) >= abs(vtN:getZ()), vtN:getZ(), vtN:getY()) / dNzMin) + dSicOnLegth)
|
||||
if bLarghAsFace then
|
||||
dCollSic = max( BD.COLL_SIC, dSicOnRad * abs( EgtIf( abs(vtN:getY()) >= abs(vtN:getZ()), vtN:getZ(), vtN:getY()) / dNzMin) + dSicOnLegth)
|
||||
else
|
||||
dCollSic = max( BD.COLL_SIC, dSicOnRad * EgtIf( abs(dNz) < GEO.EPS_SMALL, 1, abs( EgtIf( abs(nSide) == 1, vtN:getZ(), vtN:getY()) / dNz)) + dSicOnLegth)
|
||||
end
|
||||
if nSide ~= 1 and BD.DOWN_HEAD then
|
||||
local dSicOnRadDn
|
||||
local dSicOnLegthDn
|
||||
@@ -1272,9 +1283,11 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus
|
||||
dSicOnLegthDn = dExtraForSafety / 2
|
||||
end
|
||||
dCollSicMinDn = max( BD.COLL_SIC, ( dThDiamDn - dToolDiamDn) / 2 * abs( EgtIf( abs(vtN:getY()) >= abs(vtN:getZ()), vtN:getZ(), vtN:getY()) / dNzMin))
|
||||
-- dCollSicDn = max( BD.COLL_SIC, dSicOnRadDn * EgtIf( abs(dNz) < GEO.EPS_SMALL, 1, abs( EgtIf( abs(nSide) == 1, vtN:getZ(), vtN:getY()) / dNz)) + dSicOnLegthDn)
|
||||
dCollSicDn = max( BD.COLL_SIC, dSicOnRadDn * abs( EgtIf( abs(vtN:getY()) >= abs(vtN:getZ()), vtN:getZ(), vtN:getY()) / dNzMin) + dSicOnLegthDn)
|
||||
|
||||
if bLarghAsFace then
|
||||
dCollSicDn = max( BD.COLL_SIC, dSicOnRadDn * abs( EgtIf( abs(vtN:getY()) >= abs(vtN:getZ()), vtN:getZ(), vtN:getY()) / dNzMin) + dSicOnLegthDn)
|
||||
else
|
||||
dCollSicDn = max( BD.COLL_SIC, dSicOnRadDn * EgtIf( abs(dNz) < GEO.EPS_SMALL, 1, abs( EgtIf( abs(nSide) == 1, vtN:getZ(), vtN:getY()) / dNz)) + dSicOnLegthDn)
|
||||
end
|
||||
if dWidth + dAgg > dMaxDepth - dCollSic then
|
||||
nPass = 2
|
||||
dAgg = 1
|
||||
|
||||
Reference in New Issue
Block a user