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