Files
essetre-90580011/Essetre-90580011.mlde
T
2024-09-11 12:41:23 +02:00

575 lines
16 KiB
Plaintext

-- Descrizione macchina Essetre-90580011 by EgalWare s.r.l. 2024/09/10
-- Macchina Progress (parte Wall).
-- 2023/09/11 ver 2.6i1 Prima versione macchina, partendo da 90580012.
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.6i1'
-- Parametri macchina
NumericalControl = 'NUM' -- NUM o TPA
MinY = 7600.0
MaxY = 26000.0
MinY2 = 0.0
MaxY2 = 19000.0
MinX1 = -5440.0
MaxX1 = -690.0
MinZ1 = -1345.0
MaxZ1 = 0.0
SafeZ1 = -800.0
MinB1 = -127.0
MaxB1 = 127.0
MinC1 = -275.0
MaxC1 = 275.0
MillOffs = 170.0
ChSawLen = 91.0
ParkChSawX1 = ( MinX1 + MaxX1) / 2
ParkChSawZ1 = -250
ParkChSawC1 = 90
MinX2 = -4750.0
MaxX2 = 0.0
MinZ2 = -1155.0
MaxZ2 = 0.0
MinB2 = 0.0
MaxB2 = 90.0
MinC2 = -275.0
MaxC2 = 275.0
SawDeltaX = 347.65
SawDeltaY = 0.0
SawDeltaZ = -52.5
SawOffs = 154.0
DimTabX = 7230.0
DimTabY = 3500.0
DeltaTabX = 8737.658
DeltaTabY = -4539.3
DeltaTabZ = -819.0
DimTab2X = 7230.0
DimTab2Y = 3500.0
DeltaTab2X = 8737.658
DeltaTab2Y = -4539.3
DeltaTab2Z = -819.0
GantryTabs = 8000.0
OffsetTabs = 345
CoeffVM = 0.75
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90580011.data"
local sData = EgtGetSourceDir().."\\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
if MchOffs.MAX_Y2 then MinY2 = -MchOffs.MAX_Y2 end
if MchOffs.MIN_Y2 then MaxY2 = -MchOffs.MIN_Y2 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 and MchOffs.OFFSET_ZERO2_Y then DeltaTabX = -MchOffs.ZERO_Y_MILL - MchOffs.OFFSET_ZERO2_Y end
if MchOffs.ZERO_X_MILL and MchOffs.OFFSET_ZERO2_X then DeltaTabY = MchOffs.ZERO_X_MILL + MchOffs.OFFSET_ZERO2_X end
DeltaTabZ = MchOffs.ZERO_Z_MILL or DeltaTabZ
DeltaTab2X = DeltaTabX
DeltaTab2Y = DeltaTabY
DeltaTab2Z = 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
GantryTabs = MchOffs.GANTRY_TABLES or GantryTabs
end
end
-- Spostamenti della lama rispetto al disegno
local SawOffsX = SawDeltaX - 347.65
local SawOffsY = SawDeltaY - 0
local SawOffsZ = SawDeltaZ + 52.5
EmtGeneral {
File='Essetre-90580011.nge',
Offset = Vector3d( -540.35, -5820.00, -1447.0),
AxisMaxAdjust = 300,
ExitMaxAdjust = 300,
Special = 'Essetre-WALL.mlse',
Processor = 'Essetre-WALL.mlpe'}
local BaseId = EmtBase {
Name = 'Base',
Geo='BASE/GEO',
Aux={'BASE/TRAVERSA', 'BASE/SUBTABLE', 'BASE/COLLISION', 'BASE/TC', 'BASE/TCR'}}
local vtMove = Vector3d( DeltaTabX - 8737.658, DeltaTabY + 4539.3, DeltaTabZ + 819.0)
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SUBTABLE'), vtMove, GDB_RT.GLOB)
-- Tavola 1
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 = MaxY,
Geo = 'Y_AXIS/GEO',
Aux = {'Y_AXIS/SOLID'}}
EgtMove( YId, vtMove, GDB_RT.GLOB)
local TabId = EmtTable {
Name = 'Tab',
Parent = 'Y',
Type = MCH_TT.FLAT,
Ref1 = Point3d( DeltaTabX, DeltaTabY, DeltaTabZ),
Geo = 'TABLE/GEO',
Aux = {'TABLE/GEO2', 'TABLE/SOLID', 'TABLE/COLLISION'}}
-- Tavola 2
local Y2Id = EmtAxis {
Name = 'Y2',
Parent = 'Base',
Invert = true,
Type = MCH_AT.LINEAR,
Dir = -X_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinY2, MaxY2},
Home = MinY2,
Geo = 'Y2_AXIS/GEO',
Aux = {'Y2_AXIS/SOLID'}}
EgtMove( Y2Id, vtMove, GDB_RT.GLOB)
EmtTable {
Name = 'Tab2',
Parent = 'Y2',
Type = MCH_TT.FLAT,
Ref1 = Point3d( DeltaTab2X, DeltaTab2Y, DeltaTab2Z),
Geo = 'TABLE2/GEO',
Aux = {'TABLE2/SOLID', 'TABLE2/COLLISION'}}
-- Testa per frese
EmtAxis {
Name = 'X1',
Parent = 'Base',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinX1, MaxX1},
Home = MinX1,
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 = 0,
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 = 0,
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 = { -90, 180},
Home = 0,
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 = 'Base',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinX2, MaxX2},
Home = MaxX2,
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, 866.99),
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'}
-- ToolChanger
local ptTCF = Point3d( 2337.8,-5177.8,-950.5)
EmtTcPos {
Name = 'T1',
Parent = 'Base',
Pos = ptTCF,
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T1'}
EmtTcPos {
Name = 'T2',
Parent = 'Base',
Pos = ptTCF - 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T2'}
EmtTcPos {
Name = 'T3',
Parent = 'Base',
Pos = ptTCF - 2 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T3'}
EmtTcPos {
Name = 'T4',
Parent = 'Base',
Pos = ptTCF - 3 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T4'}
EmtTcPos {
Name = 'T5',
Parent = 'Base',
Pos = ptTCF - 4 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T5'}
EmtTcPos {
Name = 'T6',
Parent = 'Base',
Pos = ptTCF - 5 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T6'}
EmtTcPos {
Name = 'T7',
Parent = 'Base',
Pos = ptTCF - 6 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T7'}
EmtTcPos {
Name = 'T8',
Parent = 'Base',
Pos = ptTCF - 7 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T8'}
EmtTcPos {
Name = 'T9',
Parent = 'Base',
Pos = ptTCF - 8 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T9'}
EmtTcPos {
Name = 'T10',
Parent = 'Base',
Pos = ptTCF - 9 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T10'}
EmtTcPos {
Name = 'T11',
Parent = 'Base',
Pos = ptTCF - 10 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T11'}
EmtTcPos {
Name = 'T12',
Parent = 'Base',
Pos = ptTCF - 11 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T12'}
EmtTcPos {
Name = 'T13',
Parent = 'Base',
Pos = ptTCF - 12 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T13'}
EmtTcPos {
Name = 'T14',
Parent = 'Base',
Pos = ptTCF - 13 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T14'}
EmtTcPos {
Name = 'T15',
Parent = 'Base',
Pos = ptTCF - 14 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T15'}
local ptTCB = Point3d( 2337.8,-5610.8,-950.5)
EmtTcPos {
Name = 'T16',
Parent = 'Base',
Pos = ptTCB,
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T16'}
EmtTcPos {
Name = 'T17',
Parent = 'Base',
Pos = ptTCB - 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T17'}
EmtTcPos {
Name = 'T18',
Parent = 'Base',
Pos = ptTCB - 2 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T18'}
EmtTcPos {
Name = 'T19',
Parent = 'Base',
Pos = ptTCB - 3 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T19'}
EmtTcPos {
Name = 'T20',
Parent = 'Base',
Pos = ptTCB - 4 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T20'}
EmtTcPos {
Name = 'T21',
Parent = 'Base',
Pos = ptTCB - 5 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T21'}
EmtTcPos {
Name = 'T22',
Parent = 'Base',
Pos = ptTCB - 6 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T22'}
EmtTcPos {
Name = 'T23',
Parent = 'Base',
Pos = ptTCB - 7 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T23'}
EmtTcPos {
Name = 'T24',
Parent = 'Base',
Pos = ptTCB - 8 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T24'}
EmtTcPos {
Name = 'T25',
Parent = 'Base',
Pos = ptTCB - 9 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T25'}
EmtTcPos {
Name = 'T26',
Parent = 'Base',
Pos = ptTCB - 10 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T26'}
EmtTcPos {
Name = 'T27',
Parent = 'Base',
Pos = ptTCB - 11 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T27'}
EmtTcPos {
Name = 'T28',
Parent = 'Base',
Pos = ptTCB - 12 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T28'}
EmtTcPos {
Name = 'T29',
Parent = 'Base',
Pos = ptTCB - 13 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T29'}
EmtTcPos {
Name = 'T30',
Parent = 'Base',
Pos = ptTCB - 14 * 180 * X_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T30'}
local ptTCR = Point3d( -350.9,-5033.7,-270)
EmtTcPos {
Name = 'T101',
Parent = 'Base',
Pos = ptTCR - ChSawLen * Z_AX(),
TDir = X_AX(),
ADir = Z_AX(),
Geo = 'BASE/T101'}
---------------------------------------------------------------------
-- Funzioni richiamate per modificare i dati macchina in casi particolari
--function OnSetTable()
--end
---------------------------------------------------------------------
function OnSetHead()
if EMC.HEAD == 'H1' then
EmtModifyAxisHome( 'X1', MinX1)
EmtModifyAxisHome( 'Z1', MaxZ1)
EmtModifyAxisHome( 'C1', 0)
elseif EMC.HEAD == 'H3' then
EmtModifyAxisHome( 'X1', ParkChSawX1)
EmtModifyAxisHome( 'Z1', ParkChSawZ1)
EmtModifyAxisHome( 'C1', ParkChSawC1)
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
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)
-- visualizzo geometria ausiliaria tavola
EgtSetStatus( EgtGetFirstNameInGroup( TabId, 'GEO2') or GDB_ID.NULL, GDB_ST.ON)
end