DataBeam :

- in LongCut e LongDoubleCut lunghi migliorata suddivisione in parti.
This commit is contained in:
Dario Sassi
2020-10-08 17:56:27 +00:00
parent 8a9faf298d
commit 8d59402134
2 changed files with 52 additions and 16 deletions
+27 -9
View File
@@ -1,4 +1,4 @@
-- ProcessLongCut.lua by Egaltech s.r.l. 2020/10/07
-- ProcessLongCut.lua by Egaltech s.r.l. 2020/10/08
-- Gestione calcolo taglio longitudinale per Travi
-- Tabella per definizione modulo
@@ -164,19 +164,19 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId)
bLimXmax = true
end
end
-- Verifico lato di lavorazione
-- Verifico lato di lavorazione (limite di lato a 45deg per pinze che schiacciano)
local nSide = 1
if vtN:getZ() < - 0.5 then
nSide = -1
elseif vtN:getY() < -0.7071 then
elseif vtN:getY() < -0.7072 then
nSide = -2
elseif vtN:getY() > 0.7071 then
elseif vtN:getY() > 0.7072 then
nSide = 2
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
local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5
local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5.4
local bForcedLim
local sWarn
----------------------------------------------------------------------------------------------------------------------------------------
@@ -187,7 +187,7 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId)
-- fino al punto più vicino della faccia laterale (prima l'arretramento era sempre del rggio utensile).
-- Questo viene fatto se Q07=1 o fresa da sotto
----------------------------------------------------------------------------------------------------------------------------------------
local bUseBlade = EgtGetInfo( Proc.Id, 'Q05', 'i') == 1
local bUseBlade = ( EgtGetInfo( Proc.Id, 'Q05', 'i') == 1)
local nUseMillOnSide = EgtGetInfo( Proc.Id, 'Q07', 'i') or 0
-- se entrambe i Q sono attivi, disabilito lama
if nUseMillOnSide > 0 then bUseBlade = false end
@@ -222,9 +222,12 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId)
local nC = ceil( ( dLen - dStartAccDist - dEndAccDist) / BD.LONGCUT_MAXLEN)
local dC = 0
if nC > 0 then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
dC = ( dLen - dStartAccDist - dEndAccDist) / nC
if dC < min( dStartAccDist, dEndAccDist) then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
nC = nC + 2
else
if dLen > min( dStartAccDist, dEndAccDist) then
@@ -341,12 +344,27 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId)
if nC > 0 then
if bStartFixed and bEndFixed then
dC = ( dLen - dStartAccDist - dEndAccDist) / nC
if dC < min( dStartAccDist, dEndAccDist) then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
elseif bStartFixed then
dC = ( dLen - dStartAccDist) / ( nC + 1)
dEndAccDist = dC
if dC < dStartAccDist then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
elseif bEndFixed then
dC = ( dLen - dEndAccDist) / ( nC + 1)
dStartAccDist = dC
if dC < dEndAccDist then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
else
dC = dLen / ( nC + 2)
dStartAccDist = dC
+25 -7
View File
@@ -1,4 +1,4 @@
-- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2020/10/07
-- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2020/10/08
-- Gestione calcolo doppio taglio longitudinale per Travi
-- Tabella per definizione modulo
@@ -253,7 +253,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId)
_, _, vWidth[2] = BL.GetFaceHvRefDim( Proc.Id, tFaceLong[2])
-- ottengo la distanza tra la fine del pezzo e il pezzo successivo
local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5
local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5.4
local bForcedLim
local sWarn
----------------------------------------------------------------------------------------------------------------------------------------
@@ -290,7 +290,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId)
dToolThick = EgtTdbGetCurrToolParam(MCH_TP.THICK) or dToolThick
end
end
-- se la distanza dal pezzo successivo è inferiore della metà lama, dò un warning
-- se la distanza dal pezzo successivo è inferiore della metà lama, do un warning
if dDistToNextPiece < dToolDiam/2 then
sWarn = 'Warning on saw cut : Cut machining can damage next piece'
EgtOutLog( sWarn .. ' (process ' .. tostring( Proc.Id) .. ')')
@@ -301,14 +301,17 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId)
local nC = ceil( ( dLen - dStartAccDist - dEndAccDist) / BD.LONGCUT_MAXLEN)
local dC = 0
if nC > 0 then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
dC = ( dLen - dStartAccDist - dEndAccDist) / nC
if dC < min( dStartAccDist, dEndAccDist) then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
nC = nC + 2
else
if dLen > min( dStartAccDist, dEndAccDist) then
nC = 2
dStartAccDist = dLen/2
dStartAccDist = dLen / 2
dEndAccDist = dStartAccDist
else
nC = 1
@@ -499,12 +502,27 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId)
if nC > 0 then
if bStartFixed and bEndFixed then
dC = ( dLen - dStartAccDist - dEndAccDist) / nC
if dC < min( dStartAccDist, dEndAccDist) then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
elseif bStartFixed then
dC = ( dLen - dStartAccDist) / ( nC + 1)
dEndAccDist = dC
if dC < dStartAccDist then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
elseif bEndFixed then
dC = ( dLen - dEndAccDist) / ( nC + 1)
dStartAccDist = dC
if dC < dEndAccDist then
dC = dLen / ( nC + 2)
dStartAccDist = dC
dEndAccDist = dC
end
else
dC = dLen / ( nC + 2)
dStartAccDist = dC