diff --git a/Icarus/MachiningDb/Machining.vb b/Icarus/MachiningDb/Machining.vb index f3a135c..f678a37 100644 --- a/Icarus/MachiningDb/Machining.vb +++ b/Icarus/MachiningDb/Machining.vb @@ -59,7 +59,10 @@ Public Class Machining EXTRA_SHELL = 2 INFILL = 3 AUX_SOLID = 4 - RIB = 5 + RIB_UNBOUNDED = 5 + RIB_EXTERNAL = 6 + RIB_INTERNAL = 7 + RIB_SUPPORT = 8 End Enum Protected m_CathegoryList As New ObservableCollection(Of MachiningCathegory) @@ -1277,6 +1280,8 @@ End Class Public Class OrderedMachiningParam Inherits MachiningParam + Dim m_StandardValueOrderList As List(Of Integer) + Protected m_ValueList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property ValueList As ObservableCollection(Of IdNameStruct) Get @@ -1312,48 +1317,44 @@ Public Class OrderedMachiningParam Set(value As String) Select Case Type Case Params.PRINT_ORDER - Dim StandardValueList() As String = {Machining.MPAR_PRINT_ORDER.SHELL, - Machining.MPAR_PRINT_ORDER.EXTRA_SHELL, - Machining.MPAR_PRINT_ORDER.INFILL, - Machining.MPAR_PRINT_ORDER.AUX_SOLID, - Machining.MPAR_PRINT_ORDER.RIB} - Dim StringValueList() As String = StandardValueList - If value.Length = 9 Then + Dim StringValueList() As String + Dim IntegerValueList As New List(Of Integer) + If value.Length = 15 Then StringValueList = value.Split(","c) + For Each StringValue In StringValueList + Dim IntegerValue As Integer = 0 + If Integer.TryParse(StringValue, IntegerValue) Then + IntegerValueList.Add(IntegerValue) + End If + Next End If - If StringValueList.Count <> 5 Then - StringValueList = StandardValueList + If IntegerValueList.Count <> 8 Then + IntegerValueList = m_StandardValueOrderList End If - If Not StringValueList.Contains(Machining.MPAR_PRINT_ORDER.SHELL) OrElse - Not StringValueList.Contains(Machining.MPAR_PRINT_ORDER.EXTRA_SHELL) OrElse - Not StringValueList.Contains(Machining.MPAR_PRINT_ORDER.INFILL) OrElse - Not StringValueList.Contains(Machining.MPAR_PRINT_ORDER.AUX_SOLID) OrElse - Not StringValueList.Contains(Machining.MPAR_PRINT_ORDER.RIB) Then - StringValueList = StandardValueList + If Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.SHELL) OrElse + Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.EXTRA_SHELL) OrElse + Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.INFILL) OrElse + Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.AUX_SOLID) OrElse + Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.RIB_UNBOUNDED) OrElse + Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.RIB_EXTERNAL) OrElse + Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.RIB_INTERNAL) OrElse + Not IntegerValueList.Contains(Machining.MPAR_PRINT_ORDER.RIB_SUPPORT) Then + IntegerValueList = m_StandardValueOrderList End If - m_ValueList.Clear() - For Each StringValue In StringValueList - Dim nValue As Integer = -1 - Integer.TryParse(StringValue, nValue) - Dim ItemList As IdNameStruct - Select Case nValue - Case Machining.MPAR_PRINT_ORDER.SHELL - ItemList = New IdNameStruct(Machining.MPAR_PRINT_ORDER.SHELL, "Shell") - Case Machining.MPAR_PRINT_ORDER.EXTRA_SHELL - ItemList = New IdNameStruct(Machining.MPAR_PRINT_ORDER.EXTRA_SHELL, "Extra Shell") - Case Machining.MPAR_PRINT_ORDER.INFILL - ItemList = New IdNameStruct(Machining.MPAR_PRINT_ORDER.INFILL, "Infill") - Case Machining.MPAR_PRINT_ORDER.AUX_SOLID - ItemList = New IdNameStruct(Machining.MPAR_PRINT_ORDER.AUX_SOLID, "Filled Solids") - Case Machining.MPAR_PRINT_ORDER.RIB - ItemList = New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB, "Ribs") - End Select - m_ValueList.Add(ItemList) - Next + OrderByReference(m_ValueList, IntegerValueList) End Select End Set End Property + Public Shared Sub OrderByReference(collection As ObservableCollection(Of IdNameStruct), comparison As List(Of Integer)) + For i As Integer = 0 To comparison.Count - 1 + Dim Index As Integer = i + If Not comparison.ElementAt(i).Equals(collection.ElementAt(i)) Then + collection.Move(collection.IndexOf(collection.FirstOrDefault(Function(x) x.Id = comparison(Index))), i) + End If + Next + End Sub + Public Overrides ReadOnly Property bIsModified As Boolean Get Return Value <> m_OrigValue @@ -1372,12 +1373,45 @@ Public Class OrderedMachiningParam Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) If nIndex = 0 Then - m_ValueList = New ObservableCollection(Of IdNameStruct) - m_SelValue = Nothing + Select Case Type + Case Params.PRINT_ORDER + m_StandardValueOrderList = New List(Of Integer)({Machining.MPAR_PRINT_ORDER.SHELL, + Machining.MPAR_PRINT_ORDER.EXTRA_SHELL, + Machining.MPAR_PRINT_ORDER.INFILL, + Machining.MPAR_PRINT_ORDER.AUX_SOLID, + Machining.MPAR_PRINT_ORDER.RIB_UNBOUNDED, + Machining.MPAR_PRINT_ORDER.RIB_EXTERNAL, + Machining.MPAR_PRINT_ORDER.RIB_INTERNAL, + Machining.MPAR_PRINT_ORDER.RIB_SUPPORT}) + m_ValueList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_PRINT_ORDER.SHELL, "Shell"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.EXTRA_SHELL, "Extra Shells"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.INFILL, "Infills"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.AUX_SOLID, "Filled Solids"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_UNBOUNDED, "Unbounded Ribs"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_EXTERNAL, "External Ribs"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_INTERNAL, "Internal Ribs"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_SUPPORT, "Support Ribs")}) + m_SelValue = Nothing + End Select Else Select Case Type Case Params.PRINT_ORDER - m_ValueList = New ObservableCollection(Of IdNameStruct) + m_StandardValueOrderList = New List(Of Integer)({Machining.MPAR_PRINT_ORDER.SHELL, + Machining.MPAR_PRINT_ORDER.EXTRA_SHELL, + Machining.MPAR_PRINT_ORDER.INFILL, + Machining.MPAR_PRINT_ORDER.AUX_SOLID, + Machining.MPAR_PRINT_ORDER.RIB_UNBOUNDED, + Machining.MPAR_PRINT_ORDER.RIB_EXTERNAL, + Machining.MPAR_PRINT_ORDER.RIB_INTERNAL, + Machining.MPAR_PRINT_ORDER.RIB_SUPPORT}) + m_ValueList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_PRINT_ORDER.SHELL, "Shell"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.EXTRA_SHELL, "Extra Shells"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.INFILL, "Infills"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.AUX_SOLID, "Filled Solids"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_UNBOUNDED, "Unbounded Ribs"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_EXTERNAL, "External Ribs"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_INTERNAL, "Internal Ribs"), + New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_SUPPORT, "Support Ribs")}) ReadMachiningParamString(nIndex, MAC_PRINTORDER, "", Value) End Select End If @@ -1465,9 +1499,9 @@ Public Class OrderedMachiningParam Public Sub ResetOrder() Dim CurrValue As String = Value + OrderByReference(m_ValueList, m_StandardValueOrderList) m_ValueList = New ObservableCollection(Of IdNameStruct)(m_ValueList.OrderBy(Function(x) x.Id)) If Value <> CurrValue Then - SelValue = Nothing NotifyPropertyChanged(NameOf(ValueList)) NotifyPropertyChanged(NameOf(Value)) NotifyPropertyChanged(NameOf(SelValue))