From 3d86d96e1e488d0143e2b80dcd5f7db698d52525 Mon Sep 17 00:00:00 2001 From: DarioS Date: Tue, 29 Jun 2021 12:30:53 +0200 Subject: [PATCH] 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. --- LuaLibs/ProcessCut.lua | 2 +- LuaLibs/ProcessLapJoint.lua | 52 +++++++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index da53021..c0283c7 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -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', '')) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 3009ace..f59a5c7 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -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