-- 2024/10/10 10:00:00 -- Disposition Init for Masterwood_Project265 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_Project265 : missing CurrMachGroup' EgtOutLog( sErr) EgtOutText( sErr) DISP.ERR = 1 return end -------------------------------------------------------------------------------- -- *** Disposizione *** -- Scelta della tavola local sTab = 'Tab' EgtSetTable( sTab) 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_Project265 : 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_Project265 : 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_Project265 : error positioning raw part on table' EgtOutLog( sErr) EgtOutText( sErr) DISP.ERR = 4 return end DISP.ERR = 0