From 54163cef8bcf19be021b2308fac8e5c882ddd88a Mon Sep 17 00:00:00 2001 From: "daniele.nicoli" Date: Thu, 18 Jun 2026 09:44:26 +0200 Subject: [PATCH] WProcessFreeContour - Q09=1 inverte lato testa e imposta conventional milling durante i tagli. Richiesta speciale per cliente essetre-90480023_XS-MW. Migliorato funzionamento --- LuaLibs/WProcessFreeContour.lua | 59 +++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/LuaLibs/WProcessFreeContour.lua b/LuaLibs/WProcessFreeContour.lua index 35a7cc6..42745fb 100644 --- a/LuaLibs/WProcessFreeContour.lua +++ b/LuaLibs/WProcessFreeContour.lua @@ -1785,7 +1785,7 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw) end --------------------------------------------------------------------- -local function AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring) +local function AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring, bForceConventionalSawing) -- verifico se ciclo chiuso local bClosed = ( abs( vFace[1].PrevAng) > 0.1) -- ciclo di inserimento dei tagli sulle facce del contorno in esame @@ -1823,15 +1823,59 @@ local function AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squar end end EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) - -- verifico se va invertita la direzione di lavorazione perchè faccia verso l'alto (angolo maggiore di 0.01 deg) - local bInvert = ( vFace[i].Norm:getZ() > 0.0001745) + -- verifico posizione del motore in base a inclinazione faccia (angolo maggiore di 0.01 deg) + local bFaceDown = not ( vFace[i].Norm:getZ() > GEO.EPS_SMALL) + -- verso di rotazione della lama + local bCCW = ( dSpeed < 0) + local bInvert, nHeadSide + -- TODO - Vecchio funzionamento per far andare macchina con la WD.GetSawHeadSide, in futuro da eliminare e tenere solo l'else + if WD.GetSawHeadSide then + bInvert = not bFaceDown + -- lato mandrino ( standard a sinistra se rotazione CCW, altrimenti a destra, oppure da funzione di macchina) + nHeadSide = WD.GetSawHeadSide( dSpeed, sHead) + else + if bCCW then + if bFaceDown then + if bForceConventionalSawing then + bInvert = true + nHeadSide = MCH_SAW_HS.RIGHT + else + bInvert = false + nHeadSide = MCH_SAW_HS.LEFT + end + else + if bForceConventionalSawing then + bInvert = false + nHeadSide = MCH_SAW_HS.RIGHT + else + bInvert = true + nHeadSide = MCH_SAW_HS.LEFT + end + end + else + if bFaceDown then + if bForceConventionalSawing then + bInvert = false + nHeadSide = MCH_SAW_HS.LEFT + else + bInvert = true + nHeadSide = MCH_SAW_HS.RIGHT + end + else + if bForceConventionalSawing then + bInvert = true + nHeadSide = MCH_SAW_HS.LEFT + else + bInvert = false + nHeadSide = MCH_SAW_HS.RIGHT + end + end + end + end -- imposto inversione EgtSetMachiningParam( MCH_MP.INVERT, bInvert) -- imposto lato di lavoro EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( bInvert, MCH_SAW_WS.LEFT, MCH_SAW_WS.RIGHT)) - -- lato mandrino ( standard a sinistra se rotazione CCW, altrimenti a destra, oppure da funzione di macchina) - local nHeadSide = EgtIf( dSpeed < 0, MCH_SAW_HS.LEFT, MCH_SAW_HS.RIGHT) - if WD.GetSawHeadSide then nHeadSide = WD.GetSawHeadSide( dSpeed, sHead) end EgtSetMachiningParam( MCH_MP.HEADSIDE, nHeadSide) -- assegno i dati di attacco (sicurezza solo se angolo interno) local nLeadIn = MCH_SAW_LI.CENT @@ -1969,7 +2013,8 @@ local function MakeByCut( Proc, nRawId, b3Raw, b3Squaring) -- recupero i dati di tutte le facce local vFace, dMaxWidth, nNewProc = GetFacesData( Proc, bOpposite, true, dSawDiam, dSawMaxDepth, dSawThick, nAddGrpId, b3Raw) -- inserimento dei tagli di lama - local bCtOk, sCtErr = AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring) + local bForceConventionalSawing = EgtGetInfo( Proc.Id, 'Q09', 'd') == 1 + local bCtOk, sCtErr = AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring, bForceConventionalSawing) if not bCtOk then return bCtOk, sCtErr end -- se richiesta solo lama, esco local nCntType = EgtGetInfo( Proc.Id, 'CNT_TYPE', 'i') or 0