diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..196fc23 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +/Tools +/Machinings +/SetUp +/Beam/Ts3Data.bak +/Beam/CutData.lua +/Beam/DrillData.lua +/Beam/MillingData.lua +/Beam/PocketingData.lua +/Beam/SawingData.lua +/Beam/Ts3Data.lua +/Wall/Ts3Data.bak +/Wall/CutData.lua +/Wall/DrillData.lua +/Wall/MillingData.lua +/Wall/PocketingData.lua +/Wall/SawingData.lua +/Wall/Ts3Data.lua diff --git a/Masterwood-Project265.TECNOS.mlpe b/Masterwood-Project265.TECNOS.mlpe index d6e2f4f..4c1418b 100644 --- a/Masterwood-Project265.TECNOS.mlpe +++ b/Masterwood-Project265.TECNOS.mlpe @@ -30,9 +30,9 @@ function OnProgramStart() -- acquisizione nome attrezzaggio local sSetupName = EgtGetInfo( EgtGetCurrSetup() or GDB_ID.NULL, 'Name') or ' ' -- Intestazione processo 1 - EmtOutput( EgtIf( EMT.INFO, '; '..EMT.INFO, ';Program Start')) - EmtOutput( ';'.. MLE_INFO) - EmtOutput( ';'.. 'ToolingSetUp:'..sSetupName) + EmtOutput( EgtIf( EMT.INFO, '( '..EMT.INFO, ';Program Start')) + EmtOutput( '( '.. MLE_INFO) + EmtOutput( '( '.. 'ToolingSetUp:'..sSetupName) end --------------------------------------------------------------------- diff --git a/Masterwood-Project265.mlde b/Masterwood-Project265.mlde index 2d4b9b2..b73b35c 100644 --- a/Masterwood-Project265.mlde +++ b/Masterwood-Project265.mlde @@ -10,9 +10,50 @@ NumericalControl = 'TECNOS' TabX = 362.0064 TabY = -1734.5386 TabZ = -456.0497 --- DATI TESTE -- --- DATI BANCALETTI -- --- DATI SOTTOPEZZI -- + +---------------------------------------------------- +-------------------- CORSE ASSI -------------------- +---------------------------------------------------- +XAxisStroke = {-9999, 9999} +YAxisStroke = {-9999, 9999} +ZAxisStroke = {-9999, 9999} +CAxisStroke = {-270, 270} +AAxisStroke = {-110, 110} + +---------------------------------------------------- +-------------------- DATI TESTE -------------------- +---------------------------------------------------- +-- testa 5 assi +H11Pos = Vector3d( 0, 0, 0) +-- gruppo forare +H21Pos = H11Pos + Vector3d( -114.005, 522.001, 390.95) +-- teste gruppo forare +H2101 = H21Pos + Vector3d( 0, 0, 0) +H2102 = H21Pos + Vector3d( 32, 0, 0) +H2103 = H21Pos + Vector3d( 64, 0, 0) +H2104 = H21Pos + Vector3d( 96, 0, 0) +H2105 = H21Pos + Vector3d( 128, 0, 0) +H2106 = H21Pos + Vector3d( 160, 0, 0) +H2107 = H21Pos + Vector3d( 192, 0, 0) +H2108 = H21Pos + Vector3d( 0, 64, 0) +H2109 = H21Pos + Vector3d( 0, 96, 0) +H2110 = H21Pos + Vector3d( 0, 128, 0) +H2111 = H21Pos + Vector3d( 0, 160, 0) +H2131 = H21Pos + Vector3d( -32, 32, -51.2) +H2133 = H21Pos + Vector3d( -32, -32, -51.2) +H2135 = H21Pos + Vector3d( 224, 64, -51.2) +H2136 = H21Pos + Vector3d( 224, 96, -51.2) +H2137 = H21Pos + Vector3d( 160, 64, -51.2) +H2138 = H21Pos + Vector3d( 160, 96, -51.2) +-- lametta su gruppo a forare +H2150 = H21Pos + Vector3d( 192, 192.5, -8.2) +---------------------------------------------------- +----------------- DATI BANCALETTI ------------------ +---------------------------------------------------- + +---------------------------------------------------- +----------------- DATI SOTTOPEZZI------------------- +---------------------------------------------------- ---------------------------------------------------------------------- EmtGeneral { @@ -34,7 +75,7 @@ EmtAxis { Type = MCH_AT.LINEAR, Dir = X_AX(), Pos = Point3d(0, 0, 0), - Stroke = {-3600, 0}, + Stroke = XAxisStroke, Home = 0, Geo = 'X_AXIS/GEO', Aux = { 'X_AXIS/SOLID', 'X_AXIS/TCR'}} @@ -45,7 +86,7 @@ EmtAxis { Type = MCH_AT.LINEAR, Dir = Y_AX(), Pos = Point3d(0, 0, 0), - Stroke = {-1660, 70}, + Stroke = YAxisStroke, Home = 0, Geo = 'Y_AXIS/GEO', Aux = 'Y_AXIS/SOLID'} @@ -56,7 +97,7 @@ EmtAxis { Type = MCH_AT.LINEAR, Dir = Z_AX(), Pos = Point3d(0, 0, 0), - Stroke = {-850.9, 200}, + Stroke = ZAxisStroke, Home = 0, Geo = 'Z1_AXIS/GEO', Aux = 'Z1_AXIS/SOLID'} @@ -67,7 +108,7 @@ EmtAxis { Type = MCH_AT.ROTARY, Dir = Z_AX(), Pos = Point3d(0, 0, 379), - Stroke = {-321, 321}, + Stroke = CAxisStroke, Home = 0, Geo = 'C_AXIS/GEO', Aux = 'C_AXIS/SOLID'} @@ -78,7 +119,7 @@ EmtAxis { Type = MCH_AT.ROTARY, Dir = -X_AX(), Pos = Point3d( -86.5, 0, 135), - Stroke = {-110, 110}, + Stroke = AAxisStroke, Home = 0, Geo = 'A_AXIS/GEO', Aux = 'A_AXIS/SOLID'} @@ -87,7 +128,7 @@ EmtHead { Parent = 'A', HSet = 'H11', Type = MCH_HT.STD, - Pos = Point3d( 0, 0, 0), + Pos = H11Pos, TDir = Z_AX(), ADir = -X_AX(), SolCh = MCH_SCC.ADIR_ZP, @@ -99,11 +140,172 @@ EmtAxis { Token = 'Z', Type = MCH_AT.LINEAR, Dir = Z_AX(), - Pos = Point3d(0,0,0), + Pos = Point3d( 0, 0, 0), Stroke = {-850.9, 200}, Home = 0, Geo = 'Z2_AXIS/GEO', Aux = 'Z2_AXIS/SOLID'} + EmtHead { + Name = 'H21', + Parent = 'Z2', + HSet = 'H21', + Type = MCH_HT.MULTI, + ExitNbr = 18, + Pos1 = H2101, + TDir1 = Z_AX(), + Pos2 = H2102, + TDir2 = Z_AX(), + Pos3 = H2103, + TDir3 = Z_AX(), + Pos4 = H2104, + TDir4 = Z_AX(), + Pos5 = H2105, + TDir5 = Z_AX(), + Pos6 = H2106, + TDir6 = Z_AX(), + Pos7 = H2107, + TDir7 = Z_AX(), + Pos8 = H2108, + TDir8 = Z_AX(), + Pos9 = H2109, + TDir9 = Z_AX(), + Pos10 = H2110, + TDir10 = Z_AX(), + Pos11 = H2111, + TDir11 = Z_AX(), + Pos12 = H2131, + TDir12 = -Y_AX(), + Pos13 = H2133, + TDir13 = Y_AX(), + Pos14 = H2135, + TDir14 = -X_AX(), + Pos15 = H2136, + TDir15 = -X_AX(), + Pos16 = H2137, + TDir16 = X_AX(), + Pos17 = H2138, + TDir17 = X_AX(), + Pos18 = H2150, + TDir18 = -Y_AX(), + Geo = 'H21_HEAD/GEO', + Aux = {'H21_HEAD/SOLID', 'H21_HEAD/SOL_T1', 'H21_HEAD/SOL_T2', 'H21_HEAD/SOL_T3', 'H21_HEAD/SOL_T4', 'H21_HEAD/SOL_T5', + 'H21_HEAD/SOL_T6', 'H21_HEAD/SOL_T7', 'H21_HEAD/SOL_T8', 'H21_HEAD/SOL_T9', 'H21_HEAD/SOL_T10', 'H21_HEAD/SOL_T11', + 'H21_HEAD/SOL_T31', 'H21_HEAD/SOL_T35', 'H21_HEAD/SOL_T36', 'H21_HEAD/SOL_T50'}} + +-- Tool Changer +local ptTcR = Point3d( 75, 434.95, -410) +EmtTcPos { + Name = 'T1', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 4), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T1'} +EmtTcPos { + Name = 'T2', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 3), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T2'} +EmtTcPos { + Name = 'T3', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 2), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T3'} +EmtTcPos { + Name = 'T4', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 1), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T4'} +EmtTcPos { + Name = 'T5', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, 0), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T5'} +EmtTcPos { + Name = 'T6', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 1), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T6'} +EmtTcPos { + Name = 'T7', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 2), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T7'} +EmtTcPos { + Name = 'T8', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 3), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T8'} +EmtTcPos { + Name = 'T9', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 4), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T9'} +EmtTcPos { + Name = 'T10', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 5), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T10'} +EmtTcPos { + Name = 'T11', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 6), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T11'} +EmtTcPos { + Name = 'T12', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 7), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T12'} +EmtTcPos { + Name = 'T13', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 8), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T13'} +EmtTcPos { + Name = 'T14', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 9), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T14'} +EmtTcPos { + Name = 'T15', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 10), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T15'} +EmtTcPos { + Name = 'T16', + Parent = 'X', + Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 11), + TDir = Z_AX(), + ADir = X_AX(), + Geo = 'X_AXIS/T16'} -- Tavola EmtTable { @@ -114,95 +316,95 @@ EmtTable { Geo = 'TABLE/GEO', Aux = 'TABLE/SOLID'} -- bancaletti -local T1Id = EmtAxis { - Name = 'T1', +local PL1Id = EmtAxis { + Name = 'PL1', Parent = 'Tab', Type = MCH_AT.LINEAR, Dir = X_AX(), Pos = Point3d(0, 0, 0), Stroke = {0, 2000}, Home = 0, - Geo = 'T1_AXIS/GEO', - Aux = 'T1_AXIS/SOLID'} -EgtSetInfo( T1Id, 'MDist', 10) -EgtSetInfo( T1Id, 'PDist', 130) -EgtSetInfo( T1Id, 'Next', 'T2') -EgtMove( T1Id, Vector3d( 0, 0, 0), GDB_RT.GLOB) -local T2Id = EmtAxis { - Name = 'T2', + Geo = 'PL1_AXIS/GEO', + Aux = 'PL1_AXIS/SOLID'} +EgtSetInfo( PL1Id, 'MDist', 10) +EgtSetInfo( PL1Id, 'PDist', 130) +EgtSetInfo( PL1Id, 'Next', 'PL2') +EgtMove( PL1Id, Vector3d( 0, 0, 0), GDB_RT.GLOB) +local PL2Id = EmtAxis { + Name = 'PL2', Parent = 'Tab', Type = MCH_AT.LINEAR, Dir = X_AX(), Pos = Point3d(0, 0, 0), Stroke = {200, 2100}, Home = 200, - Geo = 'T2_AXIS/GEO', - Aux = 'T2_AXIS/SOLID'} -EgtSetInfo( T2Id, 'MDist', 10) -EgtSetInfo( T2Id, 'PDist', 130) -EgtSetInfo( T2Id, 'Prev', 'T1') -EgtSetInfo( T2Id, 'Next', 'T3') -EgtMove( T2Id, Vector3d( -200, 0, 0), GDB_RT.GLOB) -local T3Id = EmtAxis { - Name = 'T3', + Geo = 'PL2_AXIS/GEO', + Aux = 'PL2_AXIS/SOLID'} +EgtSetInfo( PL2Id, 'MDist', 10) +EgtSetInfo( PL2Id, 'PDist', 130) +EgtSetInfo( PL2Id, 'Prev', 'PL1') +EgtSetInfo( PL2Id, 'Next', 'PL3') +EgtMove( PL2Id, Vector3d( -200, 0, 0), GDB_RT.GLOB) +local PL3Id = EmtAxis { + Name = 'PL3', Parent = 'Tab', Type = MCH_AT.LINEAR, Dir = X_AX(), Pos = Point3d(0, 0, 0), Stroke = {400, 2200}, Home = 400, - Geo = 'T3_AXIS/GEO', - Aux = 'T3_AXIS/SOLID'} -EgtSetInfo( T3Id, 'MDist', 10) -EgtSetInfo( T3Id, 'PDist', 130) -EgtSetInfo( T3Id, 'Prev', 'T2') -EgtSetInfo( T3Id, 'Next', 'T4') -EgtMove( T3Id, Vector3d( -400, 0, 0), GDB_RT.GLOB) -local T4Id = EmtAxis { - Name = 'T4', + Geo = 'PL3_AXIS/GEO', + Aux = 'PL3_AXIS/SOLID'} +EgtSetInfo( PL3Id, 'MDist', 10) +EgtSetInfo( PL3Id, 'PDist', 130) +EgtSetInfo( PL3Id, 'Prev', 'PL2') +EgtSetInfo( PL3Id, 'Next', 'PL4') +EgtMove( PL3Id, Vector3d( -400, 0, 0), GDB_RT.GLOB) +local PL4Id = EmtAxis { + Name = 'PL4', Parent = 'Tab', Type = MCH_AT.LINEAR, Dir = X_AX(), Pos = Point3d(0, 0, 0), Stroke = {800, 2600}, Home = 2600, - Geo = 'T4_AXIS/GEO', - Aux = 'T4_AXIS/SOLID'} -EgtSetInfo( T4Id, 'MDist', 10) -EgtSetInfo( T4Id, 'PDist', 130) -EgtSetInfo( T4Id, 'Prev', 'T3') -EgtSetInfo( T4Id, 'Next', 'T5') -EgtMove( T4Id, Vector3d( -2600, 0, 0), GDB_RT.GLOB) -local T5Id = EmtAxis { - Name = 'T5', + Geo = 'PL4_AXIS/GEO', + Aux = 'PL4_AXIS/SOLID'} +EgtSetInfo( PL4Id, 'MDist', 10) +EgtSetInfo( PL4Id, 'PDist', 130) +EgtSetInfo( PL4Id, 'Prev', 'PL3') +EgtSetInfo( PL4Id, 'Next', 'PL5') +EgtMove( PL4Id, Vector3d( -2600, 0, 0), GDB_RT.GLOB) +local PL5Id = EmtAxis { + Name = 'PL5', Parent = 'Tab', Type = MCH_AT.LINEAR, Dir = X_AX(), Pos = Point3d(0, 0, 0), Stroke = {900, 2800}, Home = 2800, - Geo = 'T5_AXIS/GEO', - Aux = 'T5_AXIS/SOLID'} -EgtSetInfo( T5Id, 'MDist', 10) -EgtSetInfo( T5Id, 'PDist', 130) -EgtSetInfo( T5Id, 'Prev', 'T4') -EgtSetInfo( T5Id, 'Next', 'T6') -EgtMove( T5Id, Vector3d( -2800, 0, 0), GDB_RT.GLOB) -local T6Id = EmtAxis { - Name = 'T6', + Geo = 'PL5_AXIS/GEO', + Aux = 'PL5_AXIS/SOLID'} +EgtSetInfo( PL5Id, 'MDist', 10) +EgtSetInfo( PL5Id, 'PDist', 130) +EgtSetInfo( PL5Id, 'Prev', 'PL4') +EgtSetInfo( PL5Id, 'Next', 'PL6') +EgtMove( PL5Id, Vector3d( -2800, 0, 0), GDB_RT.GLOB) +local PL6Id = EmtAxis { + Name = 'PL6', Parent = 'Tab', Type = MCH_AT.LINEAR, Dir = X_AX(), Pos = Point3d(0, 0, 0), Stroke = {1000, 3000}, Home = 3000, - Geo = 'T6_AXIS/GEO', - Aux = 'T6_AXIS/SOLID'} -EgtSetInfo( T6Id, 'MDist', 10) -EgtSetInfo( T6Id, 'PDist', 130) -EgtSetInfo( T6Id, 'Prev', 'T5') -EgtMove( T6Id, Vector3d( -3000, 0, 0), GDB_RT.GLOB) - + Geo = 'PL6_AXIS/GEO', + Aux = 'PL6_AXIS/SOLID'} +EgtSetInfo( PL6Id, 'MDist', 10) +EgtSetInfo( PL6Id, 'PDist', 130) +EgtSetInfo( PL6Id, 'Prev', 'PL5') +EgtMove( PL6Id, Vector3d( -3000, 0, 0), GDB_RT.GLOB) + --------------------------------------------------------------------- -- Funzioni richiamate per modificare i dati macchina in casi particolari -------------------------------------------------------------------------------- diff --git a/Masterwood-Project265.mlpe b/Masterwood-Project265.mlpe index 6d3e8f5..7bddccb 100644 --- a/Masterwood-Project265.mlpe +++ b/Masterwood-Project265.mlpe @@ -18,11 +18,6 @@ end --------------------------------------------------------------------- -- *** SIMULATION *** --------------------------------------------------------------------- -local bSimuToolChange = false -local nUnloadTool -local nCountChangeT = 0 -local TChangePos = {} -local nTmaxCone = 8 --------------------------------------------------------------------- function OnSimulStart() @@ -42,17 +37,12 @@ end --------------------------------------------------------------------- function OnSimulEnd() - ExecUnloading() + end --------------------------------------------------------------------- function OnSimulDispositionStart() EMT.OPEISDISP = true - nTmaxCone = 8 - if EMT.SIM1ST then - TChangePos[1] = 1 - TChangePos[2] = 0 - end -- nascondo lavorazioni che risulterebbero in posizione diversa dai pezzi local nMchId = EgtGetNextOperation( EgtGetPhaseDisposition( EMT.PHASE)) while nMchId do @@ -60,15 +50,10 @@ function OnSimulDispositionStart() EgtSetOperationStatus( nMchId, false) nMchId = EgtGetNextOperation( nMchId) end - if EMT.SIM1ST then - -- visualizzo tutti i coni del magazzino - ShowHideCone( 1, nTmaxCone, true) - end end --------------------------------------------------------------------- function OnSimulDispositionEnd() - -- Se prima disposizione if EMT.PHASE == 1 then -- Se vero inizio e abilitato creo gli Zmap @@ -110,30 +95,6 @@ end --------------------------------------------------------------------- function OnSimulToolSelect() - - -- se cambia testa va al cambio utensile - if ( EMT.TCPOS ~= EMT.PREVTCPOS) then - -- se ho scaricato il mandrino principale o ancora non carico - if nUnloadTool ~= 2 or not EMT.PREVTCPOS then - -- nascondo la testa attuale per non farla visualizzare nel movimento di cambio - EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN) - end - SimuToolChange( EgtGetHeadId( EMT.HEAD), 1, EMT.TCPOS, nTmaxCone) -- carico l'utensile - else -- se stesse posizioni - if nUnloadTool == 0 then -- se ho scaricato il madrino per lunghezza eccessiva - EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN) -- nascondo la testa - SimuToolChange( EgtGetHeadId( EMT.HEAD), 1, EMT.TCPOS, nTmaxCone) -- carico l'utensile - else - -- se la testa non è stata scaricata la mostro - local nHeadId = EgtGetHeadId( EMT.HEAD) - EgtSetMode( nHeadId, GDB_MD.STD) - end - end - -- aquisisco lunghezza utensile - if EMT.TOOL ~= '' then - EMT.TOTLENGTH = EgtTdbGetCurrToolParam(MCH_TP.TOTLEN) - end - -- se attivo Vmill if EMT.VMILL then SetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL) @@ -142,51 +103,7 @@ end --------------------------------------------------------------------- function OnSimulToolDeselect() - -- se testa utilizzata non è gruppo a forare - if EMT.HEAD ~= 'H43' and EMT.HEAD ~= 'H45' then - -- se cambia posizione attivo il cambio utensile - if EMT.TCPOS ~= EMT.NEXTTCPOS then -- se cambio utensile - local nHeadId = EgtGetHeadId( EMT.HEAD) - -- se prossima testa è a forare o tastatore verifico se scaricare o no l'utensile - if EMT.NEXTHEAD == 'H43' or EMT.NEXTHEAD == 'H45' then - -- se teste rinvio le scarico comunque - if EMT.HEAD == 'H12' or EMT.HEAD == 'H13' or EMT.HEAD == 'H14' or EMT.HEAD == 'H15' then - SimuToolChange( nHeadId, 2, EMT.TCPOS, nTmaxCone) - else - -- ricavo la lunghezza utensile - EMT.TOTLENGTH = EgtTdbGetCurrToolParam(MCH_TP.TOTLEN) - -- se maggiore della lunghezza consentita scarico la testa - if (EMT.TOTLENGTH and EMT.TOTLENGTH > nMaxLenTool) or EMT.NEXTHEAD == 'H45' then -- ori 156 - nUnloadTool = 2 - SimuToolChange( nHeadId, 2, EMT.TCPOS, nTmaxCone) - else -- altrimenti mantengo l'utensile sul mandrino - nUnloadTool = 2 - -- in questo caso almeno un caricamento utensile è stato fatto - if nCountChangeT == 0 then nCountChangeT = 1 end - EMT.UNHIDEHEAD = EMT.HEAD - end - end - else -- atrimenti prossima testa non gruppo a forare - SimuToolChange( nHeadId, 0, EMT.TCPOS, nTmaxCone) -- scarico utensile - end - end - EMT.PREVTCPOS = EMT.TCPOS --- altrimenti testa a forare - else - -- se testa succesiva non è gruppo a forare e posizioni differenti scarico utensile - if EMT.NEXTTCPOS ~= 'T43' and EMT.PREVTCPOS and EMT.PREVTCPOS ~= EMT.NEXTTCPOS then - if nUnloadTool and nUnloadTool ~= 0 then - -- rialzo slitta della testa H43 - MoveHead( EgtGetHeadId( EMT.HEAD), Z_AX(), 200) - if nUnloadTool == 2 then - SimuToolChange( EgtGetHeadId( EMT.UNHIDEHEAD), 0, EMT.PREVTCPOS, nTmaxCone) - else - SimuToolChange( EgtGetHeadId( EMT.PREVHEAD), 0, EMT.PREVTCPOS, nTmaxCone) - end - end - end - end - EMT.PREVHEAD = EMT.HEAD + end --------------------------------------------------------------------- @@ -242,121 +159,6 @@ end function OnSimulMoveEnd() end ---------------------------------------------------------------------- -function SimuToolChange( nHeadId, nShowHead, sPos, nMaxCone) - if not bSimuToolChange then - SimulMoveAxes( 'Y', 0.0, 100, 'C', 0, 100, 'B', 0, 100) - if nShowHead == 0 or nShowHead == 2 then - if nHeadId then EgtSetMode( nHeadId, GDB_MD.HIDDEN) end - elseif nShowHead == 1 then - if nHeadId then EgtSetMode( nHeadId, GDB_MD.STD) end - end - else - if nShowHead == 0 or nShowHead == 2 then - if nUnloadTool ~= 0 then -- scarico utensile - SimulMoveAxes( 'Y', 0.0, 100, 'C', 0.0, 100, 'B', 0.0, 100) - SimulMoveAxis( 'Z', -100.000, 10) - SimulMoveCharger( sPos, (nMaxCone-1), 90) - SimulMoveAxis( 'Z', 0.0, 10) - if nHeadId then EgtSetMode( nHeadId, GDB_MD.HIDDEN) end - SimulChangeCone( sPos, true) - SimulMoveAxis( 'Z', -100, 10) - else - SimulMoveAxis( 'Z', 0, 10) - end - nUnloadTool = 0 - elseif nShowHead == 1 then -- carico utensile - SimulMoveAxes( 'Y', 0.0, 100, 'C', 0.0, 100, 'B', 0.0, 100) - SimulMoveAxis( 'Z', 0.0, 10) - SimulMoveCharger( sPos, (nMaxCone-1), 0) - SimulMoveAxis( 'Z', -100, 10) - if nHeadId then EgtSetMode( nHeadId, GDB_MD.STD) end - SimulChangeCone( sPos, false) - SimulMoveAxis( 'B', 0.0, 10) - nUnloadTool = 1 - else - SimulMoveAxes( 'Y', 0.0, 100, 'C', 0.0, 100, 'B', 0.0, 100) - nUnloadTool = 2 - end - if nShowHead ~= 0 then - SimulMoveAxis( 'Y', 0.0, 10) - SimulMoveAxis( 'Z', 0, 10) - end - end - nCountChangeT = nCountChangeT + 1 -end - ---------------------------------------------------------------------- -function HideAllmainHeads() - EgtSetMode( EgtGetHeadId( 'H11'), GDB_MD.HIDDEN) -- nascondo la testa - EgtSetMode( EgtGetHeadId( 'H12'), GDB_MD.HIDDEN) -- nascondo la testa - EgtSetMode( EgtGetHeadId( 'H13'), GDB_MD.HIDDEN) -- nascondo la testa - EgtSetMode( EgtGetHeadId( 'H14'), GDB_MD.HIDDEN) -- nascondo la testa - EgtSetMode( EgtGetHeadId( 'H15'), GDB_MD.HIDDEN) -- nascondo la testa - nCountChangeT = 1 -end - ---------------------------------------------------------------------- -function ShowHideCone( nPosIni, nPosEnd, bShowCone) - - if nPosIni and nPosEnd then - -- imposto flag visualizzazione - local nMode = EgtIf( bShowCone, GDB_MD.STD, GDB_MD.HIDDEN) - -- trovo Id cartella solid - local nIdSolidTc = EgtGetFirstNameInGroup( EgtGetAxisId( 'TC'), 'SOLID') - -- ciclo sui coni - for nPos = nPosIni, nPosEnd do - -- trovo Id cono - local sConeName = 'CONE_'.. EgtNumToString( ( nPos + 100), 0) - local nIdCone = EgtGetFirstNameInGroup( nIdSolidTc, sConeName) - if nIdCone then - EgtSetMode( nIdCone, nMode) - end - end - end -end - ---------------------------------------------------------------------- -function SimulChangeCone( sPos, bShowCone) - if sPos then - local sPosT = sPos:sub(2) - local nPosT = tonumber(sPosT) - ShowHideCone( nPosT, nPosT, bShowCone) - end -end - ---------------------------------------------------------------------- -function SimulMoveCharger( sPos, nMaxPos, nOldvalue) - - if sPos then - - local sPosT = sPos:sub(2) - local nPosT = tonumber(sPosT) - local nVer = 1 - local nMovStep = 0 - - nStep = nPosT - TChangePos[1] - - if abs(nStep) <= 0 then -- se numero di passi è a ritornare - nVer = -1 - nMovStep = abs(nStep) * ( 595 / nMaxPos) * nVer - else -- altrimenti numero passi è oltre la metà giro - nVer = 1 - nMovStep = abs(nStep) * ( 595 / nMaxPos) * nVer - end - TChangePos[1] = nPosT - TChangePos[2] = TChangePos[2] + nMovStep - if abs(nMovStep) > 0 then - SimulMoveAxis( 'Y', TChangePos[2], 10) - SimulMoveAxis( 'B', 90.0, 10) - SimulMoveAxes( 'TC', 100, 7) - end - else - SimulMoveAxis( 'Y', nOldvalue, 10) - SimulMoveAxes( 'TC', 0, 7) - end -end - --------------------------------------------------------------------- function MoveHead( nGrpId, vtVers, dPos, bLoc) local dVal = EgtGetInfo( nGrpId or GDB_ID.NULL, 'Val') @@ -435,9 +237,9 @@ function OnEstimProgramStart() -- imposto inizio movimenti da Home EMT.L1 = EgtGetAxisHomePos( 'X') EMT.L2 = EgtGetAxisHomePos( 'Y') - EMT.L3 = EgtGetAxisHomePos( 'Z') + EMT.L3 = EgtGetAxisHomePos( 'Z1') EMT.R1 = EgtGetAxisHomePos( 'C') - EMT.R2 = EgtGetAxisHomePos( 'B') + EMT.R2 = EgtGetAxisHomePos( 'A') -- aggiorno valori come precedenti EmtUpdatePrev() -- totalizzatori tempi e lunghezze diff --git a/Masterwood-Project265.mlse b/Masterwood-Project265.mlse index acce8ed..59967b9 100644 --- a/Masterwood-Project265.mlse +++ b/Masterwood-Project265.mlse @@ -14,32 +14,6 @@ Egm = require( 'EmtGenMachining') --------------------------------------------------------------------- -- *** OnSpecialMoveZup *** --------------------------------------------------------------------- -function OnSpecialMoveZup() - - --EgtOutLog( 'OnSpecialMoveZup : ' .. EMC.HEAD .. '.' .. tostring( EMC.EXIT)) - - -- Inizializzo codice di errore - EMC.ERR = 1 - - -- recupero Z1 home - local dZmax = EgtGetAxisHomePos( 'Z') - - -- se testa 5 assi e utensile sdraiato molto alto - if EMC.R2 and EMC.TDIR[3] < 0.79 and EMC.L3 > dZmax - 200 then - -- sistemo asse rotante - EMC.R2 = EgtIf( ( EMC.R2 > 0), 37.5, - 37.5) - -- ricalcolo versore utensile - EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2) - -- dichiaro modificato - EMC.MODIF = true - else - EMC.MODIF = false - end - - EMC.ERR = 0 -end - - --------------------------------------------------------------------- -- *** OnSpecialApplyDisposition & OnPostApplyMachining *** --------------------------------------------------------------------- diff --git a/Masterwood-Project265.nge b/Masterwood-Project265.nge index 5c2af2f..fad2cab 100644 Binary files a/Masterwood-Project265.nge and b/Masterwood-Project265.nge differ diff --git a/Scripts/InitDisp.lua b/Scripts/InitDisp.lua index e69cd8d..dc02943 100644 --- a/Scripts/InitDisp.lua +++ b/Scripts/InitDisp.lua @@ -1,5 +1,5 @@ -- 2024/10/10 10:00:00 --- Disposition Init for Cms-PK_PL machine +-- Disposition Init for Masterwood_Project265 machine -- Intestazioni require( 'EgtBase') @@ -13,7 +13,7 @@ local ColA = Color3d( 255, 165, 0, 30) -------------------------------------------------------------------------------- -- * Verifica esistenza MachGroup * if not EgtGetCurrMachGroup() then - local sErr = 'InitDisp for Cms-PK_PL : missing CurrMachGroup' + local sErr = 'InitDisp for Masterwood_Project265 : missing CurrMachGroup' EgtOutLog( sErr) EgtOutText( sErr) DISP.ERR = 1 @@ -42,7 +42,7 @@ 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 Cms-PK_PL : empty part' + local sErr = 'InitDisp for Masterwood_Project265 : empty part' EgtOutLog( sErr) EgtOutText( sErr) DISP.ERR = 2 @@ -99,7 +99,7 @@ else end end if not nRaw then - local sErr = 'InitDisp for Cms-PK_PL : error defining raw part' + local sErr = 'InitDisp for Masterwood_Project265 : error defining raw part' EgtOutLog( sErr) EgtOutText( sErr) DISP.ERR = 3 @@ -109,28 +109,28 @@ local b3Raw = EgtGetRawPartBBox( nRaw) local bVac = ( b3Raw:getDimY() >= 120) local vtOffs, nCorn if sRefY == 'B' and sRefX == 'L' then - vtOffs = Vector3d( 0, 0, 30) + vtOffs = Vector3d( 0, 0, 0) nCorn = MCH_CR.BL elseif sRefY == 'B' and sRefX == 'R' then - vtOffs = Vector3d( 1700, 0, 30) + vtOffs = Vector3d( 1700, 0, 0) nCorn = MCH_CR.BR elseif sRefY == 'M' and sRefX == 'L' then - vtOffs = Vector3d( 0, 675-10, 30) + vtOffs = Vector3d( 0, 675-10, 0) nCorn = MCH_CR.TL elseif sRefY == 'M' and sRefX == 'R' then - vtOffs = Vector3d( 1700, 675-10, 30) + vtOffs = Vector3d( 1700, 675-10, 0) nCorn = MCH_CR.TR elseif sRefY == 'N' and sRefX == 'L' then - vtOffs = Vector3d( 0, 675+10, 30) + vtOffs = Vector3d( 0, 675+10, 0) nCorn = MCH_CR.BL elseif sRefY == 'N' and sRefX == 'R' then - vtOffs = Vector3d( 1700, 675+10, 30) + vtOffs = Vector3d( 1700, 675+10, 0) nCorn = MCH_CR.BR elseif sRefY == 'T' and sRefX == 'L' then - vtOffs = Vector3d( 0, 1350, 30) + vtOffs = Vector3d( 0, 1350, 0) nCorn = MCH_CR.TL elseif sRefY == 'T' and sRefX == 'R' then - vtOffs = Vector3d( 1700, 1350, 30) + vtOffs = Vector3d( 1700, 1350, 0) nCorn = MCH_CR.TR end if not bVac then @@ -141,156 +141,11 @@ if not bVac then end end if not EgtMoveToCornerRawPart( nRaw, vtOffs, nCorn) then - local sErr = 'InitDisp for Cms-PK_PL : error positioning raw part on table' + local sErr = 'InitDisp for Masterwood_Project265 : error positioning raw part on table' EgtOutLog( sErr) EgtOutText( sErr) DISP.ERR = 4 return end --- Posizionamento dei piani di lavoro, carrelli e ventose -local DIMT_X = 120 -local OFFS_MIN_T = 200 -local DIMV_Y = 100 -local OFFS_MIN_V = 120 -local SAFE_DIST = dSafeDist + dOverMatXY -b3Raw = EgtGetRawPartBBox( nRaw) -b3Raw:toLoc( frTab) - -- barre (4) -local vbT = { false, false, false, false} -local vsNamT = { 'T1', 'T2', 'T3', 'T4'} -local vdPosT = { EgtGetAxisHomePos( 'T1'), EgtGetAxisHomePos( 'T2'), EgtGetAxisHomePos( 'T3'), EgtGetAxisHomePos( 'T4')} -if b3Raw:getDimX() < 300 then - if sRefX == 'L' then - vbT[1] = true - vdPosT[1] = b3Raw:getCenter():getX() - DIMT_X / 2 - else - vbT[4] = true - vdPosT[2] = vdPosT[1] + OFFS_MIN_T - vdPosT[3] = vdPosT[2] + OFFS_MIN_T - vdPosT[4] = b3Raw:getCenter():getX() - DIMT_X / 2 - end -elseif b3Raw:getDimX() < 650 then - if sRefX == 'L' then - vbT[1] = true ; vbT[2] = true - vdPosT[1] = b3Raw:getMin():getX() + SAFE_DIST - vdPosT[2] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X - else - vbT[3] = true ; vbT[4] = true - vdPosT[2] = vdPosT[1] + OFFS_MIN_T - vdPosT[3] = b3Raw:getMin():getX() + SAFE_DIST - vdPosT[4] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X - end -elseif b3Raw:getDimX() < 1000 then - if sRefX == 'L' then - vbT[1] = true ; vbT[2] = true ; vbT[3] = true - vdPosT[1] = b3Raw:getMin():getX() + SAFE_DIST - vdPosT[3] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X - vdPosT[2] = ( vdPosT[1] + vdPosT[3]) / 2 - else - vbT[2] = true ; vbT[3] = true ; vbT[4] = true - vdPosT[2] = b3Raw:getMin():getX() + SAFE_DIST - vdPosT[4] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X - vdPosT[3] = ( vdPosT[2] + vdPosT[4]) / 2 - end -else - vbT[1] = true ; vbT[2] = true ; vbT[3] = true ; vbT[4] = true - vdPosT[1] = b3Raw:getMin():getX() + SAFE_DIST - vdPosT[4] = b3Raw:getMax():getX() - SAFE_DIST - DIMT_X - vdPosT[2] = 0.666 * vdPosT[1] + 0.334 * vdPosT[4] - vdPosT[3] = 0.334 * vdPosT[1] + 0.666 * vdPosT[4] -end -for i = 1, #vbT do - EgtMoveDispAxis( vsNamT[i], vdPosT[i]) -end - -- carrelli per ventose o morse (3) -local vbV = { false, false, false} -local vdPosV = { EgtGetAxisHomePos( 'T11'), EgtGetAxisHomePos( 'T12'), EgtGetAxisHomePos( 'T13')} -if not bVac then - if sRefY == 'B' then - vbV[1] = true - vdPosV[1] = b3Raw:getMin():getY() - DIMV_Y / 2 - 10 - elseif sRefY == 'M' then - vbV[2] = true - vdPosV[2] = b3Raw:getMax():getY() - DIMV_Y / 2 + 10 - elseif sRefY == 'N' then - vbV[2] = true - vdPosV[2] = b3Raw:getMin():getY() - DIMV_Y / 2 - 10 - elseif sRefY == 'T' then - vbV[3] = true - vdPosV[2] = vdPosV[1] + OFFS_MIN_V - vdPosV[3] = b3Raw:getMax():getY() - DIMV_Y / 2 + 10 - end -elseif b3Raw:getDimY() < 260 then - if b3Raw:getMin():getY() < 675 then - vbV[1] = true - vdPosV[1] = b3Raw:getCenter():getY() - DIMV_Y / 2 - else - vbV[3] = true - vdPosV[2] = vdPosV[1] + OFFS_MIN_V - vdPosV[3] = b3Raw:getCenter():getY() - DIMV_Y / 2 - end -elseif b3Raw:getDimY() < 450 then - if b3Raw:getMin():getY() < 675 then - vbV[1] = true ; vbV[2] = true - vdPosV[1] = b3Raw:getMin():getY() + SAFE_DIST - vdPosV[2] = b3Raw:getMax():getY() - SAFE_DIST - DIMV_Y - else - vbV[2] = true ; vbV[3] = true - vdPosV[2] = b3Raw:getMin():getY() + SAFE_DIST - vdPosV[3] = b3Raw:getMax():getY() - SAFE_DIST - DIMV_Y - end -else - vbV[1] = true ; vbV[2] = true ; vbV[3] = true - vdPosV[1] = b3Raw:getMin():getY() + SAFE_DIST - vdPosV[3] = b3Raw:getMax():getY() - SAFE_DIST - DIMV_Y - vdPosV[2] = ( vdPosV[1] + vdPosV[3]) / 2 -end -for i = 1, #vbT do - if vbT[i] then - for j = 1, #vbV do - local sVac = vsNamT[ i] .. tostring( j) - EgtMoveDispAxis( sVac, vdPosV[j]) - end - end -end --- ventose o morse -for i = 1, #vbT do - if vbT[i] then - local dPosX = vdPosT[i] + DIMT_X / 2 - for j = 1, #vbV do - if vbV[j] then - if bVac then - EgtAddFixture( 'Vac120x100H30', Point3d( dPosX, vdPosV[j] + DIMV_Y / 2, 0)) - else - EgtAddFixture( 'ViseH30', Point3d( dPosX, vdPosV[j] + DIMV_Y / 2, 0), 0, b3Raw:getDimZ()) - end - end - end - end -end --- riferimenti -local dRefX = EgtIf( sRefX == 'L', -10, 1710) -if sRefY == 'B' then - EgtAddFixture( 'RefD20', Point3d( dRefX, 100, 0)) - for i = 1, #vbT do - if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, -10, 0)) end - end -elseif sRefY == 'M' then - EgtAddFixture( 'RefD20', Point3d( dRefX, 675-110, 0)) - for i = 1, #vbT do - if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, 675, 0)) end - end -elseif sRefY == 'N' then - EgtAddFixture( 'RefD20', Point3d( dRefX, 675+110, 0)) - for i = 1, #vbT do - if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, 675, 0)) end - end -elseif sRefY == 'T' then - EgtAddFixture( 'RefD20', Point3d( dRefX, 1350-100, 0)) - for i = 1, #vbT do - if bVac and vbT[i] then EgtAddFixture( 'RefD20', Point3d( vdPosT[i] + DIMT_X / 2, 1350+10, 0)) end - end -end - DISP.ERR = 0 diff --git a/Scripts/SetUp.lua b/Scripts/SetUp.lua index 8845c7e..f69fb1f 100644 --- a/Scripts/SetUp.lua +++ b/Scripts/SetUp.lua @@ -37,7 +37,7 @@ local INVALIDPOS = "" local POS = "Pos" -- Geom Set -local GS = {{'H11','H12','H13','H14','H15'}} +local GS = {} -- Configurazione posizioni local PositionTable={{Pos = "Pos1", TcPos = "T01", Head = "H11", Group = "G1"}, @@ -48,7 +48,15 @@ local PositionTable={{Pos = "Pos1", TcPos = "T01", Head = "H11", Group = "G1"}, {Pos = "Pos6", TcPos = "T06", Head = "H11", Group = "G1"}, {Pos = "Pos7", TcPos = "T07", Head = "H11", Group = "G1"}, {Pos = "Pos8", TcPos = "T08", Head = "H11", Group = "G1"}, - {Pos = "Pos9", TcPos = "T17", Head = "H11", Group = "G2"}} + {Pos = "Pos9", TcPos = "T09", Head = "H11", Group = "G1"}, + {Pos = "Pos10", TcPos = "T10", Head = "H11", Group = "G1"}, + {Pos = "Pos11", TcPos = "T11", Head = "H11", Group = "G1"}, + {Pos = "Pos12", TcPos = "T12", Head = "H11", Group = "G1"}, + {Pos = "Pos13", TcPos = "T13", Head = "H11", Group = "G1"}, + {Pos = "Pos14", TcPos = "T14", Head = "H11", Group = "G1"}, + {Pos = "Pos15", TcPos = "T15", Head = "H11", Group = "G1"}, + {Pos = "Pos16", TcPos = "T16", Head = "H11", Group = "G1"}, + {Pos = "Pos17", TcPos = "T81", Head = "H21", Group = "G2"}} local UsePositionHead = false