diff --git a/LuaLibs/ProcessLongCut.lua b/LuaLibs/ProcessLongCut.lua index 424ceb2..13875c6 100644 --- a/LuaLibs/ProcessLongCut.lua +++ b/LuaLibs/ProcessLongCut.lua @@ -35,6 +35,7 @@ -- 2024/01/18 Implementata GetBlockedAxis che gestisce gli assi bloccati per tutti i tipi di utensile. -- 2024/01/22 Implementata gestione seghe a catena multiple. -- 2024/05/09 In Make, allungamento percorso ingresso per evitare collisioni durante approccio pezzo quando si setta OutRaw=3 +-- In Make, se non trova fresa per pulizia, da messaggio di warning anziché di errore -- Tabella per definizione modulo local ProcessLongCut = {} @@ -294,7 +295,7 @@ local function MakeAntiSplintBySaw( Proc, nFacet, vtN, b3Raw, nFacInd, bReduceDe -- laterale sul punto medio della linea in comune local frFc = Frame3d( ptPm, vtN) ; local b3BoxLoc = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, frFc) - dDepth = b3BoxLoc:getDimZ() or 0 + local dDepth = b3BoxLoc:getDimZ() or 0 -- recupero i dati dell'utensile local dSawDiam = 400 local dSawThick = 0 @@ -511,6 +512,7 @@ local function MakeSideFaceByChainSaw( nSurfId, dDepth, dOffs, dSal, dEal, bShor local dSawCornerRad = 0 local dSawThick = 0 local dSawDiameter = 0 + local sWarn -- se non trova una lavorazione di sawing esco if not sSawing then local sErr = 'Error : Sawing not found in library' @@ -970,58 +972,57 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus local dElev = BL.GetFaceElevation( Proc, 0, b3Solid) -- recupero la lavorazione local sMilling = ML.FindMilling( 'Long2Cut_H2', dElev, nil, nil, nil, not bCanUseUnderBlade, bCanUseUnderBlade) - if not sMilling then - local sErr = 'Error : milling Long2Cut (_H2) not found in library' - EgtOutLog( sErr) - return false, sErr - end - -- recupero i dati dell'utensile - local dToolDiam = 0 - local dMaxDepth = 0 - if EgtMdbSetCurrMachining( sMilling) then - local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) - if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then - dToolDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiam - dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth + if sMilling then + -- recupero i dati dell'utensile + local dToolDiam = 0 + local dMaxDepth = 0 + if EgtMdbSetCurrMachining( sMilling) then + local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) + if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then + dToolDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiam + dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth + end end - end - -- se ho facce di chiusura, per prima cosa faccio antischeggia - -- come richiesto da Fabio Squaratti il 03/09/2021 - if ( bLimXmin and not bForcedLim) or bLimXmax then - local bOk, nFacet - bMadeASbyBld, bOk, sWarn = ManageAntiSplintBySaw( Proc, b3Raw, (( bLimXmin and not bForcedLim) and bLimXmax), vtN, nFacet, 0, sWarn, bCanUseUnderBlade, nil, sCutting) - if not bOk then return false, sWarn end - end - -- eventuale lavorazione della faccia limitante l'inizio - if not bStartFixed then - local vtIni = -X_AX() - for j = 1, Proc.Fct - 1 do - local _, vtN = EgtSurfTmFacetCenter( Proc.Id, j, GDB_ID.ROOT) - if vtIni * vtN > 0 and nCountMilHead < 2 then - MakeSideFace( Proc.Id, j, nSide, sMilling, dToolDiam, nil, max(dStartDistUp,dStartDistDn), bCanUseUnderBlade) + -- se ho facce di chiusura, per prima cosa faccio antischeggia + -- come richiesto da Fabio Squaratti il 03/09/2021 + if ( bLimXmin and not bForcedLim) or bLimXmax then + local bMadeASbyBld, bOk, nFacet + bMadeASbyBld, bOk, sWarn = ManageAntiSplintBySaw( Proc, b3Raw, (( bLimXmin and not bForcedLim) and bLimXmax), vtN, nFacet, 0, sWarn, bCanUseUnderBlade, nil, sCutting) + if not bOk then return false, sWarn end + end + -- eventuale lavorazione della faccia limitante l'inizio + if not bStartFixed then + local vtIni = -X_AX() + for j = 1, Proc.Fct - 1 do + local _, vtN = EgtSurfTmFacetCenter( Proc.Id, j, GDB_ID.ROOT) + if vtIni * vtN > 0 and nCountMilHead < 2 then + MakeSideFace( Proc.Id, j, nSide, sMilling, dToolDiam, nil, max(dStartDistUp,dStartDistDn), bCanUseUnderBlade) + nCountMilHead = nCountMilHead + 1 + end + end + if bForcedLim and nCountMilHead < 1 then + MakeSideFace( Proc.Id, 0, nSide, sMilling, dToolDiam, bForcedLim, max(dStartDistUp,dStartDistDn), bCanUseUnderBlade) nCountMilHead = nCountMilHead + 1 end end - if bForcedLim and nCountMilHead < 1 then - MakeSideFace( Proc.Id, 0, nSide, sMilling, dToolDiam, bForcedLim, max(dStartDistUp,dStartDistDn), bCanUseUnderBlade) - nCountMilHead = nCountMilHead + 1 - end - end - -- eventuale lavorazione della faccia limitante la fine - if not bEndFixed then - local vtFin = X_AX() - for j = 1, Proc.Fct - 1 do - local _, vtN = EgtSurfTmFacetCenter( Proc.Id, j, GDB_ID.ROOT) - if vtFin * vtN > 0 and nCountMilHead < 2 then - MakeSideFace( Proc.Id, j, nSide, sMilling, dToolDiam, nil, max(dEndDistUp,dEndDistDn), bCanUseUnderBlade) + -- eventuale lavorazione della faccia limitante la fine + if not bEndFixed then + local vtFin = X_AX() + for j = 1, Proc.Fct - 1 do + local _, vtN = EgtSurfTmFacetCenter( Proc.Id, j, GDB_ID.ROOT) + if vtFin * vtN > 0 and nCountMilHead < 2 then + MakeSideFace( Proc.Id, j, nSide, sMilling, dToolDiam, nil, max(dEndDistUp,dEndDistDn), bCanUseUnderBlade) + nCountMilHead = nCountMilHead + 1 + end + end + if bForcedLim and nCountMilHead < 2 then + MakeSideFace( Proc.Id, 0, nSide, sMilling, dToolDiam, bForcedLim, max(dEndDistUp,dEndDistDn), bCanUseUnderBlade) nCountMilHead = nCountMilHead + 1 end end - if bForcedLim and nCountMilHead < 2 then - MakeSideFace( Proc.Id, 0, nSide, sMilling, dToolDiam, bForcedLim, max(dEndDistUp,dEndDistDn), bCanUseUnderBlade) - nCountMilHead = nCountMilHead + 1 - end + else + sWarn = 'Warning: milling Long2Cut (_H2) not found in library' end end @@ -1216,7 +1217,6 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus if not bChainSawOk then return false, sErr end end end - -- se non è sotto e non uso fresa di fianco: lavorazione Long2Cut elseif ( nSide ~= - 1 or BD.DOWN_HEAD) and nUseMillOnSide == 0 then -- determino la massima elevazione