562 lines
17 KiB
Plaintext
562 lines
17 KiB
Plaintext
-- Descrizione macchina Saomad-KAIROS by EgalWare s.r.l. 2023/12/07
|
|
-- 2023/09/22 DS ver 2.5i1 Prima versione
|
|
-- 2023/10/06 DS ver 2.5j1 Completato modello macchina e simulazione.
|
|
-- 2023/10/14 DS ver 2.5j2 Generazione di semplici programmi di lavorazione.
|
|
-- 2023/10/16 DS ver 2.5j3 Commenti prima di movimenti carrelli con sporgenza pinzaggi e relative ripetizioni ora sono esecuzioni.
|
|
-- 2023/10/18 DS ver 2.5j4 Aggiunta gestione nuovi tipi di scambio. Migliorato controllo pinzaggio per limiti corse X1 e X2.
|
|
-- 2023/10/24 DS ver 2.5j5 Ulteriori migliorie agli scambi. Gestione ripartenze.
|
|
-- 2023/11/27 DS ver 2.5k3 Aggiunta gestione ripartenze.
|
|
-- 2023/11/29 DS ver 2.5k6 Aggiunti diversi scambi carrelli. Corretto SpecAdjustCarrA3 in mlse.
|
|
-- 2023/12/07 DS ver 2.5l7 Modifiche ed aggiustamenti vari durante le prove.
|
|
-- 2023/12/13 AV ver.2.5l8 Piccola correzione per errore digitazione variabile in calcolo riposizionamento carrelli (SpecAdjustCarrB3)
|
|
|
|
require( 'EmtGenerator')
|
|
EgtEnableDebug( false)
|
|
|
|
PP_VER = '2.5l8'
|
|
MIN_MACH_VER = '2.5j1'
|
|
|
|
EgtOutLog ( '** Saomad-KAIROS '..PP_VER..' (MinMach '.. MIN_MACH_VER ..') **', 1)
|
|
|
|
-- Parametri macchina
|
|
NumericalControl = 'SIEMENS'
|
|
ChainSaw = false
|
|
MinY = -1225
|
|
MaxY = 690
|
|
ParkY = 400
|
|
FmaxY = 45000
|
|
MinZ = -512
|
|
MaxZ = 630
|
|
ParkZ = 620
|
|
FmaxZ = 45000
|
|
MinA = -109.5
|
|
MaxA = 109.5
|
|
ParkA = 0
|
|
FmaxA = 10440
|
|
MinC = -240
|
|
MaxC = 240
|
|
ParkC = 90
|
|
FmaxC = 18000
|
|
MillOffs = 217.0
|
|
ChSawLen = 90.0
|
|
MinX1 = 290.0
|
|
MaxX1 = 3760.0
|
|
ParkX1 = 480.0
|
|
FmaxX1 = 45000
|
|
MinX2 = -3760.0
|
|
MaxX2 = -290.0
|
|
ParkX2 = -480.0
|
|
FmaxX2 = 45000
|
|
LoadT = 1800.0
|
|
UnloadT = -1800
|
|
TurnerOffs = 0
|
|
MaxHOpen = 460
|
|
MaxVOpen = 280
|
|
LenToPress = 500
|
|
MinRX = -10
|
|
MidRX = 130
|
|
MaxRX = 430
|
|
DeltaTabY = 0
|
|
DeltaTabZ = 0
|
|
DimTabY = 500
|
|
DimTabX = 34000
|
|
DistBack = 880
|
|
StartRotation = true
|
|
AutomaticRotation = true
|
|
AutoRotMinLen = 2600
|
|
MaxUnloadLen = 0
|
|
DefTcPos = 'T1'
|
|
CoeffVM = 0.5
|
|
|
|
-- Aggiornamento con dati da B&W
|
|
local sData = EgtGetSourceDir().."Beam\\EbwData.lua"
|
|
if EgtExistsFile( sData) then
|
|
local Machine = dofile( sData)
|
|
if Machine then
|
|
if Machine.Offsets then
|
|
if Machine.Offsets.TIPO_CN == 0 then
|
|
NumericalControl = 'SIEMENS'
|
|
end
|
|
if Machine.Offsets.MIN_Y then MinY = Machine.Offsets.MIN_Y end
|
|
if Machine.Offsets.MAX_Y then MaxY = Machine.Offsets.MAX_Y end
|
|
if Machine.Offsets.MIN_Z then MinZ = Machine.Offsets.MIN_Z end
|
|
if Machine.Offsets.MAX_Z then MaxZ = Machine.Offsets.MAX_Z end
|
|
if Machine.Offsets.MIN_A then MinA = Machine.Offsets.MIN_A end
|
|
if Machine.Offsets.MAX_A then MaxA = Machine.Offsets.MAX_A end
|
|
if Machine.Offsets.MIN_C then MinC = Machine.Offsets.MIN_C end
|
|
if Machine.Offsets.MAX_C then MaxC = Machine.Offsets.MAX_C end
|
|
if Machine.Offsets.MILL_PIVOT then MillOffs = - Machine.Offsets.MILL_PIVOT end
|
|
if Machine.Offsets.MIN_X1 then MinX1 = Machine.Offsets.MIN_X1 end
|
|
if Machine.Offsets.MAX_X1 then MaxX1 = Machine.Offsets.MAX_X1 end
|
|
if Machine.Offsets.MIN_X2 then MinX2 = Machine.Offsets.MIN_X2 end
|
|
if Machine.Offsets.MAX_X2 then MaxX2 = Machine.Offsets.MAX_X2 end
|
|
ParkX1 = Machine.Offsets.PARK_X1 or ParkX1
|
|
ParkX2 = Machine.Offsets.PARK_X2 or ParkX2
|
|
if Machine.Offsets.BEAM_LOAD then LoadT = Machine.Offsets.BEAM_LOAD end
|
|
if Machine.Offsets.BEAM_UNLOAD then UnloadT = Machine.Offsets.BEAM_UNLOAD end
|
|
TurnerOffs = Machine.Offsets.TURN_OFFS or TurnerOffs
|
|
if Machine.Offsets.TAB_OFFSET_Y then DeltaTabY = Machine.Offsets.TAB_OFFSET_Y end
|
|
if Machine.Offsets.TAB_OFFSET_Z then DeltaTabZ = Machine.Offsets.TAB_OFFSET_Z end
|
|
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
|
end
|
|
ParkY = EgtClamp( ParkY, MinY, MaxY)
|
|
ParkZ = EgtClamp( ParkZ, MinZ, MaxZ)
|
|
ParkA = EgtClamp( ParkA, MinA, MaxA)
|
|
ParkC = EgtClamp( ParkC, MinC, MaxC)
|
|
end
|
|
end
|
|
|
|
EmtGeneral {
|
|
File='Saomad-KAIROS-MK1.nge',
|
|
Offset = Vector3d( 0.0, -35.34, -804.0),
|
|
AxisMaxAdjust = 30,
|
|
AxisMaxRotAdj = 0.5,
|
|
ExitMaxAdjust = 30,
|
|
ExitMaxRotAdj = 0.5,
|
|
AngDeltaMinForHome = 165,
|
|
Special = 'Saomad-KAIROS-MK1.mlse',
|
|
Processor = 'Saomad-KAIROS-MK1.mlpe'}
|
|
local BaseId = EmtBase {
|
|
Name = 'Base',
|
|
Geo='BASE/GEO',
|
|
Aux={'BASE/SOLID', 'BASE/LOAD', 'BASE/UNLOAD','BASE/TC', 'BASE/SIGN', 'BASE/COLLISION'}}
|
|
EmtAxis {
|
|
Name = 'RX1',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = X_AX(),
|
|
Pos = Point3d( -1194.4, -513.5, -52.4),
|
|
Stroke = {MinRX, MaxRX},
|
|
Home = MinRX,
|
|
Geo = 'RX1_AXIS/GEO',
|
|
Aux = {'RX1_AXIS/SOLID', 'RX1_AXIS/COLLISION'}}
|
|
EmtAxis {
|
|
Name = 'RX2',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d( 1194.4, -513.5, -52.4),
|
|
Stroke = {MinRX, MaxRX},
|
|
Home = MinRX,
|
|
Geo = 'RX2_AXIS/GEO',
|
|
Aux = {'RX2_AXIS/SOLID', 'RX2_AXIS/COLLISION'}}
|
|
local YId = EmtAxis {
|
|
Name = 'Y',
|
|
Parent = 'Base',
|
|
Token = 'Y1',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( -639.5, 372.66, 945.7),
|
|
Stroke = {MinY, MaxY},
|
|
Home = ParkY,
|
|
Geo = 'Y_AXIS/GEO',
|
|
Aux = 'Y_AXIS/SOLID'}
|
|
EmtAxis {
|
|
Name = 'Z',
|
|
Parent = 'Y',
|
|
Token = 'Z1',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( -19.25, -113.54, 790.0),
|
|
Stroke = {MinZ, MaxZ},
|
|
Home = ParkZ,
|
|
Geo = 'Z_AXIS/GEO',
|
|
Aux = {'Z_AXIS/SOLID', 'Z_AXIS/COLLISION'}}
|
|
local CId = EmtAxis {
|
|
Name = 'C',
|
|
Parent = 'Z',
|
|
Token = 'C1',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = -Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinC, MaxC},
|
|
Home = ParkC,
|
|
Geo = 'C_AXIS/GEO',
|
|
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
|
|
EmtAxis {
|
|
Name = 'A',
|
|
Parent = 'C',
|
|
Token = 'A1',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = X_AX(),
|
|
Pos = Point3d( 0, 0, MillOffs),
|
|
Stroke = {MinA, MaxA},
|
|
Home = ParkA,
|
|
Geo = 'A_AXIS/GEO',
|
|
Aux = {'A_AXIS/SOLID', 'A_AXIS/COLLISION'}}
|
|
-- Frese
|
|
local H1Id = EmtHead {
|
|
Name = 'H1',
|
|
Parent = 'A',
|
|
HSet = 'H1',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( 0, 0, 0),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Rot1W = 2,
|
|
OthColl = {'A/SOLID', 'C/SOLID'},
|
|
Geo = 'H1_HEAD/GEO'}
|
|
EgtSetInfo( H1Id, 'ZMAXONROT', '1,60')
|
|
-- Sega a catena
|
|
if ChainSaw then
|
|
EmtAxis {
|
|
Name = 'CS',
|
|
Parent = 'A',
|
|
Token = '**',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = { -90, 90},
|
|
Home = 0,
|
|
Geo = 'CS_AXIS/GEO'}
|
|
local H3Id = EmtHead {
|
|
Name = 'H3',
|
|
Parent = 'CS',
|
|
HSet = 'H1',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( 0, 0, -ChSawLen),
|
|
TDir = X_AX(),
|
|
ADir = Z_AX(),
|
|
Rot1W = 0.2,
|
|
SolCh = MCH_SCC.ADIR_NEAR,
|
|
OthColl = {'A/SOLID', 'C/SOLID'},
|
|
Geo = 'H3_HEAD/GEO'}
|
|
EgtSetInfo( H3Id, 'ZMAXONROT', '1,5')
|
|
end
|
|
-- Morse
|
|
local X1Id = EmtAxis {
|
|
Name = 'X1',
|
|
Token = 'X1',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d( -953.0, 111.75, 1450.0),
|
|
Stroke = { MinX1, MaxX1},
|
|
Home = ParkX1,
|
|
Geo = 'X1_AXIS/GEO',
|
|
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
|
local PX1Id = EmtAxis {
|
|
Name = 'PX1',
|
|
Parent = 'X1',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -Y_AX(),
|
|
Pos = Point3d( -904.0, -276.5, 1449.0),
|
|
Stroke = { 0, MaxHOpen},
|
|
Home = MaxHOpen,
|
|
Geo = 'PX1_AXIS/GEO',
|
|
Aux = {'PX1_AXIS/SOLID', 'PX1_AXIS/COLLISION'}}
|
|
local QX1Id = EmtAxis {
|
|
Name = 'QX1',
|
|
Parent = 'X1',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( -904.0, -276.5, 1449.0),
|
|
Stroke = { 0, MaxVOpen},
|
|
Home = MaxVOpen,
|
|
Geo = 'QX1_AXIS/GEO',
|
|
Aux = {'QX1_AXIS/SOLID', 'QX1_AXIS/COLLISION'}}
|
|
local X2Id = EmtAxis {
|
|
Name = 'X2',
|
|
Token = 'X2',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d( 953.0, 111.75, 1450.0),
|
|
Stroke = { MinX2, MaxX2},
|
|
Home = ParkX2,
|
|
Geo = 'X2_AXIS/GEO',
|
|
Aux = {'X2_AXIS/SOLID', 'X2_AXIS/COLLISION'}}
|
|
local PX2Id = EmtAxis {
|
|
Name = 'PX2',
|
|
Parent = 'X2',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -Y_AX(),
|
|
Pos = Point3d( 904.0, -276.5, 1449.0),
|
|
Stroke = { 0, MaxHOpen},
|
|
Home = MaxHOpen,
|
|
Geo = 'PX2_AXIS/GEO',
|
|
Aux = {'PX2_AXIS/SOLID', 'PX2_AXIS/COLLISION'}}
|
|
local QX2Id = EmtAxis {
|
|
Name = 'QX2',
|
|
Parent = 'X2',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 904.0, -276.5, 1449.0),
|
|
Stroke = { 0, MaxVOpen},
|
|
Home = MaxVOpen,
|
|
Geo = 'QX2_AXIS/GEO',
|
|
Aux = {'QX2_AXIS/SOLID', 'QX2_AXIS/COLLISION'}}
|
|
EmtAxis {
|
|
Name = 'T',
|
|
Parent = 'Base',
|
|
--Token = '**',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = - X_AX(),
|
|
Pos = Point3d( 0, 613.16, -830.037),
|
|
Stroke = { -30000, 30000},
|
|
Home = LoadT,
|
|
Geo = 'T_AXIS/GEO'}
|
|
EmtTable {
|
|
Name = 'Tab',
|
|
Parent = 'T',
|
|
Type = MCH_TT.FLAT,
|
|
Ref1 = Point3d( -DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
|
Scale = { DimTabX / 20000, DimTabY / 500, 1},
|
|
Geo = 'TABLE/GEO',
|
|
Aux = 'TABLE/SOLID'}
|
|
-- ToolChanger
|
|
local ptTcCen = Point3d( 0, 1633.0, 79.2)
|
|
EmtTcPos {
|
|
Name = 'T1',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, -3 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T1'}
|
|
EmtTcPos {
|
|
Name = 'T2',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, -2 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T2'}
|
|
EmtTcPos {
|
|
Name = 'T3',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, -1 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T3'}
|
|
EmtTcPos {
|
|
Name = 'T4',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 0 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T4'}
|
|
EmtTcPos {
|
|
Name = 'T5',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 1 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T5'}
|
|
EmtTcPos {
|
|
Name = 'T6',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 2 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T6'}
|
|
EmtTcPos {
|
|
Name = 'T7',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 3 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T7'}
|
|
EmtTcPos {
|
|
Name = 'T8',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 4 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T8'}
|
|
EmtTcPos {
|
|
Name = 'T9',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 5 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T9'}
|
|
EmtTcPos {
|
|
Name = 'T10',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 6 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T10'}
|
|
EmtTcPos {
|
|
Name = 'T11',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 7 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T11'}
|
|
EmtTcPos {
|
|
Name = 'T12',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 8 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T12'}
|
|
EmtTcPos {
|
|
Name = 'T13',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 9 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T13'}
|
|
EmtTcPos {
|
|
Name = 'T14',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 10 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T14'}
|
|
EmtTcPos {
|
|
Name = 'T15',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 11 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T15'}
|
|
if ChainSaw then
|
|
EmtTcPos {
|
|
Name = 'T16',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 12 * 22.5) - ChSawLen * Z_AX(),
|
|
TDir = -Y_AX(),
|
|
ADir = Z_AX(),
|
|
Geo = 'BASE/T16CS'}
|
|
else
|
|
EmtTcPos {
|
|
Name = 'T16',
|
|
Parent = 'Base',
|
|
Pos = ptTcCen + VectorFromPolar( 400, 12 * 22.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T16'}
|
|
end
|
|
EmtTcPos {
|
|
Name = 'T17',
|
|
Parent = 'Base',
|
|
Pos = Point3d( 0.0, 1693.5, 534.5),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T17'}
|
|
|
|
-- Aggiusto posizioni geometriche
|
|
local vtMove = Vector3d( 0, ( DeltaTabY - 0), ( DeltaTabZ - 0))
|
|
local vtMoveY = Vector3d( 0, 0, ( DeltaTabZ - 0))
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'LOAD'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'UNLOAD'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SIGN'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( YId, 'SOLID'), vtMoveY, GDB_RT.GLOB)
|
|
|
|
-- Assegno identificativi alle spie delle morse
|
|
PX1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( X1Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
|
PX2LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( X2Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
|
--function OnSetTable()
|
|
--end
|
|
|
|
---------------------------------------------------------------------
|
|
function OnSetHead()
|
|
-- Se testa con sega a catena
|
|
if EMC.HEAD == 'H3' then
|
|
-- aggiustamenti per distanza
|
|
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
|
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
|
if not EMC.VER or EMC.VER < '2.5h2' then
|
|
local vtMove = Point3d( 0, 0, -dDist) - Point3d( EMC.EXITPOS)
|
|
local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT))
|
|
EgtMove( ExitId, vtMove)
|
|
end
|
|
-- recupero valore asse CS bloccato
|
|
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
|
local dPosCS = tonumber( sVal:sub( 4) or '')
|
|
EmtModifyAxisHome( 'C', GetChainSawCHomeFromVirtualAxis( dPosCS))
|
|
else
|
|
EmtModifyAxisHome( 'C', ParkC)
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che calcola l'angolo Home di C per la sega a catena dal valore dell'asse virtuale
|
|
function GetChainSawCHomeFromVirtualAxis( dPosCS)
|
|
-- se CS=0 -> HomeC = -90
|
|
if abs( dPosCS) < 0.1 then
|
|
return 90
|
|
-- altrimenti CS=90 -> HomeC = -180
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per impostare spia stato morsa carrello X1
|
|
function SetPX1Light( bClosed)
|
|
if not PX1LightId then return end
|
|
EgtSetColor( PX1LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
|
if bClosed then
|
|
EgtSetInfo( PX1LightId, 'On', '1')
|
|
else
|
|
EgtRemoveInfo( PX1LightId, 'On')
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per leggere lo stato della morsa carrello X1
|
|
function GetPX1Light()
|
|
if not PX1LightId then return false end
|
|
return ( EgtGetInfo( PX1LightId, 'On') == '1')
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per impostare spia stato morsa carrello X2
|
|
function SetPX2Light( bClosed)
|
|
if not PX2LightId then return end
|
|
EgtSetColor( PX2LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
|
if bClosed then
|
|
EgtSetInfo( PX2LightId, 'On', '1')
|
|
else
|
|
EgtRemoveInfo( PX2LightId, 'On')
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per leggere lo stato della morsa carrello X2
|
|
function GetPX2Light()
|
|
if not PX2LightId then return false end
|
|
return ( EgtGetInfo( PX2LightId, 'On') == '1')
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per resettare tutte le attivazioni della macchina
|
|
function OnResetMachine()
|
|
EmtUnlinkAllRawPartsFromGroups()
|
|
EmtUnlinkAllFixturesFromGroups()
|
|
SetPX1Light( false)
|
|
SetPX2Light( false)
|
|
-- nascondo Vmill
|
|
local nRawId = EgtGetFirstRawPart()
|
|
while nRawId do
|
|
local nVmId = EgtGetFirstNameInGroup( nRawId, 'VMill')
|
|
local nId = EgtGetFirstInGroup( nRawId)
|
|
while nId do
|
|
EgtSetStatus( nId, EgtIf( nId ~= nVmId, GDB_ST.ON, GDB_ST.OFF))
|
|
nId = EgtGetNext( nId)
|
|
end
|
|
nRawId = EgtGetNextRawPart( nRawId)
|
|
end
|
|
EgtSetStatus( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') or GDB_ID.NULL, GDB_ST.OFF)
|
|
end
|