Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d6e98875fa | |||
| ba6142dbc5 | |||
| cfaa30d55c | |||
| ea79ac1366 | |||
| 2468599200 | |||
| ea598ef7ff | |||
| 9290d3f1cf | |||
| 698a913a93 | |||
| f62c42475e | |||
| f397b220b9 | |||
| d19cf453e0 | |||
| a9d497925d |
@@ -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
|
||||
|
||||
@@ -525,10 +525,8 @@ local function SortMach( nPhase, PrevMch, nPartId, nType, StartNames, bExistName
|
||||
if EgtGetOperationPhase( nOperId) == nPhase and ( nType & nOperType) == nOperType and
|
||||
( not nPartId or EgtGetInfo( nOperId, 'Part', 'i') == nPartId) and
|
||||
( not nPriority or EgtGetInfo( nOperId, 'PRIORITY', 'i') == nPriority ) and
|
||||
( not StartNames or ( bExistName and ContainsStartName( nOperId, StartNames)) or
|
||||
( not bExistName and not ContainsStartName( nOperId, StartNames))) and
|
||||
( not sInfo or ( bExistInfo and EgtGetInfo( nOperId, sInfo, 'i') == 1) or
|
||||
( not bExistInfo and EgtGetInfo( nOperId, sInfo, 'i') ~= 1)) then
|
||||
( not StartNames or ( bExistName and ContainsStartName( nOperId, StartNames)) or ( not bExistName and not ContainsStartName( nOperId, StartNames))) and
|
||||
( not sInfo or ( bExistInfo and EgtGetInfo( nOperId, sInfo, 'i') == 1) or ( not bExistInfo and EgtGetInfo( nOperId, sInfo, 'i') ~= 1)) then
|
||||
-- non si deve cambiare lo stato di attivazione della lavorazione (se disabilitata errata)
|
||||
EgtSetCurrMachining( nOperId)
|
||||
if not EgtIsMachiningEmpty() then
|
||||
@@ -652,8 +650,8 @@ local function SortMachinings( nPhase, PrevMch, nPartId, nPriority)
|
||||
PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.POCKETING, { 'PreDrill_'}, true, nil, nil, nil, nil, nil, nPriority)
|
||||
-- Forature e Svuotature
|
||||
PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.DRILLING + MCH_OY.POCKETING + MCH_OY.MILLING, { 'SideMill_', 'Clean_'}, false, 'MOVE_AFTER', false, false, true, nil, nPriority)
|
||||
-- -- Forature ***
|
||||
-- PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.DRILLING, nil, nil, 'MOVE_AFTER', false)
|
||||
-- Forature ***
|
||||
PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.DRILLING, nil, nil, nil, false, nil, true, nil, nil)
|
||||
-- -- Svuotature ***
|
||||
-- PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.POCKETING, nil, nil, 'MOVE_AFTER', false)
|
||||
-- -- Fresature che sono rifiniture di spigoli
|
||||
@@ -1329,7 +1327,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,16 @@
|
||||
==== Wall Update Log ====
|
||||
|
||||
Versione 3.1d2 (23/04/2026)
|
||||
- Modif : Tutte le forature vengono ordinate per diametro decrescente
|
||||
|
||||
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
|
||||
|
||||
Versione 2.7k1 (20/11/2025)
|
||||
- Modif : in LapJoint con Q08=1 ora si fanno con milling anche tasche a L cieche da sopra
|
||||
- Fixed : in LapJoint correzione alle lavorazioni inclinate
|
||||
|
||||
+2
-2
@@ -2,5 +2,5 @@
|
||||
-- Gestione della versione di Wall
|
||||
|
||||
NAME = 'Wall'
|
||||
VERSION = '3.1c1'
|
||||
MIN_EXE = '3.1a1'
|
||||
VERSION = '3.1d2'
|
||||
MIN_EXE = '3.1c1'
|
||||
|
||||
Reference in New Issue
Block a user