From d624434c2ef9dd0a0ccfbb09d354f5d2a4802fbf Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Fri, 26 Jun 2026 12:59:15 +0200 Subject: [PATCH] Allineamento con common ver. 3.1f5 --- Common_ONE-PF.NUM.mlpe | 122 ++++++++++++++++++++++++++++++----------- Common_ONE-PF.mlpe | 52 +++++++++++++++--- Essetre-PFrl.mlde | 9 +-- UpdateLog.txt | 3 + Version.lua | 2 +- 5 files changed, 139 insertions(+), 49 deletions(-) diff --git a/Common_ONE-PF.NUM.mlpe b/Common_ONE-PF.NUM.mlpe index f10efcc..2aaa69c 100644 --- a/Common_ONE-PF.NUM.mlpe +++ b/Common_ONE-PF.NUM.mlpe @@ -1046,13 +1046,20 @@ function OnRapid() EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3)) -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) -- se circa verticale else - EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) - EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) + else + EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end end end EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed}) @@ -1135,15 +1142,21 @@ function OnRapid() EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3)) -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) -- se circa verticale else - EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) - EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) + else + EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end end - end EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed}) EmitMoveStartHead( 1) @@ -1217,13 +1230,20 @@ function OnRapid() EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3)) -- se motosega configurata per lavorazioni di fianco o circa orizzontale. Dopo attesa movimento carrelli si devono scrivere tutti gli assi. - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed}) EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) -- se circa verticale else - EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed}) - EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + EmitMoveDataHead( 2, { X=-LimX2RotSaw, Z=ParkCSawZ2, B=ParkCSawB2, C=90, S=Speed}) + EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) + EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed}) + else + EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed}) + EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end end end EmitMoveDataHead( 2, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, TRad=dTRad, TLen=dTLen, S=Speed}) @@ -1395,7 +1415,7 @@ function OnRapid() bMoveZbeforeX = true end - -- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro + -- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro local dMoveXtoFinalPosition = false local dXref = EMT.L2 if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then @@ -1440,13 +1460,20 @@ function OnRapid() else EmitMoveDataHead( 1, { X=-ParkCSawX1, Z=ParkCSawZ1, B=ParkCSawB1, C=ParkCSawC1, TRad=dTRad, TLen=dTLen, S=Speed}) -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) -- se circa verticale else - EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) - EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) + else + EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end end end end @@ -1534,13 +1561,20 @@ function OnRapid() else EmitMoveDataHead( 1, { X=-ParkCSawX1, Z=ParkCSawZ1, B=ParkCSawB1, C=ParkCSawC1, TRad=dTRad, TLen=dTLen, S=Speed}) -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) -- se circa verticale else - EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) - EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + EmitMoveDataHead( 1, { X=-LimX1RotSaw, Z=ParkCSawZ1, B=ParkCSawB1, C=90, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + EmitMoveDataHead( 1, { X=EMT.L2, C=EMT.R1, S=Speed}) + else + EmitMoveDataHead( 1, { X=EMT.L2, Z=ParkCSawZ1, B=ParkCSawB1, C=EMT.R1, S=Speed}) + EmitMoveDataHead( 1, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end end end end @@ -1611,13 +1645,20 @@ function OnRapid() else EmitMoveDataHead( 2, { X=-ParkCSawX2, Z=ParkCSawZ2, B=ParkCSawB2, C=ParkCSawC2, TRad=dTRad, TLen=dTLen, S=Speed}) -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed}) EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) -- se circa verticale else - EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed}) - EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + EmitMoveDataHead( 2, { X=-LimX2RotSaw, Z=ParkCSawZ2, B=ParkCSawB2, C=90, S=Speed}) + EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) + EmitMoveDataHead( 2, { X=EMT.L2, C=EMT.R1, S=Speed}) + else + EmitMoveDataHead( 2, { X=EMT.L2, Z=ParkCSawZ2, B=ParkCSawB2, C=EMT.R1, S=Speed}) + EmitMoveDataHead( 2, { Z=EMT.L3, B=EMT.R2, S=Speed}) + end end end end @@ -3000,6 +3041,11 @@ 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) + -- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori + if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then + EmitMoveDataHead( 1, { X=-LimX1RotSaw, C=90}) + end + EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1}) if EMT.R3 and abs( EMT.R3) < 0.1 then EmitMoveDataHead( 1, { Z=ParkCSawZ1}) @@ -3061,6 +3107,11 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt end end end + -- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori + if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then + EmitMoveDataHead( 1, { X=-LimX1RotSaw, C=90}) + end + EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1}) if EMT.R3 and abs( EMT.R3) < 0.1 then EmitMoveDataHead( 1, { Z=ParkCSawZ1}) @@ -3120,22 +3171,27 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt 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 + 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 + -- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori + if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then + EmitMoveDataHead( 2, { X=-LimX2RotSaw, C=90}) + 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 28588a0..c92830c 100644 --- a/Common_ONE-PF.mlpe +++ b/Common_ONE-PF.mlpe @@ -1217,13 +1217,20 @@ function OnSimulMoveStart() EMT.CHSAW_OUT = nil end -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) -- se circa verticale else - SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) - SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) + else + SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + end end end -- altrimenti testa 2 @@ -1291,13 +1298,20 @@ function OnSimulMoveStart() EMT.CHSAW_OUT = nil end -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) -- se circa verticale else - SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) - SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) + else + SimulMoveAxes( 'X1', EMT.L2, MCH_SIM_STEP.RAPID, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT) + end end end else @@ -1375,13 +1389,20 @@ function OnSimulMoveStart() EMT.CHSAW_OUT = nil end -- se motosega configurata per lavorazioni di fianco o circa orizzontale - if dPosA == 0 or abs( EMT.R2) < 10 then + if abs( dPosA) < 0.1 or abs( EMT.R2) < 10 then SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT) SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT) -- se circa verticale else - SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT) - SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT) + -- se arrivo da ZMAX e il pezzo è abbastanza alto, si ruota fuori + if EMT.ZMAX and EMT.SB > MaxVeOpen / 2 then + SimulMoveAxes( 'X2', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C2', 90, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT) + else + SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT) + SimulMoveAxes( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT) + end end end end @@ -1872,6 +1893,11 @@ function ExecMoveZmax( bMchSplit, btoXHome) end -- altrimenti sega a catena else + -- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori + if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then + SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT) + 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) @@ -1913,6 +1939,10 @@ function ExecMoveZmax( bMchSplit, btoXHome) end end end + -- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori + if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then + SimulMoveAxes( 'X1', LimX1RotSaw, MCH_SIM_STEP.RAPID, 'C1', 90, MCH_SIM_STEP.COLLROT) + 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) @@ -1967,6 +1997,10 @@ function ExecMoveZmax( bMchSplit, btoXHome) end end end + -- se configurazione per lavorare dall'alto e il pezzo è abbastanza alto, si ruota fuori + if EMT.SB > MaxVeOpen / 2 and abs( EMT.R3) > 0.1 and abs( EMT.R2) > 70 then + SimulMoveAxes( 'X2', LimX2RotSaw, MCH_SIM_STEP.RAPID, 'C2', 90, MCH_SIM_STEP.COLLROT) + 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-PFrl.mlde b/Essetre-PFrl.mlde index b88b44c..5f99305 100644 --- a/Essetre-PFrl.mlde +++ b/Essetre-PFrl.mlde @@ -44,9 +44,9 @@ require( 'EmtGenerator') EgtEnableDebug( false) -PP_VER = '3.1f4' -PP_NVER = '3.1.6.4' -MIN_MACH_VER = '2.5k1' +PP_VER = '3.1f5' +PP_NVER = '3.1.6.5' +MIN_MACH_VER = '2.7a1' MACH_NAME = EgtGetCurrMachineName() -- Carico i dati globali @@ -968,9 +968,6 @@ function OnSetHead() -- 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)) - local vtMove = Point3d( 0, 0, -dDist) - Point3d( EMC.EXITPOS) - local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT)) - EgtMove( ExitId, vtMove) -- recupero valore asse A bloccato local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS) local CSawPosA = tonumber( sVal:sub( 3) or '') diff --git a/UpdateLog.txt b/UpdateLog.txt index 4758a8e..021bcdf 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,8 @@ ==== Common_ONE-PF Update Log ==== +Versione 3.1f5 (26/06/2026) +- (SIM-GEN) Se tasca con motosega in faccia sopra e pezzo alto, si ruota in sicurezza. + Versione 3.1f4 (17/06/2026) - (MLDE-GEN) Corretta preselezione in caso di testa in lavoro troppo vicina a quella che sta preselezionando. Da aggiungere in MLDE parametri 'Limit_T1_Presel_T2' e 'Limit_T2_Presel_T1' diff --git a/Version.lua b/Version.lua index 72474b2..388649d 100644 --- a/Version.lua +++ b/Version.lua @@ -3,7 +3,7 @@ local InfoCommon_STD_PP = { NAME = 'Common_ONE-PF', -- nome script PP standard - VERSION = '3.1f4', -- versione script + VERSION = '3.1f5', -- versione script MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel }