From b0bfa67d2af6af6e8dd3d7ccdc627edde51e2b22 Mon Sep 17 00:00:00 2001 From: Nicola Pievani Date: Wed, 19 Apr 2023 16:44:04 +0200 Subject: [PATCH] Aggiornamento assi macchina in taglio singolo --- DirectCuts/DirectCutPageUC.xaml.vb | 14 +++--- DirectCuts/SingleCutUC.xaml.vb | 71 +++++++++++++++++++++--------- 2 files changed, 59 insertions(+), 26 deletions(-) diff --git a/DirectCuts/DirectCutPageUC.xaml.vb b/DirectCuts/DirectCutPageUC.xaml.vb index e960b99..0abf354 100644 --- a/DirectCuts/DirectCutPageUC.xaml.vb +++ b/DirectCuts/DirectCutPageUC.xaml.vb @@ -425,12 +425,14 @@ Public Class DirectCutPageUC If m_bShowMachine Then ' aggiorno lo stato Select Case m_nMachLook - Case MCH_LOOK.ALL - m_nMachLook = MCH_LOOK.TAB_HEAD - Case MCH_LOOK.TAB_HEAD - m_nMachLook = MCH_LOOK.TAB_TOOL - Case Else - m_nMachLook = MCH_LOOK.ALL + Case MCH_LOOK.ALL + m_nMachLook = MCH_LOOK.TAB_HEAD + Case MCH_LOOK.TAB_HEAD + m_nMachLook = MCH_LOOK.TAB_TOOL + Case MCH_LOOK.TAB_TOOL + m_nMachLook = MCH_LOOK.TAB + Case Else + m_nMachLook = MCH_LOOK.ALL End Select ' aggiorno lo stato della macchina e la sua visualizzazione EgtSetMachineLook(m_nMachLook) diff --git a/DirectCuts/SingleCutUC.xaml.vb b/DirectCuts/SingleCutUC.xaml.vb index 92c8227..1f6e9c0 100644 --- a/DirectCuts/SingleCutUC.xaml.vb +++ b/DirectCuts/SingleCutUC.xaml.vb @@ -1,4 +1,5 @@ -Imports EgtUILib +Imports System.Windows.Threading +Imports EgtUILib Public Class SingleCutUC @@ -43,6 +44,10 @@ Public Class SingleCutUC Private Const MIN_CUT_LEN As Double = 10.0 Private Const MAX_SIDE_ANG As Double = 60.0 ' Costanti che indicano la modalità di acquisizione dei punti + + ' Utilizzato per aggiornare la posizione della macchina + Private m_RefreshTimer As New DispatcherTimer + Private Enum PT_MODE As Integer SAW = 0 LASER = 1 @@ -68,14 +73,14 @@ Public Class SingleCutUC SimulBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1) OkBtn.ToolTip = EgtMsg(MSG_DIRECTCUTPAGEUC + 30) ' Carico i dati dell'ultimo taglio - m_dDepth = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_DEPTH, m_dDepth, m_MainWindow.GetIniFile()) - m_dLen = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_LENGTH, m_dLen, m_MainWindow.GetIniFile()) - m_dAngO = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_ANGH, m_dAngO, m_MainWindow.GetIniFile()) - m_dAngV = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_ANGV, m_dAngV, m_MainWindow.GetIniFile()) + m_dDepth = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_DEPTH, m_dDepth, m_MainWindow.GetIniFile()) + m_dLen = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_LENGTH, m_dLen, m_MainWindow.GetIniFile()) + m_dAngO = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_ANGH, m_dAngO, m_MainWindow.GetIniFile()) + m_dAngV = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_ANGV, m_dAngV, m_MainWindow.GetIniFile()) m_dOffset = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_OFFSET, m_dOffset, m_MainWindow.GetIniFile()) m_bSawTh = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_SING_SAWTH, 0, m_MainWindow.GetIniFile()) <> 0) - m_ptTipP1.x = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile()) - m_ptTipP1.y = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile()) + m_ptTipP1.x = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile()) + m_ptTipP1.y = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile()) End Sub Private Sub SingleCut_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded @@ -92,6 +97,10 @@ Public Class SingleCutUC m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook) EgtDraw() + ' riavvio il timer per visualizzare la poszione della macchina + If Not IsNothing(m_RefreshTimer) Then + m_RefreshTimer.Start() + End If Return End If ' Disabilito registrazione progetto modificato @@ -114,7 +123,7 @@ Public Class SingleCutUC m_bPointP1Ok = False m_bPointP2Ok = False ' Inizializzo primo punto acquisito dal disegno - m_ptPrev = m_ptTipP1 + ( m_ptTabOri - Point3d.ORIG()) + m_ptPrev = m_ptTipP1 + (m_ptTabOri - Point3d.ORIG()) m_ptPrev.z = m_ptRawMax.z ' Disegno crocetta che indica il punto acquisito CreateCross(m_nTempLay, m_ptPrev) @@ -138,21 +147,40 @@ Public Class SingleCutUC ' Deseleziono bottone primo punto Point1Btn.IsChecked = False - ' la visualizzazione dei comandi è gestira dalla DirectCutPageUC richiamando la funzione ReloadParam + ' la visualizzazione dei comandi è gestita dalla DirectCutPageUC richiamando la funzione ReloadParam + + ' forzo la macchina ad essere visibile fin da subito + m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True + m_MainWindow.m_DirectCutPageUC.m_nMachLook = MCH_LOOK.TAB + ' Creo il timer il timer per aggiornare il posizionamento della macchina + AddHandler m_RefreshTimer.Tick, AddressOf RefreshTimer_tick + m_RefreshTimer.Interval = TimeSpan.FromMilliseconds(1000) ' Aggiorno visualizzazione EgtDraw() + + ' Avvi il timer + m_RefreshTimer.Start() + End Sub + + Private Sub RefreshTimer_tick() + ' se è impostata la visualizzazione della sola tavola allora non aggiorno il disegno + If m_MainWindow.m_DirectCutPageUC.m_nMachLook = MCH_LOOK.TAB Then Return + ' Aggiorno visualizzazione + SetMachineInCurrPos() + ' Aggiorno il disegno + EgtDraw() End Sub Friend Sub SingleCut_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded ' Salvo i dati correnti - WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_DEPTH, DoubleToString( m_dDepth, 2), m_MainWindow.GetIniFile()) - WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_LENGTH, DoubleToString( m_dLen, 2), m_MainWindow.GetIniFile()) - WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_ANGH, DoubleToString( m_dAngO, 2), m_MainWindow.GetIniFile()) - WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_ANGV, DoubleToString( m_dAngV, 2), m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_DEPTH, DoubleToString(m_dDepth, 2), m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_LENGTH, DoubleToString(m_dLen, 2), m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_ANGH, DoubleToString(m_dAngO, 2), m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_ANGV, DoubleToString(m_dAngV, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_OFFSET, DoubleToString(m_dOffset, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_SAWTH, If(m_bSawTh, "1", "0"), m_MainWindow.GetIniFile()) - WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_POSX, DoubleToString( m_ptTipP1.x, 2), m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_POSX, DoubleToString(m_ptTipP1.x, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_POSY, DoubleToString(m_ptTipP1.y, 2), m_MainWindow.GetIniFile()) ' Se non vado in simulazione If Not m_bSimul Then @@ -171,6 +199,8 @@ Public Class SingleCutUC EgtSetMachineLook(MCH_LOOK.TAB) EgtDraw() End If + ' interrompo il Timer per aggiornare la visualizzazione del posizionamento macchina + m_RefreshTimer.Stop() ' Dichiaro pagina non attiva m_bActive = False End Sub @@ -279,7 +309,7 @@ Public Class SingleCutUC DirectionTxBx.Text = DoubleToString(m_dAngO - m_MainWindow.m_CurrentMachine.dDeltaC, 2) SideAngleTxBx.Text = DoubleToString(m_dAngV, 2) - ' Altrimenti punto da click di mouse + ' Altrimenti punto da click di mouse Else ' Assegno punto selezionato nel disegno a m_ptTipP1 m_ptTipP1 = m_ptPrev @@ -298,6 +328,7 @@ Public Class SingleCutUC m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook) EgtDraw() + ' Seleziono il bottone per indicare che il primo punto è stato acquisito Point1Btn.IsChecked = True ' Abilito e deseleziono secondo punto @@ -358,7 +389,7 @@ Public Class SingleCutUC m_dAngV = 90 - dTAngV SideAngleTxBx.Text = DoubleToString(m_dAngV, 2) - ' Altrimenti punto da click di mouse + ' Altrimenti punto da click di mouse Else ' Assegno punto selezionato nel disegno a m_ptTipP2 m_ptTipP2 = m_ptPrev @@ -476,7 +507,7 @@ Public Class SingleCutUC EgtDraw() End Sub - Private Sub SawThick_Click( sender As Object, e As RoutedEventArgs) Handles SawThChBx.Click + Private Sub SawThick_Click(sender As Object, e As RoutedEventArgs) Handles SawThChBx.Click ' Recupero lo stato di check m_bSawTh = SawThChBx.IsChecked() ' Disegno il taglio @@ -536,9 +567,9 @@ Public Class SingleCutUC m_CurrProjPage.SetWarningMessage( "Trial Version") #Else ' Verifico non sia versione Ufficio - If m_MainWindow.GetKeyOption( MainWindow.KEY_OPT.OFFICE_TYPE) Then - m_CurrProjPage.SetWarningMessage( "Office Version") - Return + If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then + m_CurrProjPage.SetWarningMessage("Office Version") + Return End If ' Verifico ci sia un taglio valido If Not m_bCutOk Then Return