From 4e7e24f740f4591943c1c0f7100bd6fb8517ad98 Mon Sep 17 00:00:00 2001 From: "luca.bacis" Date: Tue, 25 Jan 2022 17:41:27 +0100 Subject: [PATCH] - aggiunto parametro dSawCornerRad a DoSideChainSaw --- LuaLibs/ProcessLapJoint.lua | 51 +++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 37335d3..ae5a370 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -35,6 +35,7 @@ -- 2021/12/17 Lettura parametri Q una volta sola all'inizio. -- 2022/01/13 Estrapolazione da MakeMoreFaces() di MakeTwoFaces() e MakeThreeFaces(), e varie ottimizzazioni. -- 2022/01/19 Cambiata % lunghezza pezzo per spezzatura. Tolta correzione spessore fresa a disco con superficie da lavorare verso Z-. +-- 2022/01/28 Aggiunte funzioni DoClean, DoPocketing, DoHeadChainSaw, DoSideChainSaw e DoHeadCut. -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -552,7 +553,7 @@ local function VerifyBHSideMill( Proc, bSinglePart, bPrevBhSideMill) if bIsU or bIsL then local bExit = false for i = 1, Proc.Fct do - local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, i - 1, GDB_ID.ROOT) + local _, vtN = EgtSurfTmFacetCenter( Proc.Id, i - 1, GDB_ID.ROOT) if abs( vtN:getX()) > 0.001 and abs( vtN:getX()) < 0.999962 then bExit = true break @@ -713,7 +714,7 @@ function ProcessLapJoint.IsHeadFeature( Proc, b3Raw, dCurrOvmH) end -- se una sola faccia if Proc.Fct == 1 then - local ptC, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) + local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) if vtN0:getX() > 0.1 then return true end @@ -757,7 +758,7 @@ function ProcessLapJoint.IsTailFeature( Proc, b3Raw) end -- se una sola faccia if Proc.Fct == 1 then - local ptC, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) + local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) if vtN0:getX() < -0.1 then return true end @@ -814,9 +815,10 @@ function ProcessLapJoint.Classify( Proc, b3Raw) -- se 2 facce elseif Proc.Fct == 2 then -- dati delle facce + local ptC = {} local vtN = {} - _, vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) - _, vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT) + ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) + ptC[2], vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT) -- verifico se è lavorabile solo dal basso local bSmall = ( ( Proc.Head or Proc.Tail) and Proc.Box:getDimX() <= BD.GetMaxLenRidgeLapFromBottom( b3Raw:getDimZ())) or ( not ( Proc.Head or Proc.Tail) and Proc.Box:getDimY() <= BD.GetMaxLenRidgeLapFromBottom( b3Raw:getDimZ())) @@ -902,17 +904,17 @@ function ProcessLapJoint.Classify( Proc, b3Raw) -- se verso il basso, verifico se utilizzabile seconda faccia if bDown then if tFData.nFacInd2 and tFData.dFacElev2 < 2 * tFData.dFacElev then - local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFData.nFacInd2, GDB_ID.ROOT) + local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFData.nFacInd2, GDB_ID.ROOT) bDown = ( vtN2:getZ() < BD.NZ_MINB) elseif not tFData.nFacInd2 and bIsL and nFaceAdj >= 0 then - local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT) + local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT) bDown = ( vtN2:getZ() < BD.NZ_MINB) end -- verifico se la faccia principale è sottosquadra, ha forma L ed esiste la faccia adiacente elseif vtN:getZ() < -0.2589 and bIsL and nFaceAdj >= 0 then -- se il numero di facce > 2 o il box della feature supera una certa distanza dalle teste allora controllo la z della faccia ausiliaria if Proc.Fct > 2 or ( Proc.Box:getMax():getX() < _b3Solid:getMin():getX() - 150) or ( Proc.Box:getMin():getX() > _b3Solid:getMax():getX() + 150) then - local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT) + local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT) bDown = ( vtN2:getZ() < BD.NZ_MINB) end end @@ -926,7 +928,6 @@ end -- Lavorazione con fresa --------------------------------------------------------------------- local function MakeOneFaceByMill( Proc) - -- verifico il numero di facce della tacca assert( ( Proc.Fct == 1), 'Error : MakeOneFaceByMill in LapJoint with ' .. tostring( Proc.Fct) .. ' faces') -- dati della faccia @@ -1112,7 +1113,6 @@ local function MakeTwoFacesByMill( Proc, bDownHead) sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) bOk, sErr = DoMill( Proc, sName, sMilling, 0, nFacInd, nOthInd, vtN) if not bOk then return bOk, sErr end - -- eventuale segnalazione ingombro di testa o coda local dMinHIng = min( 0.5 * BD.VICE_MINH, 0.5 * _b3Raw:getDimZ()) if Proc.Box:getDimZ() > dMinHIng and Proc.Box:getMin():getZ() < _b3Raw:getMin():getZ() + dMinHIng then @@ -1363,7 +1363,7 @@ local function CheckToInvert( AuxId, bPositive) local nNewEntId = EgtCopyGlob( AuxId, sParnt) -- chiudo il percorso if EgtCloseCurveCompo( nNewEntId) then - local vtMPlane, _, dArea = EgtCurveArea( nNewEntId) + local vtMPlane, dDist, dArea = EgtCurveArea( nNewEntId) -- cancello percorso copia EgtErase( nNewEntId) if dArea and abs(dArea) > 1 then @@ -2041,9 +2041,9 @@ local function MakeDrillOnCorner( Proc, nFacInd, dDiam, bSpecialMach) if nIdIniPoint and nIdEndPoint then local vtExtr if bSpecialMach then - local ptC, vtN0 = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT) - local ptC, vtN1 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][1], GDB_ID.ROOT) - local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][2], GDB_ID.ROOT) + local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT) + local _, vtN1 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][1], GDB_ID.ROOT) + local _, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][2], GDB_ID.ROOT) vtExtr = vtN0 + vtN1 + vtN2 else -- versore direzione @@ -2460,7 +2460,7 @@ local function MakeByMillAsSaw( Proc, tFData, nBottomFace, sMillingOnSide, dSawD return false, sErr end -- Riordino le dimensioni per avere dH come lato lungo e dV come perpendicolare - local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT) + local _, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT) if abs( vtN * tFData.rfFac:getVersX()) > abs( vtN * tFData.rfFac:getVersY()) then tFData.dH, tFData.dV = tFData.dV, tFData.dH end @@ -2622,8 +2622,8 @@ local function DoHeadChainSaw( Proc, sName, sSawing, tFData, nFaceUse, nFacAdj, end --------------------------------------------------------------------- -local function DoSideChainSaw( Proc, sName, sSawing, tFData, vtN, vtOrtho, - nLundIdFace, dOffs, dMaxMat, bOpenStart, bOpenEnd) +local function DoSideChainSaw( Proc, sName, sSawing, tFData, vtN, vtOrtho, nLundIdFace, + dOffs, dMaxMat, dSawCornerRad, bOpenStart, bOpenEnd) local nMchFId = EgtAddMachining( sName, sSawing) if not nMchFId then local sErr = 'Error adding machining ' .. sName .. '-' .. sSawing @@ -2673,8 +2673,8 @@ local function DoSideChainSaw( Proc, sName, sSawing, tFData, vtN, vtOrtho, -- altrimenti vero tunnel (solo sopra-sotto o davanti-dietro) else -- se possibile aumento l'affondamento pari al raggio corner + 1 - if dMaxMat > ( dDepth + dSawCornerRad2 + 1) then - EgtSetMachiningParam( MCH_MP.DEPTH, ( dDepth + dSawCornerRad2 + 1)) + if dMaxMat > ( dDepth + dSawCornerRad + 1) then + EgtSetMachiningParam( MCH_MP.DEPTH, ( dDepth + dSawCornerRad + 1)) -- se massimo affondamento supera altezza fessura, uso massimo affondamento elseif dMaxMat > ( dDepth + 1) then EgtSetMachiningParam( MCH_MP.DEPTH, ( dMaxMat - 1)) @@ -2723,7 +2723,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI local dDistToNextPiece = EgtGetInfo( _nRawId, 'BDST', 'd') or 5.4 if bIs3Faces then -- recupero la faccia con il maggior numero di adiacenze e l'elevazione relativa - local nFacInd1, _, nFacInd2, _ = BL.GetFaceWithMostAdj( Proc.Id, _nPartId, bIs3Faces) + local nFacInd1, dFacElev1, nFacInd2, dFacElev2 = BL.GetFaceWithMostAdj( Proc.Id, _nPartId, bIs3Faces) if not nFacInd1 or nFacInd1 < 0 then if nFacInd1 == -1 then bOrthoFaces = nFacInd2 @@ -2739,7 +2739,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI if bOrthoFaces then -- ottengo le dimensioni del tunnel - dDimMin, dDimMax, _, vtOrtho, _, nSurfInt = GetTunnelDimension( Proc) + dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, nSurfInt = GetTunnelDimension( Proc) -- verifico la direzione -- se devo inserire il chamfer if _nChamfer > 0 then @@ -2773,7 +2773,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI return false, sErr end -- Riordino le dimensioni per avere dH come lato lungo e dV come perpendicolare - local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT) + local _, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT) if abs( vtN * tFData.rfFac:getVersX()) > abs( vtN * tFData.rfFac:getVersY()) then tFData.dH, tFData.dV = tFData.dV, tFData.dH end @@ -2934,7 +2934,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI -- inserisco la lavorazione di sawing local sName = sName .. 'Csaw_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) .. '_' .. tostring( i) local dOffs = ( i - 1) * dStep - local bOk, sErr = DoSideChainSaw(Proc, sName, sSawing2, tFData, vtN, vtOrtho, nLundIdFace, dOffs, dMaxMat2, bOpenStart, bOpenEnd) + local bOk, sErr = DoSideChainSaw(Proc, sName, sSawing2, tFData, vtN, vtOrtho, nLundIdFace, dOffs, dMaxMat2, dSawCornerRad2, bOpenStart, bOpenEnd) if not bOk then return false, sErr end @@ -5117,9 +5117,10 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) -- verifico se da lavorare con testa da sotto local bDownHead = false if BD.DOWN_HEAD then + local ptC = {} local vtN = {} - _, vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) - _, vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT) + ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) + ptC[2], vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT) local vtNm = ( vtN[1] + vtN[2]) vtNm:normalize() bDownHead = ( vtNm:getZ() < -0.5)