Files
OmagCUT/AlarmsPageUC.xaml.vb
T
Emmanuele Sassi 8bd01b8058 OmagCUT :
- Introduzione materiali e spessori nelle lavorazioni.
- Scelta delle lavorazioni che tiene conto di materiali e spessori impostati in Db lavorazioni.
- Bottoni macchina singoli a stati invece che doppi on/off.
- Miglioramenti vari durante prove in macchina.
2016-02-08 09:17:35 +00:00

384 lines
18 KiB
VB.net

Imports System.Windows.Threading
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib
Public Class AlarmsPageUC
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = Application.Current.MainWindow
Private m_CurrentMachine As CurrentMachine
Friend m_CN As CN_generico
' Definizione pagina attrezzaggio
Friend m_SetUpPage As SetUpPage
' Properties
Private m_bFirst As Boolean = True
'Lista che contiene le lame disponibili (per Combobox pagina Alarms)
Private m_SawList As New List(Of String)
Private m_DrillList As New List(Of String)
Private m_MillList As New List(Of String)
Private m_AuxToolTypeList As New List(Of StringIdCmBx)
Private Sub AlarmsPage_Initialized(sender As Object, e As EventArgs)
'Assegno liste a combobox
CurrSawCmBx.ItemsSource = m_SawList
CurrDrillCmBx.ItemsSource = m_DrillList
CurrMillCmBx.ItemsSource = m_MillList
AuxiliaryToolCmBx.ItemsSource = m_AuxToolTypeList
' Assegno lista ad elenco materiali
MaterialsLstBx.ItemsSource = m_MainWindow.m_CurrentMachine.Materials
'Imposto i messaggi letti dal file dei messaggi
CurrSawTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 1)
AuxiliaryToolTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 2)
CurrDrillTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 3)
CurrMillTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 4)
HolesOffsetTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 9)
HolesOverlapTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 10)
HolesToleranceTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 11)
CutExtraLenTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 6)
AngleCutExtraLenTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 7)
CompleteCutsTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 8)
SafeZTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 5)
ErrorLstGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 12)
MaterialsGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 13)
NewMatBtn.Content = EgtMsg(MSG_ALARMSPAGEUC + 14)
RemoveMatBtn.Content = EgtMsg(MSG_ALARMSPAGEUC + 15)
SetUpGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 16)
HolesGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 17)
End Sub
Private Sub AlarmsPage_Loaded(sender As Object, e As RoutedEventArgs)
If m_bFirst Then
' Variabile che accorcia il riferimento alla macchina corrente
m_CurrentMachine = m_MainWindow.m_CurrentMachine
' Verifico la configurazione della macchina per creare i combobox
Select Case m_CurrentMachine.MountedToolConfig
Case CurrentMachine.MountedToolConfigs.SAW
' Elimino le righe inutili e riduco il groupbox utensili correnti
For Index = 7 - 1 To 2 Step -1
CurrToolsGrid.RowDefinitions.RemoveAt(Index)
Next
Dim EndRow As New RowDefinition
EndRow.Height = New GridLength(0.25, GridUnitType.Star)
CurrToolsGrid.RowDefinitions.Add(EndRow)
SetUpGpBx.SetValue(Grid.RowSpanProperty, 1)
' Disattivo il gruppo dei parametri fori
HolesGpBx.Visibility = Windows.Visibility.Hidden
Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL
'Non faccio alcunchè
Case CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER
'Da implementare
End Select
m_bFirst = False
End If
' Aggiorno lista delle lame per pagina macchina in cui scegliere quella corrente
CreateToolList(MCH_TF.SAWBLADE, m_SawList)
' Seleziono lama corrente
CurrSawCmBx.SelectedItem = m_CurrentMachine.sCurrSaw
' Verifico la configurazione della macchina per creare i combobox
Select Case m_CurrentMachine.MountedToolConfig
Case CurrentMachine.MountedToolConfigs.SAW
' Non compio alcuna azione
Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL
If m_CurrentMachine.bDrilling Then
m_AuxToolTypeList.Add(New StringIdCmBx(2, EgtMsg(MSG_ALARMSPAGEUC + 22)))
If m_CurrentMachine.bMilling Then
m_AuxToolTypeList.Add(New StringIdCmBx(1, EgtMsg(MSG_ALARMSPAGEUC + 21)))
End If
Else
If m_CurrentMachine.bMilling Then
m_AuxToolTypeList.Add(New StringIdCmBx(1, EgtMsg(MSG_ALARMSPAGEUC + 21)))
End If
End If
' Aggiungo elemento nessuno in fondo alla lista
m_AuxToolTypeList.Add(New StringIdCmBx(0, EgtMsg(MSG_ALARMSPAGEUC + 20)))
AuxiliaryToolTxBl.Visibility = Windows.Visibility.Visible
AuxiliaryToolCmBx.Visibility = Windows.Visibility.Visible
CurrDrillTxBl.Visibility = Windows.Visibility.Hidden
CurrDrillCmBx.Visibility = Windows.Visibility.Hidden
CurrMillTxBl.Visibility = Windows.Visibility.Hidden
CurrMillCmBx.Visibility = Windows.Visibility.Hidden
If m_CurrentMachine.sCurrDrill <> String.Empty Then
AuxiliaryToolCmBx.SelectedItem = StringIdCmBx.FromIdToStringIdCmBx(1, m_AuxToolTypeList)
CurrDrillTxBl.SetValue(Grid.RowProperty, 4)
CurrDrillCmBx.SetValue(Grid.RowProperty, 5)
CurrDrillTxBl.Visibility = Windows.Visibility.Visible
CurrDrillCmBx.Visibility = Windows.Visibility.Visible
ElseIf m_CurrentMachine.sCurrMill <> String.Empty Then
AuxiliaryToolCmBx.SelectedItem = StringIdCmBx.FromIdToStringIdCmBx(2, m_AuxToolTypeList)
CurrMillTxBl.Visibility = Windows.Visibility.Visible
CurrMillCmBx.Visibility = Windows.Visibility.Visible
Else
AuxiliaryToolCmBx.SelectedItem = StringIdCmBx.FromIdToStringIdCmBx(0, m_AuxToolTypeList)
End If
Case CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER
SetUpBtn.Visibility = Windows.Visibility.Visible
End Select
' Leggo offset fori
Dim dVal As Double
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_HOLES_OFFSET, 0, m_MainWindow.GetMachIniFile())
EgtMdbSetGeneralParam(MCH_GP.EXTRARONDRIREG, dVal)
EgtMdbSave()
HolesOffsetTxBx.Text = LenToString(dVal, 2)
' Leggo sovrapposizione fori
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_HOLES_OVERLAP, 0, m_MainWindow.GetMachIniFile())
HolesOverlapTxBx.Text = LenToString(dVal, 2)
' Leggo tolleranza diametro fori
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_HOLES_DIAMTOLER, 0, m_MainWindow.GetMachIniFile())
EgtMdbSetGeneralParam(MCH_GP.HOLEDIAMTOLER, dVal)
EgtMdbSave()
HolesToleranceTxBx.Text = LenToString(dVal, 2)
' Leggo sicurezza su tagli
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_CUT, 0, m_MainWindow.GetMachIniFile())
EgtMdbSetGeneralParam(MCH_GP.EXTRALONCUTREG, dVal)
EgtMdbSave()
CutExtraLenTxBx.Text = LenToString(dVal, 2)
' Leggo sicurezza su tagli in angoli interni
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, 0, m_MainWindow.GetMachIniFile())
AngleCutExtraLenTxBx.Text = LenToString(dVal, 2)
' Leggo tagli ridotti per interferenza in nesting
CompleteCutsChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_REDUCEDCUT, 0, m_MainWindow.GetMachIniFile()) = 0)
' Leggo distanza di sicurezza
dVal = 0
EgtMdbGetGeneralParam(MCH_GP.SAFEZ, dVal)
SafeZTxBx.Text = LenToString(dVal, 2)
End Sub
Private Sub AuxiliaryToolCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles AuxiliaryToolCmBx.SelectionChanged
Dim SelectedItem As StringIdCmBx = AuxiliaryToolCmBx.SelectedItem
Select Case SelectedItem.nId
Case 0
CurrDrillTxBl.Visibility = Windows.Visibility.Hidden
CurrDrillCmBx.Visibility = Windows.Visibility.Hidden
CurrMillTxBl.Visibility = Windows.Visibility.Hidden
CurrMillCmBx.Visibility = Windows.Visibility.Hidden
m_CurrentMachine.sCurrDrill = String.Empty
m_CurrentMachine.sCurrMill = String.Empty
Case 1
CreateToolList(MCH_TF.DRILLBIT, m_DrillList)
m_DrillList.Add("Nessuno")
CurrDrillTxBl.SetValue(Grid.RowProperty, 4)
CurrDrillCmBx.SetValue(Grid.RowProperty, 5)
If m_CurrentMachine.sCurrDrill = String.Empty Then
CurrDrillCmBx.SelectedItem = "Nessuno"
Else
CurrDrillCmBx.SelectedItem = m_CurrentMachine.sCurrDrill
End If
m_CurrentMachine.sCurrMill = String.Empty
CurrDrillTxBl.Visibility = Windows.Visibility.Visible
CurrDrillCmBx.Visibility = Windows.Visibility.Visible
CurrMillTxBl.Visibility = Windows.Visibility.Hidden
CurrMillCmBx.Visibility = Windows.Visibility.Hidden
Case 2
CreateToolList(MCH_TF.MILL, m_MillList)
m_MillList.Add("Nessuna")
If m_CurrentMachine.sCurrMill = String.Empty Then
CurrMillCmBx.SelectedItem = "Nessuna"
Else
CurrMillCmBx.SelectedItem = m_CurrentMachine.sCurrMill
End If
m_CurrentMachine.sCurrDrill = String.Empty
CurrMillCmBx.SelectedItem = m_CurrentMachine.sCurrMill
CurrDrillTxBl.Visibility = Windows.Visibility.Hidden
CurrDrillCmBx.Visibility = Windows.Visibility.Hidden
CurrMillTxBl.Visibility = Windows.Visibility.Visible
CurrMillCmBx.Visibility = Windows.Visibility.Visible
End Select
End Sub
Private Sub CurrSawCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrSawCmBx.SelectionChanged
'WritePrivateProfileString(S_MACH, K_CURRSAW, CurrSawCmBx.SelectedItem, m_MainWindow.GetIniFile())
m_CurrentMachine.sCurrSaw = CurrSawCmBx.SelectedItem
End Sub
Private Sub CurrDrillCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrDrillCmBx.SelectionChanged
If CurrDrillCmBx.SelectedItem = "Nessuno" Then
m_CurrentMachine.sCurrDrill = String.Empty
Else
m_CurrentMachine.sCurrDrill = CurrDrillCmBx.SelectedItem
If m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL Then
m_CurrentMachine.sCurrMill = String.Empty
End If
End If
End Sub
Private Sub CurrMillCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrMillCmBx.SelectionChanged
If CurrMillCmBx.SelectedItem = "Nessuna" Then
m_CurrentMachine.sCurrMill = String.Empty
Else
m_CurrentMachine.sCurrMill = CurrMillCmBx.SelectedItem
If m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL Then
m_CurrentMachine.sCurrDrill = String.Empty
End If
End If
End Sub
Private Sub CreateToolList(ToolType As Integer, ToolList As List(Of String))
'SawList.Clear()
Dim ToolName As String = String.Empty
Dim nType As Integer = MCH_TY.NONE
If EgtTdbGetFirstTool(ToolType, ToolName, nType) Then
ToolList.Add(ToolName)
While EgtTdbGetNextTool(ToolType, ToolName, nType)
ToolList.Add(ToolName)
End While
End If
End Sub
Private Sub SetUpBtn_Click(sender As Object, e As RoutedEventArgs) Handles SetUpBtn.Click
m_MainWindow.m_MachinePageUC.MachinePageGrid.Children.Remove(Me)
m_SetUpPage = New SetUpPage
m_MainWindow.m_MachinePageUC.MachinePageGrid.Children.Add(m_SetUpPage)
End Sub
Private Sub HolesOffsetTxBx_EgtClosed(sender As Object, e As EventArgs) Handles HolesOffsetTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(HolesOffsetTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_MACH_HOLES_OFFSET, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
EgtMdbSetGeneralParam(MCH_GP.EXTRARONDRIREG, dVal)
EgtMdbSave()
End Sub
Private Sub HolesOverlapTxBx_EgtClosed(sender As Object, e As EventArgs) Handles HolesOverlapTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(HolesOverlapTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_MACH_HOLES_OVERLAP, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
End Sub
Private Sub HolesToleranceTxBx_EgtClosed(sender As Object, e As EventArgs) Handles HolesToleranceTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(HolesToleranceTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_MACH_HOLES_DIAMTOLER, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
EgtMdbSetGeneralParam(MCH_GP.HOLEDIAMTOLER, dVal)
EgtMdbSave()
End Sub
Private Sub CutExtraLenTxBx_EgtClosed(sender As Object, e As EventArgs) Handles CutExtraLenTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(CutExtraLenTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_MACH_SAFE_LEN_CUT, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
EgtMdbSetGeneralParam(MCH_GP.EXTRALONCUTREG, dVal)
EgtMdbSave()
End Sub
Private Sub AngleCutExtraLenTxBx_EgtClosed(sender As Object, e As EventArgs) Handles AngleCutExtraLenTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(AngleCutExtraLenTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
End Sub
Private Sub SafeZTxBx_EgtClosed(sender As Object, e As EventArgs) Handles SafeZTxBx.EgtClosed
Dim dSafeZ As Double = 0
StringToLen(SafeZTxBx.Text, dSafeZ)
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, dSafeZ)
EgtMdbSave()
End Sub
Private Sub CompleteCutsChBx_Click(sender As Object, e As RoutedEventArgs) Handles CompleteCutsChBx.Click
Dim NestPage As NestPageUC = m_MainWindow.m_CadCutPageUC.m_NestPage
If CompleteCutsChBx.IsChecked() Then
' Se pezzi in interferenza
If Not NestPage.VerifyPartsNesting(False) Then
' Ci sono interferenze, alcuni pezzi saranno parcheggiati. Vuoi continuare ?
Dim Dlg As New EgtMsgBox(m_MainWindow, "", EgtMsg(91105), EgtMsgBox.Buttons.OK_CANCEL, EgtMsgBox.Icons.ESCLAMATION, 1)
If Dlg.DialogResult = 1 Then ' Ok
NestPage.StoreCollisionParts(False)
WritePrivateProfileString(S_MACH_NEST, K_MACH_REDUCEDCUT, "0", m_MainWindow.GetMachIniFile())
End If
Else
WritePrivateProfileString(S_MACH_NEST, K_MACH_REDUCEDCUT, "0", m_MainWindow.GetMachIniFile())
End If
Else
WritePrivateProfileString(S_MACH_NEST, K_MACH_REDUCEDCUT, "1", m_MainWindow.GetMachIniFile())
End If
End Sub
Friend Sub NcError()
If m_CN.sz_NC_error_messages.Count > 0 Then
'NCErrorMessages.Text = m_CN.sz_NC_error_messages(0)
If m_CN.bIsErrorMessage Then
m_MainWindow.m_MachineStatusUC.MachineStatusGrid.Background = Application.Current.FindResource("OmagCut_Red")
Else
m_MainWindow.m_MachineStatusUC.MachineStatusGrid.Background = Application.Current.FindResource("OmagCut_DarkGray")
End If
Else
'NCErrorMessages.Text = ""
Dim BackColor As SolidColorBrush = m_MainWindow.m_MachineStatusUC.MachineStatusGrid.Background
If Colors.Red.Equals(BackColor.Color) Then
m_MainWindow.m_MachineStatusUC.MachineStatusGrid.Background = Application.Current.FindResource("OmagCut_DarkGray")
End If
End If
End Sub
Friend Sub PlcError(ErrorMsg As String)
' m_MainWindow.m_MachineStatusUC.Background = Brushes.Red
' Dim sFilePath As String = m_MainWindow.GetMachinesRootDir() & "/PLCMessages/" & EgtMsg(MSG_MACHINEPAGEUC + 1)
' Try
' Dim sErrorText As String = File.ReadLines(sFilePath).Skip(m_CN.sz_PLC_error_messages).Take(1).First()
' sErrorText = sErrorText.Substring(sErrorText.IndexOf("$"))
' If sErrorText(0) = " " Then
' sErrorText = sErrorText.Substring(1)
' End If
' PLCErrorMessages.Text = sErrorText
' Catch ex As Exception
' MsgBox("Errore lettura errori PLC")
' End Try
End Sub
Private Sub NewMatBtn_Click(sender As Object, e As RoutedEventArgs) Handles NewMatBtn.Click
' Mostro textbox per il nome
MatNameTxBx.Text = String.Empty
MatNameTxBx.Visibility = Windows.Visibility.Visible
MaterialsLstBx.SetValue(Grid.RowSpanProperty, 1)
End Sub
Private Sub MatNameTxBx_EgtClosed(sender As Object, e As EventArgs) Handles MatNameTxBx.EgtClosed
' Verifico che il nome non sia vuoto
If Not String.IsNullOrWhiteSpace(MatNameTxBx.Text) Then
' Verifico che il nome non sia già utilizzato
Dim bNameExist As Boolean = False
For Each Material In m_CurrentMachine.Materials
If Material.sName = MatNameTxBx.Text Then
bNameExist = True
Exit For
End If
Next
If Not bNameExist Then
m_CurrentMachine.AddMaterial(New Material(MatNameTxBx.Text, m_CurrentMachine.Materials))
End If
End If
' Nascondo textbox per il nome
MaterialsLstBx.SetValue(Grid.RowSpanProperty, 2)
MatNameTxBx.Visibility = Windows.Visibility.Hidden
End Sub
Private Sub RemoveMatBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoveMatBtn.Click
Dim SelectedMat As Material = MaterialsLstBx.SelectedItem
If Not IsNothing(SelectedMat) Then
m_CurrentMachine.RemoveMaterial(SelectedMat)
End If
End Sub
End Class