Compare commits

...

63 Commits

Author SHA1 Message Date
andrea.villa 5b39d1a4ac Update Version 2024-11-04 15:23:04 +01:00
andrea.villa 62e00e8854 Update Version e Log 2024-11-04 15:22:35 +01:00
andrea.villa 349f0cb879 Merge branch 'hotfix/SideGrooveBladeLimitWidth' 2024-11-04 15:19:12 +01:00
andrea.villa a53a6f3e63 Modificato limite dimensione tasca per utilizzo lama come SideGroove 2024-11-04 15:18:45 +01:00
luca.mazzoleni dbf17d942c Merge branch 'release/2.6j1' 2024-10-29 09:16:33 +01:00
luca.mazzoleni 72020a8874 update version e log 2024-10-29 09:16:24 +01:00
luca.mazzoleni 5d422b6edc - in NestProcess corretta rotazione in caso di flip deciso da nesting 2024-10-29 09:10:57 +01:00
luca.mazzoleni abc61f53ba - in nesting e flipRotate correzioni a rotazione pezzi 2024-10-16 17:01:45 +02:00
luca.mazzoleni 32fdaf5096 Merge tag '2.6i2' into develop
release
2024-09-30 12:29:49 +02:00
luca.mazzoleni 2ea09e3ebc Merge branch 'release/2.6i2' 2024-09-30 12:29:34 +02:00
luca.mazzoleni ce8072ad1b update version e log 2024-09-30 12:29:23 +02:00
luca.mazzoleni 88fd8d525c Merge branch 'master' into develop 2024-09-25 12:34:57 +02:00
luca.mazzoleni 01c5037d77 update version e log 2024-09-25 12:33:03 +02:00
luca.mazzoleni 34e7befc10 Merge remote-tracking branch 'origin/master' into develop 2024-09-10 15:13:35 +02:00
Emmanuele Sassi 846d96b967 - correzione in lettura array per cambio dll di lettura 2024-09-10 09:09:51 +02:00
luca.mazzoleni cfd3379c98 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/DataWall into develop 2024-09-02 10:52:47 +02:00
andrea.villa 6f06755539 Aggiunta nota altezza sottopezzo, per pareti a layer 2024-08-30 09:13:33 +02:00
andrea.villa a0af959c9f Merge remote-tracking branch 'origin/master' into develop 2024-08-30 09:13:20 +02:00
luca.mazzoleni f397b66e26 Merge branch 'master' into develop 2024-08-28 10:12:53 +02:00
luca.mazzoleni 31782b904e Merge commit '93fe741f8439bf0abf51c0ab2e086e07fc77a58d' 2024-08-28 10:11:38 +02:00
luca.mazzoleni 93fe741f84 update log e version 2024-08-28 10:11:26 +02:00
luca.mazzoleni ba2158a909 - in FreeContour corretto caso in cui si chiedevano informazioni sulla faccia non presenti 2024-08-28 10:09:40 +02:00
Dario Sassi 6e0758218c Aggiunto controllo licenza/chiave per abilitazione generazione PartProgram. 2024-08-21 11:52:59 +02:00
luca.mazzoleni 401108ce56 Merge branch 'master' into develop 2024-08-20 16:53:05 +02:00
luca.mazzoleni b7973541e4 update log 2024-08-20 16:52:11 +02:00
Dario Sassi bf1e9065ae Wall 2.6h1 :
- aggiunti nuovi parametri alla chiamata della funzione GetChainSawStartAngs da WallData della macchina.
2024-08-20 14:43:45 +02:00
luca.mazzoleni 1faa9e2075 Merge branch 'master' into develop 2024-08-19 16:11:51 +02:00
Dario Sassi ceef5b78f3 Merge commit '66e2bd6e45d6990a8b30ecf39791437618ca85cd' 2024-08-19 15:04:00 +02:00
luca.mazzoleni 66e2bd6e45 - in Collect analisi facce limitata a feature che ne hanno meno di 50 2024-08-09 12:40:59 +02:00
andrea.villa 0508f12673 In ProcessLapJoint, se fresa Side trovata ma non applicabile, si considera come se non trovata 2024-08-09 11:46:43 +02:00
luca.mazzoleni 2bbfe1f3ce Merge branch 'master' into develop 2024-07-19 18:13:35 +02:00
luca.mazzoleni 4a67fdeeff Merge branch 'develop' 2024-07-19 18:13:18 +02:00
luca.mazzoleni 1c86ed925a in BatchProcess e BatchProcessNew bToRecalc forzato se flag 3 o 4 2024-07-19 18:13:07 +02:00
luca.mazzoleni 3f8540b3df Merge tag '2.6g1' into develop
i
2024-07-17 15:51:11 +02:00
luca.mazzoleni c92327641c Merge branch 'release/2.6g1' 2024-07-17 15:50:55 +02:00
luca.mazzoleni 499e49f4f6 - update log e version
- piccola modifica in ProcessDrill
2024-07-17 15:50:41 +02:00
luca.mazzoleni 099e81cbfd - in ProcessDrill aggiunti, se foro verticale passante, riduzione affondamento di 5 mm sostituito con tab.
Attualmente limite dal diametro di 200 mm, da verificare
2024-07-17 11:25:17 +02:00
luca.mazzoleni 0f38de8f58 Merge branch 'DefaultRawNoExtraWidth' into develop 2024-06-27 16:39:42 +02:00
luca.mazzoleni d5e30baf06 - ulteriori correzioni per DEFAULT_RAW_NO_EXTRA_WIDTH 2024-06-27 16:38:45 +02:00
luca.mazzoleni 4531434e79 - correzioni a DEFAULT_RAW_NO_EXTRA_WIDTH 2024-06-27 15:50:24 +02:00
luca.mazzoleni e56074f662 modifiche ulteriori per parametro DEFAULT_RAW_NO_EXTRA_WIDTH 2024-06-27 14:56:37 +02:00
luca.mazzoleni 5866566ebe - in BatchProcess, in caso di DEFAULT_RAW_NO_EXTRA_WIDTH, azzerati eventuali PosX e PosZ in arrivo sul pezzo 2024-06-24 09:57:21 +02:00
luca.mazzoleni c4272d917e Merge tag '2.6f1' into develop
a
2024-06-21 12:23:02 +02:00
luca.mazzoleni 52a10eeb9f Merge branch 'release/2.6f1' 2024-06-21 12:22:51 +02:00
luca.mazzoleni 1d5689c007 update log e versione 2024-06-21 12:22:36 +02:00
luca.mazzoleni f402590534 - in BatchProcess e BatchProcessNew aggiunto DEFAULT_RAW_NO_EXTRA_WIDTH per eliminare il sovramateriale grezzo in vista 2024-06-18 15:17:15 +02:00
luca.mazzoleni b3289195f4 Merge branch 'master' into develop 2024-05-24 15:36:24 +02:00
luca.mazzoleni f0a07554b2 update log 2024-05-24 15:36:15 +02:00
luca.mazzoleni 1ed45a8569 Merge branch 'develop' 2024-05-24 15:33:56 +02:00
luca.mazzoleni 43482f5a6d - in LapJoint se non si trova una lavorazione di tipo side si cerca una pocketing 2024-05-24 15:33:36 +02:00
luca.mazzoleni e66831d223 Merge branch 'develop' 2024-05-24 12:09:05 +02:00
luca.mazzoleni 548bc7bc6c - ora per verificare se la gerenazione è abilitata si controlla il valore NoPartProgram nella sezione Mach del file ini del Cam5; se 0 o non esiste tutto è come prima 2024-05-24 12:08:42 +02:00
luca.mazzoleni 3f7a2c016d Merge tag '2.6e2' into develop
release
2024-05-24 11:21:02 +02:00
luca.mazzoleni 3763338bb3 Merge branch 'release/2.6e2' 2024-05-24 11:20:54 +02:00
luca.mazzoleni 767acf2579 update log e version 2024-05-24 11:20:23 +02:00
luca.mazzoleni 4da70c0d3c - ora se la licenza non è abilitata alla generazione questa fase si salta invece di restituire errore bloccante 2024-05-24 11:17:16 +02:00
luca.mazzoleni d939e07fd3 - piccole correzioni LapJoint e DoubleCut per errori cliente Belga 2024-05-24 10:44:28 +02:00
luca.mazzoleni 67bf77fe19 Merge tag '2.6e1' into develop
release
2024-05-03 12:16:12 +02:00
luca.mazzoleni 384d72eb13 Merge branch 'release/2.6e1' 2024-05-03 12:15:42 +02:00
luca.mazzoleni 22541cfc9b update log e version 2024-05-03 12:15:21 +02:00
luca.mazzoleni 1dac9716e7 Merge branch 'master' into develop 2024-05-03 12:13:11 +02:00
Dario Sassi 68464cf5b1 DataWall :
- correzione per assegnazione a SawCut di flag passante (bIsThrough).
2024-05-03 11:31:53 +02:00
luca.mazzoleni 78bf456326 Merge tag '2.6c3' into develop
release
2024-03-26 18:12:23 +01:00
12 changed files with 155 additions and 60 deletions
+17 -3
View File
@@ -233,6 +233,9 @@ if bToProcess then
end
else
dExtraW = 10
if WD.DEFAULT_RAW_NO_EXTRA_WIDTH then
dExtraW = 0
end
dRawW = dRawW + dExtraW
end
end
@@ -277,6 +280,11 @@ if bToProcess then
-- Ne recupero la posizione
for i = 1, #vWall do
local PosX = EgtGetInfo( vWall[i].Id, 'POSX', 'd')
local PosZ = EgtGetInfo( vWall[i].Id, 'POSZ', 'd')
if bProj and WD.DEFAULT_RAW_NO_EXTRA_WIDTH and #vWall == 1 then
PosX = 0
PosZ = 0
end
vWall[i].PosX = PosX + min( dExtraL, 1200)
if WD.USE_POSY then
local PosY = EgtGetInfo( vWall[i].Id, 'POSY', 'd')
@@ -284,7 +292,6 @@ if bToProcess then
else
vWall[i].PosY = 0
end
local PosZ = EgtGetInfo( vWall[i].Id, 'POSZ', 'd')
vWall[i].PosZ = PosZ + dExtraW / 2
end
@@ -365,6 +372,12 @@ if bToProcess then
PostErrView( WALL.ERR, WALL.MSG)
return
end
-- se impostato flag apposito, in vista il grezzo è uguale al pezzo
if bProj and WD.DEFAULT_RAW_NO_EXTRA_WIDTH and #vWall == 1 then
dRawL = vWall[1].Box:getDimX()
dRawW = vWall[1].Box:getDimY()
end
-- Verifico dimensioni massime grezzo
if dRawL > WD.MAX_LENGTH + 10 * GEO.EPS_SMALL or dRawW > WD.MAX_WIDTH + 10 * GEO.EPS_SMALL or dRawH > WD.MAX_HEIGHT + 10 * GEO.EPS_SMALL then
@@ -498,7 +511,7 @@ else
-- Passo in modalità lavora
EgtSetCurrMachGroup( EgtGetLastMachGroup())
-- Se necessario eseguo aggiornamento con ricalcolo delle lavorazioni
if bToRecalc then
if bToRecalc or WALL.FLAG == 3 or WALL.FLAG == 4 then
EgtOutLog( ' +++ Recalculating all dispositions and machinings >>>')
EgtImportSetup()
EgtApplyAllMachinings()
@@ -562,7 +575,8 @@ if ( WALL.FLAG == 0 and ( bToProcess or bToRecalc)) or WALL.FLAG == 3 or WALL.F
end
-- *** Genero programma CN *** ( se richiesto)
if WALL.FLAG == 0 or WALL.FLAG == 4 then
local bIsGenerationEnabled = ( EgtVerifyKeyOption( 110) == false)
if bIsGenerationEnabled and ( WALL.FLAG == 0 or WALL.FLAG == 4) then
EgtOutLog( ' +++ Generating NC part program >>>')
local sInfo = 'EgtCAM5' .. EgtIf( EgtIs64bit(), ' 64bit', '')
if EgtGetExeVersion then
+11 -6
View File
@@ -275,11 +275,15 @@ if bToProcess then
dMinY = ( WD.MINRAWY_HOR_DRILL or 2800)
end
-- Assegno dimensioni del pannello
dPanelLen = vWall[1].Box:getDimX() + 20
dPanelWidth = math.max( vWall[1].Box:getDimY() + 20, dMinY)
local dExtraW = 10
if WD.DEFAULT_RAW_NO_EXTRA_WIDTH then
dExtraW = 0
end
dPanelLen = vWall[1].Box:getDimX() + 2 * dExtraW
dPanelWidth = math.max( vWall[1].Box:getDimY() + 2 * dExtraW, dMinY)
-- Assegno posizione prima ed unica parete
vWall[1].PosX = 10
vWall[1].PosZ = 10
vWall[1].PosX = dExtraW
vWall[1].PosZ = dExtraW
vWall[1].Rot = 0
vWall[1].Flip = 0
end
@@ -545,7 +549,7 @@ else
-- Passo in modalità lavora
EgtSetCurrMachGroup( EgtGetLastMachGroup())
-- Se necessario eseguo aggiornamento con setup corrente e ricalcolo delle lavorazioni
if bToRecalc then
if bToRecalc or WALL.FLAG == 3 or WALL.FLAG == 4 then
EgtOutLog( ' +++ Recalculating all dispositions and machinings >>>')
EgtImportSetup()
EgtApplyAllMachinings()
@@ -609,7 +613,8 @@ if ( WALL.FLAG == 0 and ( bToProcess or bToRecalc)) or WALL.FLAG == 3 or WALL.F
end
-- *** Genero programma CN *** ( se richiesto)
if WALL.FLAG == 0 or WALL.FLAG == 4 then
local bIsGenerationEnabled = ( EgtVerifyKeyOption( 110) == false)
if bIsGenerationEnabled and ( WALL.FLAG == 0 or WALL.FLAG == 4) then
EgtOutLog( ' +++ Generating NC part program >>>')
local sInfo = 'EgtCAM5' .. EgtIf( EgtIs64bit(), ' 64bit', '')
if EgtGetExeVersion then
+1
View File
@@ -192,6 +192,7 @@ function WFeatureTopology.Classify( Proc, b3Raw)
sFamily = 'DRILLING'
elseif Proc.Fct == 1 and bIsAnyDimensionLongAsPart and bIsFeatureCuttingEntireSection then
sFamily = 'Cut'
bIsThrough = true
elseif Proc.Fct == 1 and bIsAnyDimensionLongAsPart then
sFamily = 'Bevel'
bIsThrough = true
+2 -3
View File
@@ -66,9 +66,8 @@ function WPDC.Make( Proc, nRawId, b3Raw)
-- se singola faccia, passo a quella lavorazione
if Proc.Fct == 1 then return Cut.Make( Proc, nRawId, b3Raw) end
-- altrimenti due facce e passo alla LapJoint
local LapProc = { PartId = Proc.PartId, Id = Proc.Id, Grp = Proc.Grp + 2, Prc = Proc.Prc, Box = Proc.Box, Fct = Proc.Fct, Flg = Proc.Flg,
Diam = Proc.Diam, Fcs = Proc.Fcs, Fce = Proc.Fce, CutId = Proc.CutId, TaskId = Proc.TaskId}
return LapJoint.Make( LapProc, nRawId, b3Raw)
Proc.Grp = Proc.Grp + 2
return LapJoint.Make( Proc, nRawId, b3Raw)
end
---------------------------------------------------------------------
+39 -19
View File
@@ -324,32 +324,41 @@ function WPD.Make( Proc, nRawId, b3Raw)
local bAngledContourDrill = false
local nAngledContourDrillId = GDB_ID.NULL
local dReduceDepth = 0
local bUseTabs = false
-- se trovata svuotatura, verifico se richiesta invece contornatura
if nType == 'Pocket' then
-- recupero eventuale flag per fare sola contornatura
local nContourOnly = ( EgtGetInfo( Proc.Id, sContourOnly, 'i') or 0)
if nContourOnly == 1 then
-- imposto riduzione profondita' per evitare distacco pezzo interno
dReduceDepth = 5
-- se inclinato e passante
if abs( vtExtr:getZ()) >= WD.DRILL_VZ_MIN and abs( vtExtr:getZ()) < 0.999 and Proc.Fcs > 0 and Proc.Fce > 0 then
-- gruppo ausiliario per preforo
local nAddGrpId = WL.GetAddGroup( Proc.PartId)
-- ricavo contorno inferiore della superficie
local nAngledCircleId, nAngledCircleCnt = EgtExtractSurfTmLoops( Proc.Id, nAddGrpId)
local dMinZ = 10000
local nMinCircleId = GDB_ID.NULL
for Circleindex = 1, nAngledCircleCnt do
local b3Circle = EgtGetBBoxGlob( nAngledCircleId + Circleindex -1, GDB_BB.EXACT)
if b3Circle:getMin():getZ() < dMinZ then
nMinCircleId = nAngledCircleId + Circleindex -1
-- se passante
if Proc.Fcs > 0 and Proc.Fce > 0 then
-- se inclinato
if abs( vtExtr:getZ()) >= WD.DRILL_VZ_MIN and abs( vtExtr:getZ()) < 0.999 then
-- gruppo ausiliario per preforo
local nAddGrpId = WL.GetAddGroup( Proc.PartId)
-- ricavo contorno inferiore della superficie
local nAngledCircleId, nAngledCircleCnt = EgtExtractSurfTmLoops( Proc.Id, nAddGrpId)
local dMinZ = 10000
local nMinCircleId = GDB_ID.NULL
for Circleindex = 1, nAngledCircleCnt do
local b3Circle = EgtGetBBoxGlob( nAngledCircleId + Circleindex -1, GDB_BB.EXACT)
if b3Circle:getMin():getZ() < dMinZ then
nMinCircleId = nAngledCircleId + Circleindex -1
end
end
-- estrudo
EgtModifyCurveExtrusion( nMinCircleId, vtExtr, GDB_RT.GLOB)
EgtModifyCurveThickness( nMinCircleId, dLen)
bAngledContourDrill = true
nAngledContourDrillId = nMinCircleId
-- se non inclinato e abbastanza grande uso i tab
-- TODO se si risolve il problema dei tabs non funzionanti sotto ai 200 mm rimuovere il check sul diametro
elseif dDiam > 100 - 10 * GEO.EPS_SMALL then
bUseTabs = true
-- se non inclinato e piccolo non arrivo sul fondo
else
dReduceDepth = 5
end
-- estrudo
EgtModifyCurveExtrusion( nMinCircleId, vtExtr, GDB_RT.GLOB)
EgtModifyCurveThickness( nMinCircleId, dLen)
bAngledContourDrill = true
nAngledContourDrillId = nMinCircleId
end
sDrilling = WM.FindMilling( 'FreeContour', dLen, nil, nil, nil, nil, true)
if sDrilling then
@@ -515,6 +524,17 @@ function WPD.Make( Proc, nRawId, b3Raw)
sUserNotes = EgtSetValInNotes( sUserNotes, 'MirrorAx', Proc.MirrorAx)
end
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
if bUseTabs then
local dStep = EgtGetMachiningParam( MCH_MP.STEP)
EgtSetMachiningParam( MCH_MP.STEPTYPE, MCH_MILL_ST.ONEWAY)
EgtSetMachiningParam( MCH_MP.LEAVETAB, true)
EgtSetMachiningParam( MCH_MP.TABHEIGHT, EgtClamp( dStep, 0.15 * dDepth, 0.25 * dDepth ))
EgtSetMachiningParam( MCH_MP.TABLEN, EgtClamp( 2 * dDiamT, 0.1 * dDiam, 0.2 * dDiam ))
EgtSetMachiningParam( MCH_MP.TABANGLE, 45)
EgtSetMachiningParam( MCH_MP.TABDIST, 100)
EgtSetMachiningParam( MCH_MP.TABMIN, 3)
EgtSetMachiningParam( MCH_MP.TABMAX, 3)
end
-- eseguo
if not EgtApplyMachining( true, false) then
local _, sErr = EgtGetLastMachMgrError()
+5 -3
View File
@@ -1486,9 +1486,11 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd
end
--scrivo nell'operazione il vettore somma delle normali alle superfici che servirà per il doppio
local vtNSum = Vector3d( 0, 0, 0)
for iGeom = 1, #vGeom do
local nFace = vGeom[iGeom][2]
vtNSum = vtNSum + Proc.Face[ nFace + 1].VtN
if Proc.Face and #Proc.Face > 0 then
for iGeom = 1, #vGeom do
local nFace = vGeom[iGeom][2]
vtNSum = vtNSum + Proc.Face[ nFace + 1].VtN
end
end
EgtSetInfo( nMchId or GDB_ID.NULL, 'NORM_SUM', vtNSum)
-- eseguo
+12 -8
View File
@@ -34,6 +34,7 @@
-- Miglioramenti sostanziali nella gestione delle tasche.
-- 2023/11/16 Fresature a salire estese a groove cieche.
-- 2024/02/20 Piccola correzione ai casi in cui si utilizza il SIDESTEP.
-- 2024/08/09 In MakeByMill, se fresa Side trovata ma non applicabile, si considera come se non trovata
-- Tabella per definizione modulo
local WPL = {}
@@ -1218,7 +1219,7 @@ local function MakeByChainSaw( Proc, nFacet, nRawId, b3Raw, dElev, dH, dV)
local sStartAngs
if WD.GetChainSawStartAngs then
local vtN2 = EgtSurfTmFacetNormVersor( Proc.Id, nFacAdj, GDB_ID.ROOT)
sStartAngs = WD.GetChainSawStartAngs( vtN2)
sStartAngs = WD.GetChainSawStartAngs( vtN2, vtN, ptC)
end
-- Lati chiusi
local bOpenStart = false
@@ -1351,7 +1352,7 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
if not sMilling then
local sErr = 'Error : Side not found in library'
EgtOutLog( sErr)
return false, sErr
return false, sErr, true
end
-- recupero i dati dell'utensile
local dMillDiam = 20
@@ -1372,13 +1373,13 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
if dMillDiam < dDiam or dMaxDepth < dElev then
local sErr = 'Error : Side Elevation too big'
EgtOutLog( sErr)
return false, sErr
return false, sErr, true
end
local dMillExtra = dMillTotLen - dMillLen
if Proc.Box:getMin():getZ() - dMillExtra < b3Raw:getMin():getZ() - 10 * GEO.EPS_SMALL then
local sErr = 'Error : Tool collide with table'
EgtOutLog( sErr)
return false, sErr
return false, sErr, true
end
-- inserisco la lavorazione di contornatura
local sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
@@ -2755,7 +2756,10 @@ local function MakeTwoFaces( Proc, nRawId, b3Raw)
bLikeAsMakeFirstGroove = false
return MakeSideGrooveByMill( Proc, nFacetVert, nRawId, b3Raw, EgtIf( bEnableMillOnSide and dMaxDepthOnSide, sMillOnSide, nil), dMaxDepthOnSide, bMakeFirstGroove, bMachFromDn, dAng, bLikeAsMakeFirstGroove, nil, nil, bDoubleMillOnSide)
else
local bOk, sErr = MakeByMill( Proc, nFacet, 1 - nFacet, nRawId, b3Raw, dSideDist)
local bOk, sErr, bSideMachiningNotFound = MakeByMill( Proc, nFacet, 1 - nFacet, nRawId, b3Raw, dSideDist)
if not bOk and bSideMachiningNotFound then
bOk, sErr = MakeByPocketing( Proc, nFacet, nRawId, b3Raw)
end
-- se angolo ottuso riprendo il lato quasi verticale
if bOk and dAng and dAng > -90 + 10 * GEO.EPS_SMALL then
local bOk2, sErr2 = MakeSideGrooveByMill( Proc, nFacetVert, nRawId, b3Raw, EgtIf( bEnableMillOnSide and dMaxDepthOnSide, sMillOnSide, nil), dMaxDepthOnSide, bMakeFirstGroove, bMachFromDn, dAng, false, nil, true)
@@ -2859,8 +2863,8 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
end
local vtN = EgtSurfTmFacetNormVersor( Proc.Id, nFacInd, GDB_ID.ROOT)
local _, dH, dV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFacInd, GDB_ID.ROOT)
local dMaxSlotThicknessForBlade = 25
local bIsSmallSlot = ( Proc.Fct == 3 and ( min( dH, dV) < dMaxSlotThicknessForBlade + 10 * GEO.EPS_SMALL) and vtN:getZ() > -0.01)
local dMaxSlotThicknessForBlade = 19
local bIsSmallSlot = ( Proc.Fct == 3 and ( min( dH, dV) < dMaxSlotThicknessForBlade - 10 * GEO.EPS_SMALL) and vtN:getZ() > -0.01)
-- se di fianco
if not bPckt and Proc.Fct >= 3 and ( ( vtN:getZ() < WD.NZ_MINA) or bIsSmallSlot) then
-- recupero elevazione faccia in feature
@@ -2922,7 +2926,7 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
end
else
-- fresatura (se definita); se disponibile, cerco di usare un utensile che non lavori al limite della capacità di sottosquadro
local dSideElevMultiplier = 1.2
local dSideElevMultiplier = 1.1
local sMilling = WM.FindMilling( 'SideGroove', nil, nil, nil, nil, min( dH, dV), nil, dSideElevMultiplier * dSideElev)
-- se non ho trovato un utensile un po' più grande del sottosquadro richiesto, passo alla ricerca standard
if not sMilling then
+6 -2
View File
@@ -9,6 +9,7 @@
-- In Collect aggiunto il recupero preliminare di varie informazioni sulla feature.
-- 2023/12/11 In ClassifyTopology si passa ora anche l'Id del grezzo (allineamento Topology con Beam).
-- 2024/02/20 Aggiunta gestione DeltaX/Y/Z del pannello dall'origine da BTL.
-- 2024/08/30 Aggiunta nota altezza sottopezzo, per pareti a layer
-- Tabella per definizione modulo
local WallExec = {}
@@ -165,6 +166,7 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr
end
else
local dPosH = EgtIf( vWall[i].PosY < 0.1, ( dRawH - PartHeight) / 2, vWall[i].PosY)
EgtSetInfo( nRaw, 'SUBPIECE', dPosH)
ptPos = Point3d( dRawL - vWall[i].PosX - PartLen, vWall[i].PosZ, dPosH) + vtOffs
end
EgtAddPartToRawPart( Pz, ptPos, nRaw)
@@ -216,8 +218,10 @@ function WallExec.CollectFeatures( PartId, b3Raw)
Proc.DistanceToRawPart = WL.GetProcessDistanceToRawPart( Proc, b3Raw)
-- recupero informazioni sulle facce della feature
Proc.Face = {}
for i = 1, Proc.Fct do
Proc.Face[i] = { Id = i - 1, VtN = EgtSurfTmFacetNormVersor( Proc.Id, i - 1, GDB_ID.ROOT ), Elevation = WL.GetFaceElevation( Proc.Id, i - 1, PartId)}
if Proc.Fct < 50 then
for i = 1, Proc.Fct do
Proc.Face[i] = { Id = i - 1, VtN = EgtSurfTmFacetNormVersor( Proc.Id, i - 1, GDB_ID.ROOT ), Elevation = WL.GetFaceElevation( Proc.Id, i - 1, PartId)}
end
end
end
if Proc.Box and not Proc.Box:isEmpty() then
+2 -2
View File
@@ -157,9 +157,9 @@ local bManualRot = EgtGetInfo( NFAR.PARTID, "MANUALROT", 'b')
-- FLIP
local FlipFeatureStates, bLapJoints = ClassifyFlip( vPartProc, b3Part)
local bFlip
if not bManualFlip then
local bFlip
-- analizzo stati flip delle feature
local nFlip0Min = 100
local nFlip0Cnt = 0
@@ -440,7 +440,7 @@ if not bManualRot then
-- setto info nel pezzo
if nRotate > 0 then
local nPartRot = EgtGetInfo( NFAR.PARTID, "ROTATED", 'i') or 0
local nTotRot = nPartRot - nRotate
local nTotRot = nPartRot - EgtIf( bFlip, -nRotate, nRotate)
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
EgtSetInfo( NFAR.PARTID, "ROTATED", nTotRot)
EgtSetInfo( NFAR.PARTID, "FLIPROTMODIFIED", 1)
+18 -11
View File
@@ -19,7 +19,7 @@ NEST.MACH_AREA_OTHER_DIAM = 200
NEST.MACH_AREA_IGNORE_3rdFACE = 1 -- 0
local sLog = 'NestProcess : ' .. NEST.FILE .. ', ' .. NEST.MACHINE .. ', ' .. LEN["1"] .. ', ' .. WIDTH["1"]
local sLog = 'NestProcess : ' .. NEST.FILE .. ', ' .. NEST.MACHINE .. ', ' .. LEN[1] .. ', ' .. WIDTH[1]
EgtOutLog( sLog)
-- Cancello file di log specifico
@@ -1128,9 +1128,10 @@ local function ClassifyAngles( nPartId, RawPart, sRefOrig, bLockedRot, dMinSheet
if nRotate >= 360 then
nRotate = nRotate - 360
end
if nRotate > 0 then
if nRotate > 0 then
local bPartFlip = ( ( EgtGetInfo( nPartId, "INVERTED", 'i') or 0) == 180)
local nPartRot = EgtGetInfo( nPartId, "ROTATED", 'i') or 0
local nTotRot = nPartRot - nRotate
local nTotRot = nPartRot - EgtIf( bPartFlip, -nRotate, nRotate)
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
EgtSetInfo( nPartId, "ROTATED", nTotRot)
EgtSetInfo( nPartId, "MODIFIEDFORNEST", 1)
@@ -1325,8 +1326,9 @@ local function ComputeRestrictedZones( RawParts)
bOnOppositeSide = true
-- aggiorno le info di rotazione
if res.nRotate > 0 then
local bPartFlip = ( ( EgtGetInfo( AngleClassification[nInd].PartId, "INVERTED", 'i') or 0) == 180)
local nPartRot = EgtGetInfo( AngleClassification[nInd].PartId, "ROTATED", 'i') or 0
local nTotRot = nPartRot - res.nRotate
local nTotRot = nPartRot - EgtIf( bPartFlip, -res.nRotate, res.nRotate)
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
EgtSetInfo( AngleClassification[nInd].PartId, "ROTATED", nTotRot)
EgtSetInfo( AngleClassification[nInd].PartId, "MODIFIEDFORNEST", 1)
@@ -1507,7 +1509,6 @@ local function AddParts(RawParts, vPartsDoneManually)
bRotNest = false
elseif EgtExistsInfo( nPartId, "NestRot") then
nStepRotNest = EgtGetInfo( nPartId, "NestStepRot", 'i')
nRotate = EgtGetInfo( nPartId, "NestRot", 'i')
bRotNest = EgtGetInfo( nPartId, "NestAllowRot", 'b')
-- verifico se rotazione è valida (pezzo è contenuto nel grezzo)
local bValidRotationInRaw = b3Part:getDimX() < RawParts[1].Len - 2 * NEST.KERF + GEO.EPS_SMALL and b3Part:getDimY() < dRawMaxWidth - 2 * NEST.KERF + GEO.EPS_SMALL
@@ -1884,15 +1885,21 @@ if bNestingOk then
EgtSetInfo( nPartDuploId, "POSX", ptPos:getX() + dXCorr)
EgtSetInfo( nPartDuploId, "POSY", ptPos:getY() + dYCorr)
local nPartRot = EgtGetInfo( nId, "ROTATED", 'i') or 0
local nTotRot = dAngRot - nPartRot
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
EgtSetInfo( nPartDuploId, "ROT", nTotRot)
local nPartFlip = EgtGetInfo( nId, "INVERTED", 'i')
local nPartFlip = EgtGetInfo( nId, "INVERTED", 'i') or 0
nPartFlip = EgtIf( nPartFlip == 180, 1, 0)
local nTotFlip = EgtIf( nPartFlip ~= nFlag, 180, 0)
EgtSetInfo( nPartDuploId, "FLIP", nTotFlip)
local bPartFlip = ( nTotFlip == 180)
local nPartRot = EgtGetInfo( nId, "ROTATED", 'i') or 0
local nTotRot = nPartRot - EgtIf( bPartFlip, -dAngRot, dAngRot)
if nTotRot < 0 then
nTotRot = nTotRot + 360
elseif nTotRot >= 360 then
nTotRot = nTotRot - 360
end
EgtSetInfo( nPartDuploId, "ROT", nTotRot)
end
end
end
+39
View File
@@ -1,5 +1,44 @@
==== Wall Update Log ====
Versione 2.6j2 (04/11/2024)
- Modif : Modificato limite dimensione tasca per utilizzo lama come SideGroove
Versione 2.6j1 (29/10/2024)
- Fixed : in Nesting e Flip/Rot corretto problema in rotazione pezzi che causava ribaltamenti non voluti nella copia grezzo
Versione 2.6i2 (30/09/2024)
- Modif : aggiunta nota altezza sottopezzo, per pareti a layer
Versione 2.6i1 (25/09/2024)
- Fixed : in NestProcess correzione in lettura array per cambio dll di lettura
Versione 2.6h2 (28/08/2024)
- Modif : Aggiunto controllo licenza/chiave per abilitazione generazione PartProgram
- Fixed : in FreeContour corretto caso in cui si chiedevano informazioni sulla faccia non presenti.
Versione 2.6h1 (20/08/2024)
- Modif : in LapJoint, se fresa Side trovata ma non applicabile, si considera come se non trovata
- Modif : in Collect analisi facce limitata a feature che ne hanno meno di 50
- Modif : aggiunti nuovi parametri alla chiamata della funzione GetChainSawStartAngs da WallData della macchina
Versione 2.6g2 (19/07/2024)
- Modif : in BatchProcess e BatchProcessNew si forza ricalcolo ogni volta che si è in situazione di CHECK o CHECK + GENERATE
Versione 2.6g1 (17/07/2024)
- Modif : in ProcessDrill, se foro verticale passante e diametro inferiore a 100 mm, riduzione affondamento di 5 mm sostituito con tab
- Fixed : correzioni a utilizzo DEFAULT_RAW_NO_EXTRA_WIDTH
Versione 2.6f1 (21/06/2024)
- Added : in BatchProcess e BatchProcessNew aggiunto DEFAULT_RAW_NO_EXTRA_WIDTH per eliminare il sovramateriale grezzo in vista
Versione 2.6e2 (24/05/2024)
- Modif : in LapJoint se non si trova una lavorazione di tipo side si cerca una pocketing
- Fixed : in BatchProcessNew se generazione non abilitata si salta questa fase invece di restituire errore
- Fixed : piccoli errori in LapJoint e DoubleCut.
Versione 2.6e1 (03/03/5/2024)
- Fixed : correzione per assegnazione a SawCut di flag passante (bIsThrough).
Versione 2.6c3 (26/03/2024)
- Modif : modifica per richiamare le nuove funzioni di Test interferenza solidi superfici nel controllo validità lavorazione pulizia spigoli interni
- Modif : in compilazione vengono eliminate le info di debug
+3 -3
View File
@@ -1,6 +1,6 @@
-- Version.lua by Egalware s.r.l. 2024/03/24
-- Version.lua by Egalware s.r.l. 2024/08/20
-- Gestione della versione di Wall
NAME = 'Wall'
VERSION = '2.6c3'
MIN_EXE = '2.6c2'
VERSION = '2.6j2'
MIN_EXE = '2.6h1'