Compare commits

...

12 Commits

Author SHA1 Message Date
daniele.nicoli 1054f79ac0 In Drill - Fori in doppio con utensili lunghi, corretto calcolo LastStep. 2026-08-18 16:43:28 +02:00
daniele.nicoli 36618ccc02 - AntiSplintBySaw - Se inverte lavorazione, inverte anche i parametri di LeadIn e LeadOut 2026-08-11 12:01:25 +02:00
daniele.nicoli e66038461d Merge tag '3.1h1' into develop
3.1h1
2026-08-05 15:50:01 +02:00
daniele.nicoli 1dc22e5af3 Merge branch 'release/3.1h1' 2026-08-05 15:49:26 +02:00
daniele.nicoli dfcb06c298 update versione e log 2026-08-05 15:47:29 +02:00
daniele.nicoli ef7d328eee Merge tag '3.1h1' into develop
3.1h1
2026-08-05 15:36:15 +02:00
daniele.nicoli 11683fa34d Merge branch 'release/3.1h1' 2026-08-05 15:33:52 +02:00
daniele.nicoli bec5751e8c - LapJoint, MakeByPockets - se lavorazione in doppio taglia fino a metà tasca e non oltre (+BD.CUT_EXTRA_MIN) la considero comunque completa e non eseguo lavorazione di pulizia laterale.
- LapJoint, MakeRoundCleanContour - se tasca passante solo da sopra o da sotto e fresa di contorno non lavora tutto, attiva lavorazione in doppio.
2026-08-04 09:45:13 +02:00
daniele.nicoli eb7a125aa0 Merge tag '3.1g5' into develop
3.1g5
2026-07-31 17:04:46 +02:00
daniele.nicoli e03f25247d Merge branch 'release/3.1g5' 2026-07-31 17:03:39 +02:00
daniele.nicoli 3c97e96e05 - RoundCleanContour per tasche a 3 facce a U in doppio correzione Invert e ToolInvert 2026-07-31 17:01:15 +02:00
daniele.nicoli b44a45e8b0 Merge tag '3.1g4' into develop
3.1g4
2026-07-31 11:17:32 +02:00
6 changed files with 78 additions and 26 deletions
+2 -2
View File
@@ -2300,7 +2300,7 @@ function BeamExec.ProcessFeatures()
BD.IMPROVE_HEAD_TAIL_DRILLINGS = true
end
-- costanti per doppio
MIRROR_DRILLINGS_MIN_DISTANCE = 40
MIRROR_DRILLINGS_MIN_DISTANCE = 25 --TODO spostare la variabile MinDistToolX1X2 nel BeamData e usare quella
MIRROR_POCKETS_MIN_DISTANCE = EgtIf( BD.DOWN_HEAD, 35, 50)
-- verifica se possibile rotazione di 90 gradi
BD.ROT90 = BD.ROT90 and Verify90DegRotation( EgtGetFirstRawPart())
@@ -2555,7 +2555,7 @@ function BeamExec.ProcessFeatures()
local nNextRawId = EgtGetNextRawPart( nRawId)
if nNextRawId and EgtGetPartInRawPartCount( nNextRawId) == 0 and EgtGetRawPartBBox( nNextRawId):getDimX() < BD.MinRaw then
EgtRemoveRawPartFromCurrPhase( nNextRawId)
end
end
end
nPhase = EgtGetCurrPhase()
nDispId = EgtGetPhaseDisposition( nPhase)
+3 -1
View File
@@ -1448,7 +1448,7 @@ function BeamLib.GetToolFromMachining( sMachiningName)
Tool.Thickness = EgtTdbGetCurrToolParam( MCH_TP.THICK) or 0
Tool.CornerRadius = EgtTdbGetCurrToolParam( MCH_TP.CORNRAD) or 0
-- fresa (TODO al momento aggiunte solo le informazioni che servono)
elseif Tool.Type == MCH_TY.MILL_STD or MCH_TY.MILL_NOTIP then
elseif Tool.Type == MCH_TY.MILL_STD or Tool.Type == MCH_TY.MILL_NOTIP then
if BD.GetSetupInfo then
Tool.IsOnAggregate = BD.GetSetupInfo( EgtTdbGetCurrToolParam( MCH_TP.HEAD)).bToolOnAggregate
else
@@ -1459,6 +1459,8 @@ function BeamLib.GetToolFromMachining( sMachiningName)
if Tool.StemDiameter > Tool.Diameter + GEO.EPS_SMALL then
Tool.MaxDepth = Tool.MaxDepth - BD.COLL_SIC
end
elseif Tool.Type == MCH_TY.DRILL_STD or Tool.Type == MCH_TY.DRILL_LONG then
Tool.Length = EgtTdbGetCurrToolParam( MCH_TP.LEN) or 0
-- altri utensili al momento non previsti
else
error( 'Wrong tool type')
+8 -2
View File
@@ -559,7 +559,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
nFac, CosB, vFaces = GetHoleStartData( ptCen, vtExtr, b3Solid)
-- Calcolo acciorciamento affondamento utile per evitare collisione portautensile con faccia
TgA = CosB / sqrt( 1 - CosB * CosB)
dSubL = ( dDiamTh / 2 + ( Proc.Diam - dToolDiam) / 2 + 4) * TgA
local dSubL = ( dDiamTh / 2 + ( Proc.Diam - dToolDiam) / 2 + 4) * TgA
-- Per fori molto inclinati ( < 30 gradi) si usa la testa della macchina per l'accorciamento. Fast esclusa
if BD.C_SIMM and CosB > 0.866 then
dSubL = ( 190 / 2 + ( Proc.Diam - dToolDiam) / 2 + 4) * TgA - 116
@@ -667,7 +667,13 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
end
end
else
sUserNotes = EgtSetValInNotes( sUserNotes, 'LastStep', MIRROR_DRILLINGS_MIN_DISTANCE / 2 + 10)
local Tool = BL.GetToolFromMachining( sDrilling)
local dDrillbitTipLength_H1 = dMaxToolLength - Tool.Length
local sNotes = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES)
EgtTdbSetCurrTool( EgtGetValInNotes( sNotes, 'DOUBLE', 's') or Tool.Name)
local dDrillbitTipLength_H2 = ( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) or 0) - ( EgtTdbGetCurrToolParam( MCH_TP.LEN) or 0)
EgtTdbSetCurrTool( Tool.Name)
sUserNotes = EgtSetValInNotes( sUserNotes, 'LastStep', ( MIRROR_DRILLINGS_MIN_DISTANCE + dDrillbitTipLength_H1 + dDrillbitTipLength_H2 + 10) / 2 + 1)
end
if dDepth > Proc.MachDepthDouble + 10 * GEO.EPS_SMALL then
sMyWarn = 'Warning in double head drilling : depth (' .. EgtNumToString( dDepth, 1) .. ') reduced to (' .. EgtNumToString( Proc.MachDepthDouble, 1) .. ') to match H2 max tool depth'
+54 -17
View File
@@ -1792,7 +1792,9 @@ local function MakeRoundCleanContour( Proc, nPhase, nRawId, nPartId, b3Raw,
dDepth, bOneShot)
-- recupero la lavorazione senza considerare l'elevazione perché viene calcolata l'elevazione utile
local sMilling = ML.FindMilling( 'SmallToolContour', nil, nil, nil, nil, not( bMillDown and not bDoubleSide), bMillDown and not bDoubleSide)
local bTopHead = not( bMillDown and not bDoubleSide)
local bDownHead = bMillDown and not bDoubleSide
local sMilling = ML.FindMilling( 'SmallToolContour', nil, nil, nil, nil, bTopHead, bDownHead)
if not sMilling then
local sMyWarn = 'Warning : SmallToolContour not found in library'
EgtOutLog( sMyWarn)
@@ -1954,24 +1956,31 @@ local function MakeRoundCleanContour( Proc, nPhase, nRawId, nPartId, b3Raw,
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
-- inversione direzione utensile
local bInvertMach = false
local bInvertTool = false
if nPathInt then
if bMillDown then
if bDownHead then
if vtN1:getZ() > 10 * GEO.EPS_SMALL then
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
bInvertTool = true
bInvertMach = true
end
elseif bMillDown and bDoubleSide then
if vtN1:getZ() > 10 * GEO.EPS_SMALL and bDownHead then
bInvertTool = true
bInvertMach = true
end
else
-- verifico se devo invertire direzione utensile (in caso di direzione verso la verticale)
if vtN1:getZ() < BD.NZ_MINA and abs(vtN1:getZ()) >= 0.707 then
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
if vtN1:getZ() < BD.NZ_MINA and abs( vtN1:getZ()) >= 0.707 then
bInvertTool = true
bInvertMach = true
-- altrimenti se da fare in una sola volta e direzionato verso Y+ lo inverto per lavorarlo davanti
elseif not bDoubleSide and vtN1:getY() > GEO.EPS_SMALL then
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
elseif not bDoubleSide and vtN1:getY() > 10 * GEO.EPS_SMALL then
bInvertTool = true
bInvertMach = true
end
end
end
EgtSetMachiningParam( MCH_MP.TOOLINVERT, bInvertMach)
-- imposto posizione braccio porta testa
local nSCC = MCH_SCC.NONE
if not BD.C_SIMM then
@@ -2046,7 +2055,7 @@ local function MakeRoundCleanContour( Proc, nPhase, nRawId, nPartId, b3Raw,
-- imposto lato di lavoro sinistro
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
-- imposto direzione utensile opposta
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
EgtSetMachiningParam( MCH_MP.TOOLINVERT, not bInvertTool)
-- imposto posizione braccio porta testa
local nSCC = MCH_SCC.NONE
if not BD.C_SIMM then
@@ -2075,7 +2084,7 @@ local function MakeRoundCleanContour( Proc, nPhase, nRawId, nPartId, b3Raw,
EgtSetMachiningParam( MCH_MP.DEPTH, dMachDepth)
-- setto se devo invertire il percorso
local bInvert = CheckToInvert( nIdPath, true)
EgtSetMachiningParam( MCH_MP.INVERT, not bInvert)
EgtSetMachiningParam( MCH_MP.INVERT, not EgtIf( bInvertMach, not bInvert, bInvert))
-- Note utente con dichiarazione nessuna generazione sfridi per Vmill e massima elevazione
local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or ''
sUserNotes = EgtSetValInNotes( sUserNotes, 'VMRS', 0)
@@ -4590,9 +4599,11 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha
else
dMachDepth = dMaxDepthDn - ( dDepth / 2) - dCollSic
dElev = dMaxDepthDn
bComplete = false
sWarn = 'Warning : elevation bigger than max tool depth'
EgtOutLog( sWarn)
if dMaxDepthDn < ( dDepth / 2) + dCollSic + 100 * GEO.EPS_SMALL then
bComplete = false
sWarn = 'Warning : elevation bigger than max tool depth'
EgtOutLog( sWarn)
end
end
else
-- se anche lavorando dal lato opposto non riesco a svuotare completamente la fessura
@@ -4600,9 +4611,11 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha
if dMaxDepth < ( dDepth / 2) + BD.CUT_EXTRA + dCollSic then
dMachDepth = dMaxDepth - (dDepth / 2) - dCollSic
dElev = dMaxDepth
bComplete = false
sWarn = 'Warning : elevation bigger than max tool depth'
EgtOutLog( sWarn)
if dMaxDepth < ( dDepth / 2) + dCollSic + 100 * GEO.EPS_SMALL then
bComplete = false
sWarn = 'Warning : elevation bigger than max tool depth'
EgtOutLog( sWarn)
end
end
end
if bMakeContour then
@@ -4901,6 +4914,30 @@ local function ManageAntiSplintBySaw( Proc, b3Raw, b3Solid, bIsU, vtN, nFacInd,
EgtSetMachiningParam( MCH_MP.INVERT, not bInvert)
-- setto l'offset pari allo spessore lama
EgtSetMachiningParam( MCH_MP.OFFSL, -dSawThick)
local LeadIn = {
dStartAddLen = EgtGetMachiningParam( MCH_MP.STARTADDLEN),
dLeadInTangDist = EgtGetMachiningParam( MCH_MP.LITANG),
dLeadInPerpDist = EgtGetMachiningParam( MCH_MP.LIPERP),
dLeadInElev = EgtGetMachiningParam( MCH_MP.LIELEV),
dLeadInCompLen = EgtGetMachiningParam( MCH_MP.LICOMPLEN)
}
local LeadOut = {
dEndAddLen = EgtGetMachiningParam( MCH_MP.ENDADDLEN),
dLeadOutTangDist = EgtGetMachiningParam( MCH_MP.LOTANG),
dLeadOutPerpDist = EgtGetMachiningParam( MCH_MP.LOPERP),
dLeadOutElev = EgtGetMachiningParam( MCH_MP.LOELEV),
dLeadOutCompLen = EgtGetMachiningParam( MCH_MP.LOCOMPLEN)
}
EgtSetMachiningParam( MCH_MP.STARTADDLEN, LeadOut.dEndAddLen)
EgtSetMachiningParam( MCH_MP.LITANG, LeadOut.dLeadOutTangDist)
EgtSetMachiningParam( MCH_MP.LIPERP, LeadOut.dLeadOutPerpDist)
EgtSetMachiningParam( MCH_MP.LIELEV, LeadOut.dLeadOutElev)
EgtSetMachiningParam( MCH_MP.LICOMPLEN, LeadOut.dLeadOutCompLen)
EgtSetMachiningParam( MCH_MP.ENDADDLEN, LeadIn.dStartAddLen)
EgtSetMachiningParam( MCH_MP.LOTANG, LeadIn.dLeadInTangDist)
EgtSetMachiningParam( MCH_MP.LOPERP, LeadIn.dLeadInPerpDist)
EgtSetMachiningParam( MCH_MP.LOELEV, LeadIn.dLeadInElev)
EgtSetMachiningParam( MCH_MP.LOCOMPLEN, LeadIn.dLeadInCompLen)
end
end
end
@@ -8181,7 +8218,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
local bOk, sWarn2 = MakeRoundCleanCornerOrContour( Proc, nPhase, nRawId, nPartId, b3Raw,
nFacInd, nAddGrpId, dDiamTool, nContourSmallTool, bMillDown,
bDoubleSide, vtOrtho, nPathInt, nSurfInt, b3Solid,
dDepth, bOneShotm)
dDepth, bOneShot)
if not bOk then return false, sWarn2 end
if sWarn2 then
if not sWarn then sWarn = '' end
@@ -8273,7 +8310,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
local bOk, sWarn2 = MakeRoundCleanCornerOrContour( Proc, nPhase, nRawId, nPartId, b3Raw,
nFacInd, nAddGrpId, dDiamTool, nContourSmallTool, bMillDown,
bDoubleSide, vtOrtho, nPathInt, nSurfInt, b3Solid,
dDepth, bOneShotm)
dDepth, bOneShot)
if not bOk then return false, sWarn2 end
if sWarn2 then
if not sWarn then sWarn = '' end
+9 -2
View File
@@ -1,7 +1,14 @@
==== Beam Update Log ====
Versione 3.1g4 (30/07/2026)
- Fixed : in RoundCleanContour per tasche a 3 facce a U MillDown
Versione 3.1h1 (05/08/2026)
- Modif : in Pocket non eseguo lavorazione di pulizia tasca (laterale) se le lavorazioni sopra e sotto arrivano esattamente a metà tasca (senza affondamento extra)
- Modif : in RoundCleanContour - tasca passante lavorata solo da sopra o da sotto e fresa di contorno non lavora tutto, attiva lavorazione in doppio
Versione 3.1g5 (31/07/2026)
- Fixed : in RoundCleanContour per tasche a 3 facce a U in doppio
Versione 3.1g4 (31/07/2026)
- Modif : in ProfCamb aggiunta Q19, se = 1 disabilita lavorazione AntiSplint
- Fixed : in RoundCleanContour per tasche a 3 facce a U MillDown
Versione 3.1g3 (24/07/2026)
- Fixed : in slot con lama corretta scelta SCC
+2 -2
View File
@@ -1,6 +1,6 @@
-- Version.lua by Egaltech s.r.l. 2026/05/31
-- Version.lua by Egaltech s.r.l. 2026/08/05
-- Gestione della versione di Beam
NAME = 'Beam'
VERSION = '3.1g4'
VERSION = '3.1h1'
MIN_EXE = '3.1b1'