- Aggiornato 3D con macchina reale
- Sistemata direzione assi - Modificata posizione scarico per pezzi standard e pezzi corti - Collisioni scritte sotto forma di tabella - Aggiunta note utensili e lavorazioni - Sistemati ToolHolders
This commit is contained in:
Vendored
+2
-1
@@ -95,6 +95,7 @@
|
||||
"EgtGetPartInRawPartCount",
|
||||
"EgtGetOperationPhase",
|
||||
"EgtSetOperationMode",
|
||||
"EgtSetCalcTool"
|
||||
"EgtSetCalcTool",
|
||||
"EmtModifyAxisStroke"
|
||||
]
|
||||
}
|
||||
+3
-3
@@ -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
|
||||
|
||||
+11
-11
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
+2
-2
@@ -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
|
||||
|
||||
+23
-12
@@ -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
|
||||
|
||||
|
||||
+35
-20
@@ -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 = {}
|
||||
|
||||
+4
-2
@@ -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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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]
|
||||
Reference in New Issue
Block a user