Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aad4c3cfd7 | |||
| c26ba36f6d | |||
| ba2f6b46f3 | |||
| bc541ddd24 | |||
| a64e4bd840 | |||
| 30b8fc08bd | |||
| 34f5f655d1 | |||
| e08d54b436 | |||
| e2bf7b4cd1 | |||
| 7d5eb3ab3e | |||
| 74a79b9767 | |||
| d82e8876d0 | |||
| bea64cd05f | |||
| 0ebd4ca860 | |||
| 36d6ad355f | |||
| eac1d9b636 | |||
| e38c1d5c02 | |||
| ca08fa89b3 | |||
| 61b81d07e0 | |||
| 7c32cf62c7 | |||
| 9af3f82691 | |||
| 39d4b1053f |
@@ -1,6 +1,7 @@
|
||||
/Tools
|
||||
/Machinings
|
||||
/SetUp
|
||||
/Beam/AISetup
|
||||
/Beam/Ts3Data.bak
|
||||
/Beam/CutData.lua
|
||||
/Beam/DrillData.lua
|
||||
|
||||
+105
-61
@@ -76,6 +76,7 @@ local BeamData = {
|
||||
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
|
||||
MIN_HEIGHT_ADDED_CUTS = 400, -- altezza minima pezzo per effettuare tagli orizzontali aggiuntivi in testa e coda
|
||||
GAIN_RECLAMPING = 1000, -- in caso di scarso pinzaggio, mm da recuperare con pinzaggio ulteriore prima di spostare
|
||||
NEWTOPC = true,
|
||||
STRATEGIES_SCRIPT = 'Essetre',
|
||||
STRATEGIES_CONFIG_FILE = 'Std1.json'
|
||||
}
|
||||
@@ -117,6 +118,8 @@ if EgtExistsFile( sData) then
|
||||
if Machine.Offsets.FASTCLAMPING ~= nil then BeamData.FASTCLAMPING = ( Machine.Offsets.FASTCLAMPING == 1) end
|
||||
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||
if Machine.Offsets.ROT180 ~= nil then BeamData.ROT180 = ( Machine.Offsets.ROT180 == 1) end
|
||||
if Machine.Offsets.CUT_SIC then BeamData.CUT_SIC = EgtClamp( Machine.Offsets.CUT_SIC, 15, 50) end
|
||||
if Machine.Offsets.NEWTOPC then BeamData.NEWTOPC = ( Machine.Offsets.NEWTOPC == 1) end
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
@@ -190,69 +193,107 @@ end
|
||||
BeamData.GetChainSawInitAngs = GetChainSawInitAngs
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMinNzTopHead( vtNFace)
|
||||
if vtNFace and abs( vtNFace:getY()) > 0.8659 then
|
||||
return -0.2499
|
||||
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
|
||||
return sin( -45)
|
||||
-- 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
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMinNzDownUp( b3Raw, vtNFace, vtToolDirection)
|
||||
if vtToolDirection and vtToolDirection:getZ() > 0.35 then
|
||||
-- N_HorAng < 15° or N_HorAng > 55°
|
||||
if vtNFace and ( abs( vtNFace:getY()) < 0.259 or abs( vtNFace:getY()) > 0.819) then
|
||||
return -0.708
|
||||
-- N_HorAng > 50°
|
||||
elseif vtNFace and abs( vtNFace:getY()) > 0.766 then
|
||||
return -0.383
|
||||
else
|
||||
return EgtIf( b3Raw:getDimZ() < BeamData.MIN_DIM_HBEAM, -0.609, -0.383)
|
||||
end
|
||||
elseif vtToolDirection and vtToolDirection:getZ() < - 0.01
|
||||
and ( vtNFace and ( abs( vtNFace:getY()) > 0.983))
|
||||
and ( b3Raw:getDimY() < 210) then
|
||||
|
||||
return -0.173
|
||||
else
|
||||
-- N_HorAng > 60°
|
||||
if vtNFace and ( abs( vtNFace:getY()) > 0.866) then
|
||||
return -0.708
|
||||
else
|
||||
if b3Raw:getDimZ() < 120 then
|
||||
return -0.708
|
||||
elseif b3Raw:getDimZ() < 200 then
|
||||
-- N_HorAng < 15° or N_HorAng > 55°
|
||||
if vtNFace and ( abs( vtNFace:getY()) < 0.259 or abs( vtNFace:getY()) > 0.819) then
|
||||
return -0.5
|
||||
else
|
||||
return -0.383
|
||||
end
|
||||
elseif b3Raw:getDimZ() < 300 then
|
||||
-- N_HorAng < 10°
|
||||
if vtNFace and ( abs( vtNFace:getY()) < 0.174) then
|
||||
return -0.5
|
||||
else
|
||||
return -0.259
|
||||
end
|
||||
elseif b3Raw:getDimZ() < BeamData.MIN_DIM_HBEAM then
|
||||
-- N_HorAng < 10°
|
||||
if vtNFace and ( abs( vtNFace:getY()) < 0.174) then
|
||||
return -0.342
|
||||
else
|
||||
return -0.259
|
||||
end
|
||||
else
|
||||
-- N_HorAng < 10°
|
||||
if vtNFace and ( abs( vtNFace:getY()) < 0.174) then
|
||||
return -0.383
|
||||
else
|
||||
return -0.188
|
||||
end
|
||||
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, 242.55)
|
||||
|
||||
-- carro Z
|
||||
if sAxis == 'Z' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = X_AX(), vtDirectionY = Z_AX(), vtDirectionZ = -Y_AX()}
|
||||
PreCollisionData.bSurfTmByRevolve = true
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 0, 523, 0),
|
||||
Point3d( 109.556, 523, 0),
|
||||
Point3d( 109.556, 583, 0),
|
||||
Point3d( 143.113, 583, 0),
|
||||
Point3d( 143.113, 2533, 0),
|
||||
Point3d( 0, 2533, 0)
|
||||
}
|
||||
|
||||
-- motore (asse A o B)
|
||||
elseif sAxis == 'AB' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = vtC, vtDirectionY = -vtHead, vtDirectionZ = vtC ^ -vtHead}
|
||||
PreCollisionData.dExtrusionDepth = 180
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 100,-122,0),
|
||||
Point3d( 100, -232.5, 0),
|
||||
Point3d( -90, -232.5, 0),
|
||||
Point3d( -90, 204.505, 0),
|
||||
Point3d( -77.5, 216.55, 0),
|
||||
Point3d( -89, 234.05, 0),
|
||||
Point3d( -89, 242.55, 0),
|
||||
Point3d( 89, 242.55, 0),
|
||||
Point3d( 89, 234.05, 0),
|
||||
Point3d( 77.5, 216.55, 0),
|
||||
Point3d( 90, 204.505, 0),
|
||||
Point3d( 90, 93, 0),
|
||||
Point3d( 125, 93, 0),
|
||||
Point3d( 125, -122, 0),
|
||||
Point3d( 100, -122, 0)
|
||||
}
|
||||
|
||||
-- asse C
|
||||
elseif sAxis == 'C' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = vtC, vtDirectionY = Z_AX(), vtDirectionZ = vtC ^ Z_AX()}
|
||||
PreCollisionData.dExtrusionDepth = 200
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 125, -92.752, 0),
|
||||
Point3d( 203.5, -92.752, 0),
|
||||
Point3d( 203.5, -100, 0),
|
||||
Point3d( 400, -100, 0),
|
||||
Point3d( 450, -50, 0),
|
||||
Point3d( 450, 400, 0),
|
||||
Point3d( 360, 490, 0),
|
||||
Point3d( 170, 490, 0),
|
||||
Point3d( 170, 523, 0),
|
||||
Point3d( EgtIf( BeamData.NEWTOPC, -110, -175), 523, 0),
|
||||
Point3d( EgtIf( BeamData.NEWTOPC, -110, -175), 400, 0),
|
||||
Point3d( 230.858, 400, 0),
|
||||
Point3d( 325, 305.858, 0),
|
||||
Point3d( 325, 146, 0),
|
||||
Point3d( 203.5, 146, 0),
|
||||
Point3d( 203.5, 93, 0),
|
||||
Point3d( 125, 93, 0),
|
||||
Point3d( 125, -92.752, 0)
|
||||
}
|
||||
end
|
||||
|
||||
return PreCollisionData
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -263,20 +304,23 @@ local function GetSetupInfo( sHead)
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
SetupInfo.dCAxisEncumbrance = 180
|
||||
SetupInfo.dCAxisSideEncumbrance = 200
|
||||
SetupInfo.dPivot = 175
|
||||
SetupInfo.dPivot = 175 -- per uscita fresa, diverso da uscita lama
|
||||
SetupInfo.bToolOnAggregate = false
|
||||
SetupInfo.vtRotationAxisC = Z_AX()
|
||||
SetupInfo.vtRotationAxisAB = X_AX()
|
||||
|
||||
-- testa 5 assi da sopra
|
||||
if sHead == 'H1' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = GetMinNzTopHead
|
||||
SetupInfo.GetMinNz = function() return sin( -45) end
|
||||
-- lama su testa 5 assi da sopra
|
||||
elseif sHead == 'H2' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = GetMinNzTopHead
|
||||
SetupInfo.GetMinNzDownUp = GetMinNzDownUp
|
||||
SetupInfo.GetMinNz = function() return sin( -45) end
|
||||
SetupInfo.GetPreCollisionData = GetPreCollisionData
|
||||
SetupInfo.GetSCC = GetSCC
|
||||
-- motosega
|
||||
elseif sHead == 'H3' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
|
||||
@@ -0,0 +1,302 @@
|
||||
-- BeamData.lua by Egalware s.r.l. 2025/12/03
|
||||
-- Raccolta dati generali per Travi
|
||||
|
||||
EgtOutLog( ' FAST-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 = 240, -- larghezza massima del grezzo
|
||||
MAX_HEIGHT = 625, -- altezza massima del grezzo
|
||||
MAX_WIDTH2 = 305, -- seconda larghezza massima del grezzo
|
||||
MAX_HEIGHT2 = 625, -- 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
|
||||
MAX_DIM_HTCUT = 200, -- SOLO DICE larghezza massima taglio di testa o coda
|
||||
MIN_DIM_HBEAM = 380, -- SOLO DICE altezza minima di trave alta
|
||||
MAX_DIM_DICE = 155, -- dimensione trasversale massima cubetto
|
||||
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
|
||||
STRATEGIES_SCRIPT = 'Essetre',
|
||||
STRATEGIES_CONFIG_FILE = 'Std1.json'
|
||||
}
|
||||
|
||||
-- costanti riportate da mlde non necessarie per automatismo (sostituire con GetParameters o simile)
|
||||
local MldeParameters = {}
|
||||
MldeParameters.NumericalControl = 'TPA' -- NUM o TPA o NUM_PLUS
|
||||
MldeParameters.MinX = 0
|
||||
MldeParameters.MaxX = 1350
|
||||
MldeParameters.MinZ = -1350
|
||||
MldeParameters.MaxZ = 0
|
||||
MldeParameters.MillOffs = 177.35
|
||||
MldeParameters.SawOffs = -242.68
|
||||
MldeParameters.DeltaTabY = 898.0
|
||||
MldeParameters.DeltaTabZ = -1017.8 + MldeParameters.MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4
|
||||
MldeParameters.NewTopC = true
|
||||
|
||||
-- Aggiornamento con dati macchina personalizzati
|
||||
-- TODO sostituire con GetParameters o simile
|
||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-Fast.data"
|
||||
local sData = EgtGetCurrMachineDir().."\\Beam\\Ts3Data.lua"
|
||||
if EgtExistsFile( sTs3Data) then
|
||||
EgtCopyFile( sTs3Data, sData)
|
||||
local sTs3DataOld = sTs3Data..'.old'
|
||||
EgtEraseFile( sTs3DataOld)
|
||||
EgtRenameFile( sTs3Data, sTs3DataOld)
|
||||
end
|
||||
if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Offsets then
|
||||
if Machine.Offsets.TIPO_CN == 0 then
|
||||
MldeParameters.NumericalControl = 'NUM'
|
||||
elseif Machine.Offsets.TIPO_CN == 2 then
|
||||
MldeParameters.NumericalControl = 'NUM_PLUS'
|
||||
else
|
||||
MldeParameters.NumericalControl = 'TPA'
|
||||
end
|
||||
if Machine.Offsets.MAX_X then MldeParameters.MinX = - Machine.Offsets.MAX_X end
|
||||
if Machine.Offsets.MIN_X then MldeParameters.MaxX = - Machine.Offsets.MIN_X 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.PIVOTFRESA then MldeParameters.MillOffs = - Machine.Offsets.PIVOTFRESA end
|
||||
if Machine.Offsets.PIVOTLAMA then MldeParameters.SawOffs = - Machine.Offsets.PIVOTLAMA end
|
||||
if Machine.Offsets.OFFSETX then MldeParameters.DeltaTabY = - Machine.Offsets.OFFSETX end
|
||||
if Machine.Offsets.OFFSETZ then MldeParameters.DeltaTabZ = Machine.Offsets.OFFSETZ + EgtIf( MldeParameters.NumericalControl == 'TPA', MldeParameters.MillOffs, 0) end
|
||||
if Machine.Offsets.NEWTOPC then MldeParameters.NewTopC = ( Machine.Offsets.NEWTOPC == 1) end
|
||||
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
||||
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
||||
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
||||
BeamData.CUT_EXTRA_MIN = Machine.Offsets.CUT_EXTRA_MIN or BeamData.CUT_EXTRA_MIN
|
||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
|
||||
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
|
||||
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
|
||||
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
|
||||
BeamData.MAX_HEIGHT2 = Machine.Offsets.MAX_HEIGHT2 or BeamData.MAX_HEIGHT2
|
||||
BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID
|
||||
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||
if Machine.Offsets.ROT180 ~= nil then BeamData.ROT180 = ( Machine.Offsets.ROT180 == 1) end
|
||||
if Machine.Offsets.CUT_SIC then BeamData.CUT_SIC = EgtClamp( Machine.Offsets.CUT_SIC, 15, 50) end
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
BeamData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT
|
||||
BeamData.MAX_WIDTH = Machine.Trave.XMAX or BeamData.MAX_WIDTH
|
||||
BeamData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
|
||||
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 'A=0'
|
||||
elseif sBlockedAxis == 'perpendicular' then
|
||||
return 'A=90'
|
||||
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
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- 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.SawOffs)
|
||||
|
||||
-- carro Z
|
||||
if sAxis == 'Z' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = X_AX(), vtDirectionY = Z_AX(), vtDirectionZ = -Y_AX()}
|
||||
PreCollisionData.bSurfTmByRevolve = true
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 0, 523, 0),
|
||||
Point3d( 109.556, 523, 0),
|
||||
Point3d( 109.556, 583, 0),
|
||||
Point3d( 143.113, 583, 0),
|
||||
Point3d( 143.113, 2533, 0),
|
||||
Point3d( 0, 2533, 0)
|
||||
}
|
||||
|
||||
-- motore (asse A o B)
|
||||
elseif sAxis == 'AB' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = vtC, vtDirectionY = -vtHead, vtDirectionZ = vtC ^ -vtHead}
|
||||
PreCollisionData.dExtrusionDepth = 180
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 100,-122,0),
|
||||
Point3d( 100, -232.5, 0),
|
||||
Point3d( -90, -232.5, 0),
|
||||
Point3d( -90, 204.505, 0),
|
||||
Point3d( -77.5, 216.55, 0),
|
||||
Point3d( -89, 234.05, 0),
|
||||
Point3d( -89, 242.55, 0),
|
||||
Point3d( 89, 242.55, 0),
|
||||
Point3d( 89, 234.05, 0),
|
||||
Point3d( 77.5, 216.55, 0),
|
||||
Point3d( 90, 204.505, 0),
|
||||
Point3d( 90, 93, 0),
|
||||
Point3d( 125, 93, 0),
|
||||
Point3d( 125, -122, 0),
|
||||
Point3d( 100, -122, 0)
|
||||
}
|
||||
|
||||
-- asse C
|
||||
elseif sAxis == 'C' then
|
||||
|
||||
PreCollisionData.Directions = { vtDirectionX = vtC, vtDirectionY = Z_AX(), vtDirectionZ = vtC ^ Z_AX()}
|
||||
PreCollisionData.dExtrusionDepth = 200
|
||||
PreCollisionData.Points = {
|
||||
Point3d( 125, -92.752, 0),
|
||||
Point3d( 203.5, -92.752, 0),
|
||||
Point3d( 203.5, -100, 0),
|
||||
Point3d( 400, -100, 0),
|
||||
Point3d( 450, -50, 0),
|
||||
Point3d( 450, 400, 0),
|
||||
Point3d( 360, 490, 0),
|
||||
Point3d( 170, 490, 0),
|
||||
Point3d( 170, 523, 0),
|
||||
Point3d( EgtIf( MldeParameters.NewTopC, -110, -175), 523, 0),
|
||||
Point3d( EgtIf( MldeParameters.NewTopC, -110, -175), 400, 0),
|
||||
Point3d( 230.858, 400, 0),
|
||||
Point3d( 325, 305.858, 0),
|
||||
Point3d( 325, 146, 0),
|
||||
Point3d( 203.5, 146, 0),
|
||||
Point3d( 203.5, 93, 0),
|
||||
Point3d( 125, 93, 0),
|
||||
Point3d( 125, -92.752, 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( 'B')
|
||||
|
||||
-- testa 5 assi da sopra
|
||||
if sHead == 'H1' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.dPivot = MldeParameters.MillOffs -- per uscita fresa, diverso da uscita lama
|
||||
SetupInfo.GetMinNz = function() return sin( -45) end
|
||||
-- lama su testa 5 assi da sopra
|
||||
elseif sHead == 'H2' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = function() return sin( -45) end
|
||||
SetupInfo.GetPreCollisionData = GetPreCollisionData
|
||||
SetupInfo.GetSCC = GetSCC
|
||||
-- motosega
|
||||
elseif sHead == 'H3' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = function() return 0 end
|
||||
-- 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
|
||||
@@ -33,6 +33,7 @@
|
||||
20=SmallToolContour
|
||||
21=AntiSplintMillCut
|
||||
22=Prof_end
|
||||
23=SideMillAsBlade
|
||||
|
||||
[Pocketing]
|
||||
1=Pocket
|
||||
|
||||
@@ -635,6 +635,12 @@ function OnRapid()
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
-- ricavo i dati per la lavorazione
|
||||
local sEE = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||
|
||||
-- primo posizionamento
|
||||
local MyZHome = EgtGetAxisHomePos( 'Z')
|
||||
local bZmax = ( #EMT.AUXSTR > 0 or EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
|
||||
@@ -656,12 +662,6 @@ function OnRapid()
|
||||
EmtOutput( '( *** ' .. sOut .. ' *** )')
|
||||
end
|
||||
|
||||
-- ricavo i dati per la lavorazione
|
||||
local sEE = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||
|
||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||
if not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
( EMT.ST > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TTOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then
|
||||
|
||||
+21
-21
@@ -684,27 +684,6 @@ function OnRapid()
|
||||
bGoToHome = true
|
||||
end
|
||||
|
||||
-- primo posizionamento
|
||||
local MyZHome = EgtGetAxisHomePos( 'Z')
|
||||
local bZmax = ( #EMT.AUXSTR > 0 or EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
|
||||
-- se avevo motosega, torno in zona sicura senza ruotare assi rotanti
|
||||
if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EmtLenToString( EMT.R2pp, 3) .. ' C' .. EmtLenToString( EMT.R1pp, 3) ..
|
||||
' EE' .. EgtIf( bZmax, '3', '4') .. EMT.PREVsEL .. EMT.PREVsER .. EMT.PREVsET .. EMT.PREVsES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
end
|
||||
|
||||
if not EMT.LOAD then
|
||||
local sOut = string.gsub( string.gsub( EMT.MCHNAME..'/'..EMT.TOOL, '%(', '-'), '%)', '-')
|
||||
EmtOutput( '( *** ' .. sOut .. ' *** )')
|
||||
end
|
||||
|
||||
-- ricavo i dati per la lavorazione
|
||||
local sEE = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||
|
||||
@@ -734,6 +713,27 @@ function OnRapid()
|
||||
|
||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||
|
||||
-- primo posizionamento
|
||||
local MyZHome = EgtGetAxisHomePos( 'Z')
|
||||
local bZmax = ( #EMT.AUXSTR > 0 or EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
|
||||
-- se avevo motosega, torno in zona sicura senza ruotare assi rotanti
|
||||
if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then
|
||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EmtLenToString( EMT.R2pp, 3) .. ' C' .. EmtLenToString( EMT.R1pp, 3) ..
|
||||
' EE' .. EgtIf( bZmax, '3', '4') .. EMT.PREVsEL .. EMT.PREVsER .. EMT.PREVsET .. EMT.PREVsES
|
||||
EmtOutput( sOutPreMove)
|
||||
sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||
' B' .. EgtNumToString( 0, 3) .. ' C' .. EgtNumToString( EMT.R1, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||
EmtOutput( sOutPreMove)
|
||||
EmtOutput( 'G101 ET1001')
|
||||
EmtOutput( 'G101 ET2001')
|
||||
end
|
||||
|
||||
if not EMT.LOAD then
|
||||
local sOut = string.gsub( string.gsub( EMT.MCHNAME..'/'..EMT.TOOL, '%(', '-'), '%)', '-')
|
||||
EmtOutput( '( *** ' .. sOut .. ' *** )')
|
||||
end
|
||||
|
||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||
if not EMT.LOAD and ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and
|
||||
( EMT.ST > BeamHeightForFixRot or ( EMT.HEAD == 'H1' and EMT.TTOTLEN > 350) or bGoToHome) and EMT.FLAG2 == 1 then
|
||||
|
||||
+2
-1
@@ -115,7 +115,8 @@ function OnSimulStart()
|
||||
{ Grp = 'V', Sub = 'COLLISION', Name = 'VOL2'},
|
||||
{ Grp = 'PV', Sub = 'COLLISION', Name = 'VOL'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'SIDE1'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'SIDE2'}}
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'SIDE2'},
|
||||
{ Grp = 'C', Sub = 'COLLISION2', Name = 'C_TOP'}}
|
||||
EgtOutLog( 'MCODET Objects :', 4)
|
||||
local nMcdNullCnt = 0
|
||||
for i = 1, #McdData do
|
||||
|
||||
+39
-32
@@ -24,9 +24,9 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.7j2'
|
||||
PP_NVER = '2.7.10.2'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
PP_VER = '2.7l1'
|
||||
PP_NVER = '2.7.12.1'
|
||||
MIN_MACH_VER = '2.7j1'
|
||||
MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio
|
||||
|
||||
-- Carico i dati globali
|
||||
@@ -224,7 +224,7 @@ local CId = EmtAxis {
|
||||
Stroke = {MinC, MaxC},
|
||||
Home = 0,
|
||||
Geo = 'C_AXIS/GEO',
|
||||
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
|
||||
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION', 'C_AXIS/COLLISION2'}}
|
||||
if NewTopC then
|
||||
local vtMove = Vector3d( 65,0,0)
|
||||
local SolidArmId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'SOLID'), 'ARM')
|
||||
@@ -239,9 +239,13 @@ if NewTopC then
|
||||
local CollTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION'), 'TOP')
|
||||
EgtMove( CollTopId, vtMove, GDB_RT.GLOB)
|
||||
EgtSetName( CollTopId, 'BOX')
|
||||
local RefId = CollTopId + EgtGetInfo( CollTopId, 'Frame', 'i')
|
||||
EgtSetInfo( RefId, 'CollSkip', 'C_TOP')
|
||||
else
|
||||
local CollTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION'), 'TOP')
|
||||
EgtSetName( CollTopId, 'BOX')
|
||||
local RefId = CollTopId + EgtGetInfo( CollTopId, 'Frame', 'i')
|
||||
EgtSetInfo( RefId, 'CollSkip', 'C_TOP')
|
||||
end
|
||||
EmtAxis {
|
||||
Name = 'B',
|
||||
@@ -561,13 +565,6 @@ if SecondToolChanger then
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T28'}
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -1160.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101S'}
|
||||
else
|
||||
if not SpecialBH then
|
||||
EmtTcPos {
|
||||
@@ -577,14 +574,6 @@ else
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101'}
|
||||
else
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -1160.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101S'}
|
||||
end
|
||||
if SecondSupport == 1 then
|
||||
-- supporto per punta
|
||||
@@ -605,19 +594,6 @@ else
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T111M'}
|
||||
EgtSetInfo( TcpSsId, 'Mortiser', true)
|
||||
elseif SecondSupport == 3 then
|
||||
-- supporto per rinvio angolare
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T91',
|
||||
Parent = 'Base',
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( -710.4-150, 113.2, -329.8-170),
|
||||
TDir1 = X_AX(),
|
||||
Pos2 = Point3d( -710.4+150, 113.2, -329.8-170),
|
||||
TDir2 = -X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T91',
|
||||
Aux = 'BASE/T91_HS'}
|
||||
end
|
||||
if SpecialBH then
|
||||
EmtTcPos {
|
||||
@@ -629,6 +605,37 @@ else
|
||||
Geo = 'BASE/T111S'}
|
||||
end
|
||||
end
|
||||
-- motosega in caso di magazzino 2 o SpecialBH
|
||||
if SpecialBH or SecondToolChanger then
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -1160.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101S'}
|
||||
-- spostamento in caso di magazzino 2
|
||||
if SecondToolChanger then
|
||||
EgtMove( TcpSsId, Vector3d( 0, 0, 140), GDB_RT.GLOB)
|
||||
end
|
||||
end
|
||||
if SecondSupport == 3 then
|
||||
-- supporto per rinvio angolare
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T91',
|
||||
Parent = 'Base',
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( -710.4-150, 113.2, -329.8-170),
|
||||
TDir1 = X_AX(),
|
||||
Pos2 = Point3d( -710.4+150, 113.2, -329.8-170),
|
||||
TDir2 = -X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T91',
|
||||
Aux = 'BASE/T91_HS'}
|
||||
if SecondToolChanger then
|
||||
EgtMove( TcpSsId, Vector3d( 0, 0, -900), GDB_RT.GLOB)
|
||||
end
|
||||
end
|
||||
|
||||
-- Aggiusto posizioni geometriche
|
||||
local vtMove = Vector3d( 0, ( DeltaTabY - 913.16), ( DeltaTabZ + 830.037))
|
||||
|
||||
Binary file not shown.
+1
-1
@@ -22,7 +22,7 @@
|
||||
4=l,MaxOptSize,0
|
||||
|
||||
[Mortising]
|
||||
0=d,MaxElev,0
|
||||
0=l,MaxElev,0
|
||||
|
||||
[Chiseling]
|
||||
|
||||
|
||||
@@ -51,6 +51,9 @@ if IsTC2Active then
|
||||
{Pos = "Pos19", TcPos = "T26", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos20", TcPos = "T27", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos21", TcPos = "T28", Head = "H1", Group = "G3"}}
|
||||
if EgtGetHeadId( 'H5') then
|
||||
table.insert( PositionTableTC2, {Pos = "Pos22", TcPos = "T91", Head = "H5", Group = "G2"})
|
||||
end
|
||||
EgtJoinTables( PositionTable, PositionTableTC2)
|
||||
else
|
||||
local SecSuppId = EgtGetTcPosId( 'T111')
|
||||
|
||||
+18
-18
@@ -6,38 +6,38 @@
|
||||
|
||||
[DRILL_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=s,DOUBLE
|
||||
1=l,STEP
|
||||
2=tl,DOUBLE
|
||||
|
||||
[SAW_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
1=l,STEP
|
||||
2=l,SIDESTEP
|
||||
3=b,LONGCUT
|
||||
|
||||
[SAW_FLAT]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
1=l,STEP
|
||||
2=l,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
|
||||
1=l,STEP
|
||||
2=l,SIDESTEP
|
||||
3=l,SIDEDEPTH
|
||||
4=tl,DOUBLE
|
||||
5=lr,TOOL_OVERHANG
|
||||
|
||||
[MILL_NOTIP]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=d,SIDEDEPTH
|
||||
4=s,DOUBLE
|
||||
5=dr,TOOL_OVERHANG
|
||||
1=l,STEP
|
||||
2=l,SIDESTEP
|
||||
3=l,SIDEDEPTH
|
||||
4=tl,DOUBLE
|
||||
5=lr,TOOL_OVERHANG
|
||||
|
||||
[MORTISE_STD]
|
||||
0=b,MORTISE
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
1=l,STEP
|
||||
2=l,SIDESTEP
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
==== Common_FAST Update Log ====
|
||||
|
||||
Versione 2.7k1 (10/11/2025)
|
||||
- (GEN) Corretto set variabili info utensile prima del movimento in home in caso di pezzi alti per NUM/NUM_PLUS.
|
||||
|
||||
Versione 2.7j2 (08/10/2025)
|
||||
- (SIM-GEN) Quando si scarica motosega, si raddrizza prima l'asse B e poi si muove il C. Ora sempre e non solo se pezzo alto.
|
||||
|
||||
Versione 2.7j1 (06/10/2025)
|
||||
- (SIM-GEN) Quando si scarica motosega, si raddrizza prima l'asse B e poi si muove il C.
|
||||
- (MLDE-SIM) Controllo collisione tra utensile e TOP testa C. Serve CAM5 2.7j1
|
||||
|
||||
Versione 2.7i3 (23/09/2025)
|
||||
- (MLDE-ALL) Spostate costanti dimensioni utensili in MLDE.
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_FAST', -- nome script PP standard
|
||||
VERSION = '2.7j2', -- versione script
|
||||
VERSION = '2.7l1', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user