220 lines
6.8 KiB
Lua
220 lines
6.8 KiB
Lua
-- 2020/11/13
|
|
-- Gestione attrezzaggio per Essetre-FAST
|
|
|
|
-- Intestazioni
|
|
require( 'EgtBase')
|
|
_ENV = EgtProtectGlobal()
|
|
EgtEnableDebug( false)
|
|
|
|
-- Tavola di passaggio valori
|
|
local STU = {}
|
|
STU.TUUID = ""
|
|
STU.TCPOS = ""
|
|
STU.HEAD = ""
|
|
STU.GROUP = ""
|
|
STU.POS = ""
|
|
STU.EXIT = 0
|
|
STU.INDEX = 0
|
|
STU.HEAD1 = ""
|
|
STU.HEAD2 = ""
|
|
STU.ISVALID = false
|
|
STU.ERR = 0
|
|
_G.STU = STU
|
|
|
|
local INVALIDPOS = ""
|
|
local POS = "Pos"
|
|
|
|
-- Geom Set
|
|
local GS = {}
|
|
|
|
-- Configurazione posizioni
|
|
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos3", TcPos = "T3", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos4", TcPos = "T4", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos5", TcPos = "T5", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos6", TcPos = "T6", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos7", TcPos = "T7", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos10", TcPos = "T10", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos12", TcPos = "T12", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos13", TcPos = "T13", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos14", TcPos = "T14", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos15", TcPos = "T15", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos16", TcPos = "T16", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos17", TcPos = "T17", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos18", TcPos = "T18", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos19", TcPos = "T19", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos20", TcPos = "T20", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos21", TcPos = "T21", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos22", TcPos = "T22", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos23", TcPos = "T23", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos24", TcPos = "T24", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos25", TcPos = "T25", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos26", TcPos = "T26", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos27", TcPos = "T27", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos28", TcPos = "T28", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos29", TcPos = "T29", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos30", TcPos = "T30", Head = "H1", Group = "G1"},
|
|
{Pos = "Pos31", TcPos = "T101", Head = "H3", Group = "G1"}}
|
|
|
|
local UsePositionHead = true
|
|
|
|
local function IsInGeomSet( ToolHead, PosHead)
|
|
for GsIndex = 1, #GS do
|
|
local bToolHead = false
|
|
local bPosHead = false
|
|
for HIndex = 1, #GS[GsIndex] do
|
|
if GS[GsIndex][HIndex] == ToolHead then
|
|
bToolHead = true
|
|
elseif GS[GsIndex][HIndex] == PosHead then
|
|
bPosHead = true
|
|
end
|
|
if bToolHead and bPosHead then
|
|
return true
|
|
end
|
|
end
|
|
if bToolHead and bPosHead then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function STU.IsCompatibleHeads()
|
|
STU.ISVALID = false
|
|
if IsInGeomSet(STU.HEAD1, STU.HEAD2) then
|
|
STU.ISVALID = true
|
|
else
|
|
STU.ISVALID = false
|
|
end
|
|
end
|
|
|
|
function STU.GetValidHeadExitForPos()
|
|
-- se TUUID non valido restituisco errore
|
|
local ToolName = EgtTdbGetToolFromUUID( STU.TUUID)
|
|
if ToolName == nill then
|
|
STU.ERR = 1
|
|
return
|
|
end
|
|
EgtTdbSetCurrTool( ToolName)
|
|
local CurrToolHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
|
STU.EXIT = EgtTdbGetCurrToolParam( MCH_TP.EXIT)
|
|
-- recupero testa predefinita per la posizione corrente
|
|
local CurrPosHead
|
|
for i = 1, #PositionTable do
|
|
if PositionTable[i].TcPos == STU.TCPOS then
|
|
CurrPosHead = PositionTable[i].Head
|
|
break
|
|
end
|
|
end
|
|
-- verifico se la testa è quella della posizione predefinita
|
|
if CurrPosHead == CurrToolHead then
|
|
STU.HEAD = CurrToolHead
|
|
STU.ERR = 0
|
|
return
|
|
-- verifico se la testa è compatibile con quella della posizione predefinita
|
|
elseif IsInGeomSet( CurrToolHead, CurrPosHead) then
|
|
if UsePositionHead then
|
|
STU.HEAD = CurrPosHead
|
|
STU.ERR = 0
|
|
return
|
|
else
|
|
STU.HEAD = CurrToolHead
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
-- la testa non è compatibile con quella della posizione predefinita
|
|
else
|
|
STU.HEAD = INVALIDPOS
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
end
|
|
|
|
function STU.IsValidTcPosFromHead()
|
|
STU.ISVALID = false
|
|
for i = 1, #PositionTable do
|
|
if PositionTable[i].TcPos == STU.TCPOS then
|
|
if PositionTable[i].Head == STU.HEAD then
|
|
STU.ISVALID = true
|
|
STU.ERR = 0
|
|
return
|
|
elseif IsInGeomSet(PositionTable[i].Head, STU.HEAD) then
|
|
STU.ISVALID = true
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
STU.ISVALID = false
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
function STU.GetTcPosHeadGroupFromPos()
|
|
for i = 1, #PositionTable do
|
|
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
|
STU.TCPOS = PositionTable[i].TcPos
|
|
STU.HEAD = PositionTable[i].Head
|
|
STU.GROUP = PositionTable[i].Group
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
end
|
|
STU.TCPOS = INVALIDPOS
|
|
STU.HEAD = INVALIDPOS
|
|
STU.GROUP = INVALIDPOS
|
|
STU.ERR = 1
|
|
end
|
|
|
|
function STU.GetPosFromTcPos()
|
|
for i = 1, #PositionTable do
|
|
if PositionTable[i].TcPos == STU.TCPOS then
|
|
STU.POS = PositionTable[i].Pos
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
end
|
|
STU.POS = INVALIDPOS
|
|
STU.ERR = 1
|
|
end
|
|
|
|
function STU.GetGroupFromTcPos()
|
|
for i = 1, #PositionTable do
|
|
if PositionTable[i].TcPos == STU.TCPOS then
|
|
STU.GROUP = PositionTable[i].Group
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
end
|
|
STU.GROUP = INVALIDPOS
|
|
STU.ERR = 1
|
|
end
|
|
|
|
function STU.GetHeadFromPos()
|
|
for i = 1, #PositionTable do
|
|
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
|
STU.HEAD = PositionTable[i].Head
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
end
|
|
STU.HEAD = INVALIDPOS
|
|
STU.ERR = 1
|
|
end
|
|
|
|
function STU.GetTcPosFromPos()
|
|
for i = 1, #PositionTable do
|
|
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
|
STU.TCPOS = PositionTable[i].TcPos
|
|
STU.ERR = 0
|
|
return
|
|
end
|
|
end
|
|
STU.TCPOS = INVALIDPOS
|
|
STU.ERR = 1
|
|
end
|