Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e49b505fbe | |||
| 72c1eb81f3 | |||
| 037ac0d030 | |||
| f1b64b1496 | |||
| 69ab03f3ec | |||
| 3b86cd9633 | |||
| 56fc63d5ff | |||
| f27eeb9c3d | |||
| 5d603a57db | |||
| 6f45e63f11 | |||
| eb8c78b7b1 | |||
| 4eefdf0842 | |||
| b536c30a88 | |||
| 9a0ea2e431 | |||
| d61a47755c | |||
| c6b8b74f26 | |||
| 53cd49bed1 | |||
| 2f4a77c73e | |||
| 64a3f75b31 | |||
| 000358b6a6 | |||
| 6c16e7b70a | |||
| 1ae32451e5 | |||
| 4c68955ba2 | |||
| dd80929ae1 | |||
| af80170976 | |||
| bf2742c6c7 | |||
| ec09b3f70c | |||
| 952d40cb2b |
+16
-2
@@ -59,9 +59,23 @@ end
|
|||||||
local sLog = 'BatchProcess : ' .. BEAM.FILE .. ', ' .. BEAM.MACHINE .. ', ' .. sFlag
|
local sLog = 'BatchProcess : ' .. BEAM.FILE .. ', ' .. BEAM.MACHINE .. ', ' .. sFlag
|
||||||
EgtOutLog( sLog)
|
EgtOutLog( sLog)
|
||||||
|
|
||||||
-- Cancello file di log specifico
|
|
||||||
local sLogFile = EgtChangePathExtension( BEAM.FILE, '.txt')
|
local sLogFile = EgtChangePathExtension( BEAM.FILE, '.txt')
|
||||||
EgtEraseFile( sLogFile)
|
-- in caso sia richiesta generazione senza check, verifico prima che il file log specifico non contenga errori: se sì, forzo il check
|
||||||
|
if BEAM.FLAG == 0 then
|
||||||
|
local hLogFile = io.open( sLogFile, 'r')
|
||||||
|
if hLogFile then
|
||||||
|
for line in hLogFile:lines() do
|
||||||
|
if EgtStartsWith( line, 'ERR') and tonumber( EgtSplitString( line, '=')[2] or 0) > 0 then
|
||||||
|
BEAM.FLAG = 4
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
hLogFile:close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Cancello file di log specifico
|
||||||
|
EgtEraseFile( sLogFile)
|
||||||
|
|
||||||
-- Funzioni per scrittura su file di log specifico
|
-- Funzioni per scrittura su file di log specifico
|
||||||
local function WriteErrToLogFile( nErr, sMsg, nRot, nCutId, nTaskId)
|
local function WriteErrToLogFile( nErr, sMsg, nRot, nCutId, nTaskId)
|
||||||
|
|||||||
+16
-2
@@ -45,9 +45,23 @@ end
|
|||||||
local sLog = 'BatchProcess : ' .. BEAM.FILE .. ', ' .. BEAM.MACHINE .. ', ' .. sFlag
|
local sLog = 'BatchProcess : ' .. BEAM.FILE .. ', ' .. BEAM.MACHINE .. ', ' .. sFlag
|
||||||
EgtOutLog( sLog)
|
EgtOutLog( sLog)
|
||||||
|
|
||||||
-- Cancello file di log specifico
|
|
||||||
local sLogFile = EgtChangePathExtension( BEAM.FILE, '.txt')
|
local sLogFile = EgtChangePathExtension( BEAM.FILE, '.txt')
|
||||||
EgtEraseFile( sLogFile)
|
-- in caso sia richiesta generazione senza check, verifico prima che il file log specifico non contenga errori: se sì, forzo il check
|
||||||
|
if BEAM.FLAG == 0 then
|
||||||
|
local hLogFile = io.open( sLogFile, 'r')
|
||||||
|
if hLogFile then
|
||||||
|
for line in hLogFile:lines() do
|
||||||
|
if EgtStartsWith( line, 'ERR') and tonumber( EgtSplitString( line, '=')[2] or 0) > 0 then
|
||||||
|
BEAM.FLAG = 4
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
hLogFile:close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Cancello file di log specifico
|
||||||
|
EgtEraseFile( sLogFile)
|
||||||
|
|
||||||
-- Funzioni per scrittura su file di log specifico
|
-- Funzioni per scrittura su file di log specifico
|
||||||
local function WriteErrToLogFile( nErr, sMsg, nRot, nCutId, nTaskId)
|
local function WriteErrToLogFile( nErr, sMsg, nRot, nCutId, nTaskId)
|
||||||
|
|||||||
+25
-6
@@ -835,13 +835,13 @@ local function OrderFeatures( vProc, b3Raw)
|
|||||||
if B2.AdvTail and ( not Split.Identify( B1) or not B1.Tail) then
|
if B2.AdvTail and ( not Split.Identify( B1) or not B1.Tail) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
-- se primo è foro e secondo è un ribasso, il foro va sempre prima a meno che il ribasso non sia di testa
|
-- se primo è foro e secondo è un ribasso o tenone, il foro va sempre prima a meno che il ribasso non sia di testa
|
||||||
if Drill.Identify(B1) and ( LapJoint.Identify(B2) or Mortise.Identify(B2)) and B2.PassedByHole and
|
if Drill.Identify(B1) and ( LapJoint.Identify(B2) or Mortise.Identify(B2) or Tenon.Identify(B2)) and B2.PassedByHole and
|
||||||
B1.Box:getCenter():getX() > B2.Box:getMin():getX() and B1.Box:getCenter():getX() < B2.Box:getMax():getX() then
|
B1.Box:getCenter():getX() > B2.Box:getMin():getX() and B1.Box:getCenter():getX() < B2.Box:getMax():getX() then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
-- se primo è un ribasso e secondo è un foro, il ribasso va sempre dopo a meno che il ribasso non sia di testa
|
-- se primo è un ribasso e secondo è un foro o tenone, il ribasso va sempre dopo a meno che il ribasso non sia di testa
|
||||||
if ( LapJoint.Identify(B1) or Mortise.Identify(B1))and B1.PassedByHole and Drill.Identify(B2) and
|
if ( LapJoint.Identify(B1) or Mortise.Identify(B1) or Tenon.Identify(B1)) and B1.PassedByHole and Drill.Identify(B2) and
|
||||||
B2.Box:getCenter():getX() > B1.Box:getMin():getX() and B2.Box:getCenter():getX() < B1.Box:getMax():getX() then
|
B2.Box:getCenter():getX() > B1.Box:getMin():getX() and B2.Box:getCenter():getX() < B1.Box:getMax():getX() then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@@ -1221,7 +1221,7 @@ local function ClassifyFeatures( vProc, b3Raw, Stats)
|
|||||||
bOk, bDown, bSide = ProfHead.Classify( Proc, b3Raw)
|
bOk, bDown, bSide = ProfHead.Classify( Proc, b3Raw)
|
||||||
-- se contorno libero
|
-- se contorno libero
|
||||||
elseif FreeContour.Identify( Proc) then
|
elseif FreeContour.Identify( Proc) then
|
||||||
bOk, bDown, bSide = FreeContour.Classify( Proc, b3Raw)
|
bOk, bDown, bSide, bDownSideOnHeadOk = FreeContour.Classify( Proc, b3Raw)
|
||||||
-- se decorazione
|
-- se decorazione
|
||||||
elseif Decor.Identify( Proc) then
|
elseif Decor.Identify( Proc) then
|
||||||
bOk, bDown = Decor.Classify( Proc)
|
bOk, bDown = Decor.Classify( Proc)
|
||||||
@@ -1231,7 +1231,7 @@ local function ClassifyFeatures( vProc, b3Raw, Stats)
|
|||||||
end
|
end
|
||||||
-- assegno risultato
|
-- assegno risultato
|
||||||
if bOk then
|
if bOk then
|
||||||
-- non ammessa feature di testa da lavorare ribaltata o ruotata
|
-- non ammessa feature di testa da lavorare ribaltata o ruotata (lettura laser)
|
||||||
if Proc.Head and ( bDown or bSide) and not bDownSideOnHeadOk then
|
if Proc.Head and ( bDown or bSide) and not bDownSideOnHeadOk then
|
||||||
Proc.Flg = 0
|
Proc.Flg = 0
|
||||||
Proc.Down = true
|
Proc.Down = true
|
||||||
@@ -2034,6 +2034,14 @@ function GetFeatureInfoAndDependency( vProc, b3Raw)
|
|||||||
if ( Proc.Topology == 'Pocket' or Proc.Topology == 'Tunnel' or Proc.Topology == 'Groove') and DtMortise.SideIdentify( ProcB) and Overlaps( Proc.Box, ProcB.Box) then
|
if ( Proc.Topology == 'Pocket' or Proc.Topology == 'Tunnel' or Proc.Topology == 'Groove') and DtMortise.SideIdentify( ProcB) and Overlaps( Proc.Box, ProcB.Box) then
|
||||||
Proc.PassedByDtMortise = true
|
Proc.PassedByDtMortise = true
|
||||||
end
|
end
|
||||||
|
-- se tenone è attraversato da foro allora il foro deve essere fatto prima
|
||||||
|
if Tenon.Identify( Proc) and Drill.Identify( ProcB) and Overlaps( Proc.Box, ProcB.Box) then
|
||||||
|
Proc.PassedByHole = true
|
||||||
|
end
|
||||||
|
-- se tenone di coda è attraversato da foro allora anche il foro deve essere di coda
|
||||||
|
if Tenon.Identify( Proc) and Proc.Tail and Drill.Identify( ProcB) and Overlaps( Proc.Box, ProcB.Box) then
|
||||||
|
ProcB.Tail = true
|
||||||
|
end
|
||||||
-- verifiche per specchiature
|
-- verifiche per specchiature
|
||||||
if BD.DOWN_HEAD or BD.TWO_EQUAL_HEADS then
|
if BD.DOWN_HEAD or BD.TWO_EQUAL_HEADS then
|
||||||
-- forature
|
-- forature
|
||||||
@@ -2107,6 +2115,17 @@ function BeamExec.ProcessFeatures()
|
|||||||
PrintFeatures( vProc, b3Raw)
|
PrintFeatures( vProc, b3Raw)
|
||||||
end
|
end
|
||||||
EgtOutLog( ' *** AddMachinings ***', 1)
|
EgtOutLog( ' *** AddMachinings ***', 1)
|
||||||
|
-- scrivo nel RawPart se ci sono feature lavorate con trave ruotata a 90 o 180 deg
|
||||||
|
if bSomeSide then
|
||||||
|
EgtSetInfo( nRawId, 'ROTATE90', 1)
|
||||||
|
else
|
||||||
|
EgtSetInfo( nRawId, 'ROTATE90', 0)
|
||||||
|
end
|
||||||
|
if bSomeDown then
|
||||||
|
EgtSetInfo( nRawId, 'ROTATE180', 1)
|
||||||
|
else
|
||||||
|
EgtSetInfo( nRawId, 'ROTATE180', 0)
|
||||||
|
end
|
||||||
-- verifico se comunque necessario taglio di testa
|
-- verifico se comunque necessario taglio di testa
|
||||||
local bNeedHCut = VerifyNeedForHeadCut( vProc, bSomeDown, bSomeSide)
|
local bNeedHCut = VerifyNeedForHeadCut( vProc, bSomeDown, bSomeSide)
|
||||||
-- inserisco corrispondenze di tagli coincidenti con mortase normali o a coda di rondine di testa
|
-- inserisco corrispondenze di tagli coincidenti con mortase normali o a coda di rondine di testa
|
||||||
|
|||||||
+16
-10
@@ -29,6 +29,7 @@
|
|||||||
-- 2024/02/22 Migliorato calcolo area non pinzabile in testa HCING e coda TCING
|
-- 2024/02/22 Migliorato calcolo area non pinzabile in testa HCING e coda TCING
|
||||||
-- 2024/03/27 In MakeTwo rimossa gestione calcolo differente su ultima passata in caso di macchina FAST
|
-- 2024/03/27 In MakeTwo rimossa gestione calcolo differente su ultima passata in caso di macchina FAST
|
||||||
-- 2024/06/18 In MakeOne in caso di inversione del percorso, si scambia anche accorciamento start con end
|
-- 2024/06/18 In MakeOne in caso di inversione del percorso, si scambia anche accorciamento start con end
|
||||||
|
-- 2024/09/12 In MakeOne per settare il FaceUse si usa il versore nelle UserNotes
|
||||||
|
|
||||||
-- Tabella per definizione modulo
|
-- Tabella per definizione modulo
|
||||||
local FacesBySaw = {}
|
local FacesBySaw = {}
|
||||||
@@ -232,8 +233,8 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw
|
|||||||
if not dVzLimDwnUp then dVzLimDwnUp = BL.GetNzLimDownUp( b3Raw, vtN, vtOrthO) end
|
if not dVzLimDwnUp then dVzLimDwnUp = BL.GetNzLimDownUp( b3Raw, vtN, vtOrthO) end
|
||||||
local bDownHead = ( dVzLimDwnUp and dVzLimDwnUp < - 1.5)
|
local bDownHead = ( dVzLimDwnUp and dVzLimDwnUp < - 1.5)
|
||||||
local bDownUp = ( vtN:getZ() < dVzLimDwnUp)
|
local bDownUp = ( vtN:getZ() < dVzLimDwnUp)
|
||||||
-- linea o bilinea di lavorazione (qui uso nOrthoOpposite per ripetere esattamente il calcolo del Mach)
|
-- linea o bilinea di lavorazione
|
||||||
local ptP1, ptPm, ptP2, vtV1, vtV2, dLen, dWidth = EgtSurfTmFacetOppositeSide( nSurfId, nFacet, BL.GetVersRef( nOrthoOpposite), GDB_ID.ROOT)
|
local ptP1, ptPm, ptP2, vtV1, vtV2, dLen, dWidth = EgtSurfTmFacetOppositeSide( nSurfId, nFacet, vtOrthO, GDB_ID.ROOT)
|
||||||
if not dLen or dLen < 1.1 or not dWidth or dWidth < 1.1 then
|
if not dLen or dLen < 1.1 or not dWidth or dWidth < 1.1 then
|
||||||
local sWarn = 'Face ' .. string.format( '%d,%d', nSurfId, nFacet) .. ' skipped : too small'
|
local sWarn = 'Face ' .. string.format( '%d,%d', nSurfId, nFacet) .. ' skipped : too small'
|
||||||
EgtOutLog( sWarn, 1)
|
EgtOutLog( sWarn, 1)
|
||||||
@@ -247,12 +248,12 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw
|
|||||||
local bIsSawCCW = ( EgtMdbGetCurrMachiningParam( MCH_MP.SPEED) < 0)
|
local bIsSawCCW = ( EgtMdbGetCurrMachiningParam( MCH_MP.SPEED) < 0)
|
||||||
local bInvert = bForceInvert
|
local bInvert = bForceInvert
|
||||||
-- l'inversione può essere comandata da rotazione lama (direzione concorde, legata anche a DownUp) oppure da direzione Z del percorso (si preferisce lavorare dal basso verso l'alto per limitare le corse)
|
-- l'inversione può essere comandata da rotazione lama (direzione concorde, legata anche a DownUp) oppure da direzione Z del percorso (si preferisce lavorare dal basso verso l'alto per limitare le corse)
|
||||||
-- se c'è disaccordo tra rotazione e direzione si cambia il lato di lavoro, se possibile. Se ciò non è possbile comanda la direzione.
|
-- se c'è disaccordo tra rotazione e direzione si cambia il lato di lavoro, se possibile. Se ciò non è possbile comanda la direzione. Se percorso orizzontale comanda la rotazione.
|
||||||
if bInvert == nil then
|
if bInvert == nil then
|
||||||
if not BD.TURN or abs( ptP2:getY() - ptP1:getY()) < 250 then
|
if not BD.TURN or abs( ptP2:getY() - ptP1:getY()) < 250 then
|
||||||
local bIsMachiningDownwards = ( ptP2:getZ() < ptP1:getZ() - 100 * GEO.EPS_SMALL)
|
local bIsMachiningDownwards = ( ptP2:getZ() < ptP1:getZ() - 100 * GEO.EPS_SMALL)
|
||||||
local bIsMachiningUpwards = ( ptP2:getZ() > ptP1:getZ() + 100 * GEO.EPS_SMALL)
|
local bIsMachiningUpwards = ( ptP2:getZ() > ptP1:getZ() + 100 * GEO.EPS_SMALL)
|
||||||
if ( bIsSawCCW ~= bDownUp) and bIsMachiningDownwards then
|
if ( bIsSawCCW ~= bDownUp) and ( bIsMachiningDownwards or not ( bIsMachiningDownwards or bIsMachiningUpwards)) then
|
||||||
bInvert = true
|
bInvert = true
|
||||||
elseif ( ( bIsSawCCW ~= bDownUp) ~= bIsMachiningDownwards) then
|
elseif ( ( bIsSawCCW ~= bDownUp) ~= bIsMachiningDownwards) then
|
||||||
if Par5Alternative then
|
if Par5Alternative then
|
||||||
@@ -260,7 +261,7 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw
|
|||||||
nOrthoOpposite = nOrthoOppositeAlternative
|
nOrthoOpposite = nOrthoOppositeAlternative
|
||||||
vtOrthO = vtOrthOAlternative
|
vtOrthO = vtOrthOAlternative
|
||||||
-- avendo riassegnato la direzione di lavoro, i dati della linea vanno ricalcolati
|
-- avendo riassegnato la direzione di lavoro, i dati della linea vanno ricalcolati
|
||||||
ptP1, ptPm, ptP2, vtV1, vtV2, dLen, dWidth = EgtSurfTmFacetOppositeSide( nSurfId, nFacet, BL.GetVersRef( nOrthoOpposite), GDB_ID.ROOT)
|
ptP1, ptPm, ptP2, vtV1, vtV2, dLen, dWidth = EgtSurfTmFacetOppositeSide( nSurfId, nFacet, vtOrthO, GDB_ID.ROOT)
|
||||||
if not dLen or dLen < 1.1 or not dWidth or dWidth < 1.1 then
|
if not dLen or dLen < 1.1 or not dWidth or dWidth < 1.1 then
|
||||||
local sWarn = 'Face ' .. string.format( '%d,%d', nSurfId, nFacet) .. ' skipped : too small'
|
local sWarn = 'Face ' .. string.format( '%d,%d', nSurfId, nFacet) .. ' skipped : too small'
|
||||||
EgtOutLog( sWarn, 1)
|
EgtOutLog( sWarn, 1)
|
||||||
@@ -283,7 +284,10 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw
|
|||||||
if bInvert then
|
if bInvert then
|
||||||
ptP1, ptP2 = ptP2, ptP1
|
ptP1, ptP2 = ptP2, ptP1
|
||||||
vtV1, vtV2 = vtV2, vtV1
|
vtV1, vtV2 = vtV2, vtV1
|
||||||
dAccStart, dAccEnd = dAccEnd, dAccStart
|
-- se l'inversione è forzata dall'esterno, anche gli accorciamenti che arrivano dall'esterno si prendono per buoni
|
||||||
|
if bForceInvert == nil then
|
||||||
|
dAccStart, dAccEnd = dAccEnd, dAccStart
|
||||||
|
end
|
||||||
end
|
end
|
||||||
local vtTg = ptP2 - ptP1 ; vtTg:normalize()
|
local vtTg = ptP2 - ptP1 ; vtTg:normalize()
|
||||||
local dAllStart = 0
|
local dAllStart = 0
|
||||||
@@ -422,14 +426,14 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw
|
|||||||
local bLioTang
|
local bLioTang
|
||||||
local Ktp = 1.1
|
local Ktp = 1.1
|
||||||
if BD.KIOTP then Ktp = BD.KIOTP end
|
if BD.KIOTP then Ktp = BD.KIOTP end
|
||||||
if ( not bDownUp or abs( vtTg:getY()) > 0.5) and
|
if ( bForceTangentLeadInOut or ( not bDownUp or abs( vtTg:getY()) > 0.5) and
|
||||||
( not bDownHead or abs( vtTg:getZ()) < 0.51) and
|
( not bDownHead or abs( vtTg:getZ()) < 0.51) and
|
||||||
abs( vtTg:getX()) < 0.9848 and
|
abs( vtTg:getX()) < 0.9848 and
|
||||||
( ( abs( vtTg:getZ()) < 0.17 and ( vtV1:getZ() < -0.5 or vtV2:getZ() < -0.5) and not bDownHead) or
|
( ( abs( vtTg:getZ()) < 0.17 and ( vtV1:getZ() < -0.5 or vtV2:getZ() < -0.5) and not bDownHead) or
|
||||||
( abs( vtTg:getZ()) < 0.51 and b3Box:getDimZ() > 300 and BD.C_SIMM and BD.MAX_HEIGHT > 450 and b3Box:getDimX() > BD.LEN_SHORT_PART) or
|
( abs( vtTg:getZ()) < 0.51 and b3Box:getDimZ() > 300 and BD.C_SIMM and BD.MAX_HEIGHT > 450 and b3Box:getDimX() > BD.LEN_SHORT_PART) or
|
||||||
( abs( vtTg:getZ()) < 0.51 and ( dLenLi2 + dLenLo2) < ( dLenLi + dLenLo)) or
|
( abs( vtTg:getZ()) < 0.51 and ( dLenLi2 + dLenLo2) < ( dLenLi + dLenLo)) or
|
||||||
Ktp * ( dLenLi2 + dLenLo2) < ( dLenLi + dLenLo) or
|
Ktp * ( dLenLi2 + dLenLo2) < ( dLenLi + dLenLo) or
|
||||||
( BD.TURN == 2 and vtRef:getZ() < -0.1)) then
|
( BD.TURN == 2 and vtRef:getZ() < -0.1))) then
|
||||||
if BD.TURN == 2 then
|
if BD.TURN == 2 then
|
||||||
if vtTg:getY() < -0.1 then
|
if vtTg:getY() < -0.1 then
|
||||||
bLioTang = 1
|
bLioTang = 1
|
||||||
@@ -512,6 +516,8 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw
|
|||||||
EgtSetMachiningGeometry( {{ nSurfId, nFacet}})
|
EgtSetMachiningGeometry( {{ nSurfId, nFacet}})
|
||||||
-- imposto uso faccia
|
-- imposto uso faccia
|
||||||
EgtSetMachiningParam( MCH_MP.FACEUSE, nFaceUse)
|
EgtSetMachiningParam( MCH_MP.FACEUSE, nFaceUse)
|
||||||
|
local sNoteVtFaceUse = 'VtFaceUse=' .. EgtNumToString( vtOrthO:getX(),3) .. ',' .. EgtNumToString( vtOrthO:getY(),3) .. ',' .. EgtNumToString( vtOrthO:getZ(),3) .. ';'
|
||||||
|
EgtSetMachiningParam( MCH_MP.USERNOTES, sNoteVtFaceUse)
|
||||||
-- imposto posizione braccio porta testa
|
-- imposto posizione braccio porta testa
|
||||||
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
|
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
|
||||||
-- imposto inversione e lato correzione
|
-- imposto inversione e lato correzione
|
||||||
@@ -603,8 +609,8 @@ function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, sCutType,
|
|||||||
local bConvex = ( dAngT > 0)
|
local bConvex = ( dAngT > 0)
|
||||||
-- verifico non siano orientate troppo verso il basso e molto sbandate (oltre 10 deg), oppure in testa o in coda e non troppo distanti dal grezzo esterno
|
-- verifico non siano orientate troppo verso il basso e molto sbandate (oltre 10 deg), oppure in testa o in coda e non troppo distanti dal grezzo esterno
|
||||||
local bFaceOk = {}
|
local bFaceOk = {}
|
||||||
bFaceOk[1] = ( vtN[1]:getZ() >= BD.NZ_MINB or abs( vtN[1]:getY()) < 0.174 or ( Proc.AffectedFaces.Left ~= Proc.AffectedFaces.Right and Proc.Face[1].Elevation < dMaxDepth - 10 * GEO.EPS_SMALL))
|
bFaceOk[1] = ( vtN[1]:getZ() >= ( BD.CUT_VZ_MIN or BD.NZ_MINB) or abs( vtN[1]:getY()) < 0.174 or ( Proc.AffectedFaces.Left ~= Proc.AffectedFaces.Right and Proc.Face[1].Elevation < dMaxDepth - 10 * GEO.EPS_SMALL))
|
||||||
bFaceOk[2] = ( vtN[2]:getZ() >= BD.NZ_MINB or abs( vtN[2]:getY()) < 0.174 or ( Proc.AffectedFaces.Left ~= Proc.AffectedFaces.Right and Proc.Face[2].Elevation < dMaxDepth - 10 * GEO.EPS_SMALL))
|
bFaceOk[2] = ( vtN[2]:getZ() >= ( BD.CUT_VZ_MIN or BD.NZ_MINB) or abs( vtN[2]:getY()) < 0.174 or ( Proc.AffectedFaces.Left ~= Proc.AffectedFaces.Right and Proc.Face[2].Elevation < dMaxDepth - 10 * GEO.EPS_SMALL))
|
||||||
if not bDownHead and ( not bFaceOk[1] or not bFaceOk[2]) then
|
if not bDownHead and ( not bFaceOk[1] or not bFaceOk[2]) then
|
||||||
local sErr = 'Error : TwoFacesBySaw from bottom impossible'
|
local sErr = 'Error : TwoFacesBySaw from bottom impossible'
|
||||||
EgtOutLog( sErr)
|
EgtOutLog( sErr)
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Applicazione della lavorazione con testa da sopra
|
-- Applicazione della lavorazione con testa da sopra
|
||||||
local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom, bCustDiceCut, bForced, b3Raw, sNotes, nLimitingSurf)
|
local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom, bCustDiceCut, bForced, b3Raw, sNotes, nLimitingSurf, bForceTangentLeadInOut)
|
||||||
-- ingombro del grezzo
|
-- ingombro del grezzo
|
||||||
b3Raw = b3Raw or EgtGetRawPartBBox( nRawId)
|
b3Raw = b3Raw or EgtGetRawPartBBox( nRawId)
|
||||||
-- ingombro del pezzo
|
-- ingombro del pezzo
|
||||||
@@ -581,7 +581,8 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b
|
|||||||
if ( i % 2 == 0) and ( Proc.Fct == 1) and bNoPerpCuts then
|
if ( i % 2 == 0) and ( Proc.Fct == 1) and bNoPerpCuts then
|
||||||
vtOrthoOAlternative = - vtOrthoO
|
vtOrthoOAlternative = - vtOrthoO
|
||||||
end
|
end
|
||||||
local bOk, sErr = Fbs.MakeOne( vCuts[i][j], 0, sCutting, dSawDiam, vtOrthoO, dVzLimDwnUp, dExtraCut, BD.CUT_SIC, 0, 0, 0, sNotes, b3Raw, nil, nil, bSpecialTangentLeadInOut, nil, vtOrthoOAlternative)
|
bForceTangentLeadInOut = bForceTangentLeadInOut and ( ( i % 2) ~= 0)
|
||||||
|
local bOk, sErr = Fbs.MakeOne( vCuts[i][j], 0, sCutting, dSawDiam, vtOrthoO, dVzLimDwnUp, dExtraCut, BD.CUT_SIC, 0, 0, 0, sNotes, b3Raw, nil, nil, bSpecialTangentLeadInOut, bForceTangentLeadInOut, vtOrthoOAlternative)
|
||||||
if not bOk then return bOk, sErr end
|
if not bOk then return bOk, sErr end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -821,7 +822,7 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Applicazione della lavorazione
|
-- Applicazione della lavorazione
|
||||||
function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom, bCustDiceCut, bForced, b3Raw, sNotes, dOvmTail, bUpdateIng, nLimitingSurf)
|
function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom, bCustDiceCut, bForced, b3Raw, sNotes, dOvmTail, bUpdateIng, nLimitingSurf, bForceTangentLeadInOut)
|
||||||
-- sovramateriale di coda
|
-- sovramateriale di coda
|
||||||
dOvmTail = dOvmTail or BD.OVM_MID
|
dOvmTail = dOvmTail or BD.OVM_MID
|
||||||
-- ingombro del grezzo
|
-- ingombro del grezzo
|
||||||
@@ -860,7 +861,7 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom,
|
|||||||
local bNoDicing = false
|
local bNoDicing = false
|
||||||
-- se taglio con testa da sopra
|
-- se taglio con testa da sopra
|
||||||
if not bDownHead and not bDownTurn then
|
if not bDownHead and not bDownTurn then
|
||||||
local bOk, sErr, bNoDicing2 = MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom, bCustDiceCut, bForced, b3Raw, sNotes, nLimitingSurf)
|
local bOk, sErr, bNoDicing2 = MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom, bCustDiceCut, bForced, b3Raw, sNotes, nLimitingSurf, bForceTangentLeadInOut)
|
||||||
bNoDicing = bNoDicing2
|
bNoDicing = bNoDicing2
|
||||||
if not bOk then return false, sErr end
|
if not bOk then return false, sErr end
|
||||||
-- altrimenti taglio con testa da sotto
|
-- altrimenti taglio con testa da sotto
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
-- 2024/03/13 Aggiunta gestione Predrill
|
-- 2024/03/13 Aggiunta gestione Predrill
|
||||||
-- 2024/03/18 Per Predrill corretta direzione estrusione per fori con direzione verso il basso
|
-- 2024/03/18 Per Predrill corretta direzione estrusione per fori con direzione verso il basso
|
||||||
-- 2024/09/04 Gestione dipendenza foro-tasca in caso di fase con pezzo ribaltato
|
-- 2024/09/04 Gestione dipendenza foro-tasca in caso di fase con pezzo ribaltato
|
||||||
|
-- 2024/09/10 In GetData corretta gestione modifica diametro foro
|
||||||
|
|
||||||
-- Tabella per definizione modulo
|
-- Tabella per definizione modulo
|
||||||
local ProcessDrill = {}
|
local ProcessDrill = {}
|
||||||
@@ -102,9 +103,10 @@ function ProcessDrill.GetData( Proc, b3Raw)
|
|||||||
local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i')
|
local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i')
|
||||||
-- verifico se foro da adattare
|
-- verifico se foro da adattare
|
||||||
if EgtExistsInfo( Proc.Id, 'DiamUser') then
|
if EgtExistsInfo( Proc.Id, 'DiamUser') then
|
||||||
if AuxId then AuxId = AuxId + Proc.Id end
|
local nNewAuxId
|
||||||
if AuxId and EgtGetType( AuxId) == GDB_TY.CRV_ARC and BD.USER_HOLE_DIAM and BD.USER_HOLE_DIAM > 1 then
|
if AuxId then nNewAuxId = AuxId + Proc.Id end
|
||||||
EgtModifyArcRadius( AuxId, BD.USER_HOLE_DIAM / 2)
|
if AuxId and EgtGetType( nNewAuxId) == GDB_TY.CRV_ARC and BD.USER_HOLE_DIAM and BD.USER_HOLE_DIAM > 1 then
|
||||||
|
EgtModifyArcRadius( nNewAuxId, BD.USER_HOLE_DIAM / 2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- recupero diametro e lunghezza
|
-- recupero diametro e lunghezza
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ local Q_DEPTH_CHAMFER = 'Q02' -- d
|
|||||||
local Q_OVERMAT_FOR_FINISH = 'Q03' -- d
|
local Q_OVERMAT_FOR_FINISH = 'Q03' -- d
|
||||||
local Q_ONLY_CHAMFER = 'Q00' -- i
|
local Q_ONLY_CHAMFER = 'Q00' -- i
|
||||||
local Q_RADIAL_OFFSET = 'Q06' -- d, valido solo per pocket
|
local Q_RADIAL_OFFSET = 'Q06' -- d, valido solo per pocket
|
||||||
|
local Q_IGNORE_LASER_PROBLEMS = 'Q07'
|
||||||
|
local Q_FORCE_CLAMPABLE_AREA = 'Q08'
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Riconoscimento della feature
|
-- Riconoscimento della feature
|
||||||
@@ -99,6 +101,8 @@ end
|
|||||||
function ProcessFreeContour.Classify( Proc, b3Raw)
|
function ProcessFreeContour.Classify( Proc, b3Raw)
|
||||||
-- verifico se di tipo pocket
|
-- verifico se di tipo pocket
|
||||||
local bPocket = ( EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1)
|
local bPocket = ( EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1)
|
||||||
|
-- verifico se forzata esecuzione anche se di testa e ribaltata o ruotata (lettura laser)
|
||||||
|
local bDownSideOnHeadOk = ( EgtGetInfo( Proc.Id, Q_IGNORE_LASER_PROBLEMS, 'd') or 0) == 1
|
||||||
-- recupero la curva associata
|
-- recupero la curva associata
|
||||||
local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i')
|
local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i')
|
||||||
if not AuxId then return false end
|
if not AuxId then return false end
|
||||||
@@ -107,23 +111,23 @@ function ProcessFreeContour.Classify( Proc, b3Raw)
|
|||||||
-- se tasca
|
-- se tasca
|
||||||
if bPocket then
|
if bPocket then
|
||||||
local bDown = ( vtN:getZ() < - 0.5)
|
local bDown = ( vtN:getZ() < - 0.5)
|
||||||
return true, bDown, false
|
return true, bDown, false, bDownSideOnHeadOk
|
||||||
-- se altrimenti profilo orizzontale
|
-- se altrimenti profilo orizzontale
|
||||||
elseif abs( vtN:getZ()) < 0.5 then
|
elseif abs( vtN:getZ()) < 0.5 then
|
||||||
return true, false, false
|
return true, false, false, bDownSideOnHeadOk
|
||||||
-- se altrimenti profilo verticale che non interessa tutta la sezione
|
-- se altrimenti profilo verticale che non interessa tutta la sezione
|
||||||
elseif Proc.Box:getDimZ() < 0.9 * b3Raw:getDimZ() then
|
elseif Proc.Box:getDimZ() < 0.9 * b3Raw:getDimZ() then
|
||||||
local bDown = ( vtN:getZ() < - 0.5)
|
local bDown = ( vtN:getZ() < - 0.5)
|
||||||
return true, bDown, false
|
return true, bDown, false, bDownSideOnHeadOk
|
||||||
-- altrimenti è profilo verticale che interessa tutta la sezione
|
-- altrimenti è profilo verticale che interessa tutta la sezione
|
||||||
else
|
else
|
||||||
-- recupero la massima capacità di lavoro dell'utensile da utilizzare
|
-- recupero la massima capacità di lavoro dell'utensile da utilizzare
|
||||||
local sMilling, dMaxDepth = ML.FindMilling( 'FreeContour')
|
local sMilling, dMaxDepth = ML.FindMilling( 'FreeContour')
|
||||||
if not sMilling then dMaxDepth = 0 end
|
if not sMilling then dMaxDepth = 0 end
|
||||||
if Proc.Box:getDimZ() > dMaxDepth and BD.ROT90 then
|
if Proc.Box:getDimZ() > dMaxDepth and BD.ROT90 then
|
||||||
return true, false, true
|
return true, false, true, bDownSideOnHeadOk
|
||||||
else
|
else
|
||||||
return true, false, false
|
return true, false, false, bDownSideOnHeadOk
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -713,7 +717,13 @@ local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
|||||||
-- eventuale segnalazione ingombro di testa o coda
|
-- eventuale segnalazione ingombro di testa o coda
|
||||||
local dMinHIng = min( 0.5 * BD.VICE_MINH, 0.5 * b3Raw:getDimZ())
|
local dMinHIng = min( 0.5 * BD.VICE_MINH, 0.5 * b3Raw:getDimZ())
|
||||||
local dMinZ = max( BD.MIN_HEIGHT, 0.35 * b3Raw:getDimZ())
|
local dMinZ = max( BD.MIN_HEIGHT, 0.35 * b3Raw:getDimZ())
|
||||||
if Proc.Box:getDimZ() > 0.75 * b3Raw:getDimZ() and Proc.Box:getMin():getZ() < b3Raw:getMin():getZ() + dMinZ then
|
local bRawPartHas90Rotation = ( ( EgtGetInfo( nRawId, 'ROTATE90', 'd') or 0) == 1)
|
||||||
|
-- eventuale forzatura area feature pinzabile
|
||||||
|
local bForceClampableArea = ( ( EgtGetInfo( Proc.Id, Q_FORCE_CLAMPABLE_AREA, 'd') or 0) == 1)
|
||||||
|
-- se la feature è passante top/down oppure se è passante e si ruota di 90deg considero sempre non pinzabile; in alternativa si valuta in base all'ingombro
|
||||||
|
if not bForceClampableArea and ( ( Proc.Box:getDimZ() > 0.75 * b3Raw:getDimZ() and Proc.Box:getMin():getZ() < b3Raw:getMin():getZ() + dMinZ) or
|
||||||
|
( Proc.AffectedFaces.Top and Proc.AffectedFaces.Bottom and ( AreSameOrOppositeVectorApprox( vtExtr, Z_AX()))) or
|
||||||
|
( Proc.AffectedFaces.Front and Proc.AffectedFaces.Back and bRawPartHas90Rotation)) then
|
||||||
if Proc.Head then
|
if Proc.Head then
|
||||||
local dOffs = b3Raw:getMax():getX() - dOvmHead - Proc.Box:getMin():getX()
|
local dOffs = b3Raw:getMax():getX() - dOvmHead - Proc.Box:getMin():getX()
|
||||||
BL.UpdateHCING( nRawId, dOffs)
|
BL.UpdateHCING( nRawId, dOffs)
|
||||||
@@ -722,6 +732,7 @@ local function MakeByMill( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
|||||||
BL.UpdateTCING( nRawId, dOffs)
|
BL.UpdateTCING( nRawId, dOffs)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return true, sWarn
|
return true, sWarn
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ local function AddVerticalPreCuts( Proc, sCutting, dCutXOffset, b3Raw)
|
|||||||
for j = nVerticalCuts, 1, -1 do
|
for j = nVerticalCuts, 1, -1 do
|
||||||
local nFaceUse = MCH_MILL_FU.PARAL_FRONT
|
local nFaceUse = MCH_MILL_FU.PARAL_FRONT
|
||||||
local dVerticalCutOffset = dVerticalSliceHeight * -j
|
local dVerticalCutOffset = dVerticalSliceHeight * -j
|
||||||
local bForceTangentLeadInOut = BD.PRESS_ROLLER
|
local bForceTangentLeadInOut = BD.PRESS_ROLLER and not BD.DOWN_HEAD
|
||||||
bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, nFaceUse, nil, -0.1 -dCutXOffset, BD.CUT_SIC, dVerticalCutOffset, 0, 0, '', b3Raw, nil, nil, nil, bForceTangentLeadInOut)
|
bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, nFaceUse, nil, -0.1 -dCutXOffset, BD.CUT_SIC, dVerticalCutOffset, 0, 0, '', b3Raw, nil, nil, nil, bForceTangentLeadInOut)
|
||||||
if not bOk then return bOk, sErr end
|
if not bOk then return bOk, sErr end
|
||||||
end
|
end
|
||||||
@@ -252,7 +252,7 @@ local function MakeStandardCuts( Proc, b3Raw, nCuts, dOffsetBetweenCuts, HeadCut
|
|||||||
if not bOk then return false, sErr end
|
if not bOk then return false, sErr end
|
||||||
end
|
end
|
||||||
-- taglio verticale
|
-- taglio verticale
|
||||||
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutXOffset, dAccStart, dAccEnd, '', b3Raw)
|
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutXOffset, dAccStart, dAccEnd, '', b3Raw, true)
|
||||||
if not bOk then return bOk, sErr end
|
if not bOk then return bOk, sErr end
|
||||||
end
|
end
|
||||||
return true, sWarn
|
return true, sWarn
|
||||||
@@ -290,7 +290,7 @@ local function MakeStandardCuts( Proc, b3Raw, nCuts, dOffsetBetweenCuts, HeadCut
|
|||||||
if i == 1 and HeadCutType.sType =='Precut' then
|
if i == 1 and HeadCutType.sType =='Precut' then
|
||||||
dCutOffset = dStartOffset
|
dCutOffset = dStartOffset
|
||||||
end
|
end
|
||||||
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutOffset, dAccStart, dAccEnd, '', b3Raw)
|
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutOffset, dAccStart, dAccEnd, '', b3Raw, true)
|
||||||
if not bOk then return false, sErr end
|
if not bOk then return false, sErr end
|
||||||
end
|
end
|
||||||
-- altrimenti necessari tagli da sopra e sotto con testa opportuna
|
-- altrimenti necessari tagli da sopra e sotto con testa opportuna
|
||||||
@@ -494,7 +494,11 @@ function ProcessHeadCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bNeedHCut
|
|||||||
end
|
end
|
||||||
-- tagli aggiuntivi non necessari
|
-- tagli aggiuntivi non necessari
|
||||||
else
|
else
|
||||||
bOk, sErr = Cut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, nil, false, true)
|
local bForceTangentLeadInOut = false
|
||||||
|
if BD.PRESS_ROLLER then
|
||||||
|
bForceTangentLeadInOut = true
|
||||||
|
end
|
||||||
|
bOk, sErr = Cut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, nil, false, true, nil, nil, nil, nil, nil, bForceTangentLeadInOut)
|
||||||
end
|
end
|
||||||
return bOk, sErr
|
return bOk, sErr
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -781,7 +781,7 @@ function ProcessLapJoint.IsTailFeature( Proc, b3Raw)
|
|||||||
-- verifico se è in coda
|
-- verifico se è in coda
|
||||||
local dEndDist = Proc.Box:getMin():getX() - b3Solid:getMin():getX()
|
local dEndDist = Proc.Box:getMin():getX() - b3Solid:getMin():getX()
|
||||||
if dEndDist > BD.MAX_DIST_HTFEA then
|
if dEndDist > BD.MAX_DIST_HTFEA then
|
||||||
if bUseBHSideMill and ( Proc.Box:getMax():getX() - b3Solid:getMin():getX()) < 400 then
|
if not( BD.BH_MACHINE) and bUseBHSideMill and ( Proc.Box:getMax():getX() - b3Solid:getMin():getX()) < 400 then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -1393,7 +1393,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not Proc.MoveAfterSplit and not bEndFixed and not bConvex then
|
if not Proc.bMoveAfterSplit and not bEndFixed and not bConvex then
|
||||||
-- recupero gruppo per geometria addizionale
|
-- recupero gruppo per geometria addizionale
|
||||||
local nAddGrpId = BL.GetAddGroup( nPartId)
|
local nAddGrpId = BL.GetAddGroup( nPartId)
|
||||||
if not nAddGrpId then
|
if not nAddGrpId then
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ local function AddVerticalPreCuts( Proc, sCutting, dCutXOffset, b3Raw, sNotes)
|
|||||||
for j = nVerticalCuts, 1, -1 do
|
for j = nVerticalCuts, 1, -1 do
|
||||||
local nFaceUse = MCH_MILL_FU.PARAL_FRONT
|
local nFaceUse = MCH_MILL_FU.PARAL_FRONT
|
||||||
local dVerticalCutOffset = dVerticalSliceHeight * -j
|
local dVerticalCutOffset = dVerticalSliceHeight * -j
|
||||||
local bForceTangentLeadInOut = BD.PRESS_ROLLER
|
local bForceTangentLeadInOut = BD.PRESS_ROLLER and not BD.DOWN_HEAD
|
||||||
bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, nFaceUse, nil, -0.1 -dCutXOffset, BD.CUT_SIC, dVerticalCutOffset, 0, 0, sNotes, b3Raw, nil, nil, nil, bForceTangentLeadInOut)
|
bOk, sErr = Fbs.MakeOne( Proc.Id, 0, sCutting, dSawDiam, nFaceUse, nil, -0.1 -dCutXOffset, BD.CUT_SIC, dVerticalCutOffset, 0, 0, sNotes, b3Raw, nil, nil, nil, bForceTangentLeadInOut)
|
||||||
if not bOk then return bOk, sErr end
|
if not bOk then return bOk, sErr end
|
||||||
end
|
end
|
||||||
@@ -438,7 +438,7 @@ local function MakeStandardCuts( Proc, b3Raw, nCuts, dOffsetBetweenCuts, TailCut
|
|||||||
if i == 1 and TailCutType.sType ~= 'Precut' then
|
if i == 1 and TailCutType.sType ~= 'Precut' then
|
||||||
sInfo = 'Cut'
|
sInfo = 'Cut'
|
||||||
end
|
end
|
||||||
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutXOffset, dAccStart, dAccEnd, sInfo, b3Raw)
|
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutXOffset, dAccStart, dAccEnd, sInfo, b3Raw, true)
|
||||||
if not bOk then return false, sErr end
|
if not bOk then return false, sErr end
|
||||||
end
|
end
|
||||||
return true, sWarn
|
return true, sWarn
|
||||||
@@ -488,7 +488,7 @@ local function MakeStandardCuts( Proc, b3Raw, nCuts, dOffsetBetweenCuts, TailCut
|
|||||||
if i == nCuts and TailCutType.bHorizCut and BD.C_SIMM and not BD.DOWN_HEAD then
|
if i == nCuts and TailCutType.bHorizCut and BD.C_SIMM and not BD.DOWN_HEAD then
|
||||||
sNotes = EgtSetValInNotes( sNotes, 'StartZmax', 2)
|
sNotes = EgtSetValInNotes( sNotes, 'StartZmax', 2)
|
||||||
end
|
end
|
||||||
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutOffset, dAccStart, dAccEnd, sNotes, b3Raw)
|
local bOk, sErr = Fbs.MakeOne( Proc.Id, 0, Cutting1Data.sCutting, Cutting1Data.dSawDiam, nOrthoOpposite, nil, dCutExtra, BD.CUT_SIC, dCutOffset, dAccStart, dAccEnd, sNotes, b3Raw, true)
|
||||||
if not bOk then return false, sErr end
|
if not bOk then return false, sErr end
|
||||||
end
|
end
|
||||||
-- altrimenti necessari tagli da sopra e sotto con testa opportuna
|
-- altrimenti necessari tagli da sopra e sotto con testa opportuna
|
||||||
@@ -766,7 +766,11 @@ function ProcessSplit.Make( Proc, nPhase, nRawId, nPartId, nOrd, sDownOrSideOrSt
|
|||||||
end
|
end
|
||||||
-- tagli aggiuntivi non necessari
|
-- tagli aggiuntivi non necessari
|
||||||
else
|
else
|
||||||
bOk, sErr = Cut.Make( Proc, nNewPhase, nRawId, nPartId, dMaxElev, nil, false, true, b3Raw, sNotes, dCurrOvmT)
|
local bForceTangentLeadInOut = false
|
||||||
|
if BD.PRESS_ROLLER then
|
||||||
|
bForceTangentLeadInOut = true
|
||||||
|
end
|
||||||
|
bOk, sErr = Cut.Make( Proc, nNewPhase, nRawId, nPartId, dMaxElev, nil, false, true, b3Raw, sNotes, dCurrOvmT, nil, nil, bForceTangentLeadInOut)
|
||||||
end
|
end
|
||||||
if sNotesFinal then
|
if sNotesFinal then
|
||||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sNotesFinal)
|
EgtSetMachiningParam( MCH_MP.USERNOTES, sNotesFinal)
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ EgtEnableDebug( false)
|
|||||||
--NEST.MACHINE = 'Essetre-90480019_MW'
|
--NEST.MACHINE = 'Essetre-90480019_MW'
|
||||||
--NEST.FLAG = 3
|
--NEST.FLAG = 3
|
||||||
|
|
||||||
local sLog = ' +++ BeamNestProcess : ' .. NEST.FILE .. ', ' .. NEST.MACHINE .. ', ' .. LEN["1"]
|
local sLog = ' +++ BeamNestProcess : ' .. NEST.FILE .. ', ' .. NEST.MACHINE .. ', ' .. LEN[1]
|
||||||
EgtOutLog( sLog)
|
EgtOutLog( sLog)
|
||||||
|
|
||||||
-- flag per abilitare statistiche in log
|
-- flag per abilitare statistiche in log
|
||||||
|
|||||||
@@ -1,5 +1,23 @@
|
|||||||
==== Beam Update Log ====
|
==== Beam Update Log ====
|
||||||
|
|
||||||
|
Versione 2.6i2 (13/09/2024)
|
||||||
|
- Modif : in FacesBySaw si invertono gli accorciamenti solo se l'inversione del percorso non è forzata dall'esterno; adeguati HeadCut e Split
|
||||||
|
- Modif : in nesting correzione in lettura array per cambio dll di lettura
|
||||||
|
- Modif : in BatchProcess e New, in caso sia richiesta generazione senza check, verifico prima che il file log specifico non contenga errori: se sì, forzo il check
|
||||||
|
- Modif : in FacesBySaw per settare il FaceUse si usa il versore nelle UserNotes
|
||||||
|
- Modif : in HeadCut, Split modifiche ai tagli aggiuntivi orizzontali e verticali; disattivati attacchi tangenziali per tagli aggiuntivi verticali in PF1250
|
||||||
|
- Fixed : in ProcessDrill In GetData corretta gestione modifica diametro foro
|
||||||
|
|
||||||
|
Versione 2.6i1 (09/09/2024)
|
||||||
|
- Added : refactoring e modifiche a HeadCut e Split per introduzione pretagli a zero sul grezzo, per evitare problemi con pezzi non lunghi quanto ci si aspetta
|
||||||
|
- Added : in Mark, gestita la lavorazione del testo
|
||||||
|
- Modif : gestione dipendenza foro-tasca in caso di fase con pezzo ribaltato
|
||||||
|
- Modif : in Headcut e Split aggiunta gestione parametro MIN_HEIGHT_ADDED_CUTS da BeamData per scegliere l'altezza minima per cui devono essere aggiunti i tagli orizzontali supplementari
|
||||||
|
- Modif : se Lapjoint attraversata da L055, la lapjoint viene fatta prima
|
||||||
|
- Modif : in ScarfJoint, in dicing, tagli paralleli fatti con unico passaggio di fianco per evitare che il cubetto rimanga appoggiato al motore
|
||||||
|
- Fixed : corretto caso di groove lunga passante a 3 facce che non veniva lavorata
|
||||||
|
- Fixed : in FacesBySaw -> MakeOne corretta gestione lato di lavoro quando il percorso è orizzontale
|
||||||
|
|
||||||
Versione 2.6h2 (26/08/2024)
|
Versione 2.6h2 (26/08/2024)
|
||||||
- Added : in BatchProcess e New si verifica l'abilitazione alla generazione con EgtVerifyKeyOption
|
- Added : in BatchProcess e New si verifica l'abilitazione alla generazione con EgtVerifyKeyOption
|
||||||
- Modif : in FacesBySaw introdotti attacchi tangenziali solo da un lato, limitati a facce con Z negative
|
- Modif : in FacesBySaw introdotti attacchi tangenziali solo da un lato, limitati a facce con Z negative
|
||||||
|
|||||||
+2
-2
@@ -2,5 +2,5 @@
|
|||||||
-- Gestione della versione di Beam
|
-- Gestione della versione di Beam
|
||||||
|
|
||||||
NAME = 'Beam'
|
NAME = 'Beam'
|
||||||
VERSION = '2.6h2'
|
VERSION = '2.6i2'
|
||||||
MIN_EXE = '2.6h1'
|
MIN_EXE = '2.6e5'
|
||||||
|
|||||||
Reference in New Issue
Block a user