Compare commits

...

18 Commits

Author SHA1 Message Date
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
andrea.villa ba6142dbc5 Merge remote-tracking branch 'origin/develop' 2026-04-23 12:26:44 +02:00
andrea.villa cfaa30d55c Update Log e Version 2026-04-23 12:26:31 +02:00
andrea.villa ea79ac1366 Tutte le forature vengono ordinate per diametro decrescente 2026-04-22 12:11:35 +02:00
luca.mazzoleni 2468599200 Merge tag '3.1d1' into develop
3.1d1
2026-04-08 16:12:24 +02:00
6 changed files with 91 additions and 35 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
+9 -6
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
@@ -2797,8 +2797,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
+18 -20
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
@@ -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
+10
View File
@@ -1,5 +1,15 @@
==== Wall Update Log ==== ==== Wall Update Log ====
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)
- Modif : Tutte le forature vengono ordinate per diametro decrescente
Versione 3.1d1 (08/04/2026) 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 - Modif : in LapJoint, svuotature, l'uscita dalla geometria viene limitata della massima quantità che non rovina il pezzo vicino
- Fixed : correzione per chiodature - Fixed : correzione per chiodature
+1 -1
View File
@@ -2,5 +2,5 @@
-- Gestione della versione di Wall -- Gestione della versione di Wall
NAME = 'Wall' NAME = 'Wall'
VERSION = '3.1d1' VERSION = '3.1f2'
MIN_EXE = '3.1c1' MIN_EXE = '3.1c1'