From f397b220b991091830782d6893fe23233a29741e Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Tue, 7 Apr 2026 11:57:45 +0200 Subject: [PATCH 1/3] In WallExec, quando si disattivano le feature in doppio, si verifica che effettivamente esista la Mirror --- LuaLibs/WallExec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LuaLibs/WallExec.lua b/LuaLibs/WallExec.lua index 6c7866b..6217c26 100644 --- a/LuaLibs/WallExec.lua +++ b/LuaLibs/WallExec.lua @@ -1329,7 +1329,7 @@ function WallExec.ProcessFeatures() if Proc.Double and Proc.Double > 0 then for j = 1, #vProc do local ProcMirror = vProc[j] - if Proc.Mirror.Id == ProcMirror.Id then + if Proc.Mirror and ( Proc.Mirror.Id == ProcMirror.Id) then -- per i fori l'operazione si basa sulla geometria ausiliaria if Proc.TopologyLongName == 'DRILLING' then local AuxId = EgtGetInfo( ProcMirror.Id, 'AUXID', 'i') or 0 From f62c42475e8f154037cda79a1e2c130d1dbac44a Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 8 Apr 2026 12:28:27 +0200 Subject: [PATCH 2/3] - in LapJoint migliorate tasche. Ora usa sempre la fresa migliore e se necessario limita l'escursione con il parametro Open --- LuaLibs/WProcessLapJoint.lua | 60 ++++++++---------------------------- 1 file changed, 13 insertions(+), 47 deletions(-) diff --git a/LuaLibs/WProcessLapJoint.lua b/LuaLibs/WProcessLapJoint.lua index edd6227..60fecd7 100644 --- a/LuaLibs/WProcessLapJoint.lua +++ b/LuaLibs/WProcessLapJoint.lua @@ -2304,7 +2304,7 @@ end -- se necessario forza la tasca a chiusa local function VerifyPocket( Proc, nFacet, dElev, nRawId) - local bForceClosedPocket = false + local dToolOvershoot local b3Raw = EgtGetRawPartBBox( nRawId) -- verifico se la feature è sul bordo (non ci sono altri pezzi davanti alla tasca). Se è sul bordo, l'utensile potrà attaccare da fuori. local bIsFeatureOnEdge = ( Proc.Topology == 'Groove' and Proc.Fct == 4 and Proc.DistanceToNearestParts.Front > b3Raw:getDimY()) @@ -2366,21 +2366,15 @@ local function VerifyPocket( Proc, nFacet, dElev, nRawId) if Proc.AffectedFaces.Right then dDistanceToNearestPart = min( dDistanceToNearestPart, Proc.DistanceToNearestParts.Right) end - -- se la distanza è inferiore ad un valore minimo forzo la tasca chiusa per evitare che la ricerca utensile fallisca - local dMinToolDiameter = 25 - if dDistanceToNearestPart < dMinToolDiameter / 2 - 10 * GEO.EPS_SMALL then - bForceClosedPocket = true - dDistanceToNearestPart = dMaxDiameter - end local bExcludeNoTipFeed = ( Proc.Topology == 'Pocket') -- recupero la lavorazione local bUseDElevToFindPocketing = true - local sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, dElev, nil, nil, bExcludeNoTipFeed, dDistanceToNearestPart) + local sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, dElev, nil, nil, bExcludeNoTipFeed) -- se tasca troppo profonda cerco senza elevazione e limiterò la profondità if not sPocketing then bUseDElevToFindPocketing = false - sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, nil, nil, nil, bExcludeNoTipFeed, dDistanceToNearestPart) + sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, nil, nil, nil, bExcludeNoTipFeed) end local dMillDiam = 20 local dMaxDepth = 0 @@ -2391,7 +2385,7 @@ local function VerifyPocket( Proc, nFacet, dElev, nRawId) -- se doppio cerco una lavorazione adatta if Proc.Double and Proc.Double == 2 then local sPocketingBackup = sPocketing - sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, EgtIf( bUseDElevToFindPocketing, dElev, nil), nil, 'H1', true, dDistanceToNearestPart) + sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, EgtIf( bUseDElevToFindPocketing, dElev, nil), nil, 'H1', true) if not WM.IsMachiningOkForDouble( sPocketing) then Proc.Double = 0 sPocketing = sPocketingBackup @@ -2404,41 +2398,10 @@ local function VerifyPocket( Proc, nFacet, dElev, nRawId) dMillDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dMillDiam end end - -- verifico se la lavorazione (o il suo eventuale mirror) potrebbe danneggiare le parti limitrofe e devo quindi forzare una tasca chiusa - local bIsMachiningDamagingOtherParts = IsMachiningDamagingOtherParts( Proc, dMillDiam, nRawId) - if bIsMachiningDamagingOtherParts then - bForceClosedPocket = true - end - -- disattivo il doppio se devo forzare una tasca chiusa ma l'altra no - if Proc.Double and Proc.Double > 0 then - local bIsMirrorMachiningDamagingOtherParts = IsMachiningDamagingOtherParts( Proc.Mirror, dMillDiam, nRawId) - if bIsMachiningDamagingOtherParts ~= bIsMirrorMachiningDamagingOtherParts then - Proc.Double = 0 - end - end + dToolOvershoot = min( dDistanceToNearestPart, dMillDiam / 2 + 1) -- altrimenti diametro utensile troppo piccolo: devo forzare tasca chiusa else - bForceClosedPocket = true - end - - -- se tasca chiusa cerco lavorazione con diametro massimo pari a dimensione tasca e riverifico per eventuale doppio - if bForceClosedPocket then - dMaxDiameter = 0.9 * dStartDiameter - bUseDElevToFindPocketing = true - sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, dElev, nil, nil, bExcludeNoTipFeed, dDistanceToNearestPart) - if not sPocketing then - bUseDElevToFindPocketing = false - sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, nil, nil, nil, bExcludeNoTipFeed, dDistanceToNearestPart) - end - -- se doppio cerco una lavorazione adatta - if Proc.Double and Proc.Double == 2 then - local sPocketingBackup = sPocketing - sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, EgtIf( bUseDElevToFindPocketing, dElev, nil), nil, 'H1', true, dDistanceToNearestPart) - if not WM.IsMachiningOkForDouble( sPocketing) then - Proc.Double = 0 - sPocketing = sPocketingBackup - end - end + dToolOvershoot = 0 end -- recupero dati utensile @@ -2451,7 +2414,7 @@ local function VerifyPocket( Proc, nFacet, dElev, nRawId) end end - return sPocketing, bForceClosedPocket, bIsFeatureOnEdge, sTuuid, dMillDiam, dMaxDepth, dThDiam + return sPocketing, dToolOvershoot, bIsFeatureOnEdge, sTuuid, dMillDiam, dMaxDepth, dThDiam end --------------------------------------------------------------------- local function MakeByPocketing( Proc, nFacet, nRawId, b3Raw, bCheckQPar) @@ -2462,7 +2425,7 @@ local function MakeByPocketing( Proc, nFacet, nRawId, b3Raw, bCheckQPar) local nAddGrpId = WL.GetAddGroup( Proc.PartId) local nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacet) -- cerco lavorazione adatta e recupero i dati utensile - local sPocketing, bForceClosedPocket, bIsFeatureOnEdge, sTuuid, dMillDiam, dMaxDepth, dThDiam = VerifyPocket( Proc, nFacet, dElev, nRawId) + local sPocketing, dToolOvershoot, bIsFeatureOnEdge, sTuuid, dMillDiam, dMaxDepth, dThDiam = VerifyPocket( Proc, nFacet, dElev, nRawId) if not sPocketing then local sErr = 'Error : pocketing not found in library' EgtOutLog( sErr) @@ -2513,8 +2476,11 @@ local function MakeByPocketing( Proc, nFacet, nRawId, b3Raw, bCheckQPar) sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxOptSize', 0.1) EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALOUT) end - -- setto eventuale nota per forzare tasca chiusa - if bForceClosedPocket then sUserNotes = EgtSetValInNotes( sUserNotes, 'Open', 0) end + -- setto eventuale nota per forzare massima uscita dalla geometria + if dToolOvershoot then + sUserNotes = EgtSetValInNotes( sUserNotes, 'Open', dToolOvershoot) + sUserNotes = EgtSetValInNotes( sUserNotes, 'ExtProj', dToolOvershoot) + end -- setto eventuale nota per forzare attacco esterno, fino ad un certo spessore del grezzo local dMaxRawThicknessToStartOut = 75 if bIsFeatureOnEdge and ( not Proc.Double or Proc.Double == 0) then sUserNotes = EgtSetValInNotes( sUserNotes, 'OpenMinSafe', dMaxRawThicknessToStartOut) end From 9290d3f1cfb4e9fe1923901013261b425800f251 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 8 Apr 2026 16:11:59 +0200 Subject: [PATCH 3/3] update log e version --- UpdateLog.txt | 4 ++++ Version.lua | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/UpdateLog.txt b/UpdateLog.txt index 2ce8b15..fb7d992 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,9 @@ ==== Wall Update Log ==== +Versione 3.1d1 (08/04/2026) +- Modif : in LapJoint, svuotature, l'uscita dalla geometria viene limitata della massima quantità che non rovina il pezzo vicino +- Fixed : correzione per chiodature + Versione 3.1c1 (02/04/2026) - Added : in CleanCorner si gestiscono angoli diversi da 30 - Fixed : in puliture con sega a catena corrett scelta errata del lato diff --git a/Version.lua b/Version.lua index 12f781a..1d2a7f7 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Wall NAME = 'Wall' -VERSION = '3.1c1' -MIN_EXE = '3.1a1' +VERSION = '3.1d1' +MIN_EXE = '3.1c1'