-- BeamData.lua by Egaltech s.r.l. 2022/03/20 -- Raccolta dati generali per Travi EgtOutLog( ' KAIROS-BeamData started', 1) -- Tabella per definizione modulo local BeamData = { ROT180 = true, -- flag abilitazione rotazione 90 gradi MIN_WIDTH = 40, -- larghezza minima del grezzo MIN_HEIGHT = 40, -- altezza minima del grezzo MAX_WIDTH = 250, -- larghezza massima del grezzo MAX_HEIGHT = 620, -- altezza massima del grezzo LEN_SHORT_PART = 1200, -- lunghezza massima pezzo corto LEN_VERY_SHORT_PART = 400, -- lunghezza massima pezzo molto corto (molto probabile lo scarico a caduta) MAX_RAW = 30000, -- massima lunghezza grezzo (deve essere minore di LenTable - RAW_OFFSET) STD_RAW = 14000, -- lunghezza standard della barra di grezzo OVM_HEAD = 10, -- sovramateriale testa OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama) MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi MAX_LEN_SCRAP = 270, -- massima lunghezza scarto di coda MAX_LEN_SCRAP_START = 270, -- massima lunghezza scarto di testa MAX_DIM_HTCUT = 130, -- larghezza massima taglio di testa o coda MAX_DIM_HTCUT_HBEAM = -195, -- larghezza massima taglio di testa o coda con trave alta MIN_DIM_HBEAM = 621, -- altezza minima di trave alta MAX_DIM_DICE = 110, -- dimensione trasversale massima cubetto MAX_LEN_DICE = 400, -- lunghezza massima cubetto DECR_VERT_CUT = 12.5, -- riduzione profondità per affondamento verticale in taglio orizzontale COLL_SIC = 5, -- distanza di sicurezza per collisioni CUT_SIC = 20, -- distanza di sicurezza per tagli CUT_EXTRA = 5, -- affondamento extra standard per tagli di lama e fresature CUT_EXTRA_MIN = 1, -- affondamento extra ridotto per tagli di lama e fresature NZ_MINA = -0.6, -- componente limite in Z normale di una faccia (-36.8deg) 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.51, -- componente limite in Z del versore di un foro DRILL_VX_MAX = 0.867, -- 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_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale MAX_LEN_HTFEA = 2000.0, -- massima lunghezza di feature di testa o coda LONGCUT_ENDLEN = 600, -- lunghezza lavoro estremi iniziale e finale (std=600) LONGCUT_MAXLEN = 1200, -- lunghezza massima sezione di taglio longitudinale (std=1200) MAX_LEN_RIDGELAP_FROM_BOTTOM = 141, -- massima lunghezza ridgelap lavorabile da sotto MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM = 96, -- massima lunghezza ridgelap lavorabile da sotto con trave alta DIM_TO_CENTER_STRIP = 50, -- larghezza minima trave per inserimento codolo nel centro del trave; 0 = automatico DIM_STRIP = -1, -- dimensione codolo sostegno parti lasciate su contorno libero o archi (-1 = da Q...) DIM_STRIP_SMALL = 1, -- dimensione codolo piccolo (quando le parti sostenute sono sicuramente sulla parte sopra del pezzo) RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split VICE_MINH = 110, -- altezza minima della morsa OFFSET_DRILL_TENON = 0, -- offset fori su tenoni verso base degli stessi (0=non fare) USER_HOLE_DIAM = 0, -- diametro foro per L20 MAX_TOOL_LEN_FOR_HOR_MACH = 311, -- massima lunghezza utensile per poter fare forature (fresature) oltre i 10 gradi dalla verticale DRILL_VZ_MIN_LONG_TOOL = 0.984, -- componente limite per lavorazioni con punta lunga MAX_TOOL_LEN_BACK_HOR_MACH = 250, -- massima lunghezza utensile per poter eseguire lavorazioni (forature/svuotature) da dietro (faccia 4) MAX_HEIGHT_ROT_B_ABOVE = 500, -- massima altezza della trave che permette di ruotare l'asse B sopra la stessa senza collisioni KIOTP = 3, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare MAXDIAM_POCK_CORNER = 30, -- diametro massimo utensile ammesso per tasche con angoli interni ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con probabile caduta ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1) STRATEGIES_CONFIG_FILE = 'Std2.json' } -- Aggiornamento con dati da B&W local sData = EgtGetSourceDir().."EbwData.lua" if EgtExistsFile( sData) then local Machine = dofile( sData) if Machine then if Machine.Trave then BeamData.MIN_WIDTH = Machine.Trave.YMIN or BeamData.MIN_WIDTH BeamData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT BeamData.MAX_WIDTH = Machine.Trave.YMAX or BeamData.MAX_WIDTH BeamData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT end if Machine.User then if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F5 == 1 then BeamData.MAX_LEN_SCRAP = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP else BeamData.MAX_LEN_SCRAP = 100000 end if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F6 == 1 then BeamData.MAX_LEN_SCRAP_START = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP_START else BeamData.MAX_LEN_SCRAP_START = 100000 end BeamData.USER_HOLE_DIAM = Machine.User.L020_DIAM_HOLE or BeamData.USER_HOLE_DIAM BeamData.OFFSET_DRILL_TENON = Machine.User.L040_OFFSET_P1 or BeamData.OFFSET_DRILL_TENON end end end ------------------------------------------------------------------------------------------------------------- local function GetNzLimDownUp( b3Raw, vtN, vtOrtho, bDiceCut) return -0.173 end BeamData.GetNzLimDownUp = GetNzLimDownUp --------------------------------------------------------------------- local function GetChainSawBlockedAxis( nInd) if nInd == 1 then return 'CS=0' else return 'CS=-90' end end BeamData.GetChainSawBlockedAxis = GetChainSawBlockedAxis --------------------------------------------------------------------- local function GetMaxLenRidgeLapFromBottom( dHRaw) if dHRaw < BeamData.MIN_DIM_HBEAM then return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM + 0.01 else return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM + 0.01 end end BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom --------------------------------------------------------------------- local function GetMinNzTopHead( vtNFace, Tool) if Tool and Tool.sFamily ~= 'SAWBLADE' then if abs( vtNFace:getY()) < 0.68 then return sin( -15) else return sin( -10) end else if abs( vtNFace:getY()) < 0.68 then return sin( -11) else return sin( -10) end end end --------------------------------------------------------------------- local function GetMinNzDownUp( b3Raw, vtNFace, vtToolDirection, Tool) if vtNFace and abs( vtNFace:getY()) < 0.173 and vtToolDirection and vtToolDirection:getY() < 0.173 then return sin ( -10.9) else return -1 end end --------------------------------------------------------------------- local function GetSetupInfo( sHead) local SetupInfo = {} -- dati comuni SetupInfo.bIsCSymmetrical = false SetupInfo.dCAxisEncumbrance = 180 SetupInfo.dCAxisSideEncumbrance = 200 SetupInfo.dPivot = 210 SetupInfo.bToolOnAggregate = false -- testa 5 assi da sopra if sHead == 'H1' then SetupInfo.HeadType = { bTop = true, bBottom = false} SetupInfo.PreferredSide = {} SetupInfo.GetMinNz = GetMinNzTopHead SetupInfo.GetMinNzDownUp = GetMinNzDownUp end return SetupInfo end BeamData.GetSetupInfo = GetSetupInfo --------------------------------------------------------------------- local function GetMaxMatReductionBladeCut( sHead, vtDir) local MaxMatReductionBladeCut = 0 -- la lama è montata solo su H2, non si controllano altre teste if sHead == 'H2' then if BeamData.NEWTOPC == nil or BeamData.NEWTOPC then MaxMatReductionBladeCut = -65 end if AreSameVectorApprox( vtDir, X_AX()) then MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175 elseif AreSameVectorApprox( vtDir, -X_AX()) then MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175 elseif AreSameVectorApprox( vtDir, Y_AX()) then MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175 elseif AreSameVectorApprox( vtDir, -Y_AX()) then MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175 elseif AreSameVectorApprox( vtDir, Z_AX()) then MaxMatReductionBladeCut = 80 elseif AreSameVectorApprox( vtDir, -Z_AX()) then MaxMatReductionBladeCut = 80 end MaxMatReductionBladeCut = MaxMatReductionBladeCut + BeamData.COLL_SIC end return MaxMatReductionBladeCut + BeamData.COLL_SIC end BeamData.GetMaxMatReductionBladeCut = GetMaxMatReductionBladeCut --------------------------------------------------------------------- return BeamData