Compare commits

..

4 Commits

6 changed files with 134 additions and 19 deletions
+121 -3
View File
@@ -254,6 +254,123 @@ local function GetMinNzDownUp( b3Raw, vtNFace, vtToolDirection)
end
end
---------------------------------------------------------------------
-- sAxis può essere AB, C, Z; restituisce direzioni e punti per il controllo precollisione
local function GetPreCollisionData( sAxis, vtSCC, 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
-- - vtSCC (X): direzione asse C o aggregato (è vtTool con verso in base a SCC)
-- - vtEdge (Y): direzione lato, verso in base a X e Z
-- - punto di applicazione: naso mandrino o aggregato
PreCollisionData[1].vtMovePivot = Vector3d( 0, 0, 242.55)
PreCollisionData[2].vtMovePivot = Vector3d( 0, 0, 242.55)
PreCollisionData[3].vtMovePivot = Vector3d( 0, 0, 242.55)
-- carro Z
if sAxis == 'Z' then
PreCollisionData[1].Directions = { vtDirectionX = X_AX(), vtDirectionY = Z_AX(), vtDirectionZ = -Y_AX()}
PreCollisionData[1].Points = {
Point3d( 115, 518, 0),
Point3d( 115, 578, 0),
Point3d( 149, 578, 0),
Point3d( 149, 2538, 0),
Point3d( -149, 2538, 0),
Point3d( -149, 578, 0),
Point3d( -115, 578, 0),
Point3d( -115, 518, 0),
Point3d( 115, 518, 0)
}
PreCollisionData[2].Directions = { vtDirectionX = Y_AX(), vtDirectionY = Z_AX(), vtDirectionZ = X_AX()}
PreCollisionData[2].Points = {
Point3d( 113, 518, 0),
Point3d( 113, 578, 0),
Point3d( 120, 578, 0),
Point3d( 120, 2538, 0),
Point3d( -120, 2538, 0),
Point3d( -120, 578, 0),
Point3d( -113, 578, 0),
Point3d( -113, 518, 0),
Point3d( 113, 518, 0)
}
PreCollisionData[3].Directions = { vtDirectionX = X_AX(), vtDirectionY = Y_AX(), vtDirectionZ = Z_AX()}
PreCollisionData[3].Points = {
Point3d( -73, -127, 518),
Point3d( 73, -127, 518),
Point3d( 134, -22, 518),
Point3d( 149, -22, 518),
Point3d( 149, 22, 518),
Point3d( 134, 22, 518),
Point3d( 73, 127, 518),
Point3d( -73, 127, 518),
Point3d( -134, 22, 518),
Point3d( -149, 22, 518),
Point3d( -149, -22, 518),
Point3d( -134, -22, 518),
Point3d( -73, -127, 518)
}
-- motore (asse A o B)
elseif sAxis == 'AB' then
PreCollisionData[1].Directions = { vtDirectionX = vtSCC, vtDirectionY = -vtHead, vtDirectionZ = vtSCC ^ -vtHead}
PreCollisionData[1].Points = {
Point3d( -69, -182, 0),
Point3d( 69, -182, 0),
Point3d( 69, -157, 0),
Point3d( 80, -157, 0),
Point3d( 111, -127, 0),
Point3d( 130, -127, 0),
Point3d( 130, 98, 0),
Point3d( 95, 98, 0),
Point3d( 95, 242.55, 0),
Point3d( -95, 242.55, 0),
Point3d( -95, -143, 0),
Point3d( -80, -157, 0),
Point3d( -69, -157, 0),
Point3d( -69, -182, 0)
}
PreCollisionData[2].Directions = { vtDirectionX = vtSCC ^ vtHead, vtDirectionY = -vtHead, vtDirectionZ = vtSCC}
PreCollisionData[2].Points = {
Point3d( -95, 242.55, 0),
Point3d( -95, -143, 0),
Point3d( -80, -158, 0),
Point3d( -69, -158, 0),
Point3d( -69, -182, 0),
Point3d( 69, -182, 0),
Point3d( 69, -157, 0),
Point3d( 80, -157, 0),
Point3d( 95, -143, 0),
Point3d( 95, 242.55, 0),
Point3d( -95, 242.55, 0)
}
PreCollisionData[3].Directions = { vtDirectionX = vtSCC, vtDirectionY = -vtHead ^ vtSCC, vtDirectionZ = -vtHead}
PreCollisionData[3].Points = {
Point3d( 130, 95, 0),
Point3d( -62, 95, 0),
Point3d( -95, 62, 0),
Point3d( -95, -62, 0),
Point3d( -62, -95, 0),
Point3d( 130, -95, 0),
Point3d( 130, 95, 0)
}
-- asse C
elseif sAxis == 'C' then
end
return PreCollisionData
end
---------------------------------------------------------------------
local function GetSetupInfo( sHead)
local SetupInfo = {}
@@ -262,20 +379,21 @@ 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
-- 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.GetMinNz = function() return sin( -45) end
SetupInfo.GetMinNzDownUp = GetMinNzDownUp
SetupInfo.GetPreCollisionData = GetPreCollisionData
-- motosega
elseif sHead == 'H3' then
SetupInfo.HeadType = { bTop = true, bBottom = false}
+10 -10
View File
@@ -1211,11 +1211,11 @@ end
-- *** ESTIMATION T&L ***
---------------------------------------------------------------------
local ESTIMATION_RAPID_COEFF = EstimationRapidMultiplier or 1
local RAPID_X_FEED = 100000 / ESTIMATION_RAPID_COEFF -- mm/min
local RAPID_X_FEED = 75000 / ESTIMATION_RAPID_COEFF -- mm/min
local RAPID_Y_FEED = 100000 / ESTIMATION_RAPID_COEFF -- mm/min
local RAPID_Z_FEED = 100000 / ESTIMATION_RAPID_COEFF -- mm/min
local RAPID_C_FEED = 12000 / ESTIMATION_RAPID_COEFF -- deg/min
local RAPID_B_FEED = 12000 / ESTIMATION_RAPID_COEFF -- deg/min
local RAPID_Z_FEED = 50000 / ESTIMATION_RAPID_COEFF -- mm/min
local RAPID_C_FEED = 15000 / ESTIMATION_RAPID_COEFF -- deg/min
local RAPID_B_FEED = 15000 / ESTIMATION_RAPID_COEFF -- deg/min
local RAPID_MIN_T = 0.1 * ESTIMATION_RAPID_COEFF -- s
local LOAD_T = 2 * ESTIMATION_RAPID_COEFF -- s
local CHAR_ONE_MOVE_T = 1 * ESTIMATION_RAPID_COEFF -- s
@@ -1525,15 +1525,15 @@ function OnEstimRapid()
EMT.MCHEXTLEN = EMT.MCHEXTLEN + dLen
-- calcolo tempo
local dTime = RAPID_MIN_T
local dT1 = CalcMoveTime( abs( dL1), EMT.FMAXPINZE, EMT.SPLIT)
local dT1 = CalcMoveTime( abs( dL1), RAPID_X_FEED, EMT.SPLIT)
if dT1 > dTime then dTime = dT1 end
local dT2 = abs( dL2) / ( RAPID_X_FEED / 60) -- CalcMoveTime( abs( dL2), RAPID_X_FEED, EMT.SPLIT)
local dT2 = CalcMoveTime( abs( dL2), EMT.FMAXPINZE, EMT.SPLIT)
if dT2 > dTime then dTime = dT2 end
local dT3 = abs( dL3) / ( RAPID_Z_FEED * 60) -- CalcMoveTime( abs( dL3), RAPID_Z_FEED, EMT.SPLIT)
local dT3 = CalcMoveTime( abs( dL3), RAPID_Z_FEED, EMT.SPLIT)
if dT3 > dTime then dTime = dT3 end
local dT4 = abs( dR1) / ( RAPID_C_FEED / 60)
local dT4 = abs( dR1) / RAPID_C_FEED * 60
if dT4 > dTime then dTime = dT4 end
local dT5 = abs( dR2) / ( RAPID_B_FEED / 60)
local dT5 = abs( dR2) / RAPID_B_FEED * 60
if dT5 > dTime then dTime = dT5 end
EMT.MCHEXTTIME = EMT.MCHEXTTIME + dTime
EgtOutLog( string.format( ' G0 Len=%.0f Rot=%.0f° Time=%.2f', dLen, abs( dR1) + abs( dR2), dTime), 5)
@@ -1551,7 +1551,7 @@ function OnEstimLinear()
local dLen = sqrt( dL1 * dL1 + dL2 * dL2 + dL3 * dL3)
EMT.MCHCUTLEN = EMT.MCHCUTLEN + dLen
-- calcolo tempo
local dTime = dLen / ( EMT.F / 60) -- CalcMoveTime( dLen, EMT.F, EMT.SPLIT)
local dTime = CalcMoveTime( dLen, EMT.F, EMT.SPLIT)
EMT.MCHCUTTIME = EMT.MCHCUTTIME + dTime
EgtOutLog( string.format( ' G1 Len=%.0f Time=%.2f', dLen, dTime), 5)
-- aggiorno valori come precedenti
+2 -2
View File
@@ -24,8 +24,8 @@
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.7k4_DEV1'
PP_NVER = '2.7.11.4'
PP_VER = '2.7k5'
PP_NVER = '2.7.11.5'
MIN_MACH_VER = '2.7j1'
MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio
BIN
View File
Binary file not shown.
-3
View File
@@ -1,8 +1,5 @@
==== Common_FAST Update Log ====
Versione 2.7-- (19/11/2025)
- (EST) Modifiche a calcolo stima tempi, da verificare.
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.
+1 -1
View File
@@ -3,7 +3,7 @@
local InfoCommon_STD_PP = {
NAME = 'Common_FAST', -- nome script PP standard
VERSION = '2.7--', -- versione script
VERSION = '2.7k6', -- versione script
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
}