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
|
-- se necessario forza la tasca a chiusa
|
||||||
local function VerifyPocket( Proc, nFacet, dElev, nRawId)
|
local function VerifyPocket( Proc, nFacet, dElev, nRawId)
|
||||||
|
|
||||||
local bForceClosedPocket = false
|
local dToolOvershoot
|
||||||
local b3Raw = EgtGetRawPartBBox( nRawId)
|
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.
|
-- 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())
|
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
|
if Proc.AffectedFaces.Right then
|
||||||
dDistanceToNearestPart = min( dDistanceToNearestPart, Proc.DistanceToNearestParts.Right)
|
dDistanceToNearestPart = min( dDistanceToNearestPart, Proc.DistanceToNearestParts.Right)
|
||||||
end
|
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')
|
local bExcludeNoTipFeed = ( Proc.Topology == 'Pocket')
|
||||||
-- recupero la lavorazione
|
-- recupero la lavorazione
|
||||||
local bUseDElevToFindPocketing = true
|
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à
|
-- se tasca troppo profonda cerco senza elevazione e limiterò la profondità
|
||||||
if not sPocketing then
|
if not sPocketing then
|
||||||
bUseDElevToFindPocketing = false
|
bUseDElevToFindPocketing = false
|
||||||
sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, nil, nil, nil, bExcludeNoTipFeed, dDistanceToNearestPart)
|
sPocketing = WM.FindPocketing( 'Pocket', dMaxDiameter, nil, nil, nil, bExcludeNoTipFeed)
|
||||||
end
|
end
|
||||||
local dMillDiam = 20
|
local dMillDiam = 20
|
||||||
local dMaxDepth = 0
|
local dMaxDepth = 0
|
||||||
@@ -2391,7 +2385,7 @@ local function VerifyPocket( Proc, nFacet, dElev, nRawId)
|
|||||||
-- se doppio cerco una lavorazione adatta
|
-- se doppio cerco una lavorazione adatta
|
||||||
if Proc.Double and Proc.Double == 2 then
|
if Proc.Double and Proc.Double == 2 then
|
||||||
local sPocketingBackup = sPocketing
|
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
|
if not WM.IsMachiningOkForDouble( sPocketing) then
|
||||||
Proc.Double = 0
|
Proc.Double = 0
|
||||||
sPocketing = sPocketingBackup
|
sPocketing = sPocketingBackup
|
||||||
@@ -2404,41 +2398,10 @@ local function VerifyPocket( Proc, nFacet, dElev, nRawId)
|
|||||||
dMillDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dMillDiam
|
dMillDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dMillDiam
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- verifico se la lavorazione (o il suo eventuale mirror) potrebbe danneggiare le parti limitrofe e devo quindi forzare una tasca chiusa
|
dToolOvershoot = min( dDistanceToNearestPart, dMillDiam / 2 + 1)
|
||||||
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
|
|
||||||
-- altrimenti diametro utensile troppo piccolo: devo forzare tasca chiusa
|
-- altrimenti diametro utensile troppo piccolo: devo forzare tasca chiusa
|
||||||
else
|
else
|
||||||
bForceClosedPocket = true
|
dToolOvershoot = 0
|
||||||
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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- recupero dati utensile
|
-- recupero dati utensile
|
||||||
@@ -2451,7 +2414,7 @@ local function VerifyPocket( Proc, nFacet, dElev, nRawId)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return sPocketing, bForceClosedPocket, bIsFeatureOnEdge, sTuuid, dMillDiam, dMaxDepth, dThDiam
|
return sPocketing, dToolOvershoot, bIsFeatureOnEdge, sTuuid, dMillDiam, dMaxDepth, dThDiam
|
||||||
end
|
end
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function MakeByPocketing( Proc, nFacet, nRawId, b3Raw, bCheckQPar)
|
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 nAddGrpId = WL.GetAddGroup( Proc.PartId)
|
||||||
local nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacet)
|
local nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacet)
|
||||||
-- cerco lavorazione adatta e recupero i dati utensile
|
-- 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
|
if not sPocketing then
|
||||||
local sErr = 'Error : pocketing not found in library'
|
local sErr = 'Error : pocketing not found in library'
|
||||||
EgtOutLog( sErr)
|
EgtOutLog( sErr)
|
||||||
@@ -2513,8 +2476,11 @@ local function MakeByPocketing( Proc, nFacet, nRawId, b3Raw, bCheckQPar)
|
|||||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxOptSize', 0.1)
|
sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxOptSize', 0.1)
|
||||||
EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALOUT)
|
EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALOUT)
|
||||||
end
|
end
|
||||||
-- setto eventuale nota per forzare tasca chiusa
|
-- setto eventuale nota per forzare massima uscita dalla geometria
|
||||||
if bForceClosedPocket then sUserNotes = EgtSetValInNotes( sUserNotes, 'Open', 0) end
|
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
|
-- setto eventuale nota per forzare attacco esterno, fino ad un certo spessore del grezzo
|
||||||
local dMaxRawThicknessToStartOut = 75
|
local dMaxRawThicknessToStartOut = 75
|
||||||
if bIsFeatureOnEdge and ( not Proc.Double or Proc.Double == 0) then sUserNotes = EgtSetValInNotes( sUserNotes, 'OpenMinSafe', dMaxRawThicknessToStartOut) end
|
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
|
if EgtGetOperationPhase( nOperId) == nPhase and ( nType & nOperType) == nOperType and
|
||||||
( not nPartId or EgtGetInfo( nOperId, 'Part', 'i') == nPartId) and
|
( not nPartId or EgtGetInfo( nOperId, 'Part', 'i') == nPartId) and
|
||||||
( not nPriority or EgtGetInfo( nOperId, 'PRIORITY', 'i') == nPriority ) and
|
( not nPriority or EgtGetInfo( nOperId, 'PRIORITY', 'i') == nPriority ) and
|
||||||
( not StartNames or ( bExistName and ContainsStartName( nOperId, StartNames)) or
|
( not StartNames or ( bExistName and ContainsStartName( nOperId, StartNames)) or ( not bExistName and not ContainsStartName( nOperId, StartNames))) and
|
||||||
( 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 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)
|
-- non si deve cambiare lo stato di attivazione della lavorazione (se disabilitata errata)
|
||||||
EgtSetCurrMachining( nOperId)
|
EgtSetCurrMachining( nOperId)
|
||||||
if not EgtIsMachiningEmpty() then
|
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)
|
PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.POCKETING, { 'PreDrill_'}, true, nil, nil, nil, nil, nil, nPriority)
|
||||||
-- Forature e Svuotature
|
-- 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)
|
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 ***
|
-- Forature ***
|
||||||
-- PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.DRILLING, nil, nil, 'MOVE_AFTER', false)
|
PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.DRILLING, nil, nil, nil, false, nil, true, nil, nil)
|
||||||
-- -- Svuotature ***
|
-- -- Svuotature ***
|
||||||
-- PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.POCKETING, nil, nil, 'MOVE_AFTER', false)
|
-- PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.POCKETING, nil, nil, 'MOVE_AFTER', false)
|
||||||
-- -- Fresature che sono rifiniture di spigoli
|
-- -- Fresature che sono rifiniture di spigoli
|
||||||
@@ -1329,7 +1327,7 @@ function WallExec.ProcessFeatures()
|
|||||||
if Proc.Double and Proc.Double > 0 then
|
if Proc.Double and Proc.Double > 0 then
|
||||||
for j = 1, #vProc do
|
for j = 1, #vProc do
|
||||||
local ProcMirror = vProc[j]
|
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
|
-- per i fori l'operazione si basa sulla geometria ausiliaria
|
||||||
if Proc.TopologyLongName == 'DRILLING' then
|
if Proc.TopologyLongName == 'DRILLING' then
|
||||||
local AuxId = EgtGetInfo( ProcMirror.Id, 'AUXID', 'i') or 0
|
local AuxId = EgtGetInfo( ProcMirror.Id, 'AUXID', 'i') or 0
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
==== Wall Update Log ====
|
==== 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)
|
Versione 2.7k1 (20/11/2025)
|
||||||
- Modif : in LapJoint con Q08=1 ora si fanno con milling anche tasche a L cieche da sopra
|
- 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
|
- Fixed : in LapJoint correzione alle lavorazioni inclinate
|
||||||
|
|||||||
+2
-2
@@ -2,5 +2,5 @@
|
|||||||
-- Gestione della versione di Wall
|
-- Gestione della versione di Wall
|
||||||
|
|
||||||
NAME = 'Wall'
|
NAME = 'Wall'
|
||||||
VERSION = '3.1c1'
|
VERSION = '3.1d2'
|
||||||
MIN_EXE = '3.1a1'
|
MIN_EXE = '3.1c1'
|
||||||
|
|||||||
Reference in New Issue
Block a user