diff --git a/ChooseToolWD.xaml b/ChooseToolWD.xaml new file mode 100644 index 0000000..2661376 --- /dev/null +++ b/ChooseToolWD.xaml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ChooseToolWD.xaml.vb b/ChooseToolWD.xaml.vb new file mode 100644 index 0000000..8354afb --- /dev/null +++ b/ChooseToolWD.xaml.vb @@ -0,0 +1,136 @@ +Imports System.Collections.ObjectModel +Imports System.IO +Imports EgtUILib + +Public Class ChooseToolWD + + Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) + + Private m_SetUpToolList As New ObservableCollection(Of ToolPos) + + Sub New(Owner As Window) + Me.Owner = Owner + InitializeComponent() + End Sub + + Private Sub OpenFile_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized + ' Posizione finestra + Me.Top = Owner.Top + Owner.Height / 2 - Me.Height / 2 + Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2 + ' Definizione del collegamento tra ItemList e ListBox1 + SetUpToolListBox.ItemsSource = m_SetUpToolList + End Sub + + Private Sub OpenFile_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded + ' carico direttorio + LoadSetUpTool() + ' se presente seleziono il primo elemento + If m_SetUpToolList.Count > 0 Then + SetUpToolListBox.SelectedItem = m_SetUpToolList(0) + OkBtn.IsEnabled = True + Else + OkBtn.IsEnabled = False + End If + End Sub + + Private Function LoadSetUpTool() As Boolean + Select Case m_MainWindow.m_CurrentMachine.MountedToolConfig + Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL + m_SetUpToolList.Add(New ToolPos(m_MainWindow.m_CurrentMachine.sCurrSaw, "T100", True)) + If Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrMill) Then + m_SetUpToolList.Add(New ToolPos(m_MainWindow.m_CurrentMachine.sCurrMill, "T100", False)) + End If + If Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDrill) Then + m_SetUpToolList.Add(New ToolPos(m_MainWindow.m_CurrentMachine.sCurrDrill, "T100", False)) + End If + Return True + Case CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER + If m_MainWindow.m_CurrentMachine.bSaw And Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrSaw) Then + EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) + Dim sToolPos As String = String.Empty + EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolPos) + m_SetUpToolList.Add(New ToolPos(m_MainWindow.m_CurrentMachine.sCurrSaw, sToolPos, True)) + End If + ' Recupero tutti gli utensili attrezzati (nel ToolChanger e nel ManualToolChanger) + For Each ToolChangerPos In m_MainWindow.m_CurrentMachine.ManualToolChanger + m_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False)) + Next + Return True + Case CurrentMachine.MountedToolConfigs.TOOLCHANGER + ' Recupero tutti gli utensili attrezzati (nel ToolChanger e nel ManualToolChanger) + If m_MainWindow.m_CurrentMachine.bSaw And Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrSaw) Then + EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) + Dim sToolPos As String = String.Empty + EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolPos) + m_SetUpToolList.Add(New ToolPos(m_MainWindow.m_CurrentMachine.sCurrSaw, sToolPos, True)) + End If + For Each ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger + If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then + m_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False)) + End If + Next + For Each ToolChangerPos In m_MainWindow.m_CurrentMachine.ManualToolChanger + If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then + m_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False)) + End If + Next + Return True + Case Else + Return False + End Select + End Function + + Private Sub SetUpToolListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles SetUpToolListBox.PreviewMouseUp + ' Disabilito Ok + OkBtn.IsEnabled = False + ' Recupero item selezionato + If SetUpToolListBox.SelectedItems.Count() = 0 Then + Return + End If + ' A seconda del tipo + OkBtn.IsEnabled = True + End Sub + + Private Sub SetUpToolListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles SetUpToolListBox.SelectionChanged + ' Disabilito Ok + OkBtn.IsEnabled = False + ' Recupero item selezionato + If SetUpToolListBox.SelectedItems.Count() = 0 Then + Return + Else + OkBtn.IsEnabled = True + End If + End Sub + + Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click + DialogResult = True + End Sub + + Friend Function GetSelectedTool() As ToolPos + Return SetUpToolListBox.SelectedItem + End Function + +End Class + +Public Class ToolPos + + Friend m_ToolName As String + Public Property ToolName As String + Get + Return m_ToolName + End Get + Set(value As String) + m_ToolName = value + End Set + End Property + + Friend m_ToolPos As String + Friend m_IsSaw As Boolean + + Sub New(sToolName As String, sToolPos As String, bIsSaw As Boolean) + m_ToolName = sToolName + m_ToolPos = sToolPos + m_IsSaw = bIsSaw + End Sub + +End Class \ No newline at end of file diff --git a/DirectCutPageUC.xaml.vb b/DirectCutPageUC.xaml.vb index 5c1e279..b217311 100644 --- a/DirectCutPageUC.xaml.vb +++ b/DirectCutPageUC.xaml.vb @@ -192,16 +192,17 @@ Public Class DirectCutPageUC Private Sub SawProbingBtn_Click(sender As Object, e As RoutedEventArgs) Handles SawProbingBtn.Click ' Recupero file LUA EgtLuaExecFile(m_MainWindow.m_CurrentMachine.sMachDir() & "\DirectCmd\SawProbing.lua") - ' Recupero lama montata dal Db utensili - EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) + ' Recupero utensile da tastare + Dim ToolForProbing As ToolPos = ChooseToolForProbing() + If IsNothing(ToolForProbing) OrElse String.IsNullOrWhiteSpace(ToolForProbing.m_ToolName) Then Return + If Not EgtTdbSetCurrTool(ToolForProbing.m_ToolName) Then Return ' Imposto parametri Dim dToolParam As Double = 0 Dim sToolParam As String = String.Empty EgtTdbGetCurrToolParam(MCH_TP.HEAD, sToolParam) EgtLuaSetGlobStringVar("CMD.HEAD", sToolParam) - EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolParam) - EgtLuaSetGlobStringVar("CMD.TCPOS", sToolParam) - 'Per ora fisso 100 per le macchine senza ToolChanger, ma da modificare per poterle gestire!!!!!! + EgtLuaSetGlobStringVar("CMD.TCPOS", ToolForProbing.m_ToolPos) + EgtLuaSetGlobBoolVar("CMD.ISSAW", ToolForProbing.m_IsSaw) EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolParam) EgtLuaSetGlobNumVar("CMD.DIAM", dToolParam * 1000) EgtTdbGetCurrToolParam(MCH_TP.THICK, dToolParam) @@ -276,12 +277,12 @@ Public Class DirectCutPageUC Next ' Se tastatura riuscita If bProbingOk Then - ' Leggo spessore misurato + ' Leggo valore misurato (diametro per lama, lunghezza per altri utensili) Dim SawDiameterNameVar As String = String.Empty GetPrivateProfileString(S_MACH_PROBING, K_SAWDIAMETER, "", SawDiameterNameVar, m_MainWindow.GetMachIniFile()) m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 0 m_MainWindow.m_CNCommunication.m_CN.ReadEls_Add_Parameter(SawDiameterNameVar, 1) - Dim SawDiam As Double = 0 + Dim dVal As Double = 0 For I = 0 To 20 ' Se NUM Axium o Siemens devo rileggere la variabile ad ogni ciclo If m_MainWindow.m_CNCommunication.m_nNCType = 1 Or @@ -289,24 +290,31 @@ Public Class DirectCutPageUC m_MainWindow.m_CNCommunication.m_CN.ReadEls_Add_Parameter(SawDiameterNameVar, 1) End If If m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then - SawDiam = m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value + dVal = m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value MsgBoxStateInfo.LoadingPrBr_Value = 100 MsgBoxStateInfo.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 43) - EgtOutLog("SawDiam=" & SawDiam.ToString()) + EgtOutLog("ToolVal=" & dVal.ToString()) ' Costringo ad aggiornare UI UpdateUI() System.Threading.Thread.Sleep(1500) ' Trasformo misura rilevata in mm If m_MainWindow.m_CNCommunication.GetMachineInInches() Then - SawDiam *= ONEINCH / 1000 + dVal *= ONEINCH / 1000 Else - SawDiam *= ONEMM / 1000 + dVal *= ONEMM / 1000 End If - ' Imposto spessore misurato come diametro lama - If SawDiam > -EPS_ZERO Then - ' Recupero lama montata dal Db utensili - EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) - EgtTdbSetCurrToolParam(MCH_TP.DIAM, SawDiam) + ' Imposto valore misurato + If dVal > -EPS_ZERO Then + ' Recupero utensile dal Db utensili + EgtTdbSetCurrTool(ToolForProbing.m_ToolName) + ' Se lama è il diametro, altrimenti la lunghezza + If ToolForProbing.m_IsSaw Then + EgtTdbSetCurrToolParam(MCH_TP.DIAM, dVal) + EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dVal) + Else + EgtTdbSetCurrToolParam(MCH_TP.LEN, dVal) + EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dVal) + End If EgtTdbSaveCurrTool() EgtTdbSave() End If @@ -316,7 +324,7 @@ Public Class DirectCutPageUC End If System.Threading.Thread.Sleep(100) Next - ' Altrimenti tastatura non riuscita o interrotta dall'utente + ' Altrimenti tastatura non riuscita o interrotta dall'utente Else m_MainWindow.m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(MSG_DIRECTCUTPAGEUC + 44)) MsgBoxStateInfo.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 44) ' Errore in tastatura lama @@ -329,6 +337,22 @@ Public Class DirectCutPageUC m_MainWindow.m_CurrentProjectPageUC.ClearMessage() End Sub + Private Function ChooseToolForProbing() As ToolPos + Select Case m_MainWindow.m_CurrentMachine.MountedToolConfig + Case CurrentMachine.MountedToolConfigs.SAW + Return New ToolPos(m_MainWindow.m_CurrentMachine.sCurrSaw, "T100", True) + Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL, CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER + Dim ChooseTool As New ChooseToolWD(m_MainWindow) + If ChooseTool.ShowDialog = True Then + Return ChooseTool.GetSelectedTool + Else + Return Nothing + End If + Case Else + Return Nothing + End Select + End Function + Private Sub ManualModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualModeBtn.Click ' Imposto modalità manuale della macchina Dim nResult As Short = m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index f751642..7cc4feb 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -62,5 +62,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/OmagCUT.vbproj b/OmagCUT.vbproj index b89aa55..ef467fb 100644 --- a/OmagCUT.vbproj +++ b/OmagCUT.vbproj @@ -171,6 +171,9 @@ ChooseMachining.xaml + + ChooseToolWD.xaml + @@ -329,6 +332,10 @@ Designer MSBuild:Compile + + MSBuild:Compile + Designer + Designer MSBuild:Compile