DataBeam :
- nelle macchine con testa da sotto si fanno con la testa sopra anche tutti i tagli da sotto fattibili - in LapJoint modificato ripasso con fresa piccola ora di tipo SmallToolContour.
This commit is contained in:
@@ -694,7 +694,7 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom,
|
||||
end
|
||||
-- abilitazione lavorazione da sotto (testa da sotto e direzione normale sotto -20deg)
|
||||
local bTopHead = ( BD.DOWN_HEAD and vtN:getZ() > -0.342)
|
||||
local bDownHead = ( BD.DOWN_HEAD and vtN:getZ() < -0.341)
|
||||
local bDownHead = ( BD.DOWN_HEAD and vtN:getZ() < -0.341 and ( abs( vtN:getY()) > 0.017 or b3Raw:getDimY() > 2 * ( BD.MAX_DIM_HTCUT - BD.CUT_EXTRA_MIN)))
|
||||
-- recupero la lavorazione
|
||||
local sCutType = EgtIf( Proc.Head, 'HeadSide', 'TailSide')
|
||||
local sCutting = ML.FindCutting( sCutType .. EgtIf( bDownHead, '_H2', ''))
|
||||
|
||||
+35
-17
@@ -260,7 +260,7 @@ local function VerifyChainSaw( Proc, dMinDim, dMaxDim, vtOrtho)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function VerifyIfPocket( Proc, dDiam, vtOrtho, dDepth, sMchFindMaster)
|
||||
local function VerifyIfPocket( Proc, dDiam, dDepth, sMchFindMaster)
|
||||
-- tipo di svuotatura
|
||||
local sMchFind = EgtIf( sMchFindMaster and #sMchFindMaster > 0, sMchFindMaster, 'Pocket')
|
||||
-- ricerca della svuotatura
|
||||
@@ -450,13 +450,17 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function CalcCollisionSafety( vtDir)
|
||||
local dCollSic = 8 * BD.COLL_SIC
|
||||
if abs( vtDir:getX()) > 0.996 or abs( vtDir:getY()) > 0.996 or abs( vtDir:getZ()) > 0.996 then
|
||||
local dCollSic = 10 * BD.COLL_SIC
|
||||
if abs( vtDir:getX()) > 0.999 or abs( vtDir:getY()) > 0.999 or abs( vtDir:getZ()) > 0.999 then
|
||||
dCollSic = 0
|
||||
elseif abs( vtDir:getX()) > 0.996 or abs( vtDir:getY()) > 0.996 or abs( vtDir:getZ()) > 0.996 then
|
||||
dCollSic = 1 * BD.COLL_SIC
|
||||
elseif abs( vtDir:getX()) > 0.89 or abs( vtDir:getY()) > 0.89 or abs( vtDir:getZ()) > 0.89 then
|
||||
dCollSic = 2.5 * BD.COLL_SIC
|
||||
elseif abs( vtDir:getX()) > 0.866 or abs( vtDir:getY()) > 0.866 or abs( vtDir:getZ()) > 0.866 then
|
||||
dCollSic = 2 * BD.COLL_SIC
|
||||
dCollSic = 4 * BD.COLL_SIC
|
||||
elseif abs( vtDir:getX()) > 0.707 or abs( vtDir:getY()) > 0.707 or abs( vtDir:getZ()) > 0.707 then
|
||||
dCollSic = 5 * BD.COLL_SIC
|
||||
dCollSic = 5.5 * BD.COLL_SIC
|
||||
end
|
||||
return dCollSic
|
||||
end
|
||||
@@ -645,7 +649,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
|
||||
local dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, nSurfInt = GetTunnelDimension( Proc, nPartId)
|
||||
EgtErase(nSurfInt)
|
||||
-- verifico se può essere fatto con svuotatura
|
||||
if VerifyIfPocket( Proc, dDimMin, vtOrtho) then
|
||||
if VerifyIfPocket( Proc, dDimMin) then
|
||||
return true, false
|
||||
elseif VerifyChainSaw( Proc, dDimMin, dDimMax, vtOrtho) then
|
||||
return true, false
|
||||
@@ -1346,10 +1350,13 @@ local function SetOpenSide( nPathInt, vtOrtho, b3Solid, nAddGrpId, nStartPoint)
|
||||
if nStartPoint == 2 then
|
||||
EgtRemoveCurveCompoCurve( nPathInt, true)
|
||||
EgtRemoveCurveCompoCurve( nPathInt, false)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1357,9 +1364,9 @@ local function MakeRoundCleanCorner( Proc, nPhase, nRawId, nPartId, b3Raw,
|
||||
nFacInd, nAddGrpId, dDiam)
|
||||
|
||||
-- recupero la lavorazione senza considerare l'elevazione
|
||||
local sMilling = ML.FindMilling( 'LongSmallCut')
|
||||
local sMilling = ML.FindMilling( 'SmallToolContour')
|
||||
if not sMilling then
|
||||
local sMyWarn = 'Warning : clean corner milling/tool not found in library'
|
||||
local sMyWarn = 'Warning : SmallToolContour not found in library'
|
||||
EgtOutLog( sMyWarn)
|
||||
return true, sMyWarn
|
||||
end
|
||||
@@ -1535,9 +1542,9 @@ local function MakeRoundCleanContour( Proc, nPhase, nRawId, nPartId, b3Raw,
|
||||
bOneShot)
|
||||
|
||||
-- recupero la lavorazione senza considerare l'elevazione perché viene calcolata l'elevazione utile
|
||||
local sMilling = ML.FindMilling( 'LongSmallCut')
|
||||
local sMilling = ML.FindMilling( 'SmallToolContour')
|
||||
if not sMilling then
|
||||
local sMyWarn = 'Warning : clean corner milling/tool not found in library'
|
||||
local sMyWarn = 'Warning : SmallToolContour not found in library'
|
||||
EgtOutLog( sMyWarn)
|
||||
return true, sMyWarn
|
||||
end
|
||||
@@ -1699,12 +1706,23 @@ local function MakeRoundCleanContour( Proc, nPhase, nRawId, nPartId, b3Raw,
|
||||
end
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
|
||||
-- tipo attacco e uscita
|
||||
EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.NONE)
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI)
|
||||
-- allungo inizio e fine di 3/4 del diametro utensile
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dTDiam * 0.75)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dTDiam * 0.75)
|
||||
-- gestione attacco e uscita
|
||||
if EgtCurveIsClosed( nIdPath) then
|
||||
-- attacco e uscita a quarto di cerchio senza allungamenti a inizio e fine
|
||||
EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.TANGENT)
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI)
|
||||
EgtSetMachiningParam( MCH_MP.LITANG, 0)
|
||||
EgtSetMachiningParam( MCH_MP.LIPERP, 0.5 * dTDiam)
|
||||
EgtSetMachiningParam( MCH_MP.LIELEV, 0)
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, 0)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, 0)
|
||||
else
|
||||
-- nessun attacco e uscita, allungo inizio e fine di 3/4 del diametro utensile
|
||||
EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.NONE)
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI)
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, 0.75 * dTDiam)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, 0.75 * dTDiam)
|
||||
end
|
||||
-- setto massimo affondamento possibile
|
||||
local dMachDepth = 0
|
||||
if ( dMaxElev + BD.CUT_EXTRA + dCollSic) > dTMaxDepth then
|
||||
@@ -3248,7 +3266,7 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha
|
||||
-- se smusso non è esclusivo
|
||||
if nChamfer < 2 then
|
||||
-- verifico se può essere fatto con svuotatura
|
||||
local bMakePocket, sPocketing, dMaxDepth, dDiamTool = VerifyIfPocket( Proc, dDimMin, vtOrtho, dDepth / 2, sMchFind)
|
||||
local bMakePocket, sPocketing, dMaxDepth, dDiamTool = VerifyIfPocket( Proc, dDimMin, dDepth / 2, sMchFind)
|
||||
if bMakePocket then
|
||||
-- gestione svuotatura da un solo lato o anche dal lato opposto (se non verticale)
|
||||
-- estraggo il contorno dalla superfice per evitare i problemi con la svuotatura
|
||||
|
||||
Reference in New Issue
Block a user