From 7c5169481902012f5246e6deca0ecf54e62fbaf2 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Fri, 16 Jan 2026 15:45:20 +0100 Subject: [PATCH] Allineamento con common ver. 3.1a1 --- Common_ONE-PF.NUM.mlpe | 36 ++++++++++++++++++++++++++++++++++++ Common_ONE-PF.mlpe | 36 ++++++++++++++++++++++++++++++++++++ Essetre-ONErl.mlde | 4 ++-- UpdateLog.txt | 10 +++++++--- Version.lua | 2 +- 5 files changed, 82 insertions(+), 6 deletions(-) diff --git a/Common_ONE-PF.NUM.mlpe b/Common_ONE-PF.NUM.mlpe index bb895b2..39a5c21 100644 --- a/Common_ONE-PF.NUM.mlpe +++ b/Common_ONE-PF.NUM.mlpe @@ -2871,6 +2871,24 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt -- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1} EmitMoveDataHead( 1, MovH) + -- controlla che l'ingombro della sega a catena non possa collidere durante il suo riposizionamento + local dChSawEncumbrance = sqrt( pow( EMT.TTOTLEN, 2) + pow( ChSawLen + MillOffs, 2)) + if EMT.ADIR and EMT.TDIR then + -- direzione versore sega a catena X- (copre anche eventuali inclinazioni in Y) + if EMT.TDIR[1] <= 0 then + -- ingombro massimo di quota Z (senza pivot) + ingombro massimo sega + altezza pezzo + altezza sicurezza + local dEncumbranceTot = EMT.L3o + MillOffs - dChSawEncumbrance - EMT.SB - 30 + -- nuova quota Z intermedia + local dZUp = EMT.L3o + ( DeltaTabZ - dEncumbranceTot) + -- se la nuova quota è minore della quota di parcheggio + if dZUp <= ParkCSawZ1 then + -- se B è oltre il punto di massimo ingombro (con l'inclinazione attuale non ha il massimo ingombro) + if asin( EMT.TDIR[3] / 1) > asin( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) / dChSawEncumbrance) and ( dEncumbranceTot < DeltaTabZ) then + EmitMoveDataHead( 1, { Z=dZUp}) + end + end + end + end EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1}) if EMT.R3 and abs( EMT.R3) < 0.1 then EmitMoveDataHead( 1, { Z=ParkCSawZ1}) @@ -2928,6 +2946,24 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt -- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1} EmitMoveDataHead( 2, MovH) + -- controlla che l'ingombro della sega a catena non possa collidere durante il suo riposizionamento + local dChSawEncumbrance = sqrt( pow( EMT.TTOTLEN, 2) + pow( ChSawLen + Mill2Offs, 2)) + if EMT.ADIR and EMT.TDIR then + -- direzione versore sega a catena X- (copre anche eventuali inclinazioni in Y) + if EMT.TDIR[1] <= 0 then + -- ingombro massimo di quota Z (senza pivot) + ingombro massimo sega + altezza pezzo + altezza sicurezza + local dEncumbranceTot = EMT.L3o + Mill2Offs - dChSawEncumbrance - EMT.SB - 30 + -- nuova quota Z intermedia + local dZUp = EMT.L3o + ( DeltaTabZ - dEncumbranceTot) + -- se la nuova quota è minore della quota di parcheggio + if dZUp <= ParkCSawZ2 then + -- se B è oltre il punto di massimo ingombro (con l'inclinazione attuale non ha il massimo ingombro) + if asin( EMT.TDIR[3] / 1) > asin( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) / dChSawEncumbrance) and ( dEncumbranceTot < DeltaTabZ) then + EmitMoveDataHead( 2, { Z=dZUp}) + end + end + end + end EmitMoveDataHead( 2, { Z=dSafeZ2, B=dSafeB2}) if EMT.R3 and abs( EMT.R3) < 0.1 then EmitMoveDataHead( 2, { Z=ParkCSawZ2}) diff --git a/Common_ONE-PF.mlpe b/Common_ONE-PF.mlpe index 2cce3da..1032cbe 100644 --- a/Common_ONE-PF.mlpe +++ b/Common_ONE-PF.mlpe @@ -1737,6 +1737,24 @@ function ExecMoveZmax( bMchSplit, btoXHome) end -- altrimenti sega a catena else + -- controlla che l'ingombro della sega a catena non possa collidere durante il suo riposizionamento + local dChSawEncumbrance = sqrt( pow( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN), 2) + pow( ChSawLen + MillOffs, 2)) + if EMT.ADIR and EMT.TDIR then + -- direzione versore sega a catena X- (copre anche eventuali inclinazioni in Y) + if EMT.TDIR[1] <= 0 then + -- ingombro massimo di quota Z (senza pivot) + ingombro massimo sega + altezza pezzo + altezza sicurezza + local dEncumbranceTot = EMT.L3p + MillOffs - dChSawEncumbrance - EMT.SB - 30 + -- nuova quota Z intermedia + local dZUp = EMT.L3p + ( DeltaTabZ - dEncumbranceTot) + -- se la nuova quota è minore della quota di parcheggio + if dZUp <= ParkCSawZ1 then + -- se B è oltre il punto di massimo ingombro (con l'inclinazione attuale non ha il massimo ingombro) + if asin( EMT.TDIR[3] / 1) > asin( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) / dChSawEncumbrance) and ( dEncumbranceTot < DeltaTabZ) then + SimulMoveAxis( 'Z1', dZUp, MCH_SIM_STEP.RAPID) + end + end + end + end SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT) if EMT.R3 and abs( EMT.R3) < 0.1 then SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID) @@ -1776,6 +1794,24 @@ function ExecMoveZmax( bMchSplit, btoXHome) end -- altrimenti sega a catena else + -- controlla che l'ingombro della sega a catena non possa collidere durante il suo riposizionamento + local dChSawEncumbrance = sqrt( pow( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN), 2) + pow( ChSawLen + Mill2Offs, 2)) + if EMT.ADIR and EMT.TDIR then + -- direzione versore sega a catena X- (copre anche eventuali inclinazioni in Y) + if EMT.TDIR[1] <= 0 then + -- ingombro massimo di quota Z (senza pivot) + ingombro massimo sega + altezza pezzo + altezza sicurezza + local dEncumbranceTot = EMT.L3p + Mill2Offs - dChSawEncumbrance - EMT.SB - 30 + -- nuova quota Z intermedia + local dZUp = EMT.L3p + ( DeltaTabZ - dEncumbranceTot) + -- se la nuova quota è minore della quota di parcheggio + if dZUp <= ParkCSawZ2 then + -- se B è oltre il punto di massimo ingombro (con l'inclinazione attuale non ha il massimo ingombro) + if asin( EMT.TDIR[3] / 1) > asin( EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) / dChSawEncumbrance) and ( dEncumbranceTot < DeltaTabZ) then + SimulMoveAxis( 'Z2', dZUp, MCH_SIM_STEP.RAPID) + end + end + end + end SimulMoveAxes( 'Z2', HomeZ, MCH_SIM_STEP.RAPID, 'B2', HomeB, MCH_SIM_STEP.COLLROT) if EMT.R3 and abs( EMT.R3) < 0.1 then SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID) diff --git a/Essetre-ONErl.mlde b/Essetre-ONErl.mlde index bf1d035..571ccfc 100644 --- a/Essetre-ONErl.mlde +++ b/Essetre-ONErl.mlde @@ -8,8 +8,8 @@ require( 'EmtGenerator') EgtEnableDebug( false) -PP_VER = '2.7l2' -PP_NVER = '2.7.12.2' +PP_VER = '3.1a1' +PP_NVER = '3.1.1.1' MIN_MACH_VER = '2.5k1' MACH_NAME = EgtGetCurrMachineName() diff --git a/UpdateLog.txt b/UpdateLog.txt index 0e691c4..e3b610b 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,9 +1,13 @@ ==== Common_ONE-PF Update Log ==== +Versione 3.1a1 (16/01/2026) +- (SIM-GEN) Aggiunto controllo che evita collisioni durante lo svincolo in Z della sega a catena nelle funzioni ExecMoveZMax() e EmitZMax(). Ticket#2767 +- (SIM-GEN) Piccola correzione modifiche fatte in precedenza + Versione 2.7l1 (18/12/2025) --(SIM-GEN) Aggiunto controllo post movimenti ausiliari dell' EMC.PREVOFFSX nella funzione OnSpecialGetPrevMachiningOffset(). Ticket#2727 --(SIM-GEN) Divisione movimento B in approccio se > 90°. Ticket#2754 --(SIM) Aggiunta funzione CheckClamping +- (SIM-GEN) Aggiunto controllo post movimenti ausiliari dell' EMC.PREVOFFSX nella funzione OnSpecialGetPrevMachiningOffset(). Ticket#2727 +- (SIM-GEN) Divisione movimento B in approccio se > 90°. Ticket#2754 +- (SIM) Aggiunta funzione CheckClamping Versione 2.7k3 (28/11/2025) - (GEN) Prima di andare allo scarico, si aggiunge movimento intermedio dove si aspetta che rulli scarico siano arrivati in posizione. Ticket#2716 diff --git a/Version.lua b/Version.lua index 4f476ea..9f9561a 100644 --- a/Version.lua +++ b/Version.lua @@ -3,7 +3,7 @@ local InfoCommon_STD_PP = { NAME = 'Common_ONE-PF', -- nome script PP standard - VERSION = '2.7l1', -- versione script + VERSION = '3.1a1', -- versione script MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel }