230 lines
6.8 KiB
Lua
230 lines
6.8 KiB
Lua
-- Gestione attrezzaggio per Essetre-FAST - 2022/06/16
|
|
|
|
-- 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 = {{"H1", "H7"}}
|
|
|
|
-- 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 = "T42", Head = "H2", Group = "G1"},
|
|
{Pos = "Pos13", TcPos = "T101", Head = "H3", Group = "G2"}}
|
|
|
|
local IsTC2Active = ( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'TC2') ~= nil)
|
|
if IsTC2Active then
|
|
local PositionTableTC2={{Pos = "Pos14", TcPos = "T21", Head = "H1", Group = "G3"},
|
|
{Pos = "Pos15", TcPos = "T22", Head = "H1", Group = "G3"},
|
|
{Pos = "Pos16", TcPos = "T23", Head = "H1", Group = "G3"},
|
|
{Pos = "Pos17", TcPos = "T24", Head = "H1", Group = "G3"},
|
|
{Pos = "Pos18", TcPos = "T25", Head = "H1", Group = "G3"},
|
|
{Pos = "Pos19", TcPos = "T26", Head = "H1", Group = "G3"},
|
|
{Pos = "Pos20", TcPos = "T27", Head = "H1", Group = "G3"},
|
|
{Pos = "Pos21", TcPos = "T28", Head = "H1", Group = "G3"}}
|
|
if EgtGetHeadId( 'H5') then
|
|
table.insert( PositionTableTC2, {Pos = "Pos22", TcPos = "T91", Head = "H5", Group = "G2"})
|
|
end
|
|
EgtJoinTables( PositionTable, PositionTableTC2)
|
|
else
|
|
local SecSuppId = EgtGetTcPosId( 'T111')
|
|
if SecSuppId then
|
|
local bMortiser = EgtGetInfo( SecSuppId, 'Mortiser', 'b')
|
|
if bMortiser then
|
|
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H3", Group = "G2"})
|
|
else
|
|
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H1", Group = "G2"})
|
|
end
|
|
end
|
|
if EgtGetHeadId( 'H5') then
|
|
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T91", Head = "H5", Group = "G2"})
|
|
end
|
|
end
|
|
|
|
local UsePositionHead = false
|
|
|
|
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
|