Merge branch 'release/3.1d1'
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-2
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user