|
|
|
@@ -286,9 +286,11 @@ local function CalcBladeUse( bUseBlade, bDown_Head, nSide, vtN1, vtN2, bConvex,
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
if ( vtN1 and vtN1:getZ() >= EgtIf( dCustomAngle, dCustomAngle, -0.5)) and ( not vtN2 or vtN2:getZ() >= -0.5) then
|
|
|
|
|
bCanUseBlade = true
|
|
|
|
|
end
|
|
|
|
|
--if ( vtN1 and vtN1:getZ() >= EgtIf( dCustomAngle, dCustomAngle, -0.5)) and ( not vtN2 or vtN2:getZ() >= -0.5) then
|
|
|
|
|
-- bCanUseBlade = true
|
|
|
|
|
--end
|
|
|
|
|
-- viene abilitata sempre lama da sotto
|
|
|
|
|
bCanUseBlade = true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
@@ -423,12 +425,22 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
|
|
|
|
|
-- analisi del taglio
|
|
|
|
|
local vOrd = {}
|
|
|
|
|
local vFaceUse = {}
|
|
|
|
|
local bIsMachDownUp = false
|
|
|
|
|
if nSide == 1 or ( nSide == -1 and ( BD.DOWN_HEAD or BD.TURN)) then
|
|
|
|
|
vOrd = EgtIf( ptC[1]:getY() < ptRef:getY(), { 1, 2}, { 2, 1})
|
|
|
|
|
vFaceUse = { BL.GetNearestOrthoOpposite( ptC[1] - ptM), BL.GetNearestOrthoOpposite( ptC[2] - ptM)}
|
|
|
|
|
elseif nSide == -1 then
|
|
|
|
|
vOrd = EgtIf( ptC[1]:getY() < ptRef:getY(), { 1, 2}, { 2, 1})
|
|
|
|
|
vFaceUse = { BL.GetNearestParalOpposite( ptC[1] - ptM), BL.GetNearestParalOpposite( ptC[2] - ptM)}
|
|
|
|
|
local vtFaceUse1, vtFaceUse2
|
|
|
|
|
if bCanUseBlade and not BD.DOWN_HEAD then
|
|
|
|
|
bIsMachDownUp = true
|
|
|
|
|
vtFaceUse1 = BL.GetOrtupOpposite( BL.GetNearestOrthoOpposite( ptC[1] - ptM))
|
|
|
|
|
vtFaceUse2 = BL.GetOrtupOpposite( BL.GetNearestOrthoOpposite( ptC[2] - ptM))
|
|
|
|
|
else
|
|
|
|
|
vtFaceUse1 = BL.GetNearestParalOpposite( ptC[1] - ptM)
|
|
|
|
|
vtFaceUse2 = BL.GetNearestParalOpposite( ptC[2] - ptM)
|
|
|
|
|
end
|
|
|
|
|
vFaceUse = { vtFaceUse1, vtFaceUse2}
|
|
|
|
|
else
|
|
|
|
|
local bFront = ( ( vtN[1]:getY() + vtN[2]:getY()) < 0)
|
|
|
|
|
if bFront then
|
|
|
|
@@ -851,7 +863,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
|
|
|
|
|
-- imposto la direzione di lavoro per avere scarico del truciolo ottimale
|
|
|
|
|
local nWorkSide, bInvert
|
|
|
|
|
if ( not bIsTopBladeCurrent and abs( nSide) ~= 0) or ( bCanUseBlade and bCanUseUnderBlade and nSide == -1) then
|
|
|
|
|
if bIsCurrentBladeCCW then
|
|
|
|
|
if bIsCurrentBladeCCW and not bIsMachDownUp then
|
|
|
|
|
nWorkSide = MCH_MILL_WS.LEFT
|
|
|
|
|
bInvert = true
|
|
|
|
|
dSal, dEal = dEal, dSal
|
|
|
|
@@ -860,7 +872,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
|
|
|
|
|
bInvert = false
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
if bIsCurrentBladeCCW then
|
|
|
|
|
if bIsCurrentBladeCCW and not bIsMachDownUp then
|
|
|
|
|
nWorkSide = MCH_MILL_WS.LEFT
|
|
|
|
|
bInvert = false
|
|
|
|
|
else
|
|
|
|
@@ -1067,6 +1079,11 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
|
|
|
|
|
if nSide == -1 and BD.DOWN_HEAD then
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal)
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal)
|
|
|
|
|
elseif nSide == -1 and not BD.DOWN_HEAD and bIsMachDownUp then
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.INVERT, EgtIf( EgtGetMachiningParam( MCH_MP.INVERT), false, true))
|
|
|
|
|
dOffset = 5
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal)
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal)
|
|
|
|
|
else
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal)
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal)
|
|
|
|
@@ -1368,7 +1385,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
|
|
|
|
|
--EgtSetMachiningParam( MCH_MP.FACEUSE, EgtIf( bSide, BL.GetParallelOpposite( vFaceUse[vOrd[i]]), vFaceUse[vOrd[i]]))
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.FACEUSE, EgtIf( bSide, MCH_MILL_FU.PARAL_DOWN, vFaceUse[vOrd[i]]))
|
|
|
|
|
-- imposto lato di lavoro e inversione
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( bIsMachDownUp, MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT))
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.INVERT, EgtIf( bSide, true, false))
|
|
|
|
|
-- imposto offset radiale (nullo se concavo o di lato)
|
|
|
|
|
local dOffsR = EgtIf( k < nO, ( nO - k) * dStep, EgtIf( bConvex, - BD.CUT_EXTRA, 0))
|
|
|
|
@@ -1804,7 +1821,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
-- imposto lato di lavoro e inversione
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( bIsMachDownUp, MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT))
|
|
|
|
|
EgtSetMachiningParam( MCH_MP.INVERT, true)
|
|
|
|
|
-- calcolo la componente dNz non in base alla classificazione della feature (sopra, sotto, fianchi) ma alla componente maggiore
|
|
|
|
|
-- local dNz = EgtIf( nSide == 0, vtN[vOrd[i]]:getY(), vtN[vOrd[i]]:getZ())
|
|
|
|
|