Files
Masterwood-TF600KST/Scripts/InitDisp.lua
T
2025-04-11 10:07:32 +02:00

153 lines
4.7 KiB
Lua

-- 2025/03/30 10:00:00
-- Disposition Init for Masterwood-TF600KST machine
-- Intestazioni
require( 'EgtBase')
_ENV = EgtProtectGlobal()
EgtEnableDebug( false)
--------------------------------------------------------------------------------
-- Colore del grezzo
local ColA = Color3d( 255, 165, 0, 30)
--------------------------------------------------------------------------------
-- * Verifica esistenza MachGroup *
if not EgtGetCurrMachGroup() then
local sErr = 'InitDisp for Masterwood-TF600KST : missing CurrMachGroup'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 1
return
end
--------------------------------------------------------------------------------
-- *** Disposizione ***
-- Scelta della tavola
local sTab = 'Tab'
EgtSetTable( sTab)
EgtSetTableAreaOffset( 100, 100, 100, 100)
local frTab = Frame3d( EgtGetTableRef())
-- Se pezzo non definito, esco senza errore (modalità test macchina)
local Pz = DISP.PARTID
if not Pz or Pz == GDB_ID.NULL then
DISP.ERR = 0
return
end
-- Recupero i dati del pezzo
local Ls = EgtGetFirstNameInGroup( Pz, 'SOLID')
local Er = EgtGetFirstNameInGroup( Ls or GDB_ID.NULL, 'RAW')
local b3Part = EgtGetBBoxGlob( Pz or GDB_ID.NULL, GDB_BB.STANDARD)
local b3Solid = EgtGetBBoxGlob( Ls or GDB_ID.NULL, GDB_BB.STANDARD)
-- Se pezzo vuoto, non devo fare alcunchè
if b3Part:isEmpty() then
local sErr = 'InitDisp for Masterwood-TF600KST : empty part'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 2
return
end
-- Recupero ingombro di grezzi già inseriti
local b3PrevRaw = BBox3d()
local nPrevRawId = EgtGetFirstRawPart()
while nPrevRawId do
local b3Raw = EgtGetRawPartBBox( nPrevRawId)
b3PrevRaw:Add( b3Raw)
nPrevRawId = EgtGetNextRawPart( nPrevRawId)
end
b3PrevRaw:toLoc( frTab)
-- Richiesta posizione rispetto allo Zero tavola
local dOverMatXY = 5
local sOverMatXY = EgtNumToString( EgtToUiUnits( dOverMatXY), 0)
local dOverMatZ = 0
local sOverMatZ = EgtNumToString( EgtToUiUnits( dOverMatZ), 0)
local dSafeDist = 20
local sSafeDist = EgtNumToString( EgtToUiUnits( dSafeDist), 0)
local vVal = EgtDialogBox( 'Dati di disposizione', {'Y Position', 'CB:Front,MediumFront,MediumBack,Back'},
{'X Position', 'CB:Left,Right'},
{'Safe Dist', sSafeDist},
{'Sovramateriale XY', sOverMatXY},
{'Sovramateriale Z', sOverMatZ})
if not vVal or #vVal < 5 then
DISP.ERR = 100
return
end
local sRefY = 'B'
local vYPos = { Front='B', MediumFront='M', MediumBack='N', Back='T'}
sRefY = vYPos[vVal[1]]
local sRefX = 'L'
local vXPos = { Left='L', Right='R'}
sRefX = vXPos[vVal[2]]
dSafeDist = EgtFromUiUnits( tonumber( vVal[3]))
dOverMatXY = EgtFromUiUnits( tonumber( vVal[4]))
dOverMatZ = EgtFromUiUnits( tonumber( vVal[5]))
-- Definizione e posizionamento del grezzo
local nRaw
if Er then
nRaw = EgtAddRawPartWithPart( Pz, Er, 0, ColA)
EgtSetStatus( Er, GDB_ST.ON)
else
nRaw = EgtAddRawPartWithPart( Pz, GDB_ID.NULL, dOverMatXY, ColA)
if nRaw and dOverMatZ > 10 * GEO.EPS_SMALL then
local b3Raw = EgtGetRawPartBBox( nRaw)
local dRawH = b3Raw:getDimZ() + dOverMatZ
EgtModifyRawPartHeight( nRaw, dRawH)
end
end
if not nRaw then
local sErr = 'InitDisp for Masterwood-TF600KST : error defining raw part'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 3
return
end
local b3Raw = EgtGetRawPartBBox( nRaw)
local bVac = ( b3Raw:getDimY() >= 120)
local vtOffs, nCorn
if sRefY == 'B' and sRefX == 'L' then
vtOffs = Vector3d( 0, 0, 0)
nCorn = MCH_CR.BL
elseif sRefY == 'B' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 0, 0)
nCorn = MCH_CR.BR
elseif sRefY == 'M' and sRefX == 'L' then
vtOffs = Vector3d( 0, 675-10, 0)
nCorn = MCH_CR.TL
elseif sRefY == 'M' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 675-10, 0)
nCorn = MCH_CR.TR
elseif sRefY == 'N' and sRefX == 'L' then
vtOffs = Vector3d( 0, 675+10, 0)
nCorn = MCH_CR.BL
elseif sRefY == 'N' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 675+10, 0)
nCorn = MCH_CR.BR
elseif sRefY == 'T' and sRefX == 'L' then
vtOffs = Vector3d( 0, 1350, 0)
nCorn = MCH_CR.TL
elseif sRefY == 'T' and sRefX == 'R' then
vtOffs = Vector3d( 1700, 1350, 0)
nCorn = MCH_CR.TR
end
if not bVac then
if sRefY == 'B' or sRefY == 'N' then
vtOffs = vtOffs + 60 * Y_AX()
else
vtOffs = vtOffs - 60 * Y_AX()
end
end
if not EgtMoveToCornerRawPart( nRaw, vtOffs, nCorn) then
local sErr = 'InitDisp for Masterwood-TF600KST : error positioning raw part on table'
EgtOutLog( sErr)
EgtOutText( sErr)
DISP.ERR = 4
return
end
DISP.ERR = 0