153 lines
4.7 KiB
Lua
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
|