Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 08acb6f843 | |||
| 8eceb9b865 | |||
| 2526f6bb39 | |||
| eb2500c726 |
@@ -0,0 +1,9 @@
|
||||
/Tools
|
||||
/Machinings
|
||||
/SetUp
|
||||
/Beam/CutData.lua
|
||||
/Beam/DrillData.lua
|
||||
/Beam/MillingData.lua
|
||||
/Beam/PocketingData.lua
|
||||
/Beam/SawingData.lua
|
||||
/Beam/AISetup
|
||||
Vendored
+187
@@ -0,0 +1,187 @@
|
||||
{
|
||||
"Lua.diagnostics.globals": [
|
||||
"EmtTcPos",
|
||||
"EgtGetAllTcPosNames",
|
||||
"EgtGetFirstNameInGroup",
|
||||
"EgtSetStatus",
|
||||
"EgtEmptyGroup",
|
||||
"EgtGetFirstRawPart",
|
||||
"EmtLinkRawPartToGroup",
|
||||
"EgtVerifyRawPartPhase",
|
||||
"EgtGetNextRawPart",
|
||||
"EMT",
|
||||
"EgtOutText",
|
||||
"EgtGetFirstPartInRawPart",
|
||||
"EmtSetLastError",
|
||||
"EgtGetToolsInCurrSetupPos",
|
||||
"EgtLoadTool",
|
||||
"EgtSetName",
|
||||
"EgtGroup",
|
||||
"EgtSetLevel",
|
||||
"EgtOutLog",
|
||||
"EmtUnlinkAllRawPartsFromGroups",
|
||||
"EgtSetAxisPos",
|
||||
"EgtGetPhaseCount",
|
||||
"EgtGetCurrMachGroup",
|
||||
"EgtErase",
|
||||
"EgtVolZmapBox",
|
||||
"EgtSetColor",
|
||||
"EgtGetFirstInGroup",
|
||||
"EgtGetNext",
|
||||
"EgtGetFirstOperation",
|
||||
"EgtGetOperationType",
|
||||
"EgtSetOperationStatus",
|
||||
"EgtGetNextOperation",
|
||||
"EgtGetDebugLevel",
|
||||
"EgtGetAxisId",
|
||||
"EgtGetBaseId",
|
||||
"EgtMove",
|
||||
"EgtTdbGetCurrToolParam",
|
||||
"EmtAddCollisionObjEx",
|
||||
"EgtGetNextActiveOperation",
|
||||
"EgtGetFirstActiveOperation",
|
||||
"EgtSetCurrMachining",
|
||||
"EgtGetMachiningParam",
|
||||
"EgtSetMode",
|
||||
"EgtGetHeadId",
|
||||
"EgtPause",
|
||||
"EgtGetAxisPos",
|
||||
"EgtGetOperationName",
|
||||
"EgtGetMachiningGeometry",
|
||||
"EgtVolZmapPartCount",
|
||||
"EgtVolZmapPartVolume",
|
||||
"EgtRemoveVolZmapPart",
|
||||
"EgtDraw",
|
||||
"EgtNumToString",
|
||||
"EgtSplitString",
|
||||
"EmtUnlinkRawPartFromGroup",
|
||||
"EgtRelocate",
|
||||
"EgtVolZmapGetEdges",
|
||||
"EgtGetCurrMachineName",
|
||||
"EgtGetCurrMachineDir",
|
||||
"EgtGetStringFromIni",
|
||||
"EgtGetCurrFilePath",
|
||||
"EgtGetMachGroupName",
|
||||
"EgtSaveObjToFile",
|
||||
"EmtSetOutstrokeInfo",
|
||||
"EgtTdbSetCurrTool",
|
||||
"EgtUiUnitsAreMM",
|
||||
"EgtGetAxisHomePos",
|
||||
"EgtSetInfo",
|
||||
"EgtGetTcPosId",
|
||||
"EgtGetName",
|
||||
"EgtGetCurrMachining",
|
||||
"EgtOutBox",
|
||||
"EgtResetCurrMachining",
|
||||
"EgtGetPhaseDisposition",
|
||||
"EgtExistsFile",
|
||||
"EmtGeneral",
|
||||
"EmtBase",
|
||||
"EmtAxis",
|
||||
"EmtHead",
|
||||
"EmtTable",
|
||||
"EmtModifyExitPosition",
|
||||
"EmtModifyAxisHome",
|
||||
"EgtRemoveInfo",
|
||||
"EmtUnlinkAllFixturesFromGroups",
|
||||
"EMC",
|
||||
"EgtSetCurrPhase",
|
||||
"EgtTdbGetToolFromUUID",
|
||||
"EgtGetPrevActiveOperation",
|
||||
"EgtExistsInfo",
|
||||
"EgtGetLastInGroup",
|
||||
"EmtGetAxesPos",
|
||||
"EgtRemoveOperationHome",
|
||||
"EgtGetPartInRawPartCount",
|
||||
"EgtGetOperationPhase",
|
||||
"EgtSetOperationMode",
|
||||
"EgtSetCalcTool",
|
||||
"EmtModifyAxisStroke",
|
||||
"EgtGetValInNotes",
|
||||
"EgtGetInfo",
|
||||
"EgtIf",
|
||||
"EgtGetCalcAuxDirFromAngles",
|
||||
"abs",
|
||||
"sqrt",
|
||||
"EgtJoinTables",
|
||||
"min",
|
||||
"BBox3d",
|
||||
"max",
|
||||
"EgtGetRawPartBBox",
|
||||
"sin",
|
||||
"AreSameVectorApprox",
|
||||
"Point3d",
|
||||
"Vector3d",
|
||||
"AddToolToCollisionObj",
|
||||
"AddToolHolderToCollisionObj",
|
||||
"SetToolForVmill",
|
||||
"EmtGetVMillStep",
|
||||
"EgtGetBBoxGlob",
|
||||
"Frame3d",
|
||||
"AddToCollisionCheck",
|
||||
"DumpCollisionCheck",
|
||||
"EgtEnableDebug",
|
||||
"EmtOutput",
|
||||
"EmtLenToString",
|
||||
"EmtResetPrev",
|
||||
"EmtAdjustRotaryAxes",
|
||||
"EmtUpdatePrev",
|
||||
"EmtResetPrevLinear",
|
||||
"EmtGetAxis",
|
||||
"EmtAdjustCenterAxes",
|
||||
"EmtGetFeed",
|
||||
"EmtAdjustLinearAxes",
|
||||
"SphericalFromVector",
|
||||
"EmtGetAngO2",
|
||||
"EgtClamp",
|
||||
"AreSameOrOppositeVectorApprox",
|
||||
"EgtGetAxisDir",
|
||||
"EgtVolZmapGetPartBBoxGlob",
|
||||
"SimulMoveAxis",
|
||||
"EgtGetGlobFrame",
|
||||
"EgtSplitPath",
|
||||
"EgtPlaneVolZmapInters",
|
||||
"EgtTableAdd",
|
||||
"EgtTableFill",
|
||||
"EgtSurfFlatRegion",
|
||||
"EgtSurfFrIntersect",
|
||||
"EgtSurfArea",
|
||||
"ceil",
|
||||
"pow",
|
||||
"EgtGetEnableUI",
|
||||
"EmtSetSimulPause",
|
||||
"EgtResetAxisPos",
|
||||
"EmtTleStart",
|
||||
"EmtLenToMF",
|
||||
"EmtSecToHMS",
|
||||
"EmtTleAddTotal",
|
||||
"EmtTleAddTool",
|
||||
"EmtTleEnd",
|
||||
"EmtTleAddMachining",
|
||||
"GDB_ID",
|
||||
"GDB_ST",
|
||||
"MCH_TP",
|
||||
"GEO",
|
||||
"X_AX",
|
||||
"Y_AX",
|
||||
"Z_AX",
|
||||
"MCH_TY",
|
||||
"MCH_SCC",
|
||||
"MCH_AT",
|
||||
"MCH_TT",
|
||||
"GDB_RT",
|
||||
"MCH_MP",
|
||||
"GDB_FR",
|
||||
"GDB_LV",
|
||||
"GDB_BB",
|
||||
"EgtGetColor",
|
||||
"SimulMoveAxes",
|
||||
"MCH_SIM_STEP",
|
||||
"MCH_OY",
|
||||
"GDB_MD",
|
||||
"MCH_MY",
|
||||
"Color3d",
|
||||
"tan",
|
||||
"MCH_HT"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
-- BeamData.lua by Egaltech s.r.l. 2022/03/20
|
||||
-- Raccolta dati generali per Travi
|
||||
|
||||
EgtOutLog( ' KAIROS-BeamData started', 1)
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local BeamData = {
|
||||
ROT180 = true, -- flag abilitazione rotazione 90 gradi
|
||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||
MIN_HEIGHT = 40, -- altezza minima 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)
|
||||
STD_RAW = 14000, -- lunghezza standard della barra di grezzo
|
||||
OVM_HEAD = 10, -- sovramateriale testa
|
||||
OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama)
|
||||
MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole
|
||||
MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi
|
||||
MAX_LEN_SCRAP = 270, -- massima lunghezza scarto di coda
|
||||
MAX_LEN_SCRAP_START = 270, -- massima lunghezza scarto di testa
|
||||
MAX_DIM_HTCUT = 130, -- 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 = 621, -- altezza minima di trave alta
|
||||
MAX_DIM_DICE = 110, -- dimensione trasversale massima cubetto
|
||||
MAX_LEN_DICE = 400, -- lunghezza massima cubetto
|
||||
DECR_VERT_CUT = 12.5, -- riduzione profondità per affondamento verticale in taglio orizzontale
|
||||
COLL_SIC = 5, -- distanza di sicurezza per collisioni
|
||||
CUT_SIC = 20, -- distanza di sicurezza per tagli
|
||||
CUT_EXTRA = 5, -- affondamento extra standard per tagli di lama e fresature
|
||||
CUT_EXTRA_MIN = 1, -- affondamento extra ridotto per tagli di lama e fresature
|
||||
NZ_MINA = -0.6, -- componente limite in Z normale di una faccia (-36.8deg)
|
||||
NZ_MINB = -0.4, -- componente limite in Z normale di un insieme di facce (-23deg)
|
||||
DRILL_TOL = 0.5, -- tolleranza tra diametro foro e diametro punta
|
||||
DRILL_VZ_MIN = -0.51, -- componente limite in Z del versore di un foro
|
||||
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
|
||||
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
||||
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
||||
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
|
||||
MAX_LEN_HTFEA = 2000.0, -- massima lunghezza di feature di testa o coda
|
||||
LONGCUT_ENDLEN = 600, -- lunghezza lavoro estremi iniziale e finale (std=600)
|
||||
LONGCUT_MAXLEN = 1200, -- lunghezza massima sezione di taglio longitudinale (std=1200)
|
||||
MAX_LEN_RIDGELAP_FROM_BOTTOM = 141, -- massima lunghezza ridgelap lavorabile da sotto
|
||||
MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM = 96, -- massima lunghezza ridgelap lavorabile da sotto con trave alta
|
||||
DIM_TO_CENTER_STRIP = 50, -- larghezza minima trave per inserimento codolo nel centro del trave; 0 = automatico
|
||||
DIM_STRIP = -1, -- dimensione codolo sostegno parti lasciate su contorno libero o archi (-1 = da Q...)
|
||||
DIM_STRIP_SMALL = 1, -- dimensione codolo piccolo (quando le parti sostenute sono sicuramente sulla parte sopra del pezzo)
|
||||
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
|
||||
RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split
|
||||
VICE_MINH = 110, -- altezza minima della morsa
|
||||
OFFSET_DRILL_TENON = 0, -- offset fori su tenoni verso base degli stessi (0=non fare)
|
||||
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
||||
MAX_TOOL_LEN_FOR_HOR_MACH = 311, -- massima lunghezza utensile per poter fare forature (fresature) oltre i 10 gradi dalla verticale
|
||||
DRILL_VZ_MIN_LONG_TOOL = 0.984, -- componente limite per lavorazioni con punta lunga
|
||||
MAX_TOOL_LEN_BACK_HOR_MACH = 250, -- massima lunghezza utensile per poter eseguire lavorazioni (forature/svuotature) da dietro (faccia 4)
|
||||
MAX_HEIGHT_ROT_B_ABOVE = 500, -- massima altezza della trave che permette di ruotare l'asse B sopra la stessa senza collisioni
|
||||
KIOTP = 3, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||
MAXDIAM_POCK_CORNER = 30, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con probabile caduta
|
||||
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||
STRATEGIES_CONFIG_FILE = 'Std2.json',
|
||||
FASTCLAMPING = true
|
||||
}
|
||||
|
||||
-- Aggiornamento con dati da B&W
|
||||
local sData = EgtGetCurrMachineDir().."\\Beam\\EbwData.lua"
|
||||
if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.YMIN or BeamData.MIN_WIDTH
|
||||
BeamData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT
|
||||
BeamData.MAX_WIDTH = Machine.Trave.YMAX or BeamData.MAX_WIDTH
|
||||
BeamData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
|
||||
end
|
||||
if Machine.User then
|
||||
if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F5 == 1 then
|
||||
BeamData.MAX_LEN_SCRAP = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP
|
||||
else
|
||||
BeamData.MAX_LEN_SCRAP = 100000
|
||||
end
|
||||
if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F6 == 1 then
|
||||
BeamData.MAX_LEN_SCRAP_START = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP_START
|
||||
else
|
||||
BeamData.MAX_LEN_SCRAP_START = 100000
|
||||
end
|
||||
BeamData.USER_HOLE_DIAM = Machine.User.L020_DIAM_HOLE or BeamData.USER_HOLE_DIAM
|
||||
BeamData.OFFSET_DRILL_TENON = Machine.User.L040_OFFSET_P1 or BeamData.OFFSET_DRILL_TENON
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
local function GetNzLimDownUp( b3Raw, vtN, vtOrtho, bDiceCut)
|
||||
return -0.173
|
||||
end
|
||||
BeamData.GetNzLimDownUp = GetNzLimDownUp
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetChainSawBlockedAxis( nInd)
|
||||
if nInd == 1 then
|
||||
return 'CS=0'
|
||||
else
|
||||
return 'CS=-90'
|
||||
end
|
||||
end
|
||||
BeamData.GetChainSawBlockedAxis = GetChainSawBlockedAxis
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMaxLenRidgeLapFromBottom( dHRaw)
|
||||
if dHRaw < BeamData.MIN_DIM_HBEAM then
|
||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM + 0.01
|
||||
else
|
||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM + 0.01
|
||||
end
|
||||
end
|
||||
BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMinNzTopHead( vtNFace, Tool)
|
||||
if Tool and Tool.sFamily ~= 'SAWBLADE' then
|
||||
if abs( vtNFace:getY()) < 0.68 then
|
||||
return sin( -15)
|
||||
else
|
||||
return sin( -10)
|
||||
end
|
||||
else
|
||||
if abs( vtNFace:getY()) < 0.68 then
|
||||
return sin( -11)
|
||||
else
|
||||
return sin( -10)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMinNzDownUp( b3Raw, vtNFace, vtToolDirection, Tool)
|
||||
if vtNFace and abs( vtNFace:getY()) < 0.173
|
||||
and vtToolDirection and vtToolDirection:getY() < 0.173 then
|
||||
|
||||
return sin ( -10.9)
|
||||
else
|
||||
return -1
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetSetupInfo( sHead)
|
||||
local SetupInfo = {}
|
||||
|
||||
-- dati comuni
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
SetupInfo.dCAxisEncumbrance = 180
|
||||
SetupInfo.dCAxisSideEncumbrance = 200
|
||||
SetupInfo.dPivot = 210
|
||||
SetupInfo.bToolOnAggregate = false
|
||||
|
||||
-- testa 5 assi da sopra
|
||||
if sHead == 'H1' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = GetMinNzTopHead
|
||||
SetupInfo.GetMinNzDownUp = GetMinNzDownUp
|
||||
end
|
||||
|
||||
return SetupInfo
|
||||
end
|
||||
BeamData.GetSetupInfo = GetSetupInfo
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMaxMatReductionBladeCut( sHead, vtDir)
|
||||
local MaxMatReductionBladeCut = 0
|
||||
-- la lama è montata solo su H2, non si controllano altre teste
|
||||
if sHead == 'H2' then
|
||||
if BeamData.NEWTOPC == nil or BeamData.NEWTOPC then
|
||||
MaxMatReductionBladeCut = -65
|
||||
end
|
||||
if AreSameVectorApprox( vtDir, X_AX()) then
|
||||
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||
elseif AreSameVectorApprox( vtDir, -X_AX()) then
|
||||
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||
elseif AreSameVectorApprox( vtDir, Y_AX()) then
|
||||
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||
elseif AreSameVectorApprox( vtDir, -Y_AX()) then
|
||||
MaxMatReductionBladeCut = MaxMatReductionBladeCut + 175
|
||||
elseif AreSameVectorApprox( vtDir, Z_AX()) then
|
||||
MaxMatReductionBladeCut = 80
|
||||
elseif AreSameVectorApprox( vtDir, -Z_AX()) then
|
||||
MaxMatReductionBladeCut = 80
|
||||
end
|
||||
MaxMatReductionBladeCut = MaxMatReductionBladeCut + BeamData.COLL_SIC
|
||||
end
|
||||
return MaxMatReductionBladeCut + BeamData.COLL_SIC
|
||||
end
|
||||
BeamData.GetMaxMatReductionBladeCut = GetMaxMatReductionBladeCut
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return BeamData
|
||||
@@ -0,0 +1,302 @@
|
||||
-- BeamData.lua by Egalware s.r.l. 2025/12/03
|
||||
-- Raccolta dati generali per Travi
|
||||
|
||||
EgtOutLog( ' KAIROS-BeamData started', 1)
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local BeamData = {
|
||||
RIGHT_LOAD = false, -- flag carico da destra
|
||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||
ROT180 = true, -- flag abilitazione rotazione 180 gradi
|
||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
||||
MAX_WIDTH = 250, -- larghezza massima del grezzo
|
||||
MAX_HEIGHT = 620, -- altezza massima del grezzo
|
||||
MAX_WIDTH2 = 250, -- seconda larghezza massima del grezzo
|
||||
MAX_HEIGHT2 = 620, -- altezza massima per seconda larghezza massima del grezzo
|
||||
LEN_SHORT_PART = 1200, -- RENAME lunghezza massima pezzo corto
|
||||
LEN_VERY_SHORT_PART = 400, -- RENAME lunghezza massima pezzo molto corto (molto probabile lo scarico a caduta)
|
||||
MAX_RAW = 30000, -- massima lunghezza grezzo (deve essere minore di LenTable - RAW_OFFSET)
|
||||
STD_RAW = 14000, -- lunghezza standard della barra di grezzo
|
||||
OVM_HEAD = 10, -- sovramateriale testa
|
||||
OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama)
|
||||
MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole
|
||||
MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi
|
||||
SAFE_DIM_DICE = 110, -- dimensione trasversale ridotta cubetto, valida in tutte le posizioni
|
||||
MAX_LEN_DICE = 400, -- SOLO DICE lunghezza massima cubetto
|
||||
COLL_SIC = 5, -- distanza di sicurezza per collisioni
|
||||
CUT_SIC = 20, -- distanza di sicurezza per tagli
|
||||
CUT_EXTRA = 5, -- affondamento extra standard per tagli di lama e fresature
|
||||
CUT_EXTRA_MIN = 1, -- affondamento extra ridotto per tagli di lama e fresature
|
||||
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
||||
LONGCUT_ENDLEN = 600, -- RENAME??lunghezza lavoro estremi iniziale e finale (std=600)
|
||||
LONGCUT_MAXLEN = 1200, -- RENAME??lunghezza massima sezione di taglio longitudinale
|
||||
DIM_STRIP = -1, -- dimensione codolo sostegno parti lasciate su contorno libero o archi (-1 = da Q...)
|
||||
DIM_STRIP_SMALL = 1, -- dimensione codolo piccolo (quando le parti sostenute sono sicuramente sulla parte sopra del pezzo)
|
||||
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
|
||||
RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split
|
||||
VICE_MINH = 110, -- altezza minima della morsa
|
||||
VICE_MAXH = 370, -- altezza massima zona pinzaggio orizzontale
|
||||
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
||||
FASTCLAMPING = true
|
||||
}
|
||||
|
||||
-- costanti riportate da mlde non necessarie per automatismo (sostituire con GetParameters o simile)
|
||||
local MldeParameters = {}
|
||||
MldeParameters.NumericalControl = 'SIEMENS' -- NUM o TPA o NUM_PLUS
|
||||
MldeParameters.MinY = -823
|
||||
MldeParameters.MaxY = 520
|
||||
MldeParameters.MinZ = -298
|
||||
MldeParameters.MaxZ = 915
|
||||
MldeParameters.MillOffs = 211.0
|
||||
MldeParameters.DeltaTabY = 0
|
||||
MldeParameters.DeltaTabZ = 0
|
||||
|
||||
-- Aggiornamento con dati macchina personalizzati
|
||||
-- TODO sostituire con GetParameters o simile
|
||||
local sData = EgtGetCurrMachineDir().."\\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.MAX_Y then MldeParameters.MinY = - Machine.Offsets.MAX_Y end
|
||||
if Machine.Offsets.MIN_Y then MldeParameters.MaxY = - Machine.Offsets.MIN_Y end
|
||||
if Machine.Offsets.MIN_Z then MldeParameters.MinZ = Machine.Offsets.MIN_Z end
|
||||
if Machine.Offsets.MAX_Z then MldeParameters.MaxZ = Machine.Offsets.MAX_Z end
|
||||
if Machine.Offsets.MILL_PIVOT then MldeParameters.MillOffs = - Machine.Offsets.MILL_PIVOT end
|
||||
if Machine.Offsets.TAB_OFFSET_Y then MldeParameters.DeltaTabY = Machine.Offsets.TAB_OFFSET_Y end
|
||||
if Machine.Offsets.TAB_OFFSET_Z then MldeParameters.DeltaTabZ = Machine.Offsets.TAB_OFFSET_Z end
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.YMIN or BeamData.MIN_WIDTH
|
||||
BeamData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT
|
||||
BeamData.MAX_WIDTH = Machine.Trave.YMAX or BeamData.MAX_WIDTH
|
||||
BeamData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
|
||||
BeamData.MAX_WIDTH2 = Machine.Trave.YMAX or BeamData.MAX_WIDTH2
|
||||
BeamData.MAX_HEIGHT2 = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT2
|
||||
end
|
||||
if Machine.User then
|
||||
BeamData.USER_HOLE_DIAM = Machine.User.L020_DIAM_HOLE or BeamData.USER_HOLE_DIAM
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetBlockedAxis( sHead, nToolType, sBlockedAxis)
|
||||
-- lama
|
||||
if nToolType == MCH_TY.SAW_STD or nToolType == MCH_TY.SAW_FLAT then
|
||||
return ''
|
||||
-- sega a catena
|
||||
elseif nToolType == MCH_TY.MORTISE_STD then
|
||||
if sHead == 'H3' then
|
||||
if sBlockedAxis == 'parallel' then
|
||||
return 'CS=90'
|
||||
elseif sBlockedAxis == 'perpendicular' then
|
||||
return 'CS=0'
|
||||
end
|
||||
else
|
||||
return ''
|
||||
end
|
||||
-- fresa
|
||||
elseif nToolType == MCH_TY.MILL_STD or nToolType == MCH_TY.MILL_NOTIP then
|
||||
return ''
|
||||
-- punta
|
||||
elseif nToolType == MCH_TY.DRILL_STD or nToolType == MCH_TY.DRILL_LONG then
|
||||
return ''
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
BeamData.GetBlockedAxis = GetBlockedAxis
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetChainSawInitAngs( vtN, vtO, nInd)
|
||||
if nInd == 1 then
|
||||
return ''
|
||||
else
|
||||
return EgtIf( vtN:getY() > 0, 'C=180', 'C=-180')
|
||||
end
|
||||
end
|
||||
BeamData.GetChainSawInitAngs = GetChainSawInitAngs
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetSCC( vtToolDirection, vtEdgeDirection, vtNFace)
|
||||
local nSCC = MCH_SCC.NONE
|
||||
|
||||
if abs( vtToolDirection:getX()) > abs( vtToolDirection:getY()) - GEO.EPS_SMALL then
|
||||
-- se il taglio è orizzontale, si gira aggregato lama per facilitare caduta del legno
|
||||
if abs( vtEdgeDirection:getZ()) < 10 * GEO.EPS_SMALL and not AreSameOrOppositeVectorApprox( vtNFace, Z_AX()) then
|
||||
nSCC = EgtIf( ( vtToolDirection:getX() > -GEO.EPS_SMALL), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP)
|
||||
else
|
||||
nSCC = EgtIf( ( vtToolDirection:getX() > -GEO.EPS_SMALL), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)
|
||||
end
|
||||
else
|
||||
-- se il taglio è orizzontale, si gira aggregato lama per facilitare caduta del legno
|
||||
if abs( vtEdgeDirection:getZ()) < 10 * GEO.EPS_SMALL and not AreSameOrOppositeVectorApprox( vtNFace, Z_AX()) then
|
||||
nSCC = EgtIf( ( vtToolDirection:getY() > -GEO.EPS_SMALL), MCH_SCC.ADIR_YM, MCH_SCC.ADIR_YP)
|
||||
else
|
||||
nSCC = EgtIf( ( vtToolDirection:getY() > -GEO.EPS_SMALL), MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM)
|
||||
end
|
||||
end
|
||||
|
||||
return nSCC
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- TODO leggere direttamente MinA, MinSawA, ...
|
||||
local function GetMinNzTopHead( vtNFace, Tool)
|
||||
if Tool and Tool.sFamily ~= 'SAWBLADE' then
|
||||
return sin( -15)
|
||||
else
|
||||
return sin( -11)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- sAxis può essere AB, C, Z; restituisce direzioni, profondità di estrusione e punti per il controllo precollisione
|
||||
local function GetPreCollisionData( sAxis, vtC, vtHead)
|
||||
|
||||
local PreCollisionData = {}
|
||||
|
||||
-- Pivot uguale per tutti; non c'è aggregato quindi non dipende da SCC
|
||||
-- riferimento vtPivot
|
||||
-- - vtHead (Z): asse rotazione utensile, guarda il mandrino
|
||||
-- - vtToolSCC (X): direzione asse C o aggregato
|
||||
-- - vtEdge (Y): direzione lato, verso in base a X e Z
|
||||
-- - punto di applicazione: naso mandrino o aggregato
|
||||
PreCollisionData.vtMovePivot = Vector3d( 0, 0, MldeParameters.MillOffs)
|
||||
|
||||
-- carro Z
|
||||
if sAxis == 'Z' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = Y_AX(), vtDirectionY = Z_AX(), vtDirectionZ = X_AX()}
|
||||
PreCollisionData.dExtrusionDepth = 300
|
||||
PreCollisionData.Points = {
|
||||
Point3d( -150.001, 2209.004, 0),
|
||||
Point3d( 150.001, 2209.004, 0),
|
||||
Point3d( 150.001, 2204.955, 0),
|
||||
Point3d( 194.679, 2204.955, 0),
|
||||
Point3d( 195.004, 362.996, 0),
|
||||
Point3d( 149.998, 362.996, 0),
|
||||
Point3d( 149.998, 324.754, 0),
|
||||
Point3d( 104.999, 324.754, 0),
|
||||
Point3d( 104.999, 313.754, 0),
|
||||
Point3d( -104.999, 313.754, 0),
|
||||
Point3d( -104.999, 324.754, 0),
|
||||
Point3d( -149.998, 324.754, 0),
|
||||
Point3d( -149.998, 362.996, 0),
|
||||
Point3d( -195.001, 362.996, 0),
|
||||
Point3d( -194.679, 2204.955, 0),
|
||||
Point3d( -150.001, 2204.995, 0),
|
||||
Point3d( -150.001, 2209.004, 0)
|
||||
}
|
||||
|
||||
-- motore (asse A o B)
|
||||
elseif sAxis == 'AB' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = vtHead ^ vtC, vtDirectionY = vtHead, vtDirectionZ = vtC}
|
||||
PreCollisionData.dExtrusionDepth = 167
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 35.5, -211.06, 0),
|
||||
Point3d( -35.5, -211.06, 0),
|
||||
Point3d( -35.5, -198.06, 0),
|
||||
Point3d( -59.912, -198.06, 0),
|
||||
Point3d( -60.012, -135.897, 0),
|
||||
Point3d( -73.033, -135.897, 0),
|
||||
Point3d( -73.033, -129, 0),
|
||||
Point3d( -76.679, -129, 0),
|
||||
Point3d( -94, -99, 0),
|
||||
Point3d( -94, 36, 0),
|
||||
Point3d( -79.854, 60.5, 0),
|
||||
Point3d( -75.544, 60.5, 0),
|
||||
Point3d( -75.544, 201.158, 0),
|
||||
Point3d( -46.616, 209.792, 0),
|
||||
Point3d( -6, 215.5, 0),
|
||||
Point3d( 6, 215.5, 0),
|
||||
Point3d( 46.616, 209.792, 0),
|
||||
Point3d( 75.001, 201.158, 0),
|
||||
Point3d( 75.001, 60.5, 0),
|
||||
Point3d( 79.855, 60.5, 0),
|
||||
Point3d( 94, 36, 0),
|
||||
Point3d( 94, -99, 0),
|
||||
Point3d( 76.68, -129, 0),
|
||||
Point3d( 75.967, -129, 0),
|
||||
Point3d( 75.967, -136.224, 0),
|
||||
Point3d( 59.938, -136.224, 0),
|
||||
Point3d( 59.938, -198.06, 0),
|
||||
Point3d( 35.5, -198.06, 0),
|
||||
Point3d( 35.5, -211.06, 0)
|
||||
}
|
||||
|
||||
-- asse C
|
||||
elseif sAxis == 'C' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = vtC, vtDirectionY = Z_AX(), vtDirectionZ = vtC ^ Z_AX()}
|
||||
PreCollisionData.dExtrusionDepth = 260
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 91.5, 163.55, 0),
|
||||
Point3d( 92.75, -103.001, 0),
|
||||
Point3d( 304.669, -103.001, 0),
|
||||
Point3d( 311.446, -79.727, 0),
|
||||
Point3d( 318.015, -45.806, 0),
|
||||
Point3d( 320.875, -2.072, 0),
|
||||
Point3d( 320.875, 290, 0),
|
||||
Point3d( 310, 314.5, 0),
|
||||
Point3d( -110, 314.5, 0),
|
||||
Point3d( -110, 235, 0),
|
||||
Point3d( -49.992, 211.022, 0),
|
||||
Point3d( 19.775, 199.927, 0),
|
||||
Point3d( 65, 199.927, 0),
|
||||
Point3d( 77, 190, 0),
|
||||
Point3d( 77, 163.852, 0),
|
||||
Point3d( 78, 163.55, 0),
|
||||
Point3d( 91.5, 163.55, 0)
|
||||
}
|
||||
end
|
||||
|
||||
return PreCollisionData
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetSetupInfo( sHead)
|
||||
local SetupInfo = {}
|
||||
|
||||
-- dati comuni
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
SetupInfo.dCAxisEncumbrance = 180
|
||||
SetupInfo.dCAxisSideEncumbrance = 200
|
||||
SetupInfo.bToolOnAggregate = false
|
||||
SetupInfo.vtRotationAxisC = EgtGetAxisDir( 'C')
|
||||
SetupInfo.vtRotationAxisAB = EgtGetAxisDir( 'A')
|
||||
|
||||
-- TODO da rimuovere quando si fara PreSimulation di asse Z per frese
|
||||
SetupInfo.dPivot = MldeParameters.MillOffs
|
||||
|
||||
-- testa 5 assi da sopra
|
||||
if sHead == 'H1' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = GetMinNzTopHead
|
||||
SetupInfo.GetPreCollisionData = GetPreCollisionData
|
||||
SetupInfo.GetSCC = GetSCC
|
||||
-- sega a catena
|
||||
elseif sHead == 'H3' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
-- rinvio angolare 90° (considerato come fosse una testa da sotto)
|
||||
elseif sHead == 'H5' then
|
||||
SetupInfo.bToolOnAggregate = true
|
||||
SetupInfo.HeadType = { bTop = false, bBottom = true}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMaxNz = function() return 0 end
|
||||
end
|
||||
|
||||
return SetupInfo
|
||||
end
|
||||
BeamData.GetSetupInfo = GetSetupInfo
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return BeamData
|
||||
@@ -0,0 +1,9 @@
|
||||
-- %TABLE_NAME%.lua by Egaltech s.r.l. %DATE_TIME%
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local %TABLE_NAME% = {
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return %TABLE_NAME%
|
||||
@@ -0,0 +1,45 @@
|
||||
-- C:\EgtData\Machines\Saomad-KAIROS\Beam\EbwData.lua
|
||||
|
||||
local Offsets = {
|
||||
MIN_Y=-1150,
|
||||
MAX_Y=570,
|
||||
MIN_Z=-298,
|
||||
MAX_Z=910,
|
||||
MIN_A=-120,
|
||||
MAX_A=120,
|
||||
MIN_C=-240,
|
||||
MAX_C=240,
|
||||
MIN_X1=62,
|
||||
MAX_X1=3650,
|
||||
PARK_X1=570,
|
||||
MIN_X2=-3650,
|
||||
MAX_X2=-62,
|
||||
PARK_X2=-500,
|
||||
BEAM_LOAD=1800.0,
|
||||
BEAM_UNLOAD=-2060,
|
||||
TURN_OFFS=0,
|
||||
MILL_PIVOT=-247.6174,
|
||||
TAB_OFFSET_Y=0,
|
||||
TAB_OFFSET_Z=0,
|
||||
TIPO_CN=0,
|
||||
RIBCAR=0,
|
||||
NOULOAD=0
|
||||
}
|
||||
|
||||
local Trave = {
|
||||
YMIN=30,
|
||||
YMAX=291,
|
||||
ZMIN=30,
|
||||
ZMAX=621
|
||||
}
|
||||
|
||||
local User = {
|
||||
OPTIMIZATIONS_ENABLE_SLICES_F5=1,
|
||||
OPTIMIZATIONS_ENABLE_SLICES_F6=1,
|
||||
OPTIMIZATIONS_LENGTH_SLICES=100,
|
||||
L020_DIAM_HOLE=14,
|
||||
L040_OFFSET_P1=0
|
||||
}
|
||||
|
||||
local Machine = { Offsets=Offsets, Trave=Trave, User=User}
|
||||
return Machine
|
||||
@@ -0,0 +1,52 @@
|
||||
; PIndex = Type, PName, Default, Description
|
||||
; Type : d=double, l=length, s=string
|
||||
|
||||
[1]
|
||||
Name=Offsets
|
||||
1=l,YCARICO,-1460.0,YCARICO
|
||||
2=l,YSCARICO,1700.0,YSCARICO
|
||||
3=l,OFFSETRIB,150.0,OFFSETRIB
|
||||
4=l,PARKYY,480,PARKYY
|
||||
5=l,PARKVV,-480,PARKVV
|
||||
6=l,PIVOTFRESA,-177.0,PIVOTFRESA
|
||||
7=l,PIVOTLAMA,242.0,PIVOTLAMA
|
||||
8=l,OFFSETX,-900.0,OFFSETX
|
||||
9=l,OFFSETZ,-1015.0,OFFSETZ
|
||||
10=l,MIN_X,-1350,MIN_X
|
||||
11=l,MAX_X,0,MAX_X
|
||||
12=l,MIN_Y,110,MIN_Y
|
||||
13=l,MAX_Y,3735,MAX_Y
|
||||
14=l,MIN_Z,-1350,MIN_Z
|
||||
15=l,MAX_Z,0,MAX_Z
|
||||
16=d,MIN_B,-180,MIN_B
|
||||
17=d,MAX_B,360,MAX_B
|
||||
18=d,MIN_C,-360,MIN_C
|
||||
19=d,MAX_C,360,MAX_C
|
||||
20=l,MIN_V,-3735,MIN_V
|
||||
21=l,MAX_V,-110,MAX_V
|
||||
22=d,TIPO_CN,2,TIPO_CN
|
||||
23=d,OFFSETCLAMA,0,OFFSETCLAMA
|
||||
24=d,OFFSETBLAMA,0,OFFSETBLAMA
|
||||
25=d,RIBCAR,0,RIBCAR
|
||||
26=d,SECSUP,1,SECSUP
|
||||
27=d,BLOCKHAUS,0,Blockhaus Configuration
|
||||
28=l,NOULOAD,0,Max Unload Length (0=no limits)
|
||||
29=l,OFFSETX_RINV_1,150,OFFSETX_RINV_1
|
||||
30=l,OFFSETZ_RINV_1,347,OFFSETZ_RINV_1
|
||||
31=l,OFFSETX_RINV_2,150,OFFSETX_RINV_2
|
||||
32=l,OFFSETZ_RINV_2,347,OFFSETZ_RINV_2
|
||||
|
||||
[2]
|
||||
Name=Trave
|
||||
1=l,XMIN,29,XMIN
|
||||
2=l,XMAX,305,XMAX
|
||||
3=l,ZMIN,20,ZMIN
|
||||
4=l,ZMAX,625,ZMAX
|
||||
|
||||
[3]
|
||||
Name=User
|
||||
1=d,OPTIMIZATIONS_ENABLE_SLICES_F5,1,ENABLE_SLICES_ON_END
|
||||
2=d,OPTIMIZATIONS_ENABLE_SLICES_F6,1,ENABLE_SLICES_ON_START
|
||||
3=d,OPTIMIZATIONS_LENGTH_SLICES,100,SLICES_LENGTH
|
||||
4=l,L020_DIAM_HOLE,20,L020_HOLE_DIAM
|
||||
5=l,L040_OFFSET_P1,0,L040_ON_TENON_OFFSET
|
||||
@@ -0,0 +1,43 @@
|
||||
[Cut]
|
||||
1=HeadSide
|
||||
2=TailSide
|
||||
|
||||
[Drill]
|
||||
1=Drill
|
||||
2=Drill_AT
|
||||
3=Pocket
|
||||
4=AngleDrill
|
||||
|
||||
[Milling]
|
||||
1=Prof
|
||||
2=FreeContour
|
||||
3=Tenon
|
||||
4=DtTenon
|
||||
5=DtMortise
|
||||
6=DtMortise_AT
|
||||
7=BirdsMouth
|
||||
8=Chamfer
|
||||
9=Mark
|
||||
10=Text
|
||||
11=Text_AT
|
||||
12=Decor01
|
||||
13=Long2Cut
|
||||
14=Long2CutDown
|
||||
15=LongSmallCut
|
||||
16=BHSideMill
|
||||
17=CleanCorner
|
||||
18=ProfTCone
|
||||
19=Long2CutSide
|
||||
20=SmallToolContour
|
||||
21=AntiSplintMillCut
|
||||
|
||||
[Pocketing]
|
||||
1=Pocket
|
||||
2=Pocket_AT
|
||||
3=OpenPocket
|
||||
4=Mortise
|
||||
5=Mortise_AT
|
||||
|
||||
[Sawing]
|
||||
1=Sawing
|
||||
2=Mortising
|
||||
@@ -0,0 +1,3 @@
|
||||
[BEAM]
|
||||
StartOffset=15
|
||||
Offset=20
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
|
||||
REM Compilazione degli script macchina Egaltech 2024.02.22
|
||||
REM Per togliere info di debug aggiungere flag -s prima del nome del file di input
|
||||
|
||||
REM Compilazione 32 bit e copia file da non compilare
|
||||
|
||||
@echo off
|
||||
|
||||
REM chiedo all'utente la versione da assegnare alla macchina da compilare
|
||||
set /p "machineVersion=Inserisci versione: "
|
||||
|
||||
REM variabili per costruire i percorsi delle cartelle
|
||||
set "machineName=Saomad-KAIROS-MK3"
|
||||
set "deployFolder=C:\MachinesDeploy"
|
||||
set "machinePath=%deployFolder%\%machineName%\"
|
||||
set "fullPathSource=%deployFolder%\%machineName%\%machineVersion%\%machineName%"
|
||||
set "fullPathZip=%deployFolder%\%machineName%\%machineVersion%"
|
||||
|
||||
REM elimino eventuale cartella esistente
|
||||
rmdir /s /Q %fullPathZip%
|
||||
|
||||
REM copio i sorgenti nel percorso di destinazione
|
||||
ROBOCOPY . %fullPathSource%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
|
||||
REM copio i sorgenti nel percorso temporaneo per i compilati
|
||||
ROBOCOPY . %fullPathSource%\bin\%machineName%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
|
||||
|
||||
REM copio i file compilati nel percorso temporaneo per i compilati
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Saomad-KAIROS-MK3.mlpe -s Saomad-KAIROS-MK3.mlpe
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Saomad-KAIROS-MK3.mlse -s Saomad-KAIROS-MK3.mlse
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Saomad-KAIROS-MK3.SIEMENS.mlpe -s Saomad-KAIROS-MK3.SIEMENS.mlpe
|
||||
|
||||
REM comprimo i file compilati in uno zip pronto per essere distribuito
|
||||
tar.exe acvf %fullPathZip%\%machineName%.zip -C %fullPathSource%\bin\ %machineName%\*.*
|
||||
|
||||
REM elimino il percorso temporaneo
|
||||
rmdir /s /Q %fullPathSource%\bin\
|
||||
@@ -0,0 +1,58 @@
|
||||
; 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=l,MaxElev,0
|
||||
1=d,OutRaw,0
|
||||
2=l,SideElev,0
|
||||
3=d,TrimExt,0
|
||||
4=s,VtFaceUse,0,0,0
|
||||
5=s,EdgesFaceUse,0
|
||||
|
||||
[Pocketing]
|
||||
0=l,MaxElev,0
|
||||
1=l,Open,0
|
||||
2=l,OpenMinSafe,0
|
||||
3=d,OpenOutRaw,0
|
||||
4=l,MaxOptSize,0
|
||||
|
||||
[Mortising]
|
||||
0=l,MaxElev,0
|
||||
|
||||
[Chiseling]
|
||||
|
||||
[SawRoughing]
|
||||
|
||||
[SawFinishing]
|
||||
|
||||
[GenMachining]
|
||||
|
||||
[SurfRoughing]
|
||||
0=l,MaxElev,1000
|
||||
1=b,PlaneZ,0
|
||||
|
||||
[SurfFinishing]
|
||||
0=b,SkipMaxDown,1
|
||||
|
||||
[5AxMilling]
|
||||
0=l,LinTol,0.01
|
||||
1=l,MaxLen,10
|
||||
2=s,Type,ZigZag
|
||||
3=d,SideAng,90
|
||||
4=l,Step,10
|
||||
5=d,AngIni,-90
|
||||
6=d,AngFin,90
|
||||
7=l,LiTang,0
|
||||
8=l,LiOrth,0
|
||||
9=l,LiElev,0
|
||||
10=l,LoTang,0
|
||||
11=l,LoOrth,0
|
||||
12=l,LoElev,0
|
||||
13=b,DirFromGuide,0
|
||||
14=b,SurfAvoid,0
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
// English machine message file 2023/12/06
|
||||
|
||||
[PLC]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// File dei messaggi macchina Italiano 2023/12/06
|
||||
[MDI]
|
||||
|
||||
|
||||
[PLC]
|
||||
|
||||
|
||||
[CNC]
|
||||
|
||||
|
||||
[INPUT]
|
||||
@@ -0,0 +1,262 @@
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>slaeconv</name>
|
||||
<message>
|
||||
<source>700000/PLC/PMC</source>
|
||||
<translation>MACCHINA IN EMERGENZA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700001/PLC/PMC</source>
|
||||
<translation>FUNGO SU QUADRO PREMUTO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700002/PLC/PMC</source>
|
||||
<translation>FUNGO SU CONSOLLE PREMUTO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700003/PLC/PMC</source>
|
||||
<translation>PORTE APERTE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700004/PLC/PMC</source>
|
||||
<translation>ANOMALIA PRESENZA ARIA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700005/PLC/PMC</source>
|
||||
<translation>CAMBIO UTENSILE INTERROTTO! PREMERE RESET PER 5 SECONDI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700006/PLC/PMC</source>
|
||||
<translation>ANOMALIA SBLOCCO UTENSILE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700007/PLC/PMC</source>
|
||||
<translation>ANOMALIA BLOCCO UTENSILE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700008/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PRESSORE ORIZZONTALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700009/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PRESSORE ORIZZONTALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700010/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI PISTONE SCARICO </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700011/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO PISTONE SCARICO </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700012/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA SOLLEVATORE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700013/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA SOLLEVATORE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700014/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA SOLLEVATORE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700015/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA SOLLEVATORE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700016/PLC/PMC</source>
|
||||
<translation>ANOMALIA SEGA AVANTI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700017/PLC/PMC</source>
|
||||
<translation>ANOMALIA SEGA INDIETRO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700018/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA BATTUTA INTERMEDIA INGRESSO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700019/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA BATTUTA INTERMEDIA INGRESSO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700020/PLC/PMC</source>
|
||||
<translation>ANOMALIA CATENE INGRESSO SU</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700021/PLC/PMC</source>
|
||||
<translation>ANOMALIA CATENE INGRESSO GIU</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700022/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO AVANTI X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700023/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO INDIETRO X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700024/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO AVANTI X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700025/PLC/PMC</source>
|
||||
<translation>ANOMALIA PIATTO INDIETRO X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700026/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA PRESSORE VERTICALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700027/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA PRESSORE VERTICALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700028/PLC/PMC</source>
|
||||
<translation>ANOMALIA SALITA PRESSORE VERTICALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700029/PLC/PMC</source>
|
||||
<translation>ANOMALIA DISCESA PRESSORE VERTICALE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700030/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PRESSORE ORIZZONTALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700031/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PRESSORE ORIZZONTALE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700032/PLC/PMC</source>
|
||||
<translation>ANOMALIA CONDIZIONATORE QUADRO ELETTRICO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700033/PLC/PMC</source>
|
||||
<translation>SBLOCCO UT NON POSSIBILE CON MANDRINO NON FERMO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700034/PLC/PMC</source>
|
||||
<translation>ANOMALIA SBLOCCO UTENSILE 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700035/PLC/PMC</source>
|
||||
<translation>INTERVENTO TERMICO POMPA DI LUBRIFICAZIONE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700036/PLC/PMC</source>
|
||||
<translation>LIVELLO MINIMO OLIO LUBRIFICAZIONE</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700037/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PROTEZIONE CONI SINISTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700038/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PROTEZIONE CONI SINISTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700039/PLC/PMC</source>
|
||||
<translation>ANOMALIA APERTURA PROTEZIONE CONI DESTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700040/PLC/PMC</source>
|
||||
<translation>ANOMALIA CHIUSURA PROTEZIONE CONI DESTRA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700041/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA MODILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700042/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA MOBILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700043/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA 100 MODILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700044/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA 100 MOBILE X1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700045/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA MODILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700046/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA MOBILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700047/PLC/PMC</source>
|
||||
<translation>ANOMALIA AVANTI RULLIERA 100 MODILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700048/PLC/PMC</source>
|
||||
<translation>ANOMALIA INDIETRO RULLIERA 100 MOBILE X2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700049/PLC/PMC</source>
|
||||
<translation>SCARICO PIENO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700050/PLC/PMC</source>
|
||||
<translation>PASSO LEGNO IMPEGNATO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700051/PLC/PMC</source>
|
||||
<translation>ASSE Z NON IN POSIZIONE PER START CICLO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700052/PLC/PMC</source>
|
||||
<translation>ASSE Y NON IM POSIZIONE PER START CICLO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700053/PLC/PMC</source>
|
||||
<translation>INCONGRUENZA DATI UTENSILE IN MANDRINO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700054/PLC/PMC</source>
|
||||
<translation>STOP WORKING ATTIVO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700055/PLC/PMC</source>
|
||||
<translation>AUTO OFF ATTIVO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700056/PLC/PMC</source>
|
||||
<translation>LUNGHEZZA PEZZO ERRATA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700057/PLC/PMC</source>
|
||||
<translation>LARGHEZZA PEZZO ERRATA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700058/PLC/PMC</source>
|
||||
<translation>SPESSORE PEZZO ERRATO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700059/PLC/PMC</source>
|
||||
<translation>FEED HOLD - SPINDLE HOLD</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700060/PLC/PMC</source>
|
||||
<translation>PRERISCALDO MANDRINO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700061/PLC/PMC</source>
|
||||
<translation>PRERISCALDO MANDRINO IN CORSO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700062/PLC/PMC</source>
|
||||
<translation>SELETTORE BYPASS PULSANTIERA WIRELESS ATTIVO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>700063/PLC/PMC</source>
|
||||
<translation>VALVOLA PROPORZIONALE SMC PROFIBUS CHIUSURA PINZE FAULT</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -1,93 +0,0 @@
|
||||
# Saomad-KAIROS-MK3
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
|
||||
## Add your files
|
||||
|
||||
* [Create](https://docs.gitlab.com/user/project/repository/web_editor/#create-a-file) or [upload](https://docs.gitlab.com/user/project/repository/web_editor/#upload-a-file) files
|
||||
* [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin https://gitlab.steamware.net/egalware-machines/saomad/saomad-kairos-mk3.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
|
||||
## Integrate with your tools
|
||||
|
||||
* [Set up project integrations](https://gitlab.steamware.net/egalware-machines/saomad/saomad-kairos-mk3/-/settings/integrations)
|
||||
|
||||
## Collaborate with your team
|
||||
|
||||
* [Invite team members and collaborators](https://docs.gitlab.com/user/project/members/)
|
||||
* [Create a new merge request](https://docs.gitlab.com/user/project/merge_requests/creating_merge_requests/)
|
||||
* [Automatically close issues from merge requests](https://docs.gitlab.com/user/project/issues/managing_issues/#closing-issues-automatically)
|
||||
* [Enable merge request approvals](https://docs.gitlab.com/user/project/merge_requests/approvals/)
|
||||
* [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
|
||||
|
||||
## Test and Deploy
|
||||
|
||||
Use the built-in continuous integration in GitLab.
|
||||
|
||||
* [Get started with GitLab CI/CD](https://docs.gitlab.com/ci/quick_start/)
|
||||
* [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/user/application_security/sast/)
|
||||
* [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/topics/autodevops/requirements/)
|
||||
* [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/user/clusters/agent/)
|
||||
* [Set up protected environments](https://docs.gitlab.com/ci/environments/protected_environments/)
|
||||
|
||||
***
|
||||
|
||||
# Editing this README
|
||||
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
|
||||
## Suggestions for a good README
|
||||
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
||||
|
||||
## Name
|
||||
Choose a self-explaining name for your project.
|
||||
|
||||
## Description
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
||||
|
||||
## Badges
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
## Visuals
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
## Installation
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
||||
|
||||
## Usage
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
||||
|
||||
## Support
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
||||
|
||||
## Roadmap
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
|
||||
## Contributing
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
||||
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
|
||||
## Authors and acknowledgment
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
|
||||
## License
|
||||
For open source projects, say how it is licensed.
|
||||
|
||||
## Project status
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,117 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
[General]
|
||||
Material=Beam
|
||||
NCType=5 ; 1=Tpa, 2=Num Flexium, 3=Num Axium APServer, 4=Num Axium PCToolkit, 5=Siemens_Sharp7
|
||||
Flow=2
|
||||
IsoFileDir=\\192.168.214.253\iso
|
||||
Ip=192.168.214.1
|
||||
Rack=0
|
||||
Slot=1
|
||||
Debug=2
|
||||
|
||||
[MainVariables]
|
||||
; 1 = Name, Variable Path, ReadType, Type
|
||||
; ReadType => o=one time;c=continuous
|
||||
; Type => plc;cn
|
||||
1=Data_ToRead,302:0.0:1,c,plc
|
||||
2=Reset_State,302:0.1:1,c,plc
|
||||
3=Running,302:2.0:2,c,plc
|
||||
;1=Data_ToRead,302:0.0:3,c,plc
|
||||
;2=Reset_State,302:1.0:2,c,plc
|
||||
;3=Running,302:2.0:2,c,plc
|
||||
4=P_Prod,302:4.0:2,c,plc
|
||||
5=P_Machgroup,302:6.0:2,c,plc
|
||||
6=P_Part,302:8.0:2,c,plc
|
||||
7=P_State,302:10.0:2,c,plc
|
||||
8=Laser_X,302:12.0:2,c,plc
|
||||
9=Laser_Y,302:14.0:2,c,plc
|
||||
10=Laser_Z,302:16.0:2,c,plc
|
||||
11=Alarms1,302:18.0:2,c,plc
|
||||
12=Alarms2,302:20.0:2,c,plc
|
||||
13=Alarms3,302:22.0:2,c,plc
|
||||
14=Alarms4,302:24.0:2,c,plc
|
||||
15=Alarms5,302:26.0:2,c,plc
|
||||
16=Alarms6,302:28.0:2,c,plc
|
||||
17=Data_Readed,301:0.0:1,c,plc
|
||||
18=Reset_Readed,301:0.1:1,c,plc
|
||||
19=ISO_Num,301:2.0:2,c,plc
|
||||
20=Reset_Step,301:1.4:1,c,plc
|
||||
21=Reset_Step_Ok,302:0.2:1,c,plc
|
||||
22=NC_Status,302:30.0:2,c,plc
|
||||
23=NC_Mode,302:32.0:2,c,plc
|
||||
24=Open_Clamp,302:0.4:1,c,plc
|
||||
25=PLC_Messages1,302:18.0:2,c,plc
|
||||
26=PLC_Messages2,302:20.0:2,c,plc
|
||||
27=PLC_Messages3,302:22.0:2,c,plc
|
||||
28=PLC_Messages4,302:24.0:2,c,plc
|
||||
29=PLC_Messages5,302:26.0:2,c,plc
|
||||
30=PLC_Messages6,302:28.0:2,c,plc
|
||||
31=W_Carico,301:8.0:2,c,plc
|
||||
|
||||
[Languages]
|
||||
Enable=0
|
||||
Language1=Italiano,Ita.txt
|
||||
Language2=English,Eng.txt
|
||||
|
||||
[Tools]
|
||||
Drillbit=1
|
||||
Sawblade=1
|
||||
Mill=1
|
||||
Mortise=1
|
||||
Chisel=0
|
||||
DrillMaker=MakeWoodDrill.lua
|
||||
SawbladeMaker=MakeSawblade.lua
|
||||
MillMaker=MakeWoodCylMill.lua
|
||||
MortiseMaker=MakeMortise.lua
|
||||
ChiselMaker=MakeChisel.lua
|
||||
Active=0
|
||||
|
||||
[ToolHolder]
|
||||
H1.1=Standard.nge
|
||||
H1.1:MILL_NOTIP=MillNoTip.nge
|
||||
H1.1:SAW_FLAT=TcSaw.nge
|
||||
H3.1=ChainSaw.nge
|
||||
|
||||
[Machinings]
|
||||
Drilling=1
|
||||
Sawing=1
|
||||
Milling=1
|
||||
Pocketing=1
|
||||
Mortising=1
|
||||
Chiseling=0
|
||||
GenMachining=0
|
||||
SurfRoughing=1
|
||||
SurfFinishing=1
|
||||
5AxMilling=1
|
||||
|
||||
[5AxMilling]
|
||||
5AxScript1=5AxProject
|
||||
5AxScript2=5AxPocketProject
|
||||
|
||||
[Machining]
|
||||
InitScript=InitMach.lua
|
||||
ExitScript=ExitMach.lua
|
||||
|
||||
[Disposition]
|
||||
;InitScript=InitDisp.lua
|
||||
|
||||
[Heads]
|
||||
; 5 axis head
|
||||
H1=6608
|
||||
; 5 axis saw
|
||||
H2=6615
|
||||
; Chainsaw
|
||||
H3=6616
|
||||
; Angular transmission
|
||||
H5=6603
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
|
||||
[Estimations]
|
||||
Enable=1
|
||||
WinPlace=0,-1270,21,669,863
|
||||
|
||||
[VMill]
|
||||
Enable=1
|
||||
Save=0
|
||||
@@ -0,0 +1,626 @@
|
||||
-- Descrizione macchina Saomad-KAIROS by EgalWare s.r.l. 2024/07/08
|
||||
-- 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
|
||||
-- 2024/07/08 ver 2.6g3 Aggiunta gestione sega a catena (MANCA generazione codice CN).
|
||||
-- 2024/09/11 ver 2.6i1 In generazione movimento in Z dopo spostamento pinze
|
||||
-- Corretto calcolo valori per feed assi
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '3.1d1_DEV1'
|
||||
MIN_MACH_VER = '2.7l2'
|
||||
|
||||
EgtOutLog ( '** Saomad-KAIROS '..PP_VER..' (MinMach '.. MIN_MACH_VER ..') **', 1)
|
||||
|
||||
-- Parametri macchina
|
||||
NumericalControl = 'SIEMENS'
|
||||
ChainSaw = false
|
||||
MinY = -1150
|
||||
MaxY = 570
|
||||
ParkY = 400
|
||||
FmaxY = 45000
|
||||
MinZ = -298
|
||||
MaxZ = 915
|
||||
ParkZ = 900
|
||||
FmaxZ = 45000
|
||||
MinA = -120
|
||||
MaxA = 120
|
||||
MinSawA = -101
|
||||
MaxSawA = 101
|
||||
ParkA = 0
|
||||
FmaxA = 10440
|
||||
MinC = -240
|
||||
MaxC = 240
|
||||
ParkC = -90
|
||||
FmaxC = 18000
|
||||
MillOffs = 247.6174
|
||||
ChSawLen = 141.5
|
||||
MinX1 = 62.0
|
||||
MaxX1 = 3650.0
|
||||
ParkX1 = 480.0
|
||||
FmaxX1 = 45000
|
||||
MinX2 = -3650.0
|
||||
MaxX2 = -62.0
|
||||
ParkX2 = -480.0
|
||||
FmaxX2 = 45000
|
||||
LoadT = 1800.0
|
||||
UnloadT = -1800
|
||||
UnloadSmT = UnloadT
|
||||
TurnerOffs = 0
|
||||
MaxHOpen = 330 -- Massima apertura pinza PX
|
||||
MaxVOpen = 150 -- Massima apertura pinza QX
|
||||
LenToPress = 500
|
||||
DeltaTabY = 0
|
||||
DeltaTabZ = 0
|
||||
DimTabY = 500
|
||||
DimTabX = 34000
|
||||
DistBack = 880
|
||||
StartRotation = true
|
||||
AutomaticRotation = true
|
||||
AutoRotMinLen = 2600
|
||||
MaxUnloadLen = 0
|
||||
DefTcPos = 'T101'
|
||||
CoeffVM = 0.5
|
||||
DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa
|
||||
ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data
|
||||
ClampSmallH = 98.5 -- dimensioni area di pinzaggio
|
||||
ClampH = 440.9
|
||||
ClampL = 1491
|
||||
ClampSmallL = 994.4 -- dimensioni area di pinzaggio
|
||||
ClampFrontAngle = 35 -- angolo pinza frontale
|
||||
MinJoinVV = 75
|
||||
MinJoinSS = 100
|
||||
MinJoinLS = 290
|
||||
MinJoinSL = 100
|
||||
MinJoinLL = 400
|
||||
-- variabili per pinzaggio
|
||||
CLAMP_MAXDIST_2CLAMP = 3000 -- massima distanza tra ingombro lavorazione e pinza quando il pezzo è staffato con entrtambe le pinze (lavorazioni centrali)
|
||||
CLAMP_MAXDIST_1CLAMP = 500 -- massima distanza tra ingombro lavorazione e pinza quando il pezzo è staffato con una sola pinza (lavorazioni testa-coda)
|
||||
|
||||
-- Aggiornamento con dati da B&W
|
||||
local sData = EgtGetCurrMachineDir().."\\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
|
||||
if Machine.Offsets.MIN_JOIN_VV then MinJoinVV = EgtClamp( Machine.Offsets.MIN_JOIN_VV, 60, 150) end
|
||||
if Machine.Offsets.MIN_JOIN_SS then MinJoinSS = EgtClamp( Machine.Offsets.MIN_JOIN_SS, 80, 275) end
|
||||
if Machine.Offsets.MIN_JOIN_LS then MinJoinLS = EgtClamp( Machine.Offsets.MIN_JOIN_LS, 250, 400) end
|
||||
if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = EgtClamp( Machine.Offsets.MIN_JOIN_SL, 80, 400) end
|
||||
if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = EgtClamp( Machine.Offsets.MIN_JOIN_LL, 300, 600) end
|
||||
if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end
|
||||
end
|
||||
ParkY = EgtClamp( ParkY, MinY, MaxY)
|
||||
ParkZ = EgtClamp( ParkZ, MinZ, MaxZ)
|
||||
ParkA = EgtClamp( ParkA, MinA, MaxA)
|
||||
ParkC = EgtClamp( ParkC, MinC, MaxC)
|
||||
UnloadSmT = UnloadT
|
||||
end
|
||||
end
|
||||
-- Aggiorno valori MinJoin
|
||||
MinJoin = MinJoinSS
|
||||
MinOther = abs( MinX1) + abs( MaxX2) + MinJoin
|
||||
DeltaTol = 210
|
||||
|
||||
EmtGeneral {
|
||||
File='Saomad-KAIROS-MK3.nge',
|
||||
Offset = Vector3d( 0.0, 0.0, 0.0),
|
||||
AxisMaxAdjust = 30,
|
||||
AxisMaxRotAdj = 0.5,
|
||||
ExitMaxAdjust = 30,
|
||||
ExitMaxRotAdj = 0.5,
|
||||
AngDeltaMinForHome = 165,
|
||||
NewLinkMgr = 1,
|
||||
Special = 'Saomad-KAIROS-MK3.mlse',
|
||||
Processor = 'Saomad-KAIROS-MK3.mlpe'}
|
||||
local BaseId = EmtBase {
|
||||
Name = 'Base',
|
||||
Geo='BASE/GEO',
|
||||
Aux={'BASE/SOLID', 'BASE/LOAD', 'BASE/UNLOAD', 'BASE/TC', 'BASE/TC2', 'BASE/SIGN', 'BASE/COLLISION'}}
|
||||
local YId = EmtAxis {
|
||||
Name = 'Y',
|
||||
Parent = 'Base',
|
||||
Token = 'Y1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Y_AX(),
|
||||
Pos = Point3d( -284.173, 196.388, 2252.44),
|
||||
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( 0.0259, -149.993, 678.346),
|
||||
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.314, 0.007, 547.115),
|
||||
Stroke = {MinC, MaxC},
|
||||
Home = ParkC,
|
||||
Geo = 'C_AXIS/GEO',
|
||||
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
|
||||
local AId = EmtAxis {
|
||||
Name = 'A',
|
||||
Parent = 'C',
|
||||
Token = 'A1',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = X_AX(),
|
||||
Pos = Point3d( 35.3132, 0.001, 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
|
||||
EmtAxis {
|
||||
Name = 'CS',
|
||||
Parent = 'A',
|
||||
Token = '**',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = { -90, 0},
|
||||
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 = Y_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')]]
|
||||
-- Morse
|
||||
local X1Id = EmtAxis {
|
||||
Name = 'X1',
|
||||
Token = 'X1',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( -905, 124.5, 886.44),
|
||||
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( -905, 94.5, 886.44),
|
||||
Stroke = { 0, MaxHOpen},
|
||||
Home = MaxHOpen,
|
||||
Geo = 'PX1_AXIS/GEO',
|
||||
Aux = {'PX1_AXIS/SOLID', 'PX1_AXIS/COLLISION', 'PX1_AXIS/CLAMP_CHECK'}}
|
||||
local QX1Id = EmtAxis {
|
||||
Name = 'QX1',
|
||||
Parent = 'X1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( -598, -22, 839.44),
|
||||
Stroke = { 0, MaxVOpen},
|
||||
Home = MaxVOpen,
|
||||
Geo = 'QX1_AXIS/GEO',
|
||||
Aux = 'QX1_AXIS/SOLID'}
|
||||
local X2Id = EmtAxis {
|
||||
Name = 'X2',
|
||||
Token = 'X2',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 905, 124.5, 886.44),
|
||||
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( 905, 94.5, 886.44),
|
||||
Stroke = { 0, MaxHOpen},
|
||||
Home = MaxHOpen,
|
||||
Geo = 'PX2_AXIS/GEO',
|
||||
Aux = {'PX2_AXIS/SOLID', 'PX2_AXIS/COLLISION', 'PX2_AXIS/CLAMP_CHECK'}}
|
||||
local QX2Id = EmtAxis {
|
||||
Name = 'QX2',
|
||||
Parent = 'X2',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 598, -22, 839.44),
|
||||
Stroke = { 0, MaxVOpen},
|
||||
Home = MaxVOpen,
|
||||
Geo = 'QX2_AXIS/GEO',
|
||||
Aux = 'QX2_AXIS/SOLID'}
|
||||
EmtAxis {
|
||||
Name = 'T',
|
||||
Parent = 'Base',
|
||||
--Token = '**',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = - X_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
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 12 posizioni verticale
|
||||
local ptTcCen = Point3d( 533.814, -1030, 1153.94)
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen,
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T101'}
|
||||
EmtTcPos {
|
||||
Name = 'T102',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T102'}
|
||||
EmtTcPos {
|
||||
Name = 'T103',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110*2),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T103'}
|
||||
EmtTcPos {
|
||||
Name = 'T104',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110*3),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T104'}
|
||||
EmtTcPos {
|
||||
Name = 'T105',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110*4),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T105'}
|
||||
EmtTcPos {
|
||||
Name = 'T106',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110*5),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T106'}
|
||||
EmtTcPos {
|
||||
Name = 'T107',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110*6),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T107'}
|
||||
EmtTcPos {
|
||||
Name = 'T108',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110*7),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T108'}
|
||||
EmtTcPos {
|
||||
Name = 'T109',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + Vector3d( 0, 0, -110*8),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T109'}
|
||||
local ptTcVert = Point3d( 640.3120, -1030.0, 92.4414)
|
||||
EmtTcPos {
|
||||
Name = 'T110',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcVert,
|
||||
TDir = Z_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T110'}
|
||||
EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcVert + Vector3d( 0, 120, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T111'}
|
||||
EmtTcPos {
|
||||
Name = 'T112',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcVert + Vector3d( 0, 120*2, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T112'}
|
||||
-- ToolChanger 2 + Lama
|
||||
local ptTc2Cen = Point3d( -533.1860, -1030.0, 1005.940)
|
||||
EmtTcPos {
|
||||
Name = 'T201',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2Cen,
|
||||
TDir = X_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T201'}
|
||||
EmtTcPos {
|
||||
Name = 'T202',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2Cen + Vector3d( 0, 0, -380),
|
||||
TDir = X_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T202'}
|
||||
EmtTcPos {
|
||||
Name = 'T203',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2Cen + Vector3d( 0, 0, -380-110),
|
||||
TDir = X_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T203'}
|
||||
EmtTcPos {
|
||||
Name = 'T204',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2Cen + Vector3d( 0, 0, -380-(110*2)),
|
||||
TDir = X_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T204'}
|
||||
local ptTc2Vert = Point3d( -639.6860, -1030.0, 242.440)
|
||||
EmtTcPos {
|
||||
Name = 'T205',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2Vert,
|
||||
TDir = Z_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T205'}
|
||||
EmtTcPos {
|
||||
Name = 'T206',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2Vert + Vector3d( 0, 120, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T206'}
|
||||
EmtTcPos {
|
||||
Name = 'T207',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2Vert + Vector3d( 0, 120*2, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = Y_AX(),
|
||||
Geo = 'BASE/T207'}
|
||||
|
||||
-- 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, 'TC2'), 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( PX1Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'SOLID'), 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( PX2Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( YId, 'SOLID'), vtMoveY, GDB_RT.GLOB)
|
||||
|
||||
-- Assegno identificativi alle spie delle morse
|
||||
PX1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( PX1Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
PX2LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( PX2Id, '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))
|
||||
-- recupero valore asse CS bloccato
|
||||
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||
local dPosCS = tonumber( sVal:sub( 4) or '')
|
||||
EmtModifyAxisHome( 'C', GetChainSawCHomeFromVirtualAxis( dPosCS))
|
||||
-- limiti asse A
|
||||
EmtModifyAxisStroke( 'A', { -91, 91})
|
||||
-- altrimenti
|
||||
else
|
||||
EmtModifyAxisHome( 'C', ParkC)
|
||||
-- se lama
|
||||
if EMC.TCPOS == 'T201' then
|
||||
EmtModifyAxisStroke( 'A', { MinSawA, MaxSawA})
|
||||
-- altrimenti
|
||||
else
|
||||
EmtModifyAxisStroke( 'A', { MinA, MaxA})
|
||||
end
|
||||
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 -180
|
||||
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
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function UpdateMinJoinDeltaTol( SB, HB, LB)
|
||||
local L_SMALL = 800
|
||||
local H_V = 90
|
||||
local H_S = 200
|
||||
local H_L = 400
|
||||
local W_V = 90
|
||||
local W_S = 150
|
||||
local W_L = 250
|
||||
local DELTA_TOL_S = 210
|
||||
local DELTA_TOL_V = 110
|
||||
local DELTA_TOL_L = 410
|
||||
if SB <= W_V and HB <= H_V then
|
||||
MinJoin = MinJoinVV
|
||||
DeltaTol = DELTA_TOL_V
|
||||
elseif LB <= L_SMALL then
|
||||
MinJoin = MinJoinSS
|
||||
DeltaTol = DELTA_TOL_S
|
||||
else
|
||||
local dMinJoinS
|
||||
local dMinJoinL
|
||||
if SB <= W_S then
|
||||
dMinJoinS = MinJoinSS
|
||||
dMinJoinL = MinJoinLS
|
||||
elseif SB <= W_L then
|
||||
local Coeff = ( SB - W_S) / ( W_L - W_S)
|
||||
dMinJoinS = ( 1 - Coeff) * MinJoinSS + Coeff * MinJoinSL
|
||||
dMinJoinL = ( 1 - Coeff) * MinJoinLS + Coeff * MinJoinLL
|
||||
else
|
||||
dMinJoinS = MinJoinSL
|
||||
dMinJoinL = MinJoinLL
|
||||
end
|
||||
if HB <= H_S then
|
||||
MinJoin = dMinJoinS
|
||||
DeltaTol = DELTA_TOL_S
|
||||
elseif HB <= H_L then
|
||||
local Coeff = ( HB - H_S) / ( H_L - H_S)
|
||||
MinJoin = ( 1 - Coeff) * dMinJoinS + Coeff * dMinJoinL
|
||||
DeltaTol = ( 1 - Coeff) * DELTA_TOL_S + Coeff * DELTA_TOL_L
|
||||
else
|
||||
MinJoin = dMinJoinL
|
||||
DeltaTol = DELTA_TOL_L
|
||||
end
|
||||
if SB < W_V then
|
||||
DeltaTol = DELTA_TOL_V
|
||||
end
|
||||
end
|
||||
MinOther = abs( MinX1) + abs( MaxX2) + MinJoin
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,36 @@
|
||||
-- 2023/09/22 13:00:00
|
||||
-- Machining Exit for Saomad-KAIROS machine
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- *** Uscita da Lavorazioni ***
|
||||
|
||||
-- Nascondo il pezzo così marcato e le geometrie aggiunte, visualizzo il Box
|
||||
local function ProcessPart( PartId)
|
||||
-- visualizzo il Box
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.ON)
|
||||
end
|
||||
|
||||
-- Disabilito segnalazione modifica progetto
|
||||
local bEnMod = EgtGetEnableModified()
|
||||
EgtDisableModified()
|
||||
|
||||
-- Processo i pezzi nella radice (già chiusi tutti i gruppi di lavoro)
|
||||
local PartId = EgtGetFirstPart()
|
||||
while PartId do
|
||||
ProcessPart( PartId)
|
||||
PartId = EgtGetNextPart( PartId)
|
||||
end
|
||||
|
||||
EgtZoom( SCE_ZM.ALL, false)
|
||||
|
||||
-- Ripristino segnalazione modifica progetto
|
||||
if bEnMod then
|
||||
EgtEnableModified()
|
||||
end
|
||||
|
||||
MACH.ERR = 0
|
||||
@@ -0,0 +1,44 @@
|
||||
-- 2023/09/22 13:00:00
|
||||
-- Machining Init for Saomad-KAIROS machine
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- *** Ingresso in Lavorazioni ***
|
||||
|
||||
-- Rendo visibile il pezzo e le geometrie aggiunte, nascondo il Box
|
||||
local function ProcessPart( PartId)
|
||||
-- nascondo il Box
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.OFF)
|
||||
end
|
||||
|
||||
-- Disabilito segnalazione modifica progetto
|
||||
local bEnMod = EgtGetEnableModified()
|
||||
EgtDisableModified()
|
||||
|
||||
-- Processo i pezzi nella radice
|
||||
local PartId = EgtGetFirstPart()
|
||||
while PartId do
|
||||
ProcessPart( PartId)
|
||||
PartId = EgtGetNextPart( PartId)
|
||||
end
|
||||
|
||||
-- Processo i pezzi già nei gruppi di lavoro (quando appena lanciata Process)
|
||||
local GhostId = EgtGetFirstGhostPart()
|
||||
while GhostId do
|
||||
local PartId = EgtGetInfo( GhostId, GDB_SI.SOURCE, 'i')
|
||||
if PartId then
|
||||
ProcessPart( PartId)
|
||||
end
|
||||
GhostId = EgtGetNextGhostPart( GhostId)
|
||||
end
|
||||
|
||||
-- Ripristino segnalazione modifica progetto
|
||||
if bEnMod then
|
||||
EgtEnableModified()
|
||||
end
|
||||
|
||||
MACH.ERR = 0
|
||||
@@ -0,0 +1,209 @@
|
||||
-- Gestione attrezzaggio per Saomad-KAIROS - 2023/10/16
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Tavola di passaggio valori
|
||||
local STU = {}
|
||||
STU.TUUID = ""
|
||||
STU.TCPOS = ""
|
||||
STU.HEAD = ""
|
||||
STU.GROUP = ""
|
||||
STU.POS = ""
|
||||
STU.EXIT = 0
|
||||
STU.INDEX = 0
|
||||
STU.HEAD1 = ""
|
||||
STU.HEAD2 = ""
|
||||
STU.ISVALID = false
|
||||
STU.ERR = 0
|
||||
_G.STU = STU
|
||||
|
||||
local INVALIDPOS = ""
|
||||
local POS = "Pos"
|
||||
|
||||
-- Geom Set
|
||||
local GS = {}
|
||||
|
||||
-- Configurazione posizioni
|
||||
local PositionTable={{Pos = "Pos1", TcPos = "T101", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos2", TcPos = "T102", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos3", TcPos = "T103", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos4", TcPos = "T104", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos5", TcPos = "T105", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos6", TcPos = "T106", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos7", TcPos = "T107", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T108", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T109", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos10", TcPos = "T110", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos11", TcPos = "T111", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos12", TcPos = "T112", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos13", TcPos = "T201", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos14", TcPos = "T202", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos15", TcPos = "T203", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos16", TcPos = "T204", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos17", TcPos = "T205", Head = "H1", Group = "G4"},
|
||||
{Pos = "Pos18", TcPos = "T206", Head = "H1", Group = "G4"},
|
||||
{Pos = "Pos19", TcPos = "T207", Head = "H1", Group = "G4"}}
|
||||
if EgtGetHeadId( 'H3') then
|
||||
PositionTable[13].Head = 'H3'
|
||||
end
|
||||
|
||||
local UsePositionHead = true
|
||||
|
||||
local function IsInGeomSet( ToolHead, PosHead)
|
||||
for GsIndex = 1, #GS do
|
||||
local bToolHead = false
|
||||
local bPosHead = false
|
||||
for HIndex = 1, #GS[GsIndex] do
|
||||
if GS[GsIndex][HIndex] == ToolHead then
|
||||
bToolHead = true
|
||||
elseif GS[GsIndex][HIndex] == PosHead then
|
||||
bPosHead = true
|
||||
end
|
||||
if bToolHead and bPosHead then
|
||||
return true
|
||||
end
|
||||
end
|
||||
if bToolHead and bPosHead then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function STU.IsCompatibleHeads()
|
||||
STU.ISVALID = false
|
||||
if IsInGeomSet(STU.HEAD1, STU.HEAD2) then
|
||||
STU.ISVALID = true
|
||||
else
|
||||
STU.ISVALID = false
|
||||
end
|
||||
end
|
||||
|
||||
function STU.GetValidHeadExitForPos()
|
||||
-- se TUUID non valido restituisco errore
|
||||
local ToolName = EgtTdbGetToolFromUUID( STU.TUUID)
|
||||
if ToolName == nill then
|
||||
STU.ERR = 1
|
||||
return
|
||||
end
|
||||
EgtTdbSetCurrTool( ToolName)
|
||||
local CurrToolHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
STU.EXIT = EgtTdbGetCurrToolParam( MCH_TP.EXIT)
|
||||
-- recupero testa predefinita per la posizione corrente
|
||||
local CurrPosHead
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
CurrPosHead = PositionTable[i].Head
|
||||
break
|
||||
end
|
||||
end
|
||||
-- verifico se la testa è quella della posizione predefinita
|
||||
if CurrPosHead == CurrToolHead then
|
||||
STU.HEAD = CurrToolHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
-- verifico se la testa è compatibile con quella della posizione predefinita
|
||||
elseif IsInGeomSet( CurrToolHead, CurrPosHead) then
|
||||
if UsePositionHead then
|
||||
STU.HEAD = CurrPosHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
else
|
||||
STU.HEAD = CurrToolHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
-- la testa non è compatibile con quella della posizione predefinita
|
||||
else
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function STU.IsValidTcPosFromHead()
|
||||
STU.ISVALID = false
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
if PositionTable[i].Head == STU.HEAD then
|
||||
STU.ISVALID = true
|
||||
STU.ERR = 0
|
||||
return
|
||||
elseif IsInGeomSet(PositionTable[i].Head, STU.HEAD) then
|
||||
STU.ISVALID = true
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
STU.ISVALID = false
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function STU.GetTcPosHeadGroupFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.TCPOS = PositionTable[i].TcPos
|
||||
STU.HEAD = PositionTable[i].Head
|
||||
STU.GROUP = PositionTable[i].Group
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.TCPOS = INVALIDPOS
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.GROUP = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetPosFromTcPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
STU.POS = PositionTable[i].Pos
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.POS = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetGroupFromTcPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
STU.GROUP = PositionTable[i].Group
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.GROUP = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetHeadFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.HEAD = PositionTable[i].Head
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetTcPosFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.TCPOS = PositionTable[i].TcPos
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.TCPOS = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,43 @@
|
||||
; 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, th=toolholder
|
||||
; Description : STEP, SIDESTEP, ...
|
||||
|
||||
[DRILL_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=s,DOUBLE
|
||||
|
||||
[SAW_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=b,LONGCUT
|
||||
|
||||
[SAW_FLAT]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=b,LONGCUT
|
||||
|
||||
[MILL_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=d,SIDEDEPTH
|
||||
4=s,DOUBLE
|
||||
5=dr,TOOL_OVERHANG
|
||||
|
||||
[MILL_NOTIP]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=d,SIDEDEPTH
|
||||
4=s,DOUBLE
|
||||
5=dr,TOOL_OVERHANG
|
||||
|
||||
[MORTISE_STD]
|
||||
0=b,MORTISE
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
Reference in New Issue
Block a user