From eb1878c17cb7366e273333abf0259c7a1f60c9c6 Mon Sep 17 00:00:00 2001 From: "daniele.nicoli" Date: Tue, 24 Feb 2026 09:20:13 +0100 Subject: [PATCH 1/2] Definizione Parametro Q04=1 per esecuzione del solo contorno di un foro NON passante --- LuaLibs/BeamExec.lua | 12 ++++++++++-- LuaLibs/ProcessFreeContour.lua | 22 +++++++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index b3e60f7..014afc2 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -164,6 +164,9 @@ EgtOutLog( ' BeamExec started', 1) EgtMdbSetGeneralParam( MCH_GP.MAXDEPTHSAFE, BD.COLL_SIC) EgtMdbSave() +-- variabili assegnazione parametri Q +local Q_ONLY_CONTOUR = 'Q04' -- i + ------------------------------------------------------------------------------------------------------------- local function IsHeadFeature( Proc, b3Raw, dCurrOvmH) -- feature sempre di testa o coda per il gruppo @@ -1507,8 +1510,13 @@ local function AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, bN bOk, sErr = Chamfer.Make( Proc, nPhase, nRawId, nPartId) -- se foratura ( 3/4-040-X) elseif Drill.Identify( Proc) then - -- esecuzione foratura - bOk, sErr = Drill.Make( Proc, nPhase, nRawId, nPartId) + -- Se impostata Q04 = 1 forza la contornatura + if ( EgtGetInfo( Proc.Id, Q_ONLY_CONTOUR, 'i') == 1) then + bOk, sErr = FreeContour.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) + else + -- esecuzione foratura + bOk, sErr = Drill.Make( Proc, nPhase, nRawId, nPartId) + end -- se giunzione francese ( 1/2-035-X) elseif FrenchRidgeLap.Identify( Proc) then -- esecuzione giunzione francese diff --git a/LuaLibs/ProcessFreeContour.lua b/LuaLibs/ProcessFreeContour.lua index 9309fc7..2ad22f0 100644 --- a/LuaLibs/ProcessFreeContour.lua +++ b/LuaLibs/ProcessFreeContour.lua @@ -29,6 +29,7 @@ local ML = require( 'MachiningLib') local Q_DIM_STRIP = 'Q01' -- d local Q_DEPTH_CHAMFER = 'Q02' -- d local Q_OVERMAT_FOR_FINISH = 'Q03' -- d +local Q_ONLY_CONTOUR = 'Q04' -- i, valido solo per drill local Q_ONLY_CHAMFER = 'Q00' -- i local Q_RADIAL_OFFSET = 'Q06' -- d, valido solo per pocket local Q_IGNORE_LASER_PROBLEMS = 'Q07' @@ -135,7 +136,7 @@ function ProcessFreeContour.Classify( Proc, b3Raw) end --------------------------------------------------------------------- -local function VerifyChamfer( Proc, AuxId, nRawId, bMakeVertCham, bDownHead) +local function VerifyChamfer( Proc, AuxId, nRawId, bMakeVertCham, bDownHead, bContourFromDrill) local nChamfer = 0 -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) @@ -186,6 +187,10 @@ local function VerifyChamfer( Proc, AuxId, nRawId, bMakeVertCham, bDownHead) return -1, 0, sErr end end + if bContourFromDrill then + nChamfer = 0 + dDepth = 0 + end return nChamfer, dDepth, sMilling end @@ -236,6 +241,7 @@ end local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead) -- recupero l'ingombro del grezzo di appartenenza local b3Raw = EgtGetRawPartBBox( nRawId) + local bContourFromDrill = EgtGetInfo( Proc.Id, Q_ONLY_CONTOUR, 'i') == 1 -- ingombro del pezzo local Ls = EgtGetFirstNameInGroup( nPartId, 'Box') local b3Solid = EgtGetBBoxGlob( Ls or GDB_ID.NULL, GDB_BB.STANDARD) @@ -260,7 +266,7 @@ local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead) -- verifico se in testa o coda local bHead = Proc.Head -- verifico i parametri Q per profondità smusso e per eseguirlo in esclusiva - local nChamfer, dDepthCham, sChamfer = VerifyChamfer( Proc, AuxId, nRawId, true) + local nChamfer, dDepthCham, sChamfer = VerifyChamfer( Proc, AuxId, nRawId, true, nil, bContourFromDrill) -- recupero la lavorazione local bTopHead = ( BD.DOWN_HEAD and vtExtr:getZ() > -0.1) local bDownHead = ( BD.DOWN_HEAD and vtExtr:getZ() < 0.1) @@ -672,7 +678,9 @@ local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead) end -- assegno lato di lavoro - if Proc.Grp == 0 then + if bContourFromDrill then + dWorkSide = MCH_MILL_WS.LEFT + elseif Proc.Grp == 0 then dWorkSide = MCH_MILL_WS.CENTER elseif ( Proc.Grp == 3 and not bToolInv) or ( Proc.Grp == 4 and bToolInv) or ( Proc.Grp == 1 and bToolInv) or ( Proc.Grp == 2 and bToolInv) then dWorkSide = MCH_MILL_WS.LEFT @@ -704,6 +712,14 @@ local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead) EgtSetMachiningParam( MCH_MP.TOOLINVERT, bToolInvert) EgtSetMachiningParam( MCH_MP.INVERT, bInvert) EgtSetMachiningParam( MCH_MP.WORKSIDE, dWorkSide) + -- setto valori specifici se lavorazione nel pieno del solo contorno di un foro + if bContourFromDrill and ( dDepthWork / (nStep + 1) > dToolDiam ) then + local dWorkStep = dDepthWork / ( dDepthWork / dToolDiam) + EgtSetMachiningParam( MCH_MP.STEP, dWorkStep) + EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.GLIDE) + EgtSetMachiningParam( MCH_MP.LIELEV, dWorkStep) + EgtSetMachiningParam( MCH_MP.LITANG, dWorkStep) + end -- posizione braccio porta testa From ae31898e05a92eb17586bc1dd429bfc69b5f90f8 Mon Sep 17 00:00:00 2001 From: "daniele.nicoli" Date: Tue, 24 Feb 2026 12:02:43 +0100 Subject: [PATCH 2/2] =?UTF-8?q?-=20Spostamento=20del=20richiamo=20all'inte?= =?UTF-8?q?rno=20della=20Drill.Make=20-=20Piccole=20modifiche=20alla=20ges?= =?UTF-8?q?tione=20-=20Step=20diventa=20il=2075%=20del=20teorico=20o=20se?= =?UTF-8?q?=20pi=C3=B9=20piccolo,=20il=20diametro=20utensile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/BeamExec.lua | 12 ++---------- LuaLibs/ProcessDrill.lua | 11 +++++++++-- LuaLibs/ProcessFreeContour.lua | 18 ++++++++++-------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 014afc2..a095279 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -164,9 +164,6 @@ EgtOutLog( ' BeamExec started', 1) EgtMdbSetGeneralParam( MCH_GP.MAXDEPTHSAFE, BD.COLL_SIC) EgtMdbSave() --- variabili assegnazione parametri Q -local Q_ONLY_CONTOUR = 'Q04' -- i - ------------------------------------------------------------------------------------------------------------- local function IsHeadFeature( Proc, b3Raw, dCurrOvmH) -- feature sempre di testa o coda per il gruppo @@ -1510,13 +1507,8 @@ local function AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, bN bOk, sErr = Chamfer.Make( Proc, nPhase, nRawId, nPartId) -- se foratura ( 3/4-040-X) elseif Drill.Identify( Proc) then - -- Se impostata Q04 = 1 forza la contornatura - if ( EgtGetInfo( Proc.Id, Q_ONLY_CONTOUR, 'i') == 1) then - bOk, sErr = FreeContour.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) - else - -- esecuzione foratura - bOk, sErr = Drill.Make( Proc, nPhase, nRawId, nPartId) - end + -- esecuzione foratura + bOk, sErr = Drill.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- se giunzione francese ( 1/2-035-X) elseif FrenchRidgeLap.Identify( Proc) then -- esecuzione giunzione francese diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index adaf08c..49fa2b9 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -134,7 +134,8 @@ function ProcessDrill.Split( Proc, b3Raw) local bOpen = ( Proc.Fce ~= 0) and ( Proc.Fce ~= Proc.Fcs) -- recupero flag abilitazione split (0=auto,1=no) local bTrySplit = ( EgtGetInfo( Proc.Id, 'Q02', 'i') ~= 1) - if not bTrySplit then + local bOnlyContour = ( EgtGetInfo( Proc.Id, 'Q04', 'i') == 1) + if ( not bTrySplit) or bOnlyContour then return false end -- restituisco se va fatto in doppio (solo fori orizzontali) @@ -341,7 +342,13 @@ end --------------------------------------------------------------------- -- Applicazione della lavorazione -function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) +function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) + -- Se forzato contorno foro forzo richiamo a FreeContour e uscita dalla funzione + if EgtGetInfo( Proc.Id, 'Q04', 'i') == 1 then + _G.package.loaded.ProcessFreeContour = nil + local FreeContour = require( 'ProcessFreeContour') + return FreeContour.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) + end -- default per costanti BD.DRILL_VX_MAX_ANGLEDRILL = ( BD.DRILL_VX_MAX_ANGLEDRILL or 0.928) -- ingombro del pezzo diff --git a/LuaLibs/ProcessFreeContour.lua b/LuaLibs/ProcessFreeContour.lua index 2ad22f0..9888a57 100644 --- a/LuaLibs/ProcessFreeContour.lua +++ b/LuaLibs/ProcessFreeContour.lua @@ -136,7 +136,7 @@ function ProcessFreeContour.Classify( Proc, b3Raw) end --------------------------------------------------------------------- -local function VerifyChamfer( Proc, AuxId, nRawId, bMakeVertCham, bDownHead, bContourFromDrill) +local function VerifyChamfer( Proc, AuxId, nRawId, bMakeVertCham, bDownHead) local nChamfer = 0 -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) @@ -186,10 +186,8 @@ local function VerifyChamfer( Proc, AuxId, nRawId, bMakeVertCham, bDownHead, bCo EgtOutLog( sErr) return -1, 0, sErr end - end - if bContourFromDrill then - nChamfer = 0 - dDepth = 0 + else + sMilling = '' end return nChamfer, dDepth, sMilling @@ -266,7 +264,7 @@ local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead) -- verifico se in testa o coda local bHead = Proc.Head -- verifico i parametri Q per profondità smusso e per eseguirlo in esclusiva - local nChamfer, dDepthCham, sChamfer = VerifyChamfer( Proc, AuxId, nRawId, true, nil, bContourFromDrill) + local nChamfer, dDepthCham, sChamfer = VerifyChamfer( Proc, AuxId, nRawId, true, nil) -- recupero la lavorazione local bTopHead = ( BD.DOWN_HEAD and vtExtr:getZ() > -0.1) local bDownHead = ( BD.DOWN_HEAD and vtExtr:getZ() < 0.1) @@ -713,8 +711,8 @@ local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead) EgtSetMachiningParam( MCH_MP.INVERT, bInvert) EgtSetMachiningParam( MCH_MP.WORKSIDE, dWorkSide) -- setto valori specifici se lavorazione nel pieno del solo contorno di un foro - if bContourFromDrill and ( dDepthWork / (nStep + 1) > dToolDiam ) then - local dWorkStep = dDepthWork / ( dDepthWork / dToolDiam) + if bContourFromDrill then + local dWorkStep = max( ( EgtGetMachiningParam( MCH_MP.STEP) or 0) * 0.75, dToolDiam) EgtSetMachiningParam( MCH_MP.STEP, dWorkStep) EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.GLIDE) EgtSetMachiningParam( MCH_MP.LIELEV, dWorkStep) @@ -1020,6 +1018,10 @@ function ProcessFreeContour.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) Q_DEPTH_CHAMFER = 'Q01' Q_DIM_STRIP = 'Q02' end + if Proc.Prc == 40 then + Q_DIM_STRIP = '' + Q_OVERMAT_FOR_FINISH = '' + end -- recupero la tipologia local bPocket = ( EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1) -- se svuotatura