diff --git a/.vscode/settings.json b/.vscode/settings.json index fc5c416..8f816a6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -95,6 +95,7 @@ "EgtGetPartInRawPartCount", "EgtGetOperationPhase", "EgtSetOperationMode", - "EgtSetCalcTool" + "EgtSetCalcTool", + "EmtModifyAxisStroke" ] } \ No newline at end of file diff --git a/Beam/BeamData.lua b/Beam/BeamData.lua index 843f738..e816670 100644 --- a/Beam/BeamData.lua +++ b/Beam/BeamData.lua @@ -8,8 +8,8 @@ local BeamData = { ROT90 = false, -- flag abilitazione rotazione 90 gradi MIN_WIDTH = 40, -- larghezza minima del grezzo MIN_HEIGHT = 40, -- altezza minima del grezzo - MAX_WIDTH = 450, -- larghezza massima del grezzo - MAX_HEIGHT = 250, -- altezza massima 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) @@ -22,7 +22,7 @@ local BeamData = { MAX_LEN_SCRAP_START = 270, -- massima lunghezza scarto di testa MAX_DIM_HTCUT = 205, -- 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 = 190, -- altezza minima di trave alta + MIN_DIM_HBEAM = 621, -- altezza minima di trave alta MAX_DIM_DICE = 155, -- dimensione trasversale massima cubetto MAX_LEN_DICE = 400, -- lunghezza massima cubetto DECR_VERT_CUT = 12.5, -- riduzione profondità per affondamento verticale in taglio orizzontale diff --git a/Beam/EbwData.lua b/Beam/EbwData.lua index 0575d03..75b5076 100644 --- a/Beam/EbwData.lua +++ b/Beam/EbwData.lua @@ -5,18 +5,18 @@ local Offsets = { MAX_Y=540, MIN_Z=-512, MAX_Z=910, - MIN_A=-109.5, - MAX_A=109.5, + MIN_A=-120, + MAX_A=120, MIN_C=-240, MAX_C=240, - MIN_X1=290, - MAX_X1=3735, - PARK_X1=600, - MIN_X2=-3735, - MAX_X2=-290, - PARK_X2=-600, + MIN_X1=62, + MAX_X1=3650, + PARK_X1=570, + MIN_X2=-3650, + MAX_X2=-62, + PARK_X2=-500, BEAM_LOAD=1800.0, - BEAM_UNLOAD=-1800, + BEAM_UNLOAD=-2060, TURN_OFFS=0, MILL_PIVOT=-211.00, TAB_OFFSET_Y=0, @@ -28,9 +28,9 @@ local Offsets = { local Trave = { YMIN=30, - YMAX=451, + YMAX=251, ZMIN=30, - ZMAX=251 + ZMAX=621 } local User = { diff --git a/MachNotes.ini b/MachNotes.ini new file mode 100644 index 0000000..5f58449 --- /dev/null +++ b/MachNotes.ini @@ -0,0 +1,50 @@ +; Commento per evitare BOM con UTF-8 +;Index = Type, Description, Default Value +; Type : b=boolean, d=double, l=lenght, s=string + +[Drilling] + +[Sawing] + +[Milling] +0=d,MaxElev,0 +1=d,OutRaw,0 +2=d,SideElev,0 +3=d,TrimExt,0 +4=sr,VtFaceUse,0,0,0 + +[Pocketing] +0=d,MaxElev,0 +1=b,Open,0 +2=d,OpenMinSave,0 +3=d,OpenOutRaw,0 +4=d,MaxOptSize,0 + +[Mortising] +0=d,MaxElev,0 + +[Chiseling] + +[SawRoughing] + +[SawFinishing] + +[GenMachining] +0=l,LinTol,0.1 +1=l,MaxLen,2 +2=s,Type,ZigZag +3=d,SideAng,90 +4=l,Step,10 +5=l,OffsProj,0 +6=l,LiTang,0 +7=l,LiOrth,0 +8=l,LiElev,0 +9=l,LoTang,0 +10=l,LoOrth,0 +11=l,LoElev,0 +12=b,DirFromGuide,1 + +[SurfRoughing] + +[SurfFinishing] +0=b,SkipMaxDown,1 diff --git a/Saomad-KAIROS.ini b/Saomad-KAIROS.ini index b20647e..982f7aa 100644 --- a/Saomad-KAIROS.ini +++ b/Saomad-KAIROS.ini @@ -68,7 +68,7 @@ Active=0 [ToolHolder] H1.1=Standard.nge H1.1:MILL_NOTIP=MillNoTip.nge -H1.1:SAW_FLAT=TcSaw2.nge +H1.1:SAW_FLAT=TcSaw.nge H3.1=ChainSaw.nge [Machinings] @@ -81,7 +81,7 @@ Chiseling=0 SawRoughing=0 SawFinishing=0 GenMachining=0 -SurfFinishing=1 +SurfFinishing=0 [Machining] InitScript=InitMach.lua diff --git a/Saomad-KAIROS.mlde b/Saomad-KAIROS.mlde index 8026d57..34d4625 100644 --- a/Saomad-KAIROS.mlde +++ b/Saomad-KAIROS.mlde @@ -1,11 +1,12 @@ -- Descrizione macchina Saomad-KAIROS by EgalWare s.r.l. 2024/06/27 -- 2024/06/27 ver 2.6f1 Prima versione (derivata da Kairos023) -- 2024/07/01 ver 2.6g1 Aggiornato 3D con nuovo gruppo testa +-- 2024/07/03 ver 2.6g2 Aggiornato 3D con modello reale e altre piccole modifiche require( 'EmtGenerator') EgtEnableDebug( false) -PP_VER = '2.6g1' +PP_VER = '2.6g2' MIN_MACH_VER = '2.5j1' EgtOutLog ( '** Saomad-KAIROS '..PP_VER..' (MinMach '.. MIN_MACH_VER ..') **', 1) @@ -21,13 +22,13 @@ MinZ = -298 MaxZ = 915 ParkZ = 900 FmaxZ = 45000 -MinA = -109.5 -MaxA = 109.5 +MinA = -120 +MaxA = 120 ParkA = 0 FmaxA = 10440 MinC = -240 MaxC = 240 -ParkC = 90 +ParkC = -90 FmaxC = 18000 MillOffs = 211.0 ChSawLen = 141.5 @@ -41,6 +42,7 @@ ParkX2 = -480.0 FmaxX2 = 45000 LoadT = 1800.0 UnloadT = -1800 +UnloadSmT = UnloadT TurnerOffs = 0 MaxHOpen = 301 MaxVOpen = 621 @@ -92,6 +94,7 @@ if EgtExistsFile( sData) then ParkZ = EgtClamp( ParkZ, MinZ, MaxZ) ParkA = EgtClamp( ParkA, MinA, MaxA) ParkC = EgtClamp( ParkC, MinC, MaxC) + UnloadSmT = UnloadT end end @@ -147,7 +150,7 @@ EmtAxis { Parent = 'C', Token = 'A1', Type = MCH_AT.ROTARY, - Dir = Y_AX(), + Dir = X_AX(), Pos = Point3d( 0, 0, MillOffs), Stroke = {MinA, MaxA}, Home = ParkA, @@ -183,7 +186,7 @@ local H3Id = EmtHead { HSet = 'H1', Type = MCH_HT.STD, Pos = Point3d( 0, 0, -ChSawLen), - TDir = -X_AX(), + TDir = Y_AX(), ADir = Z_AX(), Rot1W = 0.2, SolCh = MCH_SCC.ADIR_NEAR, @@ -197,7 +200,7 @@ local X1Id = EmtAxis { Parent = 'Base', Type = MCH_AT.LINEAR, Dir = -X_AX(), - Pos = Point3d( -1253.5, 245.0, 918.94), + Pos = Point3d( -1193.5, 245.0, 918.94), Stroke = { MinX1, MaxX1}, Home = ParkX1, Geo = 'X1_AXIS/GEO', @@ -207,7 +210,7 @@ local PX1Id = EmtAxis { Parent = 'X1', Type = MCH_AT.LINEAR, Dir = -Y_AX(), - Pos = Point3d( -1253.5, 95.0, 918.94), + Pos = Point3d( -1193.5, 95.0, 918.94), Stroke = { 0, MaxHOpen}, Home = MaxHOpen, Geo = 'PX1_AXIS/GEO', @@ -217,7 +220,7 @@ local QX1Id = EmtAxis { Parent = 'X1', Type = MCH_AT.LINEAR, Dir = Z_AX(), - Pos = Point3d( -874.2, -22.5, 668.9787), + Pos = Point3d( -814.2, -22.5, 668.9787), Stroke = { 0, MaxVOpen}, Home = MaxVOpen, Geo = 'QX1_AXIS/GEO', @@ -228,7 +231,7 @@ local X2Id = EmtAxis { Parent = 'Base', Type = MCH_AT.LINEAR, Dir = -X_AX(), - Pos = Point3d( 1253.5001, 245.0, 918.94), + Pos = Point3d( 1193.5001, 245.0, 918.94), Stroke = { MinX2, MaxX2}, Home = ParkX2, Geo = 'X2_AXIS/GEO', @@ -238,7 +241,7 @@ local PX2Id = EmtAxis { Parent = 'X2', Type = MCH_AT.LINEAR, Dir = -Y_AX(), - Pos = Point3d( 1253.5001, 95.0, 918.94), + Pos = Point3d( 1193.5001, 95.0, 918.94), Stroke = { 0, MaxHOpen}, Home = MaxHOpen, Geo = 'PX2_AXIS/GEO', @@ -248,7 +251,7 @@ local QX2Id = EmtAxis { Parent = 'X2', Type = MCH_AT.LINEAR, Dir = Z_AX(), - Pos = Point3d( 874.2001, 640.4727, -1591.561), + Pos = Point3d( 814.2001, 640.4727, -1591.561), Stroke = { 0, MaxVOpen}, Home = MaxVOpen, Geo = 'QX2_AXIS/GEO', @@ -414,8 +417,16 @@ function OnSetHead() local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS) local dPosCS = tonumber( sVal:sub( 4) or '') EmtModifyAxisHome( 'C', GetChainSawCHomeFromVirtualAxis( dPosCS)) + -- altrimenti else EmtModifyAxisHome( 'C', ParkC) + -- se lama + if EMC.TCPOS == 'T21' then + EmtModifyAxisStroke( 'A', { -100, 100}) + -- altrimenti + else + EmtModifyAxisStroke( 'A', { MinA, MaxA}) + end end end diff --git a/Saomad-KAIROS.mlpe b/Saomad-KAIROS.mlpe index 8351511..08bc01a 100644 --- a/Saomad-KAIROS.mlpe +++ b/Saomad-KAIROS.mlpe @@ -56,27 +56,42 @@ function OnSimulStart() DumpCollisionCheck( EMT.COLLOBJ, 'Collision Objects :', 4) -- Preparo lista solidi macchina con cui possono collidere gli oggetti sopra riportati (in aggiunta a VMill) EMT.MCODET = {} - EMT.MCODET[1] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetAxisId( 'X1'), 'COLLISION'), 'STM1') or GDB_ID.NULL - EMT.MCODET[2] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetAxisId( 'PX1'), 'COLLISION'), 'STM1') or GDB_ID.NULL - EMT.MCODET[3] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetAxisId( 'X2'), 'COLLISION'), 'STM1') or GDB_ID.NULL - EMT.MCODET[4] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetAxisId( 'PX2'), 'COLLISION'), 'STM1') or GDB_ID.NULL - EMT.MCODET[5] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM1') or GDB_ID.NULL - EMT.MCODET[6] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM2') or GDB_ID.NULL - EMT.MCODET[7] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM3') or GDB_ID.NULL - EMT.MCODET[8] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM4') or GDB_ID.NULL - EMT.MCODET[9] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM5') or GDB_ID.NULL - EMT.MCODET[10] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM6') or GDB_ID.NULL - EMT.MCODET[11] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM7') or GDB_ID.NULL - EMT.MCODET[12] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM8') or GDB_ID.NULL - EMT.MCODET[13] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM9') or GDB_ID.NULL - EMT.MCODET[14] = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'COLLISION'), 'STM10') or GDB_ID.NULL - for i = #EMT.MCODET, 1, -1 do - if not EMT.MCODET[i] or EMT.MCODET[i] == GDB_ID.NULL then - table.remove( EMT.MCODET, i) - EgtOutLog( ' Warning : MCODET element (' .. tostring( i) .. ') is null') - elseif EgtGetDebugLevel() >= 4 then - EgtOutLog( ' MCODET element (' .. tostring( i) .. ') is ok') + local McdData = { { Grp = 'X1', Sub = 'COLLISION', Name = 'STM1'}, + { Grp = 'X1', Sub = 'COLLISION', Name = 'STM2'}, + { Grp = 'PX1', Sub = 'COLLISION', Name = 'STM1'}, + { Grp = 'X2', Sub = 'COLLISION', Name = 'STM1'}, + { Grp = 'X2', Sub = 'COLLISION', Name = 'STM2'}, + { Grp = 'PX2', Sub = 'COLLISION', Name = 'STM1'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM1'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM2'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM3'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM4'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM5'}, + --{ Grp = 'Base', Sub = 'COLLISION', Name = 'STM6'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM7'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM8'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM9'}, + { Grp = 'Base', Sub = 'COLLISION', Name = 'STM10'}} + EgtOutLog( 'MCODET Objects :', 4) + local nMcdNullCnt = 0 + for i = 1, #McdData do + local nGrpId + if McdData[i].Grp == 'Base' then + nGrpId = EgtGetBaseId( 'Base') + else + nGrpId = EgtGetAxisId( McdData[i].Grp) end + local nId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( nGrpId, McdData[i].Sub), McdData[i].Name) + if nId then + table.insert( EMT.MCODET, nId) + EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' (' .. tostring( nId) .. ') is ok', 4) + else + nMcdNullCnt = nMcdNullCnt + 1 + EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is null', 4) + end + end + if nMcdNullCnt > 0 then + EgtOutLog( 'Warning : MCODET with one or more null Element(s) ') end -- Preparo lista collisioni vuota EMT.COLLIDE = {} diff --git a/Saomad-KAIROS.mlse b/Saomad-KAIROS.mlse index 5bda9bc..20f2933 100644 --- a/Saomad-KAIROS.mlse +++ b/Saomad-KAIROS.mlse @@ -41,6 +41,7 @@ local MIN_JOIN_SL = 290 local MIN_JOIN_LL = 400 local MinJoin = MIN_JOIN_SS local MinOther = abs( MinX1) + abs( MaxX2) + MinJoin +local MaxLenSmT = 1500 -- massima lunghezza pezzo scaricato con nastri verdi ----------------------- Variabili ----------------------------------- local Test = false @@ -412,7 +413,8 @@ function OnSpecialApplyDisposition() if IsStartOrRestPhase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE) then EMC.TPOS = dPosT SpecSetCarrPosFromCmds( vCmd) - local dDistFront = EgtIf( EMC.LB < abs( MinX2 - UnloadT), MinJoin, EMC.LB - abs( MinX2 - UnloadT) + MinJoin + DeltaTol) + local CurrUnloadT = EgtIf( EMC.LB < MaxLenSmT, UnloadSmT, UnloadT) + local dDistFront = EgtIf( EMC.LB < abs( MinX2 - CurrUnloadT), MinJoin, EMC.LB - abs( MinX2 - CurrUnloadT) + MinJoin + DeltaTol) vCmd2 = SpecCalcCarriages( dDistFront, 0) if vCmd and #vCmd > 1 and vCmd2 and #vCmd2 > 1 then table.insert( vCmd, { 0, 'CARR_MOVE'}) @@ -1309,7 +1311,7 @@ function SpecCalcUnload() end -- Se non supero la lunghezza massima di scarico, sposto il pezzo in posizione di scarico if bStdUl then - local dFinT = UnloadT - EMC.LB + local dFinT = EgtIf( EMC.LB < MaxLenSmT, UnloadSmT, UnloadT) - EMC.LB local dFinV = dFinT + EMC.VDELTA table.insert( vCmd, { 2, 'T', dFinT, 'X2', dFinV}) else diff --git a/Saomad-KAIROS.nge b/Saomad-KAIROS.nge index 2fcca7b..321af2b 100644 Binary files a/Saomad-KAIROS.nge and b/Saomad-KAIROS.nge differ diff --git a/THolders/Standard97.nge b/THolders/Standard_97.nge similarity index 100% rename from THolders/Standard97.nge rename to THolders/Standard_97.nge diff --git a/THolders/Standard_LC.nge b/THolders/Standard_LC.nge deleted file mode 100644 index 7d2b4c3..0000000 Binary files a/THolders/Standard_LC.nge and /dev/null differ diff --git a/THolders/Standard_LC_75.nge b/THolders/Standard_LC_75.nge new file mode 100644 index 0000000..aaf043b Binary files /dev/null and b/THolders/Standard_LC_75.nge differ diff --git a/THolders/TcSaw.nge b/THolders/TcSaw.nge index 99d4f05..fe23ed7 100644 Binary files a/THolders/TcSaw.nge and b/THolders/TcSaw.nge differ diff --git a/ToolNotes.ini b/ToolNotes.ini new file mode 100644 index 0000000..a9a0f63 --- /dev/null +++ b/ToolNotes.ini @@ -0,0 +1,20 @@ +; Commento per evitare BOM con UTF-8 +; Index, Type, Description, Value +; Index = 0,1,..,n +; Type : d=double, l=lenght, s=string, b=boolean, dr=double recalc, sr= string recalc, lr=lenght recalc, br=boolean recalc +; Description : STEP, SIDESTEP, ... + +[DRILL_STD] +0=sr,TH, + +[SAW_STD] + +[SAW_FLAT] + +[MILL_STD] +0=sr,TH, + +[MILL_NOTIP] +0=sr,TH, + +[MORTISE_STD]