610 lines
19 KiB
Plaintext
610 lines
19 KiB
Plaintext
-- Descrizione macchina Essetre-90480027 by EgalTech s.r.l. 2023/07/03
|
|
-- Macchina Wall.
|
|
-- 2022/01/20 ver 2.4a3 DS In ExecScrapRemove migliorato calcolo centro di ogni parte del Vmill.
|
|
-- 2022/01/30 ver 2.4a4 DS In ExecScrapRemove esteso calcolo centri di ogni parte del Vmill. Migliorato controllo forature da sopra nel tavolo.
|
|
-- 2022/11/11 ver 2.4k1 DS In genera CN aggiunta a OnLinear gestione eventuale prima emissione di foratura orizzontale.
|
|
-- 2023/07/03 ver 2.5g1 DS In genera CN corretta altezza in Z grezzo per eventuale spostamento.
|
|
-- 2024/08/28 ver 2.6h1 LM In simulazione e macchina aggiunto solido di collisione per supporti teste foratrici.
|
|
-- In WallData -> GetChainSawStartAngs si varia l'angolo suggerito in base alla quota Y della faccia da lavorare.
|
|
-- 2024/09/19 ver 2.6i1 Modificato YAML per comunicazione versioni a LiMan. Aggiunta PP_NVER, versione in formato numerico.
|
|
|
|
require( 'EmtGenerator')
|
|
EgtEnableDebug( false)
|
|
|
|
PP_VER = '3.1a1'
|
|
PP_NVER = '3.1.1.1'
|
|
|
|
-- Parametri macchina
|
|
NumericalControl = 'NUM' -- NUM o TPA
|
|
MinY = 0.0
|
|
MaxY = 18200.0
|
|
MinX1 = -7910.0
|
|
MaxX1 = 0.0
|
|
MinZ1 = -1585.0
|
|
MaxZ1 = 0.0
|
|
MinB1 = -135.0
|
|
MaxB1 = 135.0
|
|
MinC1 = -275.0
|
|
MaxC1 = 275.0
|
|
MillOffs = 202.0
|
|
ChSawLen = 96.0
|
|
ParkC1 = 0
|
|
ParkB1 = 0
|
|
MinX2 = -6075.0
|
|
MaxX2 = -770.0
|
|
MinZ2 = -1180.0
|
|
MaxZ2 = 0.0
|
|
MinB2 = 0.0
|
|
MaxB2 = 90.0
|
|
MinC2 = -275.0
|
|
MaxC2 = 275.0
|
|
MinZ3 = 0
|
|
MaxZ3 = 480
|
|
HomeZ3 = 100
|
|
MinX3 = 300
|
|
MaxX3 = 2400
|
|
HomeX3 = 2330
|
|
MinZ4 = 0
|
|
MaxZ4 = 480
|
|
HomeZ4 = 100
|
|
MinX4 = -2400
|
|
MaxX4 = -300
|
|
HomeX4 = -2330
|
|
MinX5 = 0
|
|
MaxX5 = 800
|
|
HomeX5 = 0
|
|
SawDeltaX = 347.5
|
|
SawDeltaY = 0.0
|
|
SawDeltaZ = -117.9
|
|
SawOffs = 163.5
|
|
DrillDeltaX = -306.35
|
|
DrillDeltaY = -1149.285
|
|
MchDrillDeltaY = -1149.285
|
|
DrillDeltaZ = -971.0
|
|
Drill2DeltaX = -306.35
|
|
Drill2DeltaY = -4939.285
|
|
MchDrill2DeltaY = -4939.285
|
|
Drill2DeltaZ = -971.0
|
|
DimTabX = 16800.0
|
|
DimTabY = 3500.0
|
|
DeltaTabX = 809.6
|
|
DeltaTabY = -1294.3 - DimTabY
|
|
DeltaTabZ = -990.0
|
|
CoeffVM = 0.75
|
|
COLL_SAFE_DIST = 2
|
|
SafeTableDown = - ( 7 + COLL_SAFE_DIST)
|
|
DimSupports = 2800
|
|
|
|
-- Aggiornamento con dati da TechnoEssetre7
|
|
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480027.data"
|
|
local sData = EgtGetCurrMachineDir().."\\Wall\\Ts3Data.lua"
|
|
if EgtExistsFile( sTs3Data) then
|
|
EgtCopyFile( sTs3Data, sData)
|
|
local sTs3DataOld = sTs3Data..'.old'
|
|
EgtEraseFile( sTs3DataOld)
|
|
EgtRenameFile( sTs3Data, sTs3DataOld)
|
|
end
|
|
|
|
if EgtExistsFile( sData) then
|
|
local Machine = dofile( sData)
|
|
if Machine and Machine.Offsets then
|
|
local MchOffs = Machine.Offsets
|
|
NumericalControl = EgtIf( MchOffs.TIPO_CN ~= 1, 'NUM', 'TPA')
|
|
if MchOffs.MAX_Y then MinY = -MchOffs.MAX_Y end
|
|
if MchOffs.MIN_Y then MaxY = -MchOffs.MIN_Y end
|
|
MinX1 = MchOffs.MIN_X or MinX1
|
|
MaxX1 = MchOffs.MAX_X or MaxX1
|
|
MinZ1 = MchOffs.MIN_Z or MinZ1
|
|
MaxZ1 = MchOffs.MAX_Z or MaxZ1
|
|
MinB1 = MchOffs.MIN_B or MinB1
|
|
MaxB1 = MchOffs.MAX_B or MaxB1
|
|
MinC1 = MchOffs.MIN_C or MinC1
|
|
MaxC1 = MchOffs.MAX_C or MaxC1
|
|
MinX2 = MchOffs.MIN_U or MinX2
|
|
MaxX2 = MchOffs.MAX_U or MaxX2
|
|
MinZ2 = MchOffs.MIN_W or MinZ2
|
|
MaxZ2 = MchOffs.MAX_W or MaxZ2
|
|
MinB2 = MchOffs.MIN_V or MinB2
|
|
MaxB2 = MchOffs.MAX_V or MaxB2
|
|
MinC2 = MchOffs.MIN_A or MinC2
|
|
MaxC2 = MchOffs.MAX_A or MaxC2
|
|
MillOffs = MchOffs.PIVOT_MILL or MillOffs
|
|
SawOffs = MchOffs.PIVOT_SAW or SawOffs
|
|
if MchOffs.ZERO_Y_MILL then DeltaTabX = - MchOffs.ZERO_Y_MILL end
|
|
if MchOffs.ZERO_X_MILL then DeltaTabY = ( MchOffs.ZERO_X_MILL - DimTabY) end
|
|
DeltaTabZ = MchOffs.ZERO_Z_MILL or DeltaTabZ
|
|
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_SAW then SawDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_SAW) end
|
|
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_SAW then SawDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_SAW) end
|
|
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_SAW then SawDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_SAW) end
|
|
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_DRILL then DrillDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_DRILL) end
|
|
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_DRILL then MchDrillDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_DRILL) end
|
|
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_DRILL then DrillDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_DRILL) end
|
|
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_DRILL2 then Drill2DeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_DRILL2) end
|
|
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_DRILL2 then MchDrill2DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_DRILL2) end
|
|
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_DRILL2 then Drill2DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_DRILL2) end
|
|
end
|
|
end
|
|
|
|
-- Spostamenti della lama rispetto al disegno
|
|
local SawOffsX = SawDeltaX - 347.5
|
|
local SawOffsY = SawDeltaY - 0
|
|
local SawOffsZ = SawDeltaZ + 117.9
|
|
|
|
-- Spostamenti del foratore lato riferimenti rispetto al disegno
|
|
local DrillOffsX = DrillDeltaX + 306.35
|
|
local DrillOffsY = DrillDeltaY + 1149.285
|
|
local DrillOffsZ = DrillDeltaZ + 971.0
|
|
|
|
-- Spostamenti del foratore opposto ai riferimenti rispetto al disegno
|
|
local Drill2OffsX = Drill2DeltaX + 306.35
|
|
local Drill2OffsY = Drill2DeltaY + 4939.285
|
|
local Drill2OffsZ = Drill2DeltaZ + 971.0
|
|
|
|
EmtGeneral {
|
|
File='Essetre-90480027.nge',
|
|
Offset = Vector3d( -640.35, -3620.00, -1710.0),
|
|
AxisMaxAdjust = 9250,
|
|
ExitMaxAdjust = 9250,
|
|
Special = 'Essetre-WALL.mlse',
|
|
Processor = 'Essetre-WALL.mlpe'}
|
|
local BaseId = EmtBase {
|
|
Name = 'Base',
|
|
Geo='BASE/GEO',
|
|
Aux={'BASE/LOAD', 'BASE/MOD01', 'BASE/MOD02', 'BASE/MOD03', 'BASE/MOD04', 'BASE/MOD05', 'BASE/MOD06', 'BASE/MOD07', 'BASE/MOD08', 'BASE/SUPPORTS', 'BASE/REF', 'BASE/COLLISION'}}
|
|
local vtMove = Vector3d( DeltaTabX - 1029.65, DeltaTabY + 4794.3, DeltaTabZ + 990)
|
|
EgtMove( BaseId, vtMove, GDB_RT.GLOB)
|
|
local FrOriginId = EgtFR( EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'SUPPORTS'), 'ORIGIN'), GDB_ID.ROOT)
|
|
local GroupSupportId = EgtGetFirstNameInGroup( BaseId, 'SUPPORTS')
|
|
local StmId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), 'STM')
|
|
EgtMove( StmId, Vector3d( 0, 0, SafeTableDown))
|
|
local dScaleCoeff = DimSupports / DimTabY
|
|
EgtScale( StmId, FrOriginId, 1, dScaleCoeff, 1, GDB_RT.GLOB)
|
|
EgtScale( GroupSupportId, FrOriginId, 1, dScaleCoeff, 1, GDB_RT.GLOB)
|
|
|
|
-- Tavola
|
|
EmtTable {
|
|
Name = 'Tab',
|
|
Parent = 'Base',
|
|
Type = MCH_TT.FLAT,
|
|
Ref1 = Point3d( DeltaTabX, DeltaTabY, DeltaTabZ),
|
|
Geo = 'TABLE/GEO'}
|
|
-- Traversa
|
|
local YId = EmtAxis {
|
|
Name = 'Y',
|
|
Parent = 'Base',
|
|
Invert = true,
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = X_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinY, MaxY},
|
|
Home = 0,
|
|
Geo = 'Y_AXIS/GEO',
|
|
Aux = {'Y_AXIS/SOLID', 'Y_AXIS/TC', 'Y_AXIS/DRILL_BASE1', 'Y_AXIS/DRILL_BASE2', 'Y_AXIS/COLLISION'}}
|
|
EgtMove( EgtGetFirstNameInGroup( YId, 'DRILL_BASE1'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( YId, 'DRILL_BASE2'), Vector3d( Drill2OffsX, Drill2OffsY, Drill2OffsZ), GDB_RT.GLOB)
|
|
-- Testa per frese
|
|
EmtAxis {
|
|
Name = 'X1',
|
|
Parent = 'Y',
|
|
Token = 'X',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinX1, MaxX1},
|
|
Home = MaxX1,
|
|
Geo = 'X1_AXIS/GEO',
|
|
Aux = {'X1_AXIS/SOLID'}}
|
|
EmtAxis {
|
|
Name = 'Z1',
|
|
Parent = 'X1',
|
|
Token = 'Z',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinZ1, MaxZ1},
|
|
Home = 0,
|
|
Geo = 'Z1_AXIS/GEO',
|
|
Aux = {'Z1_AXIS/SOLID'}}
|
|
EmtAxis {
|
|
Name = 'C1',
|
|
Parent = 'Z1',
|
|
Token = 'C',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinC1, MaxC1},
|
|
Home = ParkC1,
|
|
Geo = 'C1_AXIS/GEO',
|
|
Aux = {'C1_AXIS/SOLID', 'C1_AXIS/COLLISION'}}
|
|
EmtAxis {
|
|
Name = 'B1',
|
|
Parent = 'C1',
|
|
Token = 'B',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d( 0, 0, MillOffs),
|
|
Stroke = {MinB1, MaxB1},
|
|
Home = ParkB1,
|
|
Geo = 'B1_AXIS/GEO',
|
|
Aux = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION'}}
|
|
EmtHead {
|
|
Name = 'H1',
|
|
Parent = 'B1',
|
|
HSet = 'H1',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( 0, 0, 0),
|
|
TDir = Z_AX(),
|
|
ADir = -Y_AX(),
|
|
Rot1W = 0.1,
|
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
|
Geo = 'H1_HEAD/GEO'}
|
|
-- Sega a catena
|
|
EmtAxis {
|
|
Name = 'A1',
|
|
Parent = 'B1',
|
|
Token = '**',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = { 0, 270},
|
|
Home = 180,
|
|
Geo = 'A1_AXIS/GEO'}
|
|
local H3Id = EmtHead {
|
|
Name = 'H3',
|
|
Parent = 'A1',
|
|
HSet = 'H1',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( 0, 0, -ChSawLen),
|
|
TDir = Y_AX(),
|
|
ADir = Z_AX(),
|
|
Rot1W = 0.1,
|
|
SolCh = MCH_SCC.ADIR_NEAR,
|
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
|
Geo = 'H3_HEAD/GEO'}
|
|
EgtSetInfo( H3Id, 'ZSAFEDELTA', 60)
|
|
-- Testa per Lama
|
|
local X2Id = EmtAxis {
|
|
Name = 'X2',
|
|
Parent = 'Y',
|
|
Token = 'X',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinX2, MaxX2},
|
|
Home = MinX2,
|
|
Geo = 'X2_AXIS/GEO',
|
|
Aux = {'X2_AXIS/SOLID'}}
|
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, 0), GDB_RT.GLOB)
|
|
local Z2Id = EmtAxis {
|
|
Name = 'Z2',
|
|
Parent = 'X2',
|
|
Token = 'Z',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinZ2, MaxZ2},
|
|
Home = 0,
|
|
Geo = 'Z2_AXIS/GEO',
|
|
Aux = {'Z2_AXIS/SOLID'}}
|
|
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
|
local C2Id = EmtAxis {
|
|
Name = 'C2',
|
|
Parent = 'Z2',
|
|
Token = 'C',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( SawDeltaX, SawDeltaY, 0),
|
|
Stroke = {MinC2, MaxC2},
|
|
Home = 0,
|
|
Geo = 'C2_AXIS/GEO',
|
|
Aux = {'C2_AXIS/SOLID', 'C2_AXIS/COLLISION'}}
|
|
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( C2Id, 'COLLISION'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
|
local B2Id = EmtAxis {
|
|
Name = 'B2',
|
|
Parent = 'C2',
|
|
Token = 'B',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d( SawDeltaX, SawDeltaY, SawDeltaZ + SawOffs),
|
|
Stroke = {MinB2, MaxB2},
|
|
Home = 90,
|
|
Geo = 'B2_AXIS/GEO',
|
|
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
|
EgtMove( EgtGetFirstNameInGroup( B2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( B2Id, 'COLLISION'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
|
local H2Id = EmtHead {
|
|
Name = 'H2',
|
|
Parent = 'B2',
|
|
HSet = 'H2',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( SawDeltaX, SawDeltaY, SawDeltaZ),
|
|
TDir = Z_AX(),
|
|
ADir = -Y_AX(),
|
|
Rot1W = 0.2,
|
|
OthColl = {'B2/SOLID', 'C2/SOLID'},
|
|
Geo = 'H2_HEAD/GEO'}
|
|
-- Foratore
|
|
local Z3Id = EmtAxis {
|
|
Name = 'Z3',
|
|
Parent = 'Y',
|
|
Token = 'Z',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinZ3, MaxZ3},
|
|
Home = HomeZ3,
|
|
Geo = 'Z3_AXIS/GEO',
|
|
Aux = {'Z3_AXIS/SOLID'}}
|
|
EgtMove( EgtGetFirstNameInGroup( Z3Id, 'SOLID'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
|
|
local X3Id = EmtAxis {
|
|
Name = 'X3',
|
|
Parent = 'Z3',
|
|
Token = 'X',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinX3, MaxX3},
|
|
Home = HomeX3,
|
|
Geo = 'X3_AXIS/GEO',
|
|
Aux = {'X3_AXIS/SOLID'}}
|
|
EgtMove( EgtGetFirstNameInGroup( X3Id, 'SOLID'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
|
|
local H5Id = EmtHead {
|
|
Name = 'H5',
|
|
Parent = 'X3',
|
|
HSet = 'H5',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( DrillDeltaX, DrillDeltaY, DrillDeltaZ),
|
|
TDir = Y_AX(),
|
|
Geo = 'H5_HEAD/GEO'}
|
|
EgtSetInfo( H5Id, 'ABOVE', '0')
|
|
-- Foratore opposto
|
|
local Z4Id = EmtAxis {
|
|
Name = 'Z4',
|
|
Parent = 'Y',
|
|
Token = 'Z',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinZ4, MaxZ4},
|
|
Home = HomeZ4,
|
|
Geo = 'Z4_AXIS/GEO',
|
|
Aux = {'Z4_AXIS/SOLID'}}
|
|
EgtMove( EgtGetFirstNameInGroup( Z4Id, 'SOLID'), Vector3d( Drill2OffsX, Drill2OffsY, Drill2OffsZ), GDB_RT.GLOB)
|
|
local X4Id = EmtAxis {
|
|
Name = 'X4',
|
|
Parent = 'Z4',
|
|
Token = 'X',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinX4, MaxX4},
|
|
Home = HomeX4,
|
|
Geo = 'X4_AXIS/GEO',
|
|
Aux = {'X4_AXIS/SOLID'}}
|
|
EgtMove( EgtGetFirstNameInGroup( X4Id, 'SOLID'), Vector3d( Drill2OffsX, Drill2OffsY, Drill2OffsZ), GDB_RT.GLOB)
|
|
local X5Id = EmtAxis {
|
|
Name = 'X5',
|
|
Parent = 'Z4',
|
|
Token = 'W',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = {MinX5, MaxX5},
|
|
Home = HomeX5,
|
|
Geo = 'X5_AXIS/GEO',
|
|
Aux = {'X5_AXIS/SOLID'}}
|
|
EgtMove( EgtGetFirstNameInGroup( X5Id, 'SOLID'), Vector3d( Drill2OffsX, Drill2OffsY, Drill2OffsZ), GDB_RT.GLOB)
|
|
local H6Id = EmtHead {
|
|
Name = 'H6',
|
|
Parent = 'X4',
|
|
HSet = 'H6',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( Drill2DeltaX, Drill2DeltaY, Drill2DeltaZ),
|
|
TDir = -Y_AX(),
|
|
Geo = 'H6_HEAD/GEO'}
|
|
EgtSetInfo( H6Id, 'ABOVE', '0')
|
|
-- ToolChanger
|
|
local ptTcA = Point3d( -480.6,-3377.7,17.0)
|
|
EmtTcPos {
|
|
Name = 'T10',
|
|
Parent = 'Y',
|
|
Pos = ptTcA,
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA1'}
|
|
EmtTcPos {
|
|
Name = 'T11',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 120 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA2'}
|
|
EmtTcPos {
|
|
Name = 'T12',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 240 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA3'}
|
|
EmtTcPos {
|
|
Name = 'T13',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 360 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA4'}
|
|
EmtTcPos {
|
|
Name = 'T14',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 480 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA5'}
|
|
EmtTcPos {
|
|
Name = 'T15',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 600 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA6'}
|
|
EmtTcPos {
|
|
Name = 'T16',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 720 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA7'}
|
|
EmtTcPos {
|
|
Name = 'T17',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 840 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA8'}
|
|
EmtTcPos {
|
|
Name = 'T18',
|
|
Parent = 'Y',
|
|
Pos = ptTcA + 960 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TA9'}
|
|
local ptTcB = Point3d( -480.6,-4726.7,17.0)
|
|
EmtTcPos {
|
|
Name = 'T1',
|
|
Parent = 'Y',
|
|
Pos = ptTcB,
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB1'}
|
|
EmtTcPos {
|
|
Name = 'T2',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 120 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB2'}
|
|
EmtTcPos {
|
|
Name = 'T3',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 240 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB3'}
|
|
EmtTcPos {
|
|
Name = 'T4',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 360 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB4'}
|
|
EmtTcPos {
|
|
Name = 'T5',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 480 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB5'}
|
|
EmtTcPos {
|
|
Name = 'T6',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 600 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB6'}
|
|
EmtTcPos {
|
|
Name = 'T7',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 720 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB7'}
|
|
EmtTcPos {
|
|
Name = 'T8',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 840 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB8'}
|
|
EmtTcPos {
|
|
Name = 'T9',
|
|
Parent = 'Y',
|
|
Pos = ptTcB + 960 * Y_AX(),
|
|
TDir = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'Y_AXIS/TB9'}
|
|
EmtTcPos {
|
|
Name = 'T101',
|
|
Parent = 'Y',
|
|
Pos = Point3d(-568.3,-1312.4,9-92.8),
|
|
TDir = X_AX(),
|
|
ADir = Z_AX(),
|
|
Geo = 'Y_AXIS/TC1'}
|
|
--EmtTcPos {
|
|
-- Name = 'T201',
|
|
-- Parent = 'Y',
|
|
-- Pos = Point3d(-926.3,-1855.0,28),
|
|
-- TDir = Z_AX(),
|
|
-- ADir = X_AX(),
|
|
-- Geo = 'Y_AXIS/TC2'}
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
|
--function OnSetTable()
|
|
--end
|
|
|
|
---------------------------------------------------------------------
|
|
function OnSetHead()
|
|
if EMC.HEAD == 'H1' then
|
|
EmtModifyAxisHome( 'X1', MaxX1)
|
|
EmtModifyAxisHome( 'Z1', MaxZ1)
|
|
EmtModifyAxisHome( 'C1', ParkC1)
|
|
elseif EMC.HEAD == 'H3' then
|
|
-- recupero valore asse A bloccato
|
|
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
|
local CSawPosA = EgtGetVal( sVal, 'A1', 'd') or 0
|
|
EmtModifyAxisHome( 'X1', ( MinX1 + MaxX1) / 2)
|
|
EmtModifyAxisHome( 'Z1', GetChainSawZHomeFromVirtualAxis( CSawPosA))
|
|
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA))
|
|
EmtModifyAxisHome( 'A1', CSawPosA)
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
|
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
|
-- quota fissa
|
|
return -150
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che calcola l'angolo Home di C per la sega a catena dal valore dell'asse virtuale
|
|
function GetChainSawCHomeFromVirtualAxis( dPosA)
|
|
-- se A=0 -> T104 -> HomeC = 90
|
|
if abs( dPosA) < 0.1 then
|
|
return 90
|
|
-- altrimenti A=90 -> T101 -> HomeC = 0
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per resettare tutte le attivazioni della macchina
|
|
function OnResetMachine()
|
|
EmtUnlinkAllRawPartsFromGroups()
|
|
EmtUnlinkAllFixturesFromGroups()
|
|
-- 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
|