From 58e32bdfd039124bba600476925ceb2a7b0e0f78 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Mon, 16 Mar 2026 18:23:16 +0100 Subject: [PATCH 1/2] =?UTF-8?q?-=20in=20LapJoint=20aggiunta=20possibilit?= =?UTF-8?q?=C3=A0=20di=20fare=20solo=20contorno=20per=20tasche=20groove=20?= =?UTF-8?q?3=20aperte=20con=20Q02,=20pe=20L030?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/BeamLib.lua | 1 + LuaLibs/ProcessLapJoint.lua | 352 +++++++++++++++++++++++++++++++----- 2 files changed, 306 insertions(+), 47 deletions(-) diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 282c3e1..892a29a 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -1393,6 +1393,7 @@ function BeamLib.GetToolFromMachining( sMachiningName) else Tool.IsOnAggregate = false end + Tool.MaxDepth = EgtTdbGetCurrToolMaxDepth() or 0 -- altri utensili al momento non previsti else error( 'Wrong tool type') diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index f9b20a4..cee96c8 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -153,6 +153,7 @@ local Q_CHAINSAW_FROM_SIDE = '' -- i local Q_CONVENTIONAL_MILLING = '' -- i local Q_CLEAN_CORNER = '' -- 1 local Q_FLOATING_AGGREGATE = '' -- i +local Q_DIM_STRIP = '' -- d -- variabile smussi local bMadeChamfer @@ -233,6 +234,7 @@ local function AssignQIdent( Proc) Q_CONVENTIONAL_MILLING = 'Q14' -- i Q_CLEAN_CORNER = 'Q15' -- i Q_FLOATING_AGGREGATE = 'Q16' -- i + Q_DIM_STRIP = 'Q17' -- d elseif ( Proc.Grp == 1 or Proc.Grp == 2) and Proc.Prc == 30 then Q_BLADE_ON_ALONG_FACE = 'Q04' -- i elseif ( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 32 then @@ -2414,6 +2416,222 @@ local function MakeDrillOnCorner( Proc, nPhase, nRawId, nPartId, b3Raw, nFacInd, return true, sMyWarn end +--------------------------------------------------------------------- +local function MakeContourByMill( Proc, idContourPath, vtTunnelDirection, dTunnelDepth, dDimStrip, nPhase) + + local dCollSic = BL.CalcCollisionSafety( vtTunnelDirection) + local bMultipleHeadsAvailble = BD.DOWN_HEAD or BD.TWO_EQUAL_HEADS + local bMillFromBottom = vtTunnelDirection:getZ() < BD.NZ_MINA + local bMillFromBottomOpposite = -vtTunnelDirection:getZ() < BD.NZ_MINA + local sWarn = '' + + -- ricerca lavorazione lato principale + local sMilling = ML.FindMilling( 'SmallToolContour', nil, nil, nil, nil, not bMillFromBottom, bMillFromBottom) + if not sMilling then + local sErr = 'Warning : SmallToolContour not found in library' + EgtOutLog( sErr) + return false, sErr + end + -- dati utensile + local Tool = BL.GetToolFromMachining( sMilling) + + -- verifica necessità lavorazione opposta + local bOppositeMillingNeeded + local bMainMillingReachesFullDepth = Tool.MaxDepth > dTunnelDepth + dCollSic - dDimStrip + local bMainMillingReachesHalfDepth = bMainMillingReachesFullDepth or ( Tool.MaxDepth > dTunnelDepth / 2 + dCollSic - dDimStrip / 2) + if bMainMillingReachesFullDepth and not bMultipleHeadsAvailble then + bOppositeMillingNeeded = false + else + bOppositeMillingNeeded = true + end + + -- ricera lavorazione lato opposto + local sMillingOpposite = ML.FindMilling( 'SmallToolContour', nil, nil, nil, nil, not bMillFromBottomOpposite, bMillFromBottomOpposite) + if bOppositeMillingNeeded and not sMillingOpposite then + local sErr = 'Warning : Opposite SmallToolContour not found in library' + EgtOutLog( sErr) + return false, sErr + end + -- dati utensile + local ToolOpposite = BL.GetToolFromMachining( sMillingOpposite) + + local bOppositMillingReachesHalfDepth = ToolOpposite.MaxDepth > dTunnelDepth + dCollSic - dDimStrip + + -- applicazione lavorazione lato principale + local sName = 'Contour_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local idMachining = EgtAddMachining( sName, sMilling) + if not idMachining then + local sErr = 'Error : impossible add machining ' .. sName .. '-' .. sMilling + return false, sErr + end + -- geometria + EgtSetMachiningGeometry( {{ idContourPath, -1}}) + -- lato di lavoro sinistro + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) + -- inversione direzione utensile + EgtSetMachiningParam( MCH_MP.TOOLINVERT, false) + -- SCC + local nSCC = MCH_SCC.NONE + if not BD.C_SIMM then + if AreSameOrOppositeVectorApprox( vtTunnelDirection, Z_AX()) then + nSCC = MCH_SCC.ADIR_YM + elseif abs( vtTunnelDirection:getX()) < 0.1 then + nSCC = EgtIf( BL.IsPartFinalPhase( nPhase), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) + elseif vtTunnelDirection:getY() < GEO.EPS_SMALL then + nSCC = MCH_SCC.ADIR_YM + else + nSCC = MCH_SCC.ADIR_YP + end + end + EgtSetMachiningParam( MCH_MP.SCC, nSCC) + -- gestione attacco e uscita + if EgtCurveIsClosed( idContourPath) then + -- attacco e uscita a quarto di cerchio senza allungamenti a inizio e fine + EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.TANGENT) + EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI) + EgtSetMachiningParam( MCH_MP.LITANG, 0) + EgtSetMachiningParam( MCH_MP.LIPERP, 0.5 * Tool.Diameter) + EgtSetMachiningParam( MCH_MP.LIELEV, 0) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, 0) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, 0) + else + -- nessun attacco e uscita, allungo inizio e fine di raggio utensile + 5mm (per evitare controllo collisioni) + EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.NONE) + EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, Tool.Diameter / 2 + 5) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, Tool.Diameter / 2 + 5) + end + -- affondamento - la curva è a metà tasca quindi affondamento 0 significa che la lavorazione arriva a metà tasca + local dDepth + -- c'è la lavorazione opposta + if bOppositeMillingNeeded then + -- si arriva a metà tasca + if bMainMillingReachesHalfDepth then + dDepth = -dDimStrip / 2 + -- si arriva al massimo raggiungibile + else + dDepth = Tool.MaxDepth - dTunnelDepth / 2 + sWarn = 'Warning : incomplete' + end + -- non c'è lavorazione opposta + else + -- si arriva fino in fondo + if bMainMillingReachesFullDepth then + dDepth = dTunnelDepth / 2 - dDimStrip + -- si arriva al massimo raggiungibile + else + dDepth = Tool.MaxDepth - dTunnelDepth / 2 + sWarn = 'Warning : incomplete' + end + end + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) + -- Note utente con dichiarazione nessuna generazione sfridi per Vmill e massima elevazione + local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or '' + sUserNotes = EgtSetValInNotes( sUserNotes, 'VMRS', 0) + sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', EgtNumToString( dTunnelDepth / 2 + dDepth, 1)) + EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) + -- eseguo + local bMillingOk + if ML.ApplyMachining( true, false) then + _, sWarn = EgtGetMachMgrWarning( 0) + if EgtIsMachiningEmpty() then + EgtSetOperationMode( idMachining, false) + end + bMillingOk = true + -- altrimenti lavorazione non applicata + else + _, sWarn = EgtGetLastMachMgrError() + EgtSetOperationMode( idMachining, false) + bMillingOk = false + end + + -- eventuale lavorazione opposta + local bMillingOppositeOk + if bOppositeMillingNeeded then + local sName = 'ContourOppo_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local idMachining = EgtAddMachining( sName, sMillingOpposite) + if not idMachining then + local sErr = 'Error : impossible add machining ' .. sName .. '-' .. sMilling + return false, sErr + end + -- geometria + EgtSetMachiningGeometry( {{ idContourPath, -1}}) + -- lato di lavoro sinistro + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT) + -- inversione direzione utensile + EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) + -- SCC + local nSCC = MCH_SCC.NONE + if not BD.C_SIMM then + if AreSameOrOppositeVectorApprox( vtTunnelDirection, Z_AX()) then + nSCC = MCH_SCC.ADIR_YM + elseif abs( vtTunnelDirection:getX()) < 0.1 then + nSCC = EgtIf( BL.IsPartFinalPhase( nPhase), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) + elseif vtTunnelDirection:getY() < GEO.EPS_SMALL then + nSCC = MCH_SCC.ADIR_YM + else + nSCC = MCH_SCC.ADIR_YP + end + end + EgtSetMachiningParam( MCH_MP.SCC, nSCC) + -- gestione attacco e uscita + if EgtCurveIsClosed( idContourPath) then + -- attacco e uscita a quarto di cerchio senza allungamenti a inizio e fine + EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.TANGENT) + EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI) + EgtSetMachiningParam( MCH_MP.LITANG, 0) + EgtSetMachiningParam( MCH_MP.LIPERP, 0.5 * Tool.Diameter) + EgtSetMachiningParam( MCH_MP.LIELEV, 0) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, 0) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, 0) + else + -- nessun attacco e uscita, allungo inizio e fine di raggio utensile + 5mm (per evitare controllo collisioni) + EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.NONE) + EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, Tool.Diameter / 2 + 5) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, Tool.Diameter / 2 + 5) + end + -- affondamento - la curva è a metà tasca quindi affondamento 0 significa che la lavorazione arriva a metà tasca + local dDepth + -- si arriva a metà tasca + if bOppositMillingReachesHalfDepth then + dDepth = -dDimStrip / 2 + -- si arriva al massimo raggiungibile + else + dDepth = Tool.MaxDepth - dTunnelDepth / 2 + sWarn = 'Warning : incomplete' + end + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) + -- Note utente con dichiarazione nessuna generazione sfridi per Vmill e massima elevazione + local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or '' + sUserNotes = EgtSetValInNotes( sUserNotes, 'VMRS', 0) + sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', EgtNumToString( dTunnelDepth / 2 + dDepth, 1)) + EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) + -- eseguo + if ML.ApplyMachining( true, false) then + _, sWarn = EgtGetMachMgrWarning( 0) + if EgtIsMachiningEmpty() then + EgtSetOperationMode( idMachining, false) + end + bMillingOppositeOk = true + -- altrimenti lavorazione non applicata + else + _, sWarn = EgtGetLastMachMgrError() + EgtSetOperationMode( idMachining, false) + bMillingOppositeOk = false + end + end + + + if bMillingOk or ( bOppositeMillingNeeded and bMillingOppositeOk) then + return true, sWarn + else + local sErr = 'Error : Not applicable' + return false, sErr + end + +end + --------------------------------------------------------------------- local function ExtractExternalPaths( nPathInt, nNumIdAux, vtOrtho, b3Solid, nAddGrpId) local nAuxId1, nAuxId2 @@ -7557,7 +7775,6 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa end bTryWithBlades = false -- se ho antischeggia con fresa le inserisco - -- if nChamfer < 2 and nQAntisplintResult == 2 and ( bIsU or bIsL) then if nChamfer < 2 and nQAntisplintResult == 2 then local bOk, sWarn2 = ManageAntiSplintByMill( Proc, nPhase, nRawId, nPartId, b3Raw, nFacInd, nAddGrpId, bMillDown, dDiamTool, nil, @@ -7584,57 +7801,93 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa -- in tutti gli altri casi, a meno che non sia forzata sega a catena, lancio la MakeByPockets -- lavorazione singola o doppia contrapposta, fondo della tasca una faccia fittizia perpendicolare al lato lungo elseif not bForceChainsaw then - -- se 2 facce setto i parametri corretti per la MakeByPockets - if bForceSideMill and Proc.Fct == 2 then - bIs3Faces = false - bOrthoFacesMaster = true - bSetOpenBorders = true - end - nOk, sErr, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId, - bOrthoFaces = MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCham, nAddGrpId, sMyMchFind, bIs3Faces, b3Solid, bOrthoFacesMaster, bMillDown, bSetOpenBorders, bIsU, bIsL) - if nOk == -3 then - bTryWithBlades = true - elseif nOk == -2 then - if not sMchFind then - sMchFind = sMchFindBackUp - end - sPocketing = ML.FindPocketing( sMchFind, dDiam, nil, nil, not bMillDown, bMillDown) - if not sPocketing then - local sErr2 = 'Error : '..sMchFind..' not found in library' - EgtOutLog( sErr2) - return false, sErr2 - end - bTryWithBlades = false - sWarn = sErr - elseif nOk < 0 then - return false, sErr - elseif nOk > 0 then - bTryWithBlades = false - sWarn = sErr - -- se ho antischeggia con fresa le inserisco - -- if nChamfer < 2 and nQAntisplintResult == 2 and ( bIsU or bIsL) then - local nFacIndOri, dFacElevOri = BL.GetFaceWithMostAdj( Proc, nPartId) - if nChamfer < 2 and nQAntisplintResult == 2 then - local bOk, sWarn2 = ManageAntiSplintByMill( Proc, nPhase, nRawId, nPartId, b3Raw, - nFacIndOri, nAddGrpId, bMillDown, dDiamTool, nil, - nil, nil, nil, b3Solid, dFacElevOri, - bOneShot, nFirstMachId) + local bOnlyContour = ( EgtGetInfo( Proc.Id, Q_ONLY_CONTOUR, 'i') or 0) > 0 + -- richiesto solo contorno + if bOnlyContour then + if Proc.TopologyLongName == 'Groove-Through-RightAngles-Parallel-3' then + -- direzione e faccia aggiunta del tunnel (la groove-3 passante è uno pseudotunnel) + local _, _, dTunnelDepth, vtTunnelDirection, _, idAddedTunnelTmFace = BL.GetTunnelDimension( Proc, nPartId) + -- si tiene il verso del tunnel dal lato Z positiva + if vtTunnelDirection:getZ() < GEO.EPS_SMALL then + vtTunnelDirection = -vtTunnelDirection + EgtInvertSurf( idAddedTunnelTmFace) + end + -- elevazione della faccia aggiunta + -- estrazione del contorno da lavorare + local idContourPath = EgtExtractSurfTmLoops( idAddedTunnelTmFace, nAddGrpId) + EgtModifyCurveExtrusion( idContourPath, vtTunnelDirection, GDB_RT.GLOB) + -- si eliminano i lati aperti + BL.SetOpenSide( idContourPath, b3Solid) + BL.ChangeOrOpenStart( idContourPath, 2) + -- spessore codolo da lasciare + local dDimStrip = EgtGetInfo( Proc.Id, Q_DIM_STRIP, 'd') or 5 + local bOkContour, sWarn2 = MakeContourByMill( Proc, idContourPath, vtTunnelDirection, dTunnelDepth, dDimStrip, nPhase) + if bOkContour then + return true, sWarn2 + else + return false, sWarn2 + end if sWarn2 then if not sWarn then sWarn = '' end sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2) end + else + local sErr2 = 'Error : Cannot use ' .. Q_ONLY_CONTOUR .. ' on this feature' + return false, sErr2 end - -- se abilitato dal parametro Q inserisco pulitura spigoli o contorno con fresa più piccola - local nContourSmallTool = EgtGetInfo( Proc.Id, Q_CONTOUR_SMALL_TOOL, 'i') or 0 - if nContourSmallTool > 0 then - local bOk, sWarn2 = MakeRoundCleanCornerOrContour( Proc, nPhase, nRawId, nPartId, b3Raw, - nFacInd, nAddGrpId, dDiamTool, nContourSmallTool, bMillDown, - bDoubleSide, vtOrtho, nPathInt, nSurfInt, b3Solid, - dDepth, bOneShotm) - if not bOk then return false, sWarn2 end - if sWarn2 then - if not sWarn then sWarn = '' end - sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2) + -- svuotatura + else + -- se 2 facce setto i parametri corretti per la MakeByPockets + if bForceSideMill and Proc.Fct == 2 then + bIs3Faces = false + bOrthoFacesMaster = true + bSetOpenBorders = true + end + nOk, sErr, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId, + bOrthoFaces = MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCham, nAddGrpId, sMyMchFind, bIs3Faces, b3Solid, bOrthoFacesMaster, bMillDown, bSetOpenBorders, bIsU, bIsL) + if nOk == -3 then + bTryWithBlades = true + elseif nOk == -2 then + if not sMchFind then + sMchFind = sMchFindBackUp + end + sPocketing = ML.FindPocketing( sMchFind, dDiam, nil, nil, not bMillDown, bMillDown) + if not sPocketing then + local sErr2 = 'Error : '..sMchFind..' not found in library' + EgtOutLog( sErr2) + return false, sErr2 + end + bTryWithBlades = false + sWarn = sErr + elseif nOk < 0 then + return false, sErr + elseif nOk > 0 then + bTryWithBlades = false + sWarn = sErr + -- se ho antischeggia con fresa le inserisco + local nFacIndOri, dFacElevOri = BL.GetFaceWithMostAdj( Proc, nPartId) + if nChamfer < 2 and nQAntisplintResult == 2 then + local bOk, sWarn2 = ManageAntiSplintByMill( Proc, nPhase, nRawId, nPartId, b3Raw, + nFacIndOri, nAddGrpId, bMillDown, dDiamTool, nil, + nil, nil, nil, b3Solid, dFacElevOri, + bOneShot, nFirstMachId) + if sWarn2 then + if not sWarn then sWarn = '' end + sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2) + end + end + -- se abilitato dal parametro Q inserisco pulitura spigoli o contorno con fresa più piccola + local nContourSmallTool = EgtGetInfo( Proc.Id, Q_CONTOUR_SMALL_TOOL, 'i') or 0 + if nContourSmallTool > 0 then + local bOk, sWarn2 = MakeRoundCleanCornerOrContour( Proc, nPhase, nRawId, nPartId, b3Raw, + nFacInd, nAddGrpId, dDiamTool, nContourSmallTool, bMillDown, + bDoubleSide, vtOrtho, nPathInt, nSurfInt, b3Solid, + dDepth, bOneShotm) + if not bOk then return false, sWarn2 end + if sWarn2 then + if not sWarn then sWarn = '' end + sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2) + end end end end @@ -8356,6 +8609,11 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) if ( Proc.Box:getDimX() > BD.LONGCUT_MAXLEN) or ( Proc.Box:getDimX() > 0.7 * b3Solid:getDimX() and ( Proc.DistanceToNextPart > 1000 or Proc.Box:getDimX() > BD.LONGCUT_ENDLEN)) or ( ( nForceUseBladeOnNotContinueFace and nForceUseBladeOnNotContinueFace > 0) and ( Proc.Box:getDimX() > ( BD.LEN_SHORT_PART or 1000))) then + local bOnlyContour = ( EgtGetInfo( Proc.Id, Q_ONLY_CONTOUR, 'i') or 0) > 0 + if bOnlyContour then + local sErr2 = 'Error : Cannot use ' .. Q_ONLY_CONTOUR .. ' on long features' + return false, sErr2 + end -- una faccia if Proc.Fct == 1 then if bUseBlade then From 63133c881318b6b40682e4419f28e0d31ba6b2d0 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 17 Mar 2026 09:57:48 +0100 Subject: [PATCH 2/2] - in BeamLib.GetToolfromMachining per le frese si leggono anche MaxDepth e StemDiameter. MaxDepth corretta se StemDiameter > Diameter - in LapJoint correzioni a Q02 per solo contorno --- LuaLibs/BeamLib.lua | 4 ++++ LuaLibs/ProcessLapJoint.lua | 9 ++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 892a29a..5b39da5 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -1393,7 +1393,11 @@ function BeamLib.GetToolFromMachining( sMachiningName) else Tool.IsOnAggregate = false end + Tool.StemDiameter = EgtTdbGetCurrToolParam( MCH_TP.STEMDIAM) or 0 Tool.MaxDepth = EgtTdbGetCurrToolMaxDepth() or 0 + if Tool.StemDiameter > Tool.Diameter + GEO.EPS_SMALL then + Tool.MaxDepth = Tool.MaxDepth - BD.COLL_SIC + end -- altri utensili al momento non previsti else error( 'Wrong tool type') diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index cee96c8..98fc381 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -2455,7 +2455,7 @@ local function MakeContourByMill( Proc, idContourPath, vtTunnelDirection, dTunne -- dati utensile local ToolOpposite = BL.GetToolFromMachining( sMillingOpposite) - local bOppositMillingReachesHalfDepth = ToolOpposite.MaxDepth > dTunnelDepth + dCollSic - dDimStrip + local bOppositMillingReachesHalfDepth = ToolOpposite.MaxDepth > dTunnelDepth / 2 + dCollSic - dDimStrip / 2 -- applicazione lavorazione lato principale local sName = 'Contour_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) @@ -2510,7 +2510,7 @@ local function MakeContourByMill( Proc, idContourPath, vtTunnelDirection, dTunne dDepth = -dDimStrip / 2 -- si arriva al massimo raggiungibile else - dDepth = Tool.MaxDepth - dTunnelDepth / 2 + dDepth = Tool.MaxDepth - dTunnelDepth / 2 - dCollSic sWarn = 'Warning : incomplete' end -- non c'è lavorazione opposta @@ -2520,7 +2520,7 @@ local function MakeContourByMill( Proc, idContourPath, vtTunnelDirection, dTunne dDepth = dTunnelDepth / 2 - dDimStrip -- si arriva al massimo raggiungibile else - dDepth = Tool.MaxDepth - dTunnelDepth / 2 + dDepth = Tool.MaxDepth - dTunnelDepth / 2 - dCollSic sWarn = 'Warning : incomplete' end end @@ -2598,7 +2598,7 @@ local function MakeContourByMill( Proc, idContourPath, vtTunnelDirection, dTunne dDepth = -dDimStrip / 2 -- si arriva al massimo raggiungibile else - dDepth = Tool.MaxDepth - dTunnelDepth / 2 + dDepth = Tool.MaxDepth - dTunnelDepth / 2 - dCollSic sWarn = 'Warning : incomplete' end EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) @@ -2622,7 +2622,6 @@ local function MakeContourByMill( Proc, idContourPath, vtTunnelDirection, dTunne end end - if bMillingOk or ( bOppositeMillingNeeded and bMillingOppositeOk) then return true, sWarn else