DataWall 2.5j3 :
- nella ricerca lavorazione da usare controllo di utensile attivo sostituito con controllo utensile presente nel setup corrente - aggiunta gestione aree vietate per chiodature (LockOut for Nail).
This commit is contained in:
@@ -64,6 +64,8 @@ end
|
||||
---------------------------------------------------------------------
|
||||
-- Classificazione della feature
|
||||
function WPF.Classify( Proc, b3Raw)
|
||||
-- se area vietata (LockOut) non faccio nulla
|
||||
if Proc.LockOut then return true end
|
||||
-- verifico se di tipo pocket
|
||||
local bPocket = ( EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1)
|
||||
-- recupero la curva associata
|
||||
@@ -2306,7 +2308,7 @@ local function MakeByMark( Proc, nRawId, b3Raw)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function MakeByNail( Proc, nRawId, b3Raw)
|
||||
local function MakeByNail( Proc, nRawId, b3Raw, vNLO)
|
||||
-- ingombro del pezzo
|
||||
local Ls = EgtGetFirstNameInGroup( Proc.PartId, 'Box')
|
||||
local b3Solid = EgtGetBBoxGlob( Ls or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
@@ -2333,6 +2335,36 @@ local function MakeByNail( Proc, nRawId, b3Raw)
|
||||
nCntData = nCntData + 10
|
||||
end
|
||||
local dCntPar = EgtGetInfo( Proc.Id, 'CNT_PAR', 'd') or 100
|
||||
-- se presenti aree vietate alle chiodature, gestisco le geometrie
|
||||
local vCrvs = {}
|
||||
if #vNLO > 0 then
|
||||
-- in presenza di aree vietate non sono ammesse lavorazioni in doppio (non dovrebbe mai accadere per precedenti controlli)
|
||||
if Proc.Double then
|
||||
local sErr = 'Error : nailing in double with LockOut Area not allowed'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- gruppo ausiliario
|
||||
local nAddGrpId = WL.GetAddGroup( Proc.PartId)
|
||||
-- copio la curva da lavorare
|
||||
vCrvs[1] = EgtCopyGlob( AuxId, nAddGrpId)
|
||||
-- la trimmo con tutte le aree vietate
|
||||
for i = 1, #vNLO do
|
||||
local vRes = {}
|
||||
for j = 1, #vCrvs do
|
||||
local nNewId, nCount = EgtTrimCurveWithRegion( vCrvs[j], vNLO[i], false, false)
|
||||
if nNewId then
|
||||
vRes = EgtTableAdd( vRes, nNewId, nCount)
|
||||
end
|
||||
end
|
||||
vCrvs = vRes
|
||||
end
|
||||
else
|
||||
vCrvs[1] = AuxId
|
||||
end
|
||||
-- per debug
|
||||
local sOut = table.concat( vCrvs, ',')
|
||||
EgtOutLog( 'Nailing curve : '.. ( sOut or ''))
|
||||
-- recupero la lavorazione
|
||||
local sNailing = WM.FindNailing( nCntData)
|
||||
if not sNailing then
|
||||
@@ -2340,49 +2372,51 @@ local function MakeByNail( Proc, nRawId, b3Raw)
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- inserisco la lavorazione
|
||||
local sName = 'Nail_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
local nMchId = WM.AddMachining( Proc, sName, sNailing)
|
||||
if not nMchId then
|
||||
local sErr = 'Error adding machining ' .. sName .. '-' .. sNailing
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
EgtSetInfo( nMchId, 'Part', Proc.PartId)
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ AuxId, -1}})
|
||||
-- percorso da non invertire
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
-- se estrusione da sotto, inverto direzione fresa
|
||||
if bToolInv then
|
||||
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
|
||||
end
|
||||
-- assegno affondamento
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, 10)
|
||||
-- assegno lato di lavoro
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.CENTER)
|
||||
-- se in doppio lungo Y, devo dimezzare opportunamente la lavorazione
|
||||
local dExtraDelta = 0
|
||||
if Proc.Double == 2 then
|
||||
dExtraDelta = 0.45 * dCntPar
|
||||
if Proc.Delta > 0 then
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, -Proc.DblAcc - dExtraDelta)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, -Proc.DblAcc - dExtraDelta)
|
||||
for i = 1, #vCrvs do
|
||||
-- inserisco la lavorazione
|
||||
local sName = 'Nail_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) .. '_'..tostring( i)
|
||||
local nMchId = WM.AddMachining( Proc, sName, sNailing)
|
||||
if not nMchId then
|
||||
local sErr = 'Error adding machining ' .. sName .. '-' .. sNailing
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
EgtSetInfo( nMchId, 'Part', Proc.PartId)
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ vCrvs[i], -1}})
|
||||
-- percorso da non invertire
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
-- se estrusione da sotto, inverto direzione fresa
|
||||
if bToolInv then
|
||||
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
|
||||
end
|
||||
-- assegno affondamento
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, 10)
|
||||
-- assegno lato di lavoro
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.CENTER)
|
||||
-- se in doppio lungo Y, devo dimezzare opportunamente la lavorazione
|
||||
local dExtraDelta = 0
|
||||
if Proc.Double == 2 then
|
||||
dExtraDelta = 0.45 * dCntPar
|
||||
if Proc.Delta > 0 then
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, -Proc.DblAcc - dExtraDelta)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, -Proc.DblAcc - dExtraDelta)
|
||||
end
|
||||
end
|
||||
-- assegno parametri a note utente
|
||||
local sUserNotes = 'Par=' .. EgtNumToString( dCntPar, 0) .. ';'
|
||||
if Proc.Double and Proc.Double > 0 then
|
||||
sUserNotes = sUserNotes .. 'Dbl=' .. EgtNumToString( Proc.Double, 0) .. ';' ..
|
||||
'Dlt=' .. EgtNumToString( abs( Proc.Delta) + dExtraDelta, 0) .. ';'
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nMchId, false)
|
||||
return false, sErr
|
||||
end
|
||||
end
|
||||
-- assegno parametri a note utente
|
||||
local sUserNotes = 'Par=' .. EgtNumToString( dCntPar, 0) .. ';'
|
||||
if Proc.Double and Proc.Double > 0 then
|
||||
sUserNotes = sUserNotes .. 'Dbl=' .. EgtNumToString( Proc.Double, 0) .. ';' ..
|
||||
'Dlt=' .. EgtNumToString( abs( Proc.Delta) + dExtraDelta, 0) .. ';'
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nMchId, false)
|
||||
return false, sErr
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -2569,7 +2603,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Applicazione della lavorazione
|
||||
function WPF.Make( Proc, nRawId, b3Raw)
|
||||
function WPF.Make( Proc, nRawId, b3Raw, vNLO)
|
||||
-- recupero la tipologia (contorno o tasca)
|
||||
local bPocket = ( EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1)
|
||||
-- se svuotatura
|
||||
@@ -2589,10 +2623,7 @@ function WPF.Make( Proc, nRawId, b3Raw)
|
||||
return MakeByMark( Proc, nRawId, b3Raw)
|
||||
-- se chiodatura
|
||||
elseif nCntType == 20 then
|
||||
return MakeByNail( Proc, nRawId, b3Raw)
|
||||
-- area vietata
|
||||
elseif nCntType == 200 then
|
||||
return true, 'Lock-out area Ignored'
|
||||
return MakeByNail( Proc, nRawId, b3Raw, vNLO)
|
||||
-- altrimenti, taglio con lama e pulizia angoli con fresa
|
||||
else
|
||||
return MakeByCut( Proc, nRawId, b3Raw)
|
||||
|
||||
Reference in New Issue
Block a user