-- WallData.lua by Egaltech s.r.l. 2022/01/12 -- Raccolta dati generali per Pareti EgtOutLog( ' 90480023_XS-MW-WallData started', 1) -- Tabella per definizione modulo local WallData = { MIN_LENGTH = 100, -- lunghezza minima del grezzo MIN_WIDTH = 100, -- larghezza minima del grezzo MIN_HEIGHT = 10, -- altezza minima del grezzo MAX_LENGTH = 18000, -- lunghezza massima del grezzo MAX_WIDTH = 4900, -- larghezza massima del grezzo MAX_HEIGHT = 400, -- altezza massima del grezzo STD_RAW_LENGTH = 10000, -- lunghezza standard del grezzo STD_RAW_WIDTH = 4000, -- larghezza standard del grezzo OVM_HEAD = 60, -- sovramateriale testa OVM_MID = 50, -- sovramateriale intermedio COLL_SIC = 5, -- distanza di sicurezza per collisioni CUT_SIC = 20, -- distanza di sicurezza per tagli CUT_EXTRA = 0, -- affondamento extra standard per tagli di lama e fresature CUT_EXTRA_MIN = 0, -- affondamento extra ridotto per tagli di lama e fresature NZ_MINA = 0.5, -- componente limite in Z normale di una faccia (-30deg) NZ_MINB = -0.4, -- componente limite in Z normale di un insieme di facce (-23deg) DRILL_TOL = 0.5, -- tolleranza tra diametro foro e diametro punta DRILL_VZ_MIN = 0.5, -- componente limite in Z del versore di un foro DRILL_VX_MAX = 0.866, -- componente limite in X del versore di un foro sulle facce laterali DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature MAX_CLEAN_CRN30 = 60, -- massimo spessore per pulitura angolo con fresa 30deg MAX_CLEAN_CRN60 = 150, -- massimo spessore per pulitura angolo con fresa 60deg MILL_MAX_DEPTH_AS_MAT = true, -- massimo affondamento frese uguale ad altezza tagliente (max materiale) T14_T12_DOUBLE = true, -- abilita chiodatura in doppio con teste T14 e T12 RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo SIMUL_VIEW_DIR = 3, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE) ORIG_CORNER = 'TL', -- posizione origine (TL,BL,TR,BR,TM,BM) MID_REF = 27000, -- posizione X dell'origine intermedia USE_POSY = true -- utilizzare POSY di BTL (spostamento sullo spessore per pareti a layer) } -- Aggiornamento con dati da TechnoEssetre7 local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480023_XS-MW.data" local sData = EgtGetCurrMachineDir().."\\Wall\\Ts3Data.lua" if EgtExistsFile( sTs3Data) then EgtCopyFile( sTs3Data, sData) local sTs3DataOld = sTs3Data..'.old' EgtEraseFile( sTs3DataOld) EgtRenameFile( sTs3Data, sTs3DataOld) end if EgtExistsFile( sData) then local Machine = dofile( sData) if Machine then if Machine.Trave then WallData.MIN_LENGTH = Machine.Trave.YMIN or BeamData.MIN_LENGTH WallData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH WallData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT WallData.MAX_LENGTH = Machine.Trave.YMAX or BeamData.MAX_LENGTH WallData.MAX_WIDTH = Machine.Trave.XMAX or BeamData.MAX_WIDTH WallData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT end if Machine.Offsets then WallData.MID_REF = -Machine.Offsets.OFFSET_ZERO5_Y WallData.T14_T12_DOUBLE = ( Machine.Offsets.T14_T12_DOUBLE == 1) end end end ------------------------------------------------------------------------------------------------------------- local function GetOrigCorner( RefPos) if RefPos == 1 then return 'TL' elseif RefPos == 2 then return 'BL' elseif RefPos == 3 then return 'TR' elseif RefPos == 4 then return 'BR' elseif RefPos == 5 then return 'TM' elseif RefPos == 6 then return 'BM' else return 'TL' end end WallData.GetOrigCorner = GetOrigCorner ------------------------------------------------------------------------------------------------------------- local function VerifyFeatureForDouble( Proc) -- deve essere attiva if Proc.Flg == 0 then return 0 end -- non deve essere giĆ  associata if Proc.Double then return 0 end -- deve essere contorno libero if not ( ( Proc.Grp == 0 or Proc.Grp == 3 or Proc.Grp == 4) and ( Proc.Prc == 250)) then return 0 end -- non deve essere una svuotatura if EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1 then return 0 end -- deve richiedere utensili opportuni local nTool = EgtGetInfo( Proc.Id, 'CNT_DATA', 'i') if nTool ~= 12 and nTool ~= 14 then return 0 end -- deve avere una curva ausiliaria associata local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') if not AuxId then return 0 end AuxId = AuxId + Proc.Id -- questa curva deve essere una retta orientata come gli assi X o Y if Proc.Box:getDimY() > 1 and Proc.Box:getDimX() > 1 then return 0 end local ptS = EgtSP( AuxId, GDB_ID.ROOT) local ptE = EgtEP( AuxId, GDB_ID.ROOT) -- va bene se diretta come l'asse X if abs( ptS:getY() - ptE:getY()) < 1 then if ptS:getX() = MIN_INTERAX then Proc.Double = 1 Proc.Delta = dDeltaY EgtSetInfo( Proc.Id, 'CNT_DATA', '14') OtherProc.Flg = 0 OtherProc.Double = -1 break elseif dDeltaY <= -MIN_INTERAX then OtherProc.Double = 1 OtherProc.Delta = -dDeltaY EgtSetInfo( OtherProc.Id, 'CNT_DATA', '14') Proc.Flg = 0 Proc.Double = -1 break end end end -- se altrimenti linea lungo Y elseif nType == 2 then local dLen = ptS:getY() - ptE:getY() if abs( dLen) >= MIN_INTERAX + MIN_EXTRA_Y then Proc.Double = 2 Proc.Delta = max( abs( dLen) / 2, MIN_INTERAX) * EgtIf( dLen > 0, 1, -1) Proc.DblAcc = abs( dLen) - abs( Proc.Delta) EgtSetInfo( Proc.Id, 'CNT_DATA', '14') end end end end WallData.FindFeaturesInDouble = FindFeaturesInDouble ------------------------------------------------------------------------------------------------------------- local function GetSawHeadSide( dSpeed, sHead) if sHead == 'H2' then return EgtIf( dSpeed > 0, MCH_SAW_HS.LEFT, MCH_SAW_HS.RIGHT) else return EgtIf( dSpeed < 0, MCH_SAW_HS.LEFT, MCH_SAW_HS.RIGHT) end end WallData.GetSawHeadSide = GetSawHeadSide --------------------------------------------------------------------- return WallData