DataBeam :
- correzioni e migliorie su tagli longitudinali singoli e doppi.
This commit is contained in:
+59
-12
@@ -309,7 +309,7 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId)
|
||||
dEndAccDist = BD.LONGCUT_MAXLEN
|
||||
bEndFixed = false
|
||||
end
|
||||
-- determino numero di parti
|
||||
-- determino numero di parti in cui dividere la lavorazione
|
||||
local nC = ceil( ( dLen - dStartAccDist - dEndAccDist) / BD.LONGCUT_MAXLEN)
|
||||
local dC = 0
|
||||
if nC > 0 then
|
||||
@@ -451,25 +451,72 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId)
|
||||
local _, _, dWidth = BL.GetFaceHvRefDim( Proc.Id, 0)
|
||||
-- aggiuntivo sull'affondamento
|
||||
local dAgg = BD.CUT_EXTRA
|
||||
-- determino il numero di parti in cui dividere la lavorazione
|
||||
local dEndLen = BD.LONGCUT_ENDLEN
|
||||
if dLen < 2 * dEndLen + BD.LONGCUT_MAXLEN then
|
||||
dEndLen = dLen / 3
|
||||
-- determino se lavorazione da davanti o da dietro
|
||||
local bFront = ( vtN:getY() < 0)
|
||||
-- determino gli estremi
|
||||
local dStartDist = 0
|
||||
local dStartAccDist = BD.LONGCUT_ENDLEN
|
||||
local bStartFixed = true
|
||||
if ( bLimXmin and bFront) or ( bLimXmax and not bFront) then
|
||||
dStartDist = dToolDiam / 2
|
||||
dStartAccDist = BD.LONGCUT_MAXLEN
|
||||
bStartFixed = false
|
||||
end
|
||||
local nC = ceil( ( dLen - 2 * dEndLen) / BD.LONGCUT_MAXLEN)
|
||||
local dEndDist = 0
|
||||
local dEndAccDist = BD.LONGCUT_ENDLEN
|
||||
local bEndFixed = true
|
||||
if ( bLimXmin and not bFront) or ( bLimXmax and bFront) then
|
||||
dEndDist = dToolDiam / 2
|
||||
dEndAccDist = BD.LONGCUT_MAXLEN
|
||||
bEndFixed = false
|
||||
end
|
||||
-- determino il numero di parti in cui dividere la lavorazione
|
||||
local nC = ceil( ( dLen - dStartAccDist - dEndAccDist) / BD.LONGCUT_MAXLEN)
|
||||
local dC = 0
|
||||
if nC > 0 then dC = ( dLen - 2 * dEndLen) / nC end
|
||||
nC = nC + 2
|
||||
if nC > 0 then
|
||||
if bStartFixed and bEndFixed then
|
||||
dC = ( dLen - dStartAccDist - dEndAccDist) / nC
|
||||
elseif bStartFixed then
|
||||
dC = ( dLen - dStartAccDist) / ( nC + 1)
|
||||
dEndAccDist = dC
|
||||
elseif bEndFixed then
|
||||
dC = ( dLen - dEndAccDist) / ( nC + 1)
|
||||
dStartAccDist = dC
|
||||
else
|
||||
dC = dLen / ( nC + 2)
|
||||
dStartAccDist = dC
|
||||
dEndAccDist = dC
|
||||
end
|
||||
nC = nC + 2
|
||||
else
|
||||
if dLen > min( dStartAccDist, dEndAccDist) then
|
||||
nC = 2
|
||||
if bStartFixed and not bEndFixed then
|
||||
dStartAccDist = min( dStartAccDist, dLen/2)
|
||||
dEndAccDist = dLen - dStartAccDist
|
||||
elseif not bStartFixed and bEndFixed then
|
||||
dEndAccDist = min( dEndAccDist, dLen/2)
|
||||
dStartAccDist = dLen - dEndAccDist
|
||||
else
|
||||
dStartAccDist = dLen/2
|
||||
dEndAccDist = dStartAccDist
|
||||
end
|
||||
else
|
||||
nC = 1
|
||||
dStartAccDist = 0
|
||||
dEndAccDist = 0
|
||||
end
|
||||
end
|
||||
-- ciclo sulle parti
|
||||
local nM = 0
|
||||
for j = 1, nC do
|
||||
-- Limitazioni della lavorazione
|
||||
local nPos = EgtIf( vtN:getY() < 0, j, nC - j + 1)
|
||||
local dSal = EgtIf( nPos == 1, 0, - dEndLen - ( nPos - 2) * dC)
|
||||
local dEal = EgtIf( nPos == nC, 0, - dEndLen - ( nC - nPos - 1) * dC)
|
||||
local nPos = EgtIf( bFront, j, nC - j + 1)
|
||||
local dSal = EgtIf( nPos == 1, -dEndDist, -dEndAccDist - ( nPos - 2) * dC)
|
||||
local dEal = EgtIf( nPos == nC, -dStartDist, -dStartAccDist - ( nC - nPos - 1) * dC)
|
||||
-- Posizione braccio portatesta
|
||||
local nSCC
|
||||
if vtN:getY() < 0 then
|
||||
if bFront then
|
||||
nSCC = EgtIf( ( j == 1 or j == nC - 1), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP)
|
||||
else
|
||||
nSCC = EgtIf( ( j == 1 or j == nC - 1), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)
|
||||
|
||||
Reference in New Issue
Block a user