Compare commits

..

18 Commits

Author SHA1 Message Date
daniele.nicoli 8c5e1e78b8 Merge tag '3.1h1' into develop
3.1h1
2026-08-18 12:52:57 +02:00
daniele.nicoli 3c0f1b31bb Merge branch 'release/3.1h1' 2026-08-18 12:52:26 +02:00
daniele.nicoli 99d7efe2d4 Cambio versione per rilascio a cliente 2026-08-18 12:36:01 +02:00
daniele.nicoli 3204653498 LapJoint, Sidemill - Q08=1 applica sidemill in tutte le tasche aperte (L e U aperte), se tasca chiusa svuotatura di fresa. Se non può fresare e applica sidemill restituisce warning perchè il finito viene danneggiato.
Q08=2 applica sidemill sempre e non restituisce warning.
2026-08-18 12:15:01 +02:00
luca.mazzoleni 3babbb3582 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/DataWall into develop 2026-07-22 12:00:22 +02:00
luca.mazzoleni fb0c5d84af - in LapJoint se lavorazione Side non fattibile o non trovata si prova sempre la svuotatura 2026-07-22 12:00:19 +02:00
daniele.nicoli eaf3014ff2 Drill - Considera i fori inclinati da spostare nell'ordinamento (INFO='MOVE_AFTER') se non è AffectedFaces.Top. 2026-07-20 15:19:44 +02:00
luca.mazzoleni 9b520641b4 Merge branch 'master' into develop 2026-07-14 09:16:36 +02:00
andrea.villa a4e57bb1a2 Merge branch 'develop' 2026-06-25 09:55:18 +02:00
andrea.villa 74fccbd3bc Cambio versione per rilascio a cliente 2026-06-25 09:55:07 +02:00
daniele.nicoli 3537757561 Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/lua/DataWall into develop 2026-06-25 09:49:52 +02:00
daniele.nicoli 8ffb8148a4 WProcessFreeContour - lettura parametro che forza lama discorde da WallData, scrivibile da Ts3Data. Richiesta speciale per cliente essetre-90480023_XS-MW. 2026-06-25 09:49:44 +02:00
andrea.villa 68f294f074 Ora si accettano offset in negativo per posizionamento pezzo su tavola 2026-06-25 09:44:43 +02:00
daniele.nicoli 2049b8be85 Merge remote-tracking branch 'origin/master' into develop 2026-06-25 09:21:51 +02:00
andrea.villa ae6fbf2e20 Versione e log per rilascio a cliente 2026-06-18 16:25:44 +02:00
andrea.villa 31c58e0ad6 Merge remote-tracking branch 'origin/develop' 2026-06-18 16:24:33 +02:00
daniele.nicoli 54163cef8b WProcessFreeContour - Q09=1 inverte lato testa e imposta conventional milling durante i tagli. Richiesta speciale per cliente essetre-90480023_XS-MW.
Migliorato funzionamento
2026-06-18 09:44:26 +02:00
andrea.villa d6e98875fa Merge branch 'master' into develop 2026-04-23 12:27:03 +02:00
6 changed files with 99 additions and 32 deletions
+1 -1
View File
@@ -455,7 +455,7 @@ function WPD.Make( Proc, nRawId, b3Raw, bUseMultiDrill, DrillingsToAvoid)
end end
EgtSetInfo( nMchId, 'Part', Proc.PartId) EgtSetInfo( nMchId, 'Part', Proc.PartId)
-- se foratura di fianco setto la nota per spostarla dopo i tagli di lama -- se foratura di fianco setto la nota per spostarla dopo i tagli di lama
if vtExtr:getZ() < WD.NZ_MINA and not sHead then if vtExtr:getZ() < WD.NZ_MINA and not Proc.AffectedFaces.Top and not sHead then
EgtSetInfo( nMchId, 'MOVE_AFTER', 1) EgtSetInfo( nMchId, 'MOVE_AFTER', 1)
end end
-- aggiungo geometria -- aggiungo geometria
+52 -7
View File
@@ -1785,7 +1785,7 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
end end
--------------------------------------------------------------------- ---------------------------------------------------------------------
local function AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring) local function AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring, bForceConventionalSawing)
-- verifico se ciclo chiuso -- verifico se ciclo chiuso
local bClosed = ( abs( vFace[1].PrevAng) > 0.1) local bClosed = ( abs( vFace[1].PrevAng) > 0.1)
-- ciclo di inserimento dei tagli sulle facce del contorno in esame -- ciclo di inserimento dei tagli sulle facce del contorno in esame
@@ -1823,15 +1823,59 @@ local function AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squar
end end
end end
EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) EgtSetMachiningParam( MCH_MP.DEPTH, dDepth)
-- verifico se va invertita la direzione di lavorazione perchè faccia verso l'alto (angolo maggiore di 0.01 deg) -- verifico posizione del motore in base a inclinazione faccia (angolo maggiore di 0.01 deg)
local bInvert = ( vFace[i].Norm:getZ() > 0.0001745) local bFaceDown = not ( vFace[i].Norm:getZ() > GEO.EPS_SMALL)
-- verso di rotazione della lama
local bCCW = ( dSpeed < 0)
local bInvert, nHeadSide
-- TODO - Vecchio funzionamento per far andare macchina con la WD.GetSawHeadSide, in futuro da eliminare e tenere solo l'else
if WD.GetSawHeadSide then
bInvert = not bFaceDown
-- lato mandrino ( standard a sinistra se rotazione CCW, altrimenti a destra, oppure da funzione di macchina)
nHeadSide = WD.GetSawHeadSide( dSpeed, sHead)
else
if bCCW then
if bFaceDown then
if bForceConventionalSawing then
bInvert = true
nHeadSide = MCH_SAW_HS.RIGHT
else
bInvert = false
nHeadSide = MCH_SAW_HS.LEFT
end
else
if bForceConventionalSawing then
bInvert = false
nHeadSide = MCH_SAW_HS.RIGHT
else
bInvert = true
nHeadSide = MCH_SAW_HS.LEFT
end
end
else
if bFaceDown then
if bForceConventionalSawing then
bInvert = false
nHeadSide = MCH_SAW_HS.LEFT
else
bInvert = true
nHeadSide = MCH_SAW_HS.RIGHT
end
else
if bForceConventionalSawing then
bInvert = true
nHeadSide = MCH_SAW_HS.LEFT
else
bInvert = false
nHeadSide = MCH_SAW_HS.RIGHT
end
end
end
end
-- imposto inversione -- imposto inversione
EgtSetMachiningParam( MCH_MP.INVERT, bInvert) EgtSetMachiningParam( MCH_MP.INVERT, bInvert)
-- imposto lato di lavoro -- imposto lato di lavoro
EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( bInvert, MCH_SAW_WS.LEFT, MCH_SAW_WS.RIGHT)) EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( bInvert, MCH_SAW_WS.LEFT, MCH_SAW_WS.RIGHT))
-- lato mandrino ( standard a sinistra se rotazione CCW, altrimenti a destra, oppure da funzione di macchina)
local nHeadSide = EgtIf( dSpeed < 0, MCH_SAW_HS.LEFT, MCH_SAW_HS.RIGHT)
if WD.GetSawHeadSide then nHeadSide = WD.GetSawHeadSide( dSpeed, sHead) end
EgtSetMachiningParam( MCH_MP.HEADSIDE, nHeadSide) EgtSetMachiningParam( MCH_MP.HEADSIDE, nHeadSide)
-- assegno i dati di attacco (sicurezza solo se angolo interno) -- assegno i dati di attacco (sicurezza solo se angolo interno)
local nLeadIn = MCH_SAW_LI.CENT local nLeadIn = MCH_SAW_LI.CENT
@@ -1969,7 +2013,8 @@ local function MakeByCut( Proc, nRawId, b3Raw, b3Squaring)
-- recupero i dati di tutte le facce -- recupero i dati di tutte le facce
local vFace, dMaxWidth, nNewProc = GetFacesData( Proc, bOpposite, true, dSawDiam, dSawMaxDepth, dSawThick, nAddGrpId, b3Raw) local vFace, dMaxWidth, nNewProc = GetFacesData( Proc, bOpposite, true, dSawDiam, dSawMaxDepth, dSawThick, nAddGrpId, b3Raw)
-- inserimento dei tagli di lama -- inserimento dei tagli di lama
local bCtOk, sCtErr = AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring) local bForceConventionalSawing = WD.USE_CONVENTIONAL_SAWING
local bCtOk, sCtErr = AddCuts( sCutting, vFace, Proc, nRawId, b3Raw, dSawThick, b3Squaring, bForceConventionalSawing)
if not bCtOk then return bCtOk, sCtErr end if not bCtOk then return bCtOk, sCtErr end
-- se richiesta solo lama, esco -- se richiesta solo lama, esco
local nCntType = EgtGetInfo( Proc.Id, 'CNT_TYPE', 'i') or 0 local nCntType = EgtGetInfo( Proc.Id, 'CNT_TYPE', 'i') or 0
+17 -7
View File
@@ -1367,7 +1367,7 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
if not sMilling then if not sMilling then
local sErr = 'Error : Side not found in library' local sErr = 'Error : Side not found in library'
EgtOutLog( sErr) EgtOutLog( sErr)
return false, sErr, true return false, sErr
end end
-- recupero i dati dell'utensile -- recupero i dati dell'utensile
local dMillDiam = 20 local dMillDiam = 20
@@ -1390,13 +1390,13 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
if dMillDiam < dDiam or dMaxDepth < dElev then if dMillDiam < dDiam or dMaxDepth < dElev then
local sErr = 'Error : Side Elevation too big' local sErr = 'Error : Side Elevation too big'
EgtOutLog( sErr) EgtOutLog( sErr)
return false, sErr, true return false, sErr
end end
local dMillExtra = dMillTotLen - dMillLen local dMillExtra = dMillTotLen - dMillLen
if Proc.Box:getMin():getZ() - dMillExtra < b3Raw:getMin():getZ() - 10 * GEO.EPS_SMALL then if Proc.Box:getMin():getZ() - dMillExtra < b3Raw:getMin():getZ() - 10 * GEO.EPS_SMALL then
local sErr = 'Error : Tool collide with table' local sErr = 'Error : Tool collide with table'
EgtOutLog( sErr) EgtOutLog( sErr)
return false, sErr, true return false, sErr
end end
-- inserisco la lavorazione di contornatura -- inserisco la lavorazione di contornatura
local sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) local sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
@@ -1453,7 +1453,7 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
if not EgtApplyMachining( true, false) then if not EgtApplyMachining( true, false) then
local _, sErr = EgtGetLastMachMgrError() local _, sErr = EgtGetLastMachMgrError()
EgtSetOperationMode( nMchFId, false) EgtSetOperationMode( nMchFId, false)
return false, sErr return false, sErr, nMchFId
end end
return true return true
end end
@@ -2296,6 +2296,13 @@ local function MakeSideGrooveByMill( Proc, nFacet, nRawId, b3Raw, sCustomMach, d
EgtOutLog( sErr) EgtOutLog( sErr)
return false, sErr return false, sErr
end end
local _, nUseMillOnSide = EvaluateQParam( Proc)
if nUseMillOnSide and nUseMillOnSide < 2 and ( Proc.Fct > 3 or ( Proc.Fct == 3 and not Proc.IsThrough)) then
sWarn = 'Warning in LapJoint : Sidemill damage finished part'
EgtOutLog( sWarn)
end
return true, sWarn return true, sWarn
end end
@@ -2797,8 +2804,11 @@ local function MakeTwoFaces( Proc, nRawId, b3Raw)
bLikeAsMakeFirstGroove = false bLikeAsMakeFirstGroove = false
return MakeSideGrooveByMill( Proc, nFacetVert, nRawId, b3Raw, EgtIf( bEnableMillOnSide and dMaxDepthOnSide, sMillOnSide, nil), dMaxDepthOnSide, bMakeFirstGroove, bMachFromDn, dAng, bLikeAsMakeFirstGroove, nil, nil, bDoubleMillOnSide) return MakeSideGrooveByMill( Proc, nFacetVert, nRawId, b3Raw, EgtIf( bEnableMillOnSide and dMaxDepthOnSide, sMillOnSide, nil), dMaxDepthOnSide, bMakeFirstGroove, bMachFromDn, dAng, bLikeAsMakeFirstGroove, nil, nil, bDoubleMillOnSide)
else else
local bOk, sErr, bSideMachiningNotFound = MakeByMill( Proc, nFacet, 1 - nFacet, nRawId, b3Raw, dSideDist) local bOk, sErr, nInvalidMachId = MakeByMill( Proc, nFacet, 1 - nFacet, nRawId, b3Raw, dSideDist)
if not bOk and bSideMachiningNotFound then if not bOk then
if nInvalidMachId then
EgtRemoveOperation( nInvalidMachId)
end
bOk, sErr = MakeByPocketing( Proc, nFacet, nRawId, b3Raw) bOk, sErr = MakeByPocketing( Proc, nFacet, nRawId, b3Raw)
end end
-- se angolo ottuso riprendo il lato quasi verticale -- se angolo ottuso riprendo il lato quasi verticale
@@ -2881,7 +2891,7 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
local nFacInd, dElev, nFacInd2, dElev2 = WL.GetFaceWithMostAdj( Proc.Id, Proc.PartId) local nFacInd, dElev, nFacInd2, dElev2 = WL.GetFaceWithMostAdj( Proc.Id, Proc.PartId)
-- se necessario scambio le facce -- se necessario scambio le facce
local bIsGroove3Blind = Proc.Fct == 3 and Proc.Topology == 'Groove' and not Proc.IsThrough local bIsGroove3Blind = Proc.Fct == 3 and Proc.Topology == 'Groove' and not Proc.IsThrough
local bPreferSidemill = ( nUseMillOnSide >= 1) local bPreferSidemill = ( nUseMillOnSide > 1)
if Proc.Stype == 2 or ( bPreferSidemill and bIsGroove3Blind) then if Proc.Stype == 2 or ( bPreferSidemill and bIsGroove3Blind) then
nFacInd, dElev, nFacInd2, dElev2 = nFacInd2, dElev2, nFacInd, dElev nFacInd, dElev, nFacInd2, dElev2 = nFacInd2, dElev2, nFacInd, dElev
end end
+14 -14
View File
@@ -71,40 +71,40 @@ local function GetRawOrigAndDeltas()
sOrigCorner = WD.GetOrigCorner( EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 0) sOrigCorner = WD.GetOrigCorner( EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 0)
end end
-- offset da interfaccia -- offset da interfaccia
local dDeltaXFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAY', 'd') or 0 local dDeltaXFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAY', 'd')
local dDeltaYFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAX', 'd') or 0 local dDeltaYFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAX', 'd')
local dDeltaZFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAZ', 'd') or 0 local dDeltaZFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAZ', 'd')
-- se da interfaccia arriva un valore > 0 si usa quello, altrimenti si legge da WallData (default 0) -- se da interfaccia arriva un valore > 0 si usa quello, altrimenti si legge da WallData (default 0)
local DeltaX = EgtIf( dDeltaXFromBtl > 0, dDeltaXFromBtl, WD.DELTA_X or 0) local DeltaX = EgtIf( dDeltaXFromBtl, dDeltaXFromBtl, WD.DELTA_X or 0)
local DeltaY = EgtIf( dDeltaYFromBtl > 0, dDeltaYFromBtl, WD.DELTA_Y or 0) local DeltaY = EgtIf( dDeltaYFromBtl, dDeltaYFromBtl, WD.DELTA_Y or 0)
local DeltaZ = EgtIf( dDeltaZFromBtl > 0, dDeltaZFromBtl, WD.DELTA_Z or 0) local DeltaZ = EgtIf( dDeltaZFromBtl, dDeltaZFromBtl, WD.DELTA_Z or 0)
local nCorner local nCorner
local OrigOnTab local OrigOnTab
if sOrigCorner == 'TL' then if sOrigCorner == 'TL' then
nCorner = MCH_CR.TL nCorner = MCH_CR.TL
OrigOnTab = Point3d( 0 + abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ) OrigOnTab = Point3d( 0 + DeltaX, b3Tab:getDimY() - DeltaY, DeltaZ)
elseif sOrigCorner == 'BL' then elseif sOrigCorner == 'BL' then
nCorner = MCH_CR.BL nCorner = MCH_CR.BL
OrigOnTab = Point3d( 0 + abs( DeltaX), abs( DeltaY), DeltaZ) OrigOnTab = Point3d( 0 + DeltaX, DeltaY, DeltaZ)
elseif sOrigCorner == 'TR' then elseif sOrigCorner == 'TR' then
nCorner = MCH_CR.TR nCorner = MCH_CR.TR
OrigOnTab = Point3d( b3Tab:getDimX() - abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ) OrigOnTab = Point3d( b3Tab:getDimX() - DeltaX, b3Tab:getDimY() - DeltaY, DeltaZ)
elseif sOrigCorner == 'BR' then elseif sOrigCorner == 'BR' then
nCorner = MCH_CR.BR nCorner = MCH_CR.BR
OrigOnTab = Point3d( b3Tab:getDimX() - abs( DeltaX), abs( DeltaY), DeltaZ) OrigOnTab = Point3d( b3Tab:getDimX() - DeltaX, DeltaY, DeltaZ)
elseif sOrigCorner == 'TM' then elseif sOrigCorner == 'TM' then
nCorner = MCH_CR.TR nCorner = MCH_CR.TR
OrigOnTab = Point3d( WD.MID_REF - abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ) OrigOnTab = Point3d( WD.MID_REF - DeltaX, b3Tab:getDimY() - DeltaY, DeltaZ)
elseif sOrigCorner == 'BM' then elseif sOrigCorner == 'BM' then
nCorner = MCH_CR.BR nCorner = MCH_CR.BR
OrigOnTab = Point3d( WD.MID_REF - abs( DeltaX), abs( DeltaY), DeltaZ) OrigOnTab = Point3d( WD.MID_REF - DeltaX, DeltaY, DeltaZ)
elseif sOrigCorner == 'TN' then elseif sOrigCorner == 'TN' then
nCorner = MCH_CR.TL nCorner = MCH_CR.TL
OrigOnTab = Point3d( WD.NEW_REF + abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ) OrigOnTab = Point3d( WD.NEW_REF + DeltaX, b3Tab:getDimY() - DeltaY, DeltaZ)
elseif sOrigCorner == 'BN' then elseif sOrigCorner == 'BN' then
nCorner = MCH_CR.BL nCorner = MCH_CR.BL
OrigOnTab = Point3d( WD.NEW_REF + abs( DeltaX), abs( DeltaY), DeltaZ) OrigOnTab = Point3d( WD.NEW_REF + DeltaX, DeltaY, DeltaZ)
end end
return sOrigCorner, nCorner, OrigOnTab return sOrigCorner, nCorner, OrigOnTab
+12
View File
@@ -1,5 +1,17 @@
==== Wall Update Log ==== ==== Wall Update Log ====
Versione 3.1h1 (18/08/2026)
- Modif : fori inclinati più meno di 28° ora gestiti anche come fori non di testa
- Modif : Q08=1 solo L e U aperte, Q08=2 tutte le tasche
- Modif : in LapJoint, se lavorazione Side non fattibile o non trovata si prova sempre la svuotatura
Versione 3.1f2 (25/06/2026)
- Modif : Ora si accettano offset in negativo per posizionamento pezzo su tavola
- Modif : Il Q09 aggiunto in versione 3.1f1 viene sostituito con il parametro da OFFSET -> USE_CONVENTIONAL_SAWING
Versione 3.1f1 (18/06/2026)
- Modif : Aggiunto Q09=1 che inverte lato testa e imposta conventional milling durante i tagli (DEPRECATO)
Versione 3.1d2 (23/04/2026) Versione 3.1d2 (23/04/2026)
- Modif : Tutte le forature vengono ordinate per diametro decrescente - Modif : Tutte le forature vengono ordinate per diametro decrescente
+3 -3
View File
@@ -1,6 +1,6 @@
-- Version.lua by Egalware s.r.l. 2026/03/30 -- Version.lua by Egalware s.r.l. 2026/08/18
-- Gestione della versione di Wall -- Gestione della versione di Wall
NAME = 'Wall' NAME = 'Wall'
VERSION = '3.1d2' VERSION = '3.1h1'
MIN_EXE = '3.1c1' MIN_EXE = '3.1d1'