bd2b3a5765
- correzione per check Join di MTable.
1264 lines
50 KiB
VB.net
1264 lines
50 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.Collections.ObjectModel
|
|
Imports System.Text.RegularExpressions
|
|
Imports System.IO
|
|
Imports EgtUILib
|
|
Imports EgtCAM5.MachineModel
|
|
|
|
Public Class MTableListBoxItem
|
|
Implements INotifyPropertyChanged
|
|
|
|
' Actions
|
|
Friend Shared m_delSaveMTable As Action(Of MTableListBoxItem)
|
|
Friend Shared m_delCloseMTableWnd As Action
|
|
Friend Shared m_delSearchInMTable As Action(Of MTableListBoxItem)
|
|
|
|
' Parametro che indica se sono state apportate modifiche alla tabella lavorazioni ordinata tramite i comandi sposta, posiziona o ordina
|
|
Friend m_IsMachiningOrdModified As Boolean = False
|
|
|
|
Private m_Visibility As Visibility
|
|
Public Property Visibility As Visibility
|
|
Get
|
|
Return m_Visibility
|
|
End Get
|
|
Set(value As Visibility)
|
|
m_Visibility = value
|
|
NotifyPropertyChanged("Visibility")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_IsSelected As Boolean
|
|
Public Property IsSelected As Boolean
|
|
Get
|
|
Return m_IsSelected
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_IsSelected Then
|
|
m_IsSelected = value
|
|
If value Then
|
|
' verifico di essere collegato alla cartella doors
|
|
If Not VerifyDoorsDir() Then
|
|
m_delCloseMTableWnd()
|
|
Return
|
|
End If
|
|
' resetto liste lavorazioni
|
|
MTableAssociationGridBoxItem.ResetMachiningList()
|
|
' resetto stato bottoni di modifica della tabella delle lavorazioni ordinate (posiziona, raggruppa, sposta su e giù)
|
|
m_IsMachiningOrdModified = False
|
|
' leggo la tabella
|
|
If Not ReadMTableFile() Then Return
|
|
SelectedAssociation = If(m_AssociationList.Count > 0, m_AssociationList(0), Nothing)
|
|
SelMachine = m_ActiveMachinesList(0)
|
|
m_delSearchInMTable(Me)
|
|
ElseIf IsModified() OrElse String.IsNullOrEmpty(m_TableNamePath) Then
|
|
' chiedo se salvare la tabella corrente prima di passare alla successiva
|
|
If MessageBox.Show(EgtMsg(MSG_DOORS + 7), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
|
m_delSaveMTable(Me)
|
|
ElseIf String.IsNullOrEmpty(m_TableNamePath) Then
|
|
Visibility = Windows.Visibility.Collapsed
|
|
End If
|
|
End If
|
|
NotifyPropertyChanged("IsSelected")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend SharedMachIndex As Integer = 0
|
|
|
|
Friend Shared NewMTableIndex As Integer = 0
|
|
|
|
Friend m_TableNamePath As String
|
|
Public ReadOnly Property TableNamePath As String
|
|
Get
|
|
Return m_TableNamePath
|
|
End Get
|
|
End Property
|
|
|
|
Private m_TableName As String
|
|
Public Property TableName As String
|
|
Get
|
|
Return m_TableName
|
|
End Get
|
|
Set(value As String)
|
|
m_TableName = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_ActiveTable As Boolean
|
|
Public Property ActiveTable As Boolean
|
|
Get
|
|
Return m_ActiveTable
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_ActiveTable Then
|
|
m_ActiveTable = value
|
|
NotifyPropertyChanged("StateColor")
|
|
End If
|
|
m_ActiveTable = value
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property StateColor As Brush
|
|
Get
|
|
If ActiveTable Then
|
|
Return IniFile.EgaltechBlue1
|
|
Else
|
|
Return Brushes.Transparent
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Private m_ActiveMachinesList As New ObservableCollection(Of MTableMachineListBoxItem)
|
|
Public Property ActiveMachinesList As ObservableCollection(Of MTableMachineListBoxItem)
|
|
Get
|
|
Return m_ActiveMachinesList
|
|
End Get
|
|
Set(value As ObservableCollection(Of MTableMachineListBoxItem))
|
|
m_ActiveMachinesList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelMachine As MTableMachineListBoxItem
|
|
Public Property SelMachine As MTableMachineListBoxItem
|
|
Get
|
|
Return m_SelMachine
|
|
End Get
|
|
Set(value As MTableMachineListBoxItem)
|
|
If Not IsNothing(value) Then
|
|
m_SelMachine = value
|
|
End If
|
|
NotifyPropertyChanged("SelMachine")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_AssociationList As New ObservableCollection(Of MTableAssociationGridBoxItem)
|
|
Public Property AssociationList As ObservableCollection(Of MTableAssociationGridBoxItem)
|
|
Get
|
|
Return m_AssociationList
|
|
End Get
|
|
Set(value As ObservableCollection(Of MTableAssociationGridBoxItem))
|
|
m_AssociationList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelectedAssociation As MTableAssociationGridBoxItem
|
|
Public Property SelectedAssociation As MTableAssociationGridBoxItem
|
|
Get
|
|
Return m_SelectedAssociation
|
|
End Get
|
|
Set(value As MTableAssociationGridBoxItem)
|
|
m_SelectedAssociation = value
|
|
End Set
|
|
End Property
|
|
|
|
' Lista dei MachId per ComboBox nella DataGrid
|
|
Friend m_MachIdList As New ObservableCollection(Of Integer)
|
|
Public Property MachIdList As ObservableCollection(Of Integer)
|
|
Get
|
|
Return m_MachIdList
|
|
End Get
|
|
Set(value As ObservableCollection(Of Integer))
|
|
m_MachIdList = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(sTableName As String, sTableNamePath As String)
|
|
TableName = sTableName
|
|
m_TableNamePath = sTableNamePath
|
|
End Sub
|
|
|
|
Private Function ReadMTableFile() As Boolean
|
|
If String.IsNullOrEmpty(m_TableNamePath) Then
|
|
SharedMachIndex += 1
|
|
ActiveMachinesList.Add(New MTableMachineListBoxItem(String.Empty, False, False, SharedMachIndex))
|
|
m_MachIdList.Add(SharedMachIndex)
|
|
AssociationList.Add(New MTableAssociationGridBoxItem(False, String.Empty, Nothing, 0, String.Empty, Nothing, String.Empty, Nothing, String.Empty, Nothing, String.Empty, ActiveMachinesList, m_AssociationList))
|
|
Return True
|
|
End If
|
|
' resetto indici macchine impostati in tabella
|
|
SharedMachIndex = 0
|
|
m_MachIdList.Clear()
|
|
' resetto lista macchine ed associazioni prima di rileggerle
|
|
m_ActiveMachinesList.Clear()
|
|
m_AssociationList.Clear()
|
|
' verifico che siano disponibili le macchine
|
|
If Not EgtVerifyMachinesDir() Then
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
Return ReadDoorsTable(Me)
|
|
End Function
|
|
|
|
Private Function SearchKey(sLine As String, sKey As String) As String
|
|
Dim x = Regex.Match(sLine, "[,|{|\s]" & sKey & "\s*=\s*['|\""]?(.*?)\s*?[,|}|'|\""]").Groups(1).Value
|
|
Return Regex.Match(sLine, "[,|{|\s]" & sKey & "\s*=\s*['|\""]?(.*?)\s*?[,|}|'|\""]").Groups(1).Value
|
|
End Function
|
|
|
|
Public Function CountCharacter(ByVal sLine As String, ByVal cValue As Char) As Integer
|
|
Dim nCount As Integer = 0
|
|
Dim cArray() As Char = sLine.ToCharArray
|
|
For Index As Integer = 0 To cArray.Count - 1
|
|
If cArray(Index) = cValue Then nCount += 1
|
|
Next
|
|
Return nCount
|
|
End Function
|
|
|
|
Public Function IsModified() As Boolean
|
|
Dim CurrIsModified As Boolean = False
|
|
' verifico se ci sono stati cambiamenti nell'ordine delle lavorazioni
|
|
If m_IsMachiningOrdModified Then Return True
|
|
' verifico se ci sono state modifiche nella lista macchine
|
|
For Index As Integer = 0 To m_ActiveMachinesList.Count - 1
|
|
If m_ActiveMachinesList(Index).m_IsModified = True Then
|
|
Return True
|
|
End If
|
|
Next
|
|
' verifico se ci sono state modifiche nella lista associazioni
|
|
For Index = 0 To m_AssociationList.Count - 1
|
|
If m_AssociationList(Index).m_IsModified = True Then
|
|
Return True
|
|
End If
|
|
Next
|
|
' verifico se ci sono state modifiche nella lista lavorazioni ordinate
|
|
For MachineIndex As Integer = 0 To m_ActiveMachinesList.Count - 1
|
|
For MachiningIndex = 0 To m_ActiveMachinesList(MachineIndex).MachiningList.Count - 1
|
|
If m_ActiveMachinesList(MachineIndex).MachiningList(MachiningIndex).m_IsModified = True Then
|
|
Return True
|
|
End If
|
|
Next
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
Public Sub IsModifiedReset()
|
|
For Index As Integer = 0 To m_ActiveMachinesList.Count - 1
|
|
m_ActiveMachinesList(Index).m_IsModified = False
|
|
Next
|
|
For Index = 0 To m_AssociationList.Count - 1
|
|
m_AssociationList(Index).m_IsModified = False
|
|
Next
|
|
End Sub
|
|
|
|
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
|
|
|
|
Public Sub NotifyPropertyChanged(propName As String)
|
|
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class MTableMachineListBoxItem
|
|
Implements INotifyPropertyChanged
|
|
|
|
' Actions
|
|
Friend Shared m_delCloseMTableWnd As Action
|
|
|
|
' Variabile che indica se questo oggetto è stato modificato
|
|
Friend m_IsModified As Boolean = False
|
|
|
|
' Indice della macchina
|
|
Private m_MachId As Integer
|
|
Public Property MachId As Integer
|
|
Get
|
|
Return m_MachId
|
|
End Get
|
|
Set(value As Integer)
|
|
m_MachId = value
|
|
End Set
|
|
End Property
|
|
|
|
' Lista di macchine per la ComboBox
|
|
Private Shared m_MachinesList As New ObservableCollection(Of String)
|
|
Public Property MachinesList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_MachinesList
|
|
End Get
|
|
Set(value As ObservableCollection(Of String))
|
|
m_MachinesList = value
|
|
End Set
|
|
End Property
|
|
|
|
' Macchina selezionata
|
|
Private m_SelectedMachine As String
|
|
Public Property SelectedMachine As String
|
|
Get
|
|
Return m_SelectedMachine
|
|
End Get
|
|
Set(value As String)
|
|
m_IsModified = True
|
|
m_SelectedMachine = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_NcGenerate As Boolean
|
|
Public Property NcGenerate As Boolean
|
|
Get
|
|
Return m_NcGenerate
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_IsModified = True
|
|
m_NcGenerate = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Makeraw As Boolean
|
|
Public Property Makeraw As Boolean
|
|
Get
|
|
Return m_Makeraw
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_IsModified = True
|
|
m_Makeraw = value
|
|
End Set
|
|
End Property
|
|
|
|
Private WithEvents m_MachiningList As New ObservableCollection(Of MTableMachiningGridBoxItem)
|
|
Public Property MachiningList As ObservableCollection(Of MTableMachiningGridBoxItem)
|
|
Get
|
|
Return m_MachiningList
|
|
End Get
|
|
Set(value As ObservableCollection(Of MTableMachiningGridBoxItem))
|
|
m_MachiningList = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(sMachName As String, bNcGenerate As Boolean, bMakeraw As Boolean, nMachId As Integer)
|
|
If m_MachinesList.Count = 0 Then
|
|
If Not SearchMachine() Then Throw New Exception("Exception: Can't find machines dir!")
|
|
End If
|
|
SelectedMachine = sMachName
|
|
NcGenerate = bNcGenerate
|
|
Makeraw = bMakeraw
|
|
MachId = nMachId
|
|
m_IsModified = False
|
|
End Sub
|
|
|
|
' Funzione che cerca tutte le macchine disponibili per aggiungerle alla lista della ComboBox
|
|
Private Function SearchMachine() As Boolean
|
|
' aggiungo elemento stringa vuota per dare la possibilità di non selezionarne nessuna macchina
|
|
MachinesList.Add(String.Empty)
|
|
' verifico l'esistenza della cartella Machines
|
|
If Not EgtVerifyMachinesDir() Then
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo tutte le macchine
|
|
Dim TempArray As String() = Directory.GetDirectories(IniFile.m_sMachinesRoot)
|
|
For i As Integer = 0 To TempArray.Count - 1
|
|
Dim MachinePathIni As String = TempArray(i) & "\" & Path.GetFileName(TempArray(i)) & ".ini"
|
|
If File.Exists(MachinePathIni) Then
|
|
MachinesList.Add(Path.GetFileName(TempArray(i)))
|
|
End If
|
|
Next
|
|
Return True
|
|
End Function
|
|
|
|
' Quando la lista viene modificata, verifico che ci sia almeno un elemento con indice deiverso da zero
|
|
Private Sub MachiningList_CollectionChanged(sender As Object, e As Collections.Specialized.NotifyCollectionChangedEventArgs) Handles m_MachiningList.CollectionChanged
|
|
If e.Action = Specialized.NotifyCollectionChangedAction.Remove Or e.Action = Specialized.NotifyCollectionChangedAction.Reset Then
|
|
If MachiningList.Count > 0 AndAlso m_MachiningList(m_MachiningList.Count - 1).GroupId = 0 Then
|
|
m_MachiningList(m_MachiningList.Count - 1).GroupId = 1
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
|
|
|
|
Public Sub NotifyPropertyChanged(propName As String)
|
|
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class MTableMachiningGridBoxItem
|
|
Implements INotifyPropertyChanged
|
|
|
|
Private m_refMTableMachine As MTableMachineListBoxItem
|
|
|
|
' Variabile che indica se questo oggetto è stato modificato
|
|
Friend m_IsModified As Boolean = False
|
|
|
|
Private m_RWGroupId As Integer
|
|
Public Property RWGroupId As Integer
|
|
Get
|
|
Return m_RWGroupId
|
|
End Get
|
|
Set(value As Integer)
|
|
m_RWGroupId = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_GroupId As Integer
|
|
Public Property GroupId As Integer
|
|
Get
|
|
Return m_GroupId
|
|
End Get
|
|
Set(value As Integer)
|
|
m_GroupId = value
|
|
NotifyPropertyChanged("GroupId")
|
|
NotifyPropertyChanged("IsGroupEven")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_IsSelected As Boolean
|
|
Public Property IsSelected As Boolean
|
|
Get
|
|
Return m_IsSelected
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_IsSelected Then
|
|
m_IsSelected = value
|
|
End If
|
|
NotifyPropertyChanged("IsSelected")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_IsGroupEven As Boolean
|
|
Public ReadOnly Property IsGroupEven As Boolean
|
|
Get
|
|
Return m_GroupId Mod 2 = 0
|
|
End Get
|
|
End Property
|
|
|
|
Private Shared m_PropertyList As ObservableCollection(Of String)
|
|
Public ReadOnly Property PropertyList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_PropertyList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_Property As String
|
|
Public Property grh_PropertyPar As String
|
|
Get
|
|
Return m_Property
|
|
End Get
|
|
Set(value As String)
|
|
m_IsModified = True
|
|
m_Property = value
|
|
' lo modifico anche a tutti gli altri elementi del gruppo
|
|
Dim PositionIndex As Integer = m_refMTableMachine.MachiningList.IndexOf(Me)
|
|
For MachiningIndex = PositionIndex To m_refMTableMachine.MachiningList.Count - 1
|
|
If m_refMTableMachine.MachiningList(MachiningIndex).GroupId = GroupId Then
|
|
m_refMTableMachine.MachiningList(MachiningIndex).SetProperty(m_Property)
|
|
Else
|
|
Exit For
|
|
End If
|
|
Next
|
|
End Set
|
|
End Property
|
|
Public Property PropertyPar As String
|
|
Get
|
|
Return m_Property
|
|
End Get
|
|
Set(value As String)
|
|
m_Property = value
|
|
' lo modifico anche a tutti gli altri elementi del gruppo
|
|
Dim PositionIndex As Integer = m_refMTableMachine.MachiningList.IndexOf(Me)
|
|
For MachiningIndex = PositionIndex To m_refMTableMachine.MachiningList.Count - 1
|
|
If m_refMTableMachine.MachiningList(MachiningIndex).GroupId = GroupId Then
|
|
m_refMTableMachine.MachiningList(MachiningIndex).SetProperty(m_Property)
|
|
Else
|
|
Exit For
|
|
End If
|
|
Next
|
|
End Set
|
|
End Property
|
|
Friend Sub SetProperty(value As String)
|
|
m_Property = value
|
|
NotifyPropertyChanged("PropertyPar")
|
|
End Sub
|
|
|
|
Private m_Geometry As String
|
|
Public Property Geometry As String
|
|
Get
|
|
Return m_Geometry
|
|
End Get
|
|
Set(value As String)
|
|
m_Geometry = value
|
|
NotifyPropertyChanged("Geometry")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Machining As String
|
|
Public Property Machining As String
|
|
Get
|
|
Return m_Machining
|
|
End Get
|
|
Set(value As String)
|
|
m_Machining = value
|
|
NotifyPropertyChanged("Machining")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Join As Boolean
|
|
Public Property grh_Join As Boolean
|
|
Get
|
|
Return m_Join
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_Join Then
|
|
m_IsModified = True
|
|
m_Join = value
|
|
NotifyPropertyChanged("grh_Join")
|
|
End If
|
|
End Set
|
|
End Property
|
|
Public Property Join As Boolean
|
|
Get
|
|
Return m_Join
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_Join Then
|
|
m_Join = value
|
|
NotifyPropertyChanged("grh_Join")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
' Variabile che indica se il nome dell'associazione corrisponde ai criteri di ricerca
|
|
Private m_IsValidForSearch As Boolean
|
|
Public Property IsValidForSearch As Boolean
|
|
Get
|
|
Return m_IsValidForSearch
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_IsValidForSearch = value
|
|
NotifyPropertyChanged("IsValidForSearch")
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(dGroup As Integer, sGeometry As String, sMachining As String, bJoin As Boolean, ByRef refMTableMachine As MTableMachineListBoxItem)
|
|
m_RWGroupId = dGroup
|
|
m_GroupId = dGroup \ 100
|
|
m_Geometry = sGeometry
|
|
m_Machining = sMachining
|
|
m_Join = bJoin
|
|
m_refMTableMachine = refMTableMachine
|
|
End Sub
|
|
|
|
Friend Shared Sub LoadPropertyList()
|
|
Dim TempOperList As New List(Of String)
|
|
' aggiungo elemento stringa vuota per dare la possibilità di non selezionarne nessuna proprietà
|
|
TempOperList.Add(String.Empty)
|
|
' aggiungo tutte le altre
|
|
Dim OperationFilePath As String = IniFile.m_sTablesRoot & "/" & OPERATIONLIST_FILE
|
|
Dim Index As Integer = 1
|
|
Dim sRaedOperation As String = String.Empty
|
|
While EgtUILib.GetPrivateProfileString(S_PROPERTIES, Index.ToString, "", sRaedOperation, OperationFilePath) > 0
|
|
TempOperList.Add(sRaedOperation)
|
|
Index += 1
|
|
End While
|
|
'TempOperList.Sort()
|
|
m_PropertyList = New ObservableCollection(Of String)(TempOperList)
|
|
End Sub
|
|
|
|
Public Shared Sub Remove(Item As MTableMachiningGridBoxItem, MachiningList As ObservableCollection(Of MTableMachiningGridBoxItem))
|
|
' recupero indice dell'Item all'interno della lista
|
|
Dim ItemIndex As Integer = MachiningList.IndexOf(Item)
|
|
If ItemIndex < 0 Then Return
|
|
Dim bIncrementFollowingGroup As Boolean = False
|
|
If MachiningList.Count = 1 OrElse MachiningList(ItemIndex).GroupId = 0 Then
|
|
bIncrementFollowingGroup = False
|
|
ElseIf ItemIndex = 0 AndAlso MachiningList(ItemIndex + 1).m_GroupId <> Item.m_GroupId Then
|
|
bIncrementFollowingGroup = True
|
|
ElseIf ItemIndex = MachiningList.Count - 1 AndAlso MachiningList(ItemIndex - 1).m_GroupId <> Item.m_GroupId Then
|
|
bIncrementFollowingGroup = True
|
|
ElseIf (MachiningList(ItemIndex - 1).m_GroupId <> Item.m_GroupId AndAlso MachiningList(ItemIndex + 1).m_GroupId <> Item.m_GroupId) Then
|
|
bIncrementFollowingGroup = True
|
|
End If
|
|
MachiningList.Remove(Item)
|
|
If bIncrementFollowingGroup Then
|
|
For ListIndex = ItemIndex To MachiningList.Count - 1
|
|
MachiningList(ListIndex).GroupId -= 1
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Function Copy(Machining As MTableMachiningGridBoxItem) As MTableMachiningGridBoxItem
|
|
Return New MTableMachiningGridBoxItem(Machining.m_GroupId, Machining.m_Geometry, Machining.m_Machining, Machining.m_Join, Machining.m_refMTableMachine)
|
|
End Function
|
|
|
|
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
|
|
|
|
Public Sub NotifyPropertyChanged(propName As String)
|
|
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class MTableAssociationGridBoxItem
|
|
Implements INotifyPropertyChanged
|
|
|
|
' Actions
|
|
Friend Shared m_delCloseMTableWnd As Action
|
|
|
|
' Variabile che indica se questo oggetto è stato modificato
|
|
Friend m_IsModified As Boolean = False
|
|
|
|
' Variabile che indica se il nome dell'associazione corrisponde ai criteri di ricerca
|
|
Private m_IsValidForSearch As Boolean
|
|
Public Property IsValidForSearch As Boolean
|
|
Get
|
|
Return m_IsValidForSearch
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_IsValidForSearch = value
|
|
NotifyPropertyChanged("IsValidForSearch")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_IsSelected As Boolean
|
|
Public Property IsSelected As Boolean
|
|
Get
|
|
Return m_IsSelected
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_IsSelected Then
|
|
m_IsSelected = value
|
|
MTableDbVM.refMTableDbVM.ManageMachiningButtons(True, False, False, True)
|
|
NotifyPropertyChanged("IsSelected")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
' Riferimento alla lista di macchine attive per la tabella a cui appartiene questa associazione
|
|
Private m_ActiveMachinesList As ObservableCollection(Of MTableMachineListBoxItem)
|
|
' Riferimento alla lista di associazioni attive per la tabella a cui appartiene questa associazione
|
|
Private m_AssociationList As ObservableCollection(Of MTableAssociationGridBoxItem)
|
|
|
|
Private m_OnPar As Boolean
|
|
Public Property OnPar As Boolean
|
|
Get
|
|
Return m_OnPar
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_IsModified = True
|
|
m_OnPar = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Shared m_NamesList As ObservableCollection(Of String)
|
|
Public Property NamesList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_NamesList
|
|
End Get
|
|
Set(value As ObservableCollection(Of String))
|
|
If value IsNot m_NamesList Then
|
|
m_NamesList = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Name As String
|
|
Public Property Name As String
|
|
Get
|
|
Return m_Name
|
|
End Get
|
|
Set(value As String)
|
|
If m_NamesList.Contains(value) Then
|
|
m_IsModified = True
|
|
m_Name = value
|
|
Else
|
|
m_Name = String.Empty
|
|
End If
|
|
' Aggiorno Item in lista ordinata lavorazioni
|
|
If Not IsNothing(m_RefMachItem) Then
|
|
m_RefMachItem.Geometry = m_Name
|
|
End If
|
|
If Not IsNothing(m_RefMachUpItem) Then
|
|
m_RefMachUpItem.Geometry = m_Name
|
|
End If
|
|
If Not IsNothing(m_RefMachDwItem) Then
|
|
m_RefMachDwItem.Geometry = m_Name
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private Shared m_OperationsList As ObservableCollection(Of String)
|
|
Public Property OperationsList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_OperationsList
|
|
End Get
|
|
Set(value As ObservableCollection(Of String))
|
|
m_OperationsList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Oper As String
|
|
Public Property Oper As String
|
|
Get
|
|
Return m_Oper
|
|
End Get
|
|
Set(value As String)
|
|
m_IsModified = True
|
|
m_Oper = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_MachId As Integer
|
|
Public Property MachId As Integer
|
|
Get
|
|
Return m_MachId
|
|
End Get
|
|
Set(value As Integer)
|
|
If value <> m_MachId Then
|
|
m_IsModified = True
|
|
Dim nOldMachId As Integer = m_MachId
|
|
m_MachId = value
|
|
' Riverifico che il numero di macchine non sia cambiato
|
|
If m_MachId > 1 Then
|
|
If m_DrillingList.Count <> m_ActiveMachinesList.Count Then
|
|
For Index As Integer = m_DrillingList.Count To m_ActiveMachinesList.Count - 1
|
|
m_DrillingList.Add(New List(Of String))
|
|
m_SawingList.Add(New List(Of String))
|
|
m_MillingList.Add(New List(Of String))
|
|
m_PocketingList.Add(New List(Of String))
|
|
m_MortisingList.Add(New List(Of String))
|
|
m_SawRoughingList.Add(New List(Of String))
|
|
m_SawFinishingList.Add(New List(Of String))
|
|
m_ChiselingList.Add(New List(Of String))
|
|
Next
|
|
End If
|
|
End If
|
|
' Aggiorno lista tipi di lavorazione
|
|
UpdateMachiningTypeLists()
|
|
If Not IsNothing(m_SelectedMachType) Then
|
|
' Verifico che quella selezionata sia valida anche per la macchina corrente
|
|
Dim bFound As Boolean = False
|
|
For TypeIndex = 0 To m_MachTypeList.Count - 1
|
|
If m_MachTypeList(TypeIndex).TypeId = m_SelectedMachType.TypeId Then
|
|
m_SelectedMachType = m_MachTypeList(TypeIndex)
|
|
bFound = True
|
|
NotifyPropertyChanged("SelectedMachType")
|
|
Exit For
|
|
End If
|
|
Next
|
|
If Not bFound Then
|
|
m_SelectedMachType = Nothing
|
|
NotifyPropertyChanged("SelectedMachType")
|
|
End If
|
|
End If
|
|
' Assegno alla lista delle lavorazioni della riga selezionata la lista di quelle del suo tipo
|
|
If IsNothing(m_SelectedMachType) Then
|
|
MachList = Nothing
|
|
Else
|
|
If Not UpdateMachiningLists() Then Return
|
|
End If
|
|
' Verifico se i nomi già presenti per Mach, MachUp e MachDw sono validi per la nuova macchina
|
|
If Not String.IsNullOrWhiteSpace(m_ActiveMachinesList(value - 1).SelectedMachine) AndAlso Not EgtTrySettingCurrMachine(m_ActiveMachinesList(value - 1).SelectedMachine) Then
|
|
m_delCloseMTableWnd()
|
|
Return
|
|
End If
|
|
EgtSetCurrMachine(m_ActiveMachinesList(value - 1).SelectedMachine)
|
|
If Not IsNothing(m_SelectedMachType) Then
|
|
m_RefMachItem = ManageOrderedMachining(Mach, nOldMachId, RefMachItem)
|
|
m_RefMachUpItem = ManageOrderedMachining(MachUp, nOldMachId, RefMachUpItem)
|
|
m_RefMachDwItem = ManageOrderedMachining(MachDw, nOldMachId, RefMachDwItem)
|
|
' aggiorno grafica
|
|
If String.IsNullOrWhiteSpace(m_Mach) Then NotifyPropertyChanged("Mach")
|
|
If String.IsNullOrWhiteSpace(m_MachUp) Then NotifyPropertyChanged("MachUp")
|
|
If String.IsNullOrWhiteSpace(m_MachDw) Then NotifyPropertyChanged("MachDw")
|
|
End If
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private Function ManageOrderedMachining(ByRef Mach As String, nOldMachId As Integer, ByRef CurrRefMachItem As MTableMachiningGridBoxItem) As MTableMachiningGridBoxItem
|
|
If Not String.IsNullOrEmpty(Mach) Then
|
|
' se non usata da altre lavorazioni sulla stessa macchina
|
|
Dim bFound As Boolean = False
|
|
For AssIndex = 0 To m_AssociationList.Count - 1
|
|
If m_AssociationList(AssIndex) IsNot Me And m_AssociationList(AssIndex).RefMachItem Is CurrRefMachItem And m_AssociationList(AssIndex).MachId = nOldMachId Then
|
|
bFound = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
If Not bFound Then
|
|
' Cancello relativa lavorazione ordinata
|
|
For MachIndex = 0 To m_ActiveMachinesList.Count - 1
|
|
If m_ActiveMachinesList(MachIndex).MachId = nOldMachId Then
|
|
MTableMachiningGridBoxItem.Remove(CurrRefMachItem, m_ActiveMachinesList(MachIndex).MachiningList)
|
|
End If
|
|
Next
|
|
End If
|
|
If Not EgtMdbSetCurrMachining(Mach) Then
|
|
CurrRefMachItem = Nothing
|
|
Mach = String.Empty
|
|
Else
|
|
' se lavorazione mantenuta nella tabella della macchina precedente,
|
|
If bFound Then
|
|
' allora devo farne una copia
|
|
CurrRefMachItem = MTableMachiningGridBoxItem.Copy(CurrRefMachItem)
|
|
End If
|
|
' Reinserisco lavorazione ordinata nella lista della macchina giusta
|
|
CurrRefMachItem.GroupId = 0
|
|
CurrRefMachItem.SetProperty(String.Empty)
|
|
For MachIndex = 0 To m_ActiveMachinesList.Count - 1
|
|
If m_ActiveMachinesList(MachIndex).MachId = m_MachId Then
|
|
' se lista vuota metto gruppo uguale a 1
|
|
If m_ActiveMachinesList(MachIndex).MachiningList.Count = 0 Then
|
|
CurrRefMachItem.GroupId = 1
|
|
m_ActiveMachinesList(MachIndex).MachiningList.Insert(0, CurrRefMachItem)
|
|
Else
|
|
' verifico se esiste già
|
|
Dim bExist As Boolean = False
|
|
For MachiningIndex = 0 To m_ActiveMachinesList(MachIndex).MachiningList.Count - 1
|
|
Dim CurrMachining As MTableMachiningGridBoxItem = m_ActiveMachinesList(MachIndex).MachiningList(MachiningIndex)
|
|
If CurrMachining.Geometry = CurrRefMachItem.Geometry And CurrMachining.Machining = CurrRefMachItem.Machining Then
|
|
CurrRefMachItem = CurrMachining
|
|
bExist = True
|
|
End If
|
|
Next
|
|
If Not bExist Then
|
|
m_ActiveMachinesList(MachIndex).MachiningList.Insert(0, CurrRefMachItem)
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
Return CurrRefMachItem
|
|
End Function
|
|
|
|
Private Shared m_ShiftList As New ObservableCollection(Of Integer)({0, 1})
|
|
Public ReadOnly Property ShiftList As ObservableCollection(Of Integer)
|
|
Get
|
|
Return m_ShiftList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_Shift As Integer
|
|
Public Property Shift As Integer
|
|
Get
|
|
Return m_Shift
|
|
End Get
|
|
Set(value As Integer)
|
|
m_IsModified = True
|
|
m_Shift = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Shared m_MachTypeList As ObservableCollection(Of MachineModel.MachiningsType)
|
|
Public Property MachTypeList As ObservableCollection(Of MachineModel.MachiningsType)
|
|
Get
|
|
Return m_MachTypeList
|
|
End Get
|
|
Set(value As ObservableCollection(Of MachineModel.MachiningsType))
|
|
m_MachTypeList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelectedMachType As MachineModel.MachiningsType
|
|
Public Property SelectedMachType As MachineModel.MachiningsType
|
|
Get
|
|
Return m_SelectedMachType
|
|
End Get
|
|
Set(value As MachineModel.MachiningsType)
|
|
If Not IsNothing(value) Then
|
|
m_SelectedMachType = value
|
|
' Assegno alla lista delle lavorazioni della riga selezionata la lista di quelle del suo tipo
|
|
If IsNothing(m_SelectedMachType) Then
|
|
MachList = Nothing
|
|
Else
|
|
If Not UpdateMachiningLists() Then Return
|
|
End If
|
|
' Annullo i valori di Mach, MachUp e MachDw
|
|
Mach = String.Empty
|
|
NotifyPropertyChanged("Mach")
|
|
MachUp = String.Empty
|
|
NotifyPropertyChanged("MachUp")
|
|
MachDw = String.Empty
|
|
NotifyPropertyChanged("MachDw")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private Sub UpdateMachiningTypeLists()
|
|
' se la lista è vuota devo caricarla
|
|
If m_MachinesMachTypeList.Count < m_MachId OrElse m_MachinesMachTypeList(m_MachId - 1).Count = 0 Then
|
|
Dim sMachineName As String = m_ActiveMachinesList(m_MachId - 1).SelectedMachine
|
|
Dim sMachineIniPath As String = IniFile.m_sMachinesRoot & "\" & m_ActiveMachinesList(m_MachId - 1).SelectedMachine & "\" & m_ActiveMachinesList(m_MachId - 1).SelectedMachine & ".ini"
|
|
If File.Exists(sMachineIniPath) Then
|
|
For Index = m_MachinesMachTypeList.Count To m_MachId - 1
|
|
m_MachinesMachTypeList.Add(New List(Of MachineModel.MachiningsType))
|
|
Next
|
|
m_MachinesMachTypeList(m_MachId - 1) = New List(Of MachiningsType)(MachineModel.ReadMachiningsFamilies(sMachineIniPath))
|
|
End If
|
|
' aggiungo elemento stringa vuota(come primo elemento) per dare la possibilità di non selezionarne nessuna operazione
|
|
If Not IsNothing(m_MachinesMachTypeList(m_MachId - 1)) Then
|
|
m_MachinesMachTypeList(m_MachId - 1).Insert(0, New MachiningsType() With {.TypeId = MCH_MY.NONE, .TypeName = String.Empty})
|
|
Else
|
|
m_MachinesMachTypeList(m_MachId - 1) = New List(Of MachiningsType)({New MachiningsType() With {.TypeId = MCH_MY.NONE, .TypeName = String.Empty}})
|
|
End If
|
|
End If
|
|
MachTypeList = New ObservableCollection(Of MachiningsType)(m_MachinesMachTypeList(m_MachId - 1))
|
|
End Sub
|
|
|
|
' Funzione che in base al tipo di lavorazione e alla macchina selezionati, imposta la lista delle lavorazioni per le combo
|
|
Private Function UpdateMachiningLists() As Boolean
|
|
Select Case m_SelectedMachType.TypeId
|
|
Case MCH_MY.DRILLING
|
|
' se la lista è vuota devo caricarla
|
|
If m_DrillingList(m_MachId - 1).Count = 0 Then
|
|
m_DrillingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_DrillingList(m_MachId - 1), MCH_MY.DRILLING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_DrillingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_DrillingList(m_MachId - 1))
|
|
Case MCH_MY.SAWING
|
|
' se la lista è vuota devo caricarla
|
|
If m_SawingList(m_MachId - 1).Count = 0 Then
|
|
m_SawingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_SawingList(m_MachId - 1), MCH_MY.SAWING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_SawingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_SawingList(m_MachId - 1))
|
|
Case MCH_MY.MILLING
|
|
' se la lista è vuota devo caricarla
|
|
If m_MillingList(m_MachId - 1).Count = 0 Then
|
|
m_MillingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_MillingList(m_MachId - 1), MCH_MY.MILLING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_MillingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_MillingList(m_MachId - 1))
|
|
Case MCH_MY.POCKETING
|
|
' se la lista è vuota devo caricarla
|
|
If m_PocketingList(m_MachId - 1).Count = 0 Then
|
|
m_PocketingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_PocketingList(m_MachId - 1), MCH_MY.POCKETING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_PocketingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_PocketingList(m_MachId - 1))
|
|
Case MCH_MY.MORTISING
|
|
' se la lista è vuota devo caricarla
|
|
If m_MortisingList(m_MachId - 1).Count = 0 Then
|
|
m_MortisingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_MortisingList(m_MachId - 1), MCH_MY.MORTISING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_MortisingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_MortisingList(m_MachId - 1))
|
|
Case MCH_MY.SAWROUGHING
|
|
' se la lista è vuota devo caricarla
|
|
If m_SawRoughingList(m_MachId - 1).Count = 0 Then
|
|
m_SawRoughingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_SawRoughingList(m_MachId - 1), MCH_MY.SAWROUGHING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_SawRoughingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_SawRoughingList(m_MachId - 1))
|
|
Case MCH_MY.SAWFINISHING
|
|
' se la lista è vuota devo caricarla
|
|
If m_SawFinishingList(m_MachId - 1).Count = 0 Then
|
|
m_SawFinishingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_SawFinishingList(m_MachId - 1), MCH_MY.SAWFINISHING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_SawFinishingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_SawFinishingList(m_MachId - 1))
|
|
Case MCH_MY.CHISELING
|
|
' se la lista è vuota devo caricarla
|
|
If m_ChiselingList(m_MachId - 1).Count = 0 Then
|
|
m_ChiselingList(m_MachId - 1) = New List(Of String)
|
|
If EgtTrySettingCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) Then
|
|
LoadMachiningListByType(m_ChiselingList(m_MachId - 1), MCH_MY.CHISELING)
|
|
Else
|
|
m_delCloseMTableWnd()
|
|
Return False
|
|
End If
|
|
' aggiungo elemento vuoto per poter non impostare alcuna lavorazione
|
|
m_ChiselingList(m_MachId - 1).Insert(0, String.Empty)
|
|
End If
|
|
MachList = New ObservableCollection(Of String)(m_ChiselingList(m_MachId - 1))
|
|
End Select
|
|
Return True
|
|
End Function
|
|
|
|
Private m_MachList As ObservableCollection(Of String)
|
|
Public Property MachList As ObservableCollection(Of String)
|
|
Get
|
|
Return m_MachList
|
|
End Get
|
|
Set(value As ObservableCollection(Of String))
|
|
If value IsNot m_MachList Then
|
|
m_MachList = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_RefMachItem As MTableMachiningGridBoxItem
|
|
Public ReadOnly Property RefMachItem As MTableMachiningGridBoxItem
|
|
Get
|
|
Return m_RefMachItem
|
|
End Get
|
|
End Property
|
|
|
|
Private m_Mach As String
|
|
Public Property Mach As String
|
|
Get
|
|
Return m_Mach
|
|
End Get
|
|
Set(value As String)
|
|
m_IsModified = True
|
|
m_Mach = value
|
|
RefreshMachItem(m_RefMachItem, m_Mach)
|
|
End Set
|
|
End Property
|
|
|
|
Private m_RefMachUpItem As MTableMachiningGridBoxItem
|
|
Public ReadOnly Property RefMachUpItem As MTableMachiningGridBoxItem
|
|
Get
|
|
Return m_RefMachUpItem
|
|
End Get
|
|
End Property
|
|
|
|
Private m_MachUp As String
|
|
Public Property MachUp As String
|
|
Get
|
|
Return m_MachUp
|
|
End Get
|
|
Set(value As String)
|
|
m_IsModified = True
|
|
m_MachUp = value
|
|
RefreshMachItem(m_RefMachUpItem, m_MachUp)
|
|
End Set
|
|
End Property
|
|
|
|
Private m_RefMachDwItem As MTableMachiningGridBoxItem
|
|
Public ReadOnly Property RefMachDwItem As MTableMachiningGridBoxItem
|
|
Get
|
|
Return m_RefMachDwItem
|
|
End Get
|
|
End Property
|
|
|
|
Private m_MachDw As String
|
|
Public Property MachDw As String
|
|
Get
|
|
Return m_MachDw
|
|
End Get
|
|
Set(value As String)
|
|
m_IsModified = True
|
|
m_MachDw = value
|
|
RefreshMachItem(m_RefMachDwItem, m_MachDw)
|
|
End Set
|
|
End Property
|
|
|
|
' Liste per le lavorazioni
|
|
Private Shared m_DrillingList As New List(Of List(Of String))
|
|
Private Shared m_SawingList As New List(Of List(Of String))
|
|
Private Shared m_MillingList As New List(Of List(Of String))
|
|
Private Shared m_PocketingList As New List(Of List(Of String))
|
|
Private Shared m_MortisingList As New List(Of List(Of String))
|
|
Private Shared m_SawRoughingList As New List(Of List(Of String))
|
|
Private Shared m_SawFinishingList As New List(Of List(Of String))
|
|
Private Shared m_ChiselingList As New List(Of List(Of String))
|
|
Private Shared m_MachinesMachTypeList As New List(Of List(Of MachineModel.MachiningsType))
|
|
|
|
Friend Shared Sub ResetMachiningList()
|
|
m_DrillingList = New List(Of List(Of String))
|
|
m_SawingList = New List(Of List(Of String))
|
|
m_MillingList = New List(Of List(Of String))
|
|
m_PocketingList = New List(Of List(Of String))
|
|
m_MortisingList = New List(Of List(Of String))
|
|
m_SawRoughingList = New List(Of List(Of String))
|
|
m_SawFinishingList = New List(Of List(Of String))
|
|
m_ChiselingList = New List(Of List(Of String))
|
|
End Sub
|
|
|
|
Sub New(bOn As Boolean, sName As String, nMachId As Integer, nShift As Integer, sOper As String,
|
|
RefMachItem As MTableMachiningGridBoxItem, sMach As String, RefMachUpItem As MTableMachiningGridBoxItem, sMachUp As String, RefMachDwItem As MTableMachiningGridBoxItem, sMachDw As String,
|
|
ByRef ActiveMachinesList As ObservableCollection(Of MTableMachineListBoxItem), ByRef AssociationList As ObservableCollection(Of MTableAssociationGridBoxItem))
|
|
|
|
' Inizializzo la lista delle lavorazioni solo la prima volta
|
|
If m_DrillingList.Count = 0 Then
|
|
For Index As Integer = 0 To ActiveMachinesList.Count - 1
|
|
m_DrillingList.Add(New List(Of String))
|
|
m_SawingList.Add(New List(Of String))
|
|
m_MillingList.Add(New List(Of String))
|
|
m_PocketingList.Add(New List(Of String))
|
|
m_MortisingList.Add(New List(Of String))
|
|
m_SawRoughingList.Add(New List(Of String))
|
|
m_SawFinishingList.Add(New List(Of String))
|
|
m_ChiselingList.Add(New List(Of String))
|
|
Next
|
|
End If
|
|
OnPar = bOn
|
|
' Inizializzo la lista dei nomi solo la prima volta
|
|
If IsNothing(m_NamesList) Then
|
|
Dim NameFilePath As String = IniFile.m_sTablesRoot & "/" & GEONAMELIST_FILE
|
|
Dim TempNameList As New List(Of String)
|
|
Dim Index As Integer = 1
|
|
Dim sRaedName As String = String.Empty
|
|
While EgtUILib.GetPrivateProfileString(S_GEOMETRYNAMES, Index.ToString, "", sRaedName, NameFilePath) > 0
|
|
TempNameList.Add(sRaedName)
|
|
Index += 1
|
|
End While
|
|
TempNameList.Sort()
|
|
NamesList = New ObservableCollection(Of String)(TempNameList)
|
|
End If
|
|
Name = sName
|
|
'Imposto il riferimento alla lista di macchine di questa tabella
|
|
m_ActiveMachinesList = ActiveMachinesList
|
|
' imposto il riferimento alla lista di associazioni di questa tabella
|
|
m_AssociationList = AssociationList
|
|
' Verifico che il valore di MachId sia valido altrimento imposto la prima macchina
|
|
If nMachId = 0 Then
|
|
MachId = 1
|
|
Else
|
|
MachId = nMachId
|
|
End If
|
|
If nShift = 1 Then
|
|
Shift = 1
|
|
Else
|
|
Shift = 0
|
|
End If
|
|
'' Inizializzo la lista delle operazioni solo la prima volta
|
|
'If IsNothing(m_OperationsList) Then
|
|
' Dim TempOperList As New List(Of String)
|
|
' ' aggiungo elemento stringa vuota per dare la possibilità di non selezionarne nessuna operazione
|
|
' TempOperList.Add(String.Empty)
|
|
' ' aggiungo tutte le altre
|
|
' Dim OperationFilePath As String = IniFile.m_sTablesRoot & "/" & OPERATIONLIST_FILE
|
|
' Dim Index As Integer = 1
|
|
' Dim sRaedOperation As String = String.Empty
|
|
' While EgtUILib.GetPrivateProfileString(S_OPERATIONS, Index.ToString, "", sRaedOperation, OperationFilePath) > 0
|
|
' TempOperList.Add(sRaedOperation)
|
|
' Index += 1
|
|
' End While
|
|
' TempOperList.Sort()
|
|
' OperationsList = New ObservableCollection(Of String)(TempOperList)
|
|
'End If
|
|
Oper = sOper
|
|
' dall'MId recupero la macchina a cui si riferisce questa associazione e la imposto come corrente
|
|
EgtSetCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine)
|
|
' Imposto MachType selezionato cercando il tipo delle lavorazioni
|
|
If EgtMdbSetCurrMachining(sMach) OrElse EgtMdbSetCurrMachining(sMachUp) OrElse EgtMdbSetCurrMachining(sMachDw) Then
|
|
Dim nMachType As Integer = GDB_ID.NULL
|
|
EgtMdbGetCurrMachiningParam(MCH_MP.TYPE, nMachType)
|
|
For Index As Integer = 0 To m_MachTypeList.Count - 1
|
|
If nMachType = m_MachTypeList(Index).TypeId Then
|
|
SelectedMachType = m_MachTypeList(Index)
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
SelectedMachType = Nothing
|
|
End If
|
|
NotifyPropertyChanged("SelectedMachType")
|
|
If Not IsNothing(m_SelectedMachType) Then
|
|
' Imposto i Mach selezionati
|
|
m_Mach = sMach
|
|
m_MachUp = sMachUp
|
|
m_MachDw = sMachDw
|
|
End If
|
|
If Not String.IsNullOrWhiteSpace(Mach) Then
|
|
m_RefMachItem = RefMachItem
|
|
End If
|
|
If Not String.IsNullOrWhiteSpace(MachUp) Then
|
|
m_RefMachUpItem = RefMachUpItem
|
|
End If
|
|
If Not String.IsNullOrWhiteSpace(MachDw) Then
|
|
m_RefMachDwItem = RefMachDwItem
|
|
End If
|
|
m_IsModified = False
|
|
End Sub
|
|
|
|
' Funzione che aggiorna gli item nella lista lavorazioni ordinata
|
|
Private Sub RefreshMachItem(ByRef RefMachItem As MTableMachiningGridBoxItem, Mach As String)
|
|
' Se il nuovo valore è nullo
|
|
If String.IsNullOrWhiteSpace(Mach) Then
|
|
' Se esiste già il rispettivo item nella lista lavorazioni ordinata lo cancello
|
|
If Not IsNothing(RefMachItem) Then
|
|
For MachIndex = 0 To m_ActiveMachinesList.Count - 1
|
|
If m_ActiveMachinesList(MachIndex).MachId = m_MachId Then
|
|
MTableMachiningGridBoxItem.Remove(RefMachItem, m_ActiveMachinesList(MachIndex).MachiningList)
|
|
RefMachItem = Nothing
|
|
End If
|
|
Next
|
|
End If
|
|
' Se il nuovo valore è valido
|
|
Else
|
|
' Se non esiste già il rispettivo item nella lista lavorazioni ordinata lo creo
|
|
If IsNothing(RefMachItem) Then
|
|
For MachIndex = 0 To m_ActiveMachinesList.Count - 1
|
|
If m_ActiveMachinesList(MachIndex).MachId = m_MachId Then
|
|
Dim CurrMachItem As MTableMachiningGridBoxItem = New MTableMachiningGridBoxItem(0, m_Name, Mach, False, m_ActiveMachinesList(MachIndex))
|
|
' se la lista è vuota
|
|
If m_ActiveMachinesList(MachIndex).MachiningList.Count = 0 Then
|
|
' do indice 1 al nuovo elemento da aggiungere
|
|
CurrMachItem.GroupId = 1
|
|
End If
|
|
RefMachItem = CurrMachItem
|
|
m_ActiveMachinesList(MachIndex).MachiningList.Insert(0, RefMachItem)
|
|
End If
|
|
Next
|
|
' altrimenti lo aggiorno con la nuova lavorazione
|
|
Else
|
|
RefMachItem.Machining = Mach
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Friend Shared Sub LoadOperationList()
|
|
Dim TempOperList As New List(Of String)
|
|
' aggiungo elemento stringa vuota per dare la possibilità di non selezionarne nessuna operazione
|
|
TempOperList.Add(String.Empty)
|
|
' aggiungo tutte le altre
|
|
Dim OperationFilePath As String = IniFile.m_sTablesRoot & "/" & OPERATIONLIST_FILE
|
|
Dim Index As Integer = 1
|
|
Dim sRaedOperation As String = String.Empty
|
|
While EgtUILib.GetPrivateProfileString(S_OPERATIONS, Index.ToString, "", sRaedOperation, OperationFilePath) > 0
|
|
TempOperList.Add(sRaedOperation)
|
|
Index += 1
|
|
End While
|
|
TempOperList.Sort()
|
|
m_OperationsList = New ObservableCollection(Of String)(TempOperList)
|
|
End Sub
|
|
|
|
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
|
|
|
|
Public Sub NotifyPropertyChanged(propName As String)
|
|
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
|
|
End Sub
|
|
|
|
End Class
|