Files
DataWall/LuaLibs/WProcessText.lua
T

106 lines
3.2 KiB
Lua

-- WProcessText.lua by Egaltech s.r.l. 2021/04/20
-- Gestione calcolo testi per Travi
-- 2023/05/25 Funzioni EgtAddMachining sostituite da WM.AddMachining in modo da trascrivere le priorità da btl alle lavorazioni.
-- Tabella per definizione modulo
local WPT = {}
-- Include
require( 'EgtBase')
EgtOutLog( ' WProcessText started', 1)
-- Dati
local WD = require( 'WallData')
local WM = require( 'WMachiningLib')
---------------------------------------------------------------------
-- Riconoscimento della feature
function WPT.Identify( Proc)
return ( Proc.Grp == 4 and Proc.Prc == 61)
end
---------------------------------------------------------------------
-- Classificazione della feature
function WPT.Classify( Proc, b3Raw)
-- recupero i dati del testo
local vtN = EgtTextNormVersor( Proc.Id, GDB_ID.ROOT)
-- verifico sia un testo
if not vtN then
return false
end
-- verifico se il testo è lavorabile (solo da sopra)
return ( vtN:getZ() > WD.NZ_MINA)
end
----------------------------------------------------------------------
-- Classificazione del flip della feature per nesting
-- return nFlip0, nFlip1
function WPT.FlipClassify( Proc)
local nFlip0, nFlip1
-- recupero i dati del testo
local vtN = EgtTextNormVersor( Proc.Id, GDB_ID.ROOT)
-- verifico sia un testo
if not vtN then
return false
end
-- verifico se il testo è lavorabile (solo da sopra)
nFlip0 = EgtIf( vtN:getZ() > WD.NZ_MINA, 100, 0)
nFlip1 = EgtIf( - vtN:getZ() > WD.NZ_MINA, 100, 0)
return nFlip0, nFlip1
end
---------------------------------------------------------------------
-- Applicazione della lavorazione
function WPT.Make( Proc, nRawId, b3Raw)
-- recupero i dati del testo
local vtN = EgtTextNormVersor( Proc.Id, GDB_ID.ROOT)
-- verifico sia un testo
if not vtN then
local sErr = 'Error : Text with geometry type not accepted'
EgtOutLog( sErr)
return false, sErr
end
-- verifico che il testo non sia orientato verso il basso
if vtN:getZ() < WD.NZ_MINA then
local sErr = 'Error : Text from bottom impossible'
EgtOutLog( sErr)
return false, sErr
end
-- recupero la lavorazione
local sMilling = WM.FindMilling( 'Text')
if not sMilling then
local sErr = 'Error : milling not found in library'
EgtOutLog( sErr)
return false, sErr
end
-- inserisco la lavorazione di fresatura
local sName = 'Text_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
local nMchFId = WM.AddMachining( Proc, sName, sMilling)
if not nMchFId then
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
EgtOutLog( sErr)
return false, sErr
end
-- aggiungo geometria
EgtSetMachiningGeometry( {{ Proc.Id, -1}})
-- imposto posizione braccio porta testa
if vtN:getY() <= 0 then
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.ADIR_YM)
else
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.ADIR_YP)
end
-- eseguo
if not EgtApplyMachining( true, false) then
local _, sErr = EgtGetLastMachMgrError()
EgtSetOperationMode( nMchFId, false)
return false, sErr
end
return true
end
---------------------------------------------------------------------
return WPT