Compare commits
4 Commits
2.7k4_DEV1
..
2.7k6
| Author | SHA1 | Date | |
|---|---|---|---|
| ba2f6b46f3 | |||
| bc541ddd24 | |||
| a64e4bd840 | |||
| 30b8fc08bd |
+121
-3
@@ -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
@@ -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
@@ -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
|
||||
|
||||
|
||||
Binary file not shown.
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user