Files
masterwood-project265/Masterwood-Project265.mlde
T
andrea.villa e2bd8474c9 - Aggiunto parametro HOODPOS nelle lavorazioni per gestione cuffia
- Se parametro HOODPS non prersente, non si comanda cuffia
- Cambio versione per rilascio post a cliente
2025-06-04 11:04:53 +02:00

508 lines
15 KiB
Plaintext

-- Descrizione macchina Masterwood Project265 2025/01/09
-- by EgalWare s.r.l.
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.7f1'
PP_NVER = '2.7.6.1'
MIN_MACH_VER = '2.5k1'
MACH_NAME = 'MW_Project265'
-- DATI MACCHINA --
NumericalControl = 'TECNOS'
PIVOT = 135
-- DATI TAVOLA --
TabX = 247.0064
TabY = -1914.5486
TabZ = -591.0497
----------------------------------------------------
-------------------- CORSE ASSI --------------------
----------------------------------------------------
XAxisStroke = {-9999, 9999}
YAxisStroke = {-9999, 9999}
ZAxisStroke = {-9999, 9999}
CAxisStroke = {-270, 270}
AAxisStroke = {-110, 110}
----------------------------------------------------
-------------------- DATI TESTE --------------------
----------------------------------------------------
-- testa 5 assi
H11Pos = Vector3d( 0, 0, 0)
-- gruppo forare
H21PosX = -249.005
H21PosY = 522.001
H21PosZ = 255.95
H21Pos = H11Pos + Vector3d( H21PosX, H21PosY, H21PosZ)
-- teste gruppo forare
MDRILL = { { Pos = H21Pos + Vector3d( 0, 0, 0), Ex=1, St=61}, -- uscita 1
{ Pos = H21Pos + Vector3d( 32, 0, 0), Ex=2, St=61}, -- uscita 2
{ Pos = H21Pos + Vector3d( 64, 0, 0), Ex=3, St=61}, -- uscita 3
{ Pos = H21Pos + Vector3d( 96, 0, 0), Ex=4, St=61}, -- uscita 4
{ Pos = H21Pos + Vector3d( 128, 0, 0), Ex=5, St=61}, -- uscita 5
{ Pos = H21Pos + Vector3d( 160, 0, 0), Ex=6, St=61}, -- uscita 6
{ Pos = H21Pos + Vector3d( 192, 0, 0), Ex=7, St=61}, -- uscita 7
{ Pos = H21Pos + Vector3d( 0, 64, 0), Ex=8, St=61}, -- uscita 8
{ Pos = H21Pos + Vector3d( 0, 96, 0), Ex=9, St=61}, -- uscita 9
{ Pos = H21Pos + Vector3d( 0, 128, 0), Ex=10, St=61}, -- uscita 10
{ Pos = H21Pos + Vector3d( 0, 160, 0), Ex=11, St=61}, -- uscita 11
{ Pos = H21Pos + Vector3d( -32, 32, -51.2), Ex=12, Token=31, Tw=13,St=76}, -- uscita 12
{ Pos = H21Pos + Vector3d( -32, -32, -51.2), Ex=13, Token=33, Tw=12,St=76}, -- uscita 13
{ Pos = H21Pos + Vector3d( 224, 64, -51.2), Ex=14, Token=35, Tw=16,St=76}, -- uscita 14
{ Pos = H21Pos + Vector3d( 224, 96, -51.2), Ex=15, Token=36, Tw=17,St=76}, -- uscita 15
{ Pos = H21Pos + Vector3d( 160, 64, -51.2),Ex=16, Token=37, Tw=14,St=76}, -- uscita 16
{ Pos = H21Pos + Vector3d( 160, 96, -51.2), Ex=17, Token=38, Tw=15,St=76}, -- uscita 17
{ Pos = H21Pos + Vector3d( 192, 192.5, -8.2), Ex=18, Token=50, St=76} -- uscita 18
}
----------------------------------------------------
----------------- DATI BANCALETTI ------------------
----------------------------------------------------
----------------------------------------------------
----------------- DATI SOTTOPEZZI-------------------
----------------------------------------------------
----------------------------------------------------------------------
EmtGeneral {
File='Masterwood-Project265.nge',
Offset = Vector3d( 3582.5064,-384.5486,-736.0497),
AxisMaxAdjust = 10,
ExitMaxAdjust = 20,
Special = 'Masterwood-Project265.mlse',
Processor = 'Masterwood-Project265.mlpe'}
EmtBase {
Name = 'Base',
Geo= 'BASE/GEO',
Aux= { 'BASE/SOLID', 'BASE/TC'}}
-- Testa e TC
EmtAxis {
Name = 'X',
Parent = 'Base',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = XAxisStroke,
Home = 0,
Geo = 'X_AXIS/GEO',
Aux = { 'X_AXIS/SOLID', 'X_AXIS/TCR'}}
EmtAxis {
Name = 'Y',
Parent = 'X',
Token = 'Y',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d(0, 0, 0),
Stroke = YAxisStroke,
Home = 0,
Geo = 'Y_AXIS/GEO',
Aux = 'Y_AXIS/SOLID'}
EmtAxis {
Name = 'Z1',
Parent = 'Y',
Token = 'Z',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d(0, 0, 0),
Stroke = ZAxisStroke,
Home = 0,
Geo = 'Z1_AXIS/GEO',
Aux = 'Z1_AXIS/SOLID'}
EmtAxis {
Name = 'C',
Parent = 'Z1',
Token = 'C',
Type = MCH_AT.ROTARY,
Dir = -Z_AX(),
Pos = Point3d(-135, 0, 244),
Stroke = CAxisStroke,
Home = 0,
Geo = 'C_AXIS/GEO',
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
EmtAxis {
Name = 'A',
Parent = 'C',
Token = 'A',
Type = MCH_AT.ROTARY,
Dir = Y_AX(),
Pos = Point3d( -135, 86.5, 0),
Stroke = AAxisStroke,
Home = 90,
Geo = 'A_AXIS/GEO',
Aux = {'A_AXIS/SOLID', 'A_AXIS/COLLISION'}}
EmtHead {
Name = 'H11',
Parent = 'A',
HSet = 'H11',
Type = MCH_HT.STD,
Pos = H11Pos,
TDir = -X_AX(),
ADir = Y_AX(),
OthColl = {'C/SOLID','A/SOLID'},
Geo = 'H11_HEAD/GEO'}
EmtAxis {
Name = 'Z2',
Parent = 'Y',
Token = 'Z',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {-850.9, 200},
Home = 0,
Geo = 'Z2_AXIS/GEO',
Aux = 'Z2_AXIS/SOLID'}
EmtHead {
Name = 'H21',
Parent = 'Z2',
HSet = 'H21',
Type = MCH_HT.MULTI,
SelType = MCH_SLT.MULTIEXITS,
ExitNbr = 18,
Pos1 = MDRILL[1].Pos,
TDir1 = Z_AX(),
Pos2 = MDRILL[2].Pos,
TDir2 = Z_AX(),
Pos3 = MDRILL[3].Pos,
TDir3 = Z_AX(),
Pos4 = MDRILL[4].Pos,
TDir4 = Z_AX(),
Pos5 = MDRILL[5].Pos,
TDir5 = Z_AX(),
Pos6 = MDRILL[6].Pos,
TDir6 = Z_AX(),
Pos7 = MDRILL[7].Pos,
TDir7 = Z_AX(),
Pos8 = MDRILL[8].Pos,
TDir8 = Z_AX(),
Pos9 = MDRILL[9].Pos,
TDir9 = Z_AX(),
Pos10 = MDRILL[10].Pos,
TDir10 = Z_AX(),
Pos11 = MDRILL[11].Pos,
TDir11 = Z_AX(),
Pos12 = MDRILL[12].Pos,
TDir12 = -Y_AX(),
Pos13 = MDRILL[13].Pos,
TDir13 = Y_AX(),
Pos14 = MDRILL[14].Pos,
TDir14 = -X_AX(),
Pos15 = MDRILL[15].Pos,
TDir15 = -X_AX(),
Pos16 = MDRILL[16].Pos,
TDir16 = X_AX(),
Pos17 = MDRILL[17].Pos,
TDir17 = X_AX(),
Pos18 = MDRILL[18].Pos,
TDir18 = -Y_AX(),
ADir = VectorFromPolar( 1, 45),
Geo = 'H21_HEAD/GEO',
Aux = {'H21_HEAD/SOLID', 'H21_HEAD/SOL_T1', 'H21_HEAD/SOL_T2', 'H21_HEAD/SOL_T3', 'H21_HEAD/SOL_T4', 'H21_HEAD/SOL_T5',
'H21_HEAD/SOL_T6', 'H21_HEAD/SOL_T7', 'H21_HEAD/SOL_T8', 'H21_HEAD/SOL_T9', 'H21_HEAD/SOL_T10', 'H21_HEAD/SOL_T11',
'H21_HEAD/SOL_T12', 'H21_HEAD/SOL_T14', 'H21_HEAD/SOL_T15', 'H21_HEAD/SOL_T18'}}
-- Posizioni utensili speciali
EmtTcPos {
Name = 'T17',
Parent = 'Base',
Pos = Point3d( 3807.48, -578.72, -656.55),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T17'}
EmtTcPos {
Name = 'T18',
Parent = 'Base',
Pos = Point3d( 3807.48, -843.72, -656.55),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T18'}
-- Tool Changer
local ptTcR = Point3d( -60, 434.95, -558)
EmtTcPos {
Name = 'T1',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 4),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T1'}
EmtTcPos {
Name = 'T2',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 3),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T2'}
EmtTcPos {
Name = 'T3',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 2),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T3'}
EmtTcPos {
Name = 'T4',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 22.5 * 1),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T4'}
EmtTcPos {
Name = 'T5',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, 0),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T5'}
EmtTcPos {
Name = 'T6',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 1),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T6'}
EmtTcPos {
Name = 'T7',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 2),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T7'}
EmtTcPos {
Name = 'T8',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 3),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T8'}
EmtTcPos {
Name = 'T9',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 4),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T9'}
EmtTcPos {
Name = 'T10',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 5),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T10'}
EmtTcPos {
Name = 'T11',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 6),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T11'}
EmtTcPos {
Name = 'T12',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 7),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T12'}
EmtTcPos {
Name = 'T13',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 8),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T13'}
EmtTcPos {
Name = 'T14',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 9),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T14'}
EmtTcPos {
Name = 'T15',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 10),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T15'}
EmtTcPos {
Name = 'T16',
Parent = 'X',
Pos = ptTcR + VectorFromSpherical( 266, 90, -22.5 * 11),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'X_AXIS/T16'}
-- Tavola
EmtTable {
Name = 'Tab',
Parent = 'Base',
Type = MCH_TT.FLAT,
Ref1 = {TabX, TabY, TabZ},
Geo = 'TABLE/GEO',
Aux = 'TABLE/SOLID'}
-- bancaletti
local PL1Id = EmtAxis {
Name = 'PL1',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {50, 2000},
Home = 80,
Geo = 'PL1_AXIS/GEO',
Aux = {'PL1_AXIS/SOLID', 'PL1_AXIS/COLLISION'}}
EgtSetInfo( PL1Id, 'MDist', 100)
EgtSetInfo( PL1Id, 'PDist', 110)
EgtSetInfo( PL1Id, 'Next', 'PL2')
EgtMove( PL1Id, Vector3d( -80, 0, 0), GDB_RT.GLOB)
local PL2Id = EmtAxis {
Name = 'PL2',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {200, 2100},
Home = 280,
Geo = 'PL2_AXIS/GEO',
Aux = {'PL2_AXIS/SOLID', 'PL2_AXIS/COLLISION'}}
EgtSetInfo( PL2Id, 'MDist', 100)
EgtSetInfo( PL2Id, 'PDist', 110)
EgtSetInfo( PL2Id, 'Prev', 'PL1')
EgtSetInfo( PL2Id, 'Next', 'PL3')
EgtMove( PL2Id, Vector3d( -280, 0, 0), GDB_RT.GLOB)
local PL3Id = EmtAxis {
Name = 'PL3',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {400, 2200},
Home = 480,
Geo = 'PL3_AXIS/GEO',
Aux = {'PL3_AXIS/SOLID', 'PL3_AXIS/COLLISION'}}
EgtSetInfo( PL3Id, 'MDist', 100)
EgtSetInfo( PL3Id, 'PDist', 110)
EgtSetInfo( PL3Id, 'Prev', 'PL2')
EgtSetInfo( PL3Id, 'Next', 'PL4')
EgtMove( PL3Id, Vector3d( -480, 0, 0), GDB_RT.GLOB)
local PL4Id = EmtAxis {
Name = 'PL4',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {800, 2900},
Home = 2730,
Geo = 'PL4_AXIS/GEO',
Aux = {'PL4_AXIS/SOLID', 'PL4_AXIS/COLLISION'}}
EgtSetInfo( PL4Id, 'MDist', 100)
EgtSetInfo( PL4Id, 'PDist', 110)
EgtSetInfo( PL4Id, 'Prev', 'PL3')
EgtSetInfo( PL4Id, 'Next', 'PL5')
EgtMove( PL4Id, Vector3d( -2730, 0, 0), GDB_RT.GLOB)
local PL5Id = EmtAxis {
Name = 'PL5',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {900, 3100},
Home = 2930,
Geo = 'PL5_AXIS/GEO',
Aux = {'PL5_AXIS/SOLID', 'PL5_AXIS/COLLISION'}}
EgtSetInfo( PL5Id, 'MDist', 100)
EgtSetInfo( PL5Id, 'PDist', 110)
EgtSetInfo( PL5Id, 'Prev', 'PL4')
EgtSetInfo( PL5Id, 'Next', 'PL6')
EgtMove( PL5Id, Vector3d( -2930, 0, 0), GDB_RT.GLOB)
local PL6Id = EmtAxis {
Name = 'PL6',
Parent = 'Tab',
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d(0, 0, 0),
Stroke = {1000, 3300},
Home = 3130,
Geo = 'PL6_AXIS/GEO',
Aux = {'PL6_AXIS/SOLID', 'PL6_AXIS/COLLISION'}}
EgtSetInfo( PL6Id, 'MDist', 100)
EgtSetInfo( PL6Id, 'PDist', 110)
EgtSetInfo( PL6Id, 'Prev', 'PL5')
EgtMove( PL6Id, Vector3d( -3130, 0, 0), GDB_RT.GLOB)
---------------------------------------------------------------------
-- Funzioni richiamate per modificare i dati macchina in casi particolari
---------------------------------------------------------------------
function OnSetTable()
EgtSetTableAreaOffset( 100, 100, 100, 100)
end
---------------------------------------------------------------------
local function MoveGroup( nGrpId, vtVers, dPos, bLoc)
local dVal = EgtGetInfo( nGrpId, 'Val')
if not dVal then return end
if abs( dPos - dVal) > GEO.EPS_SMALL then
local nRT = EgtIf( bLoc, GDB_RT.LOC, GDB_RT.GLOB)
EgtMove( nGrpId, ( dPos - dVal) * vtVers, nRT)
EgtSetInfo( nGrpId, 'Val', dPos)
end
end
---------------------------------------------------------------------
function OnActivateDrillingUnit()
-- assegno dati testa
local nHeadId = EMC.HEADID
-- sistemo dati uscite attive
local vbExit = {}
for i = 1, #( EMC.DRACEX or {}) do
vbExit[EMC.DRACEX[i]] = true
end
-- ciclo su tutte le uscite della testa
for nExit = 1, #MDRILL do
-- eventuale gemello
local nTwin = MDRILL[nExit].Tw or 0
-- nome e identificativo della geometria dell'uscita
local sExit = 'T' .. EgtNumToString( nExit, 0)
local nExitId = EgtGetFirstNameInGroup( nHeadId, sExit)
-- recupero la geometria associata all'uscita
local sStem = 'SOL_' .. sExit
local nStemId = EgtGetFirstNameInGroup( nHeadId, sStem)
-- determino la posizione
local dPos = EgtIf( vbExit[nExit] or vbExit[nTwin], 0, MDRILL[nExit].St)
-- eseguo posizionamento
if nStemId then
MoveGroup( nStemId, Z_AX(), dPos)
end
MoveGroup( nExitId, Z_AX(), dPos)
end
end
---------------------------------------------------------------------
function OnSetHead()
EMC.HEADID = EgtGetHeadId( 'H21')
EMC.DRACEX = nil
OnActivateDrillingUnit()
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