Imports System.Collections.ObjectModel Imports System.ComponentModel Imports EgtUILib Imports EgtWPFLib5 Public Class Machining Inherits VMBase Public Enum MPAR_SLICINGTYPE As Integer VERTICAL = 1 HORIZONTAL = 2 DEG45 = 3 End Enum Public Enum MPAR_STRANDORDERS As Integer OUTTOIN = 1 INTOOUT = 2 End Enum Public Enum MPAR_DIRECTIONS As Integer CCW = 1 CW = 2 End Enum Public Enum MPAR_LINKTYPES As Integer NONE = 1 LINEAR = 2 BIARC = 3 End Enum Public Enum MPAR_LEADINOUT As Integer NONE = 1 LINEAR = 2 ARC = 3 End Enum Public Enum MPAR_INFILL As Integer NONE = 1 OFFSET = 2 ZIGZAG = 3 End Enum Protected m_CathegoryList As New ObservableCollection(Of MachiningCathegory) Public ReadOnly Property CathegoryList As ObservableCollection(Of MachiningCathegory) Get Return m_CathegoryList End Get End Property Protected m_bIsModified As Boolean Public ReadOnly Property bIsModified As Boolean Get Return m_bIsModified End Get End Property Friend Sub UpdateIsModified() m_bIsModified = m_CathegoryList.Any(Function(x) x.MachiningParamList.Any(Function(y) y.bIsModified)) OrElse bIsModifiedName NotifyPropertyChanged(NameOf(ghName)) End Sub Protected m_nIndex As Integer Public ReadOnly Property nIndex As Integer Get Return m_nIndex End Get End Property Protected m_sGUID As String = "" Public Property sGUID As String Get Return m_sGUID End Get Set(value As String) m_sGUID = value End Set End Property Private m_sOrigName As String = "" Protected m_sName As String = "" Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value Map.refMachiningDbVM.SetNameVisibility(False) UpdateIsModified() Map.refMachiningDbVM.SetIsEnabled(True) End Set End Property Public ReadOnly Property ghName As String Get Return m_sName & If(m_bIsModified, "*", "") End Get End Property Public ReadOnly Property bIsModifiedName As Boolean Get Return m_sName <> m_sOrigName End Get End Property Sub New() End Sub Sub New(nIndex As Integer) m_nIndex = nIndex If ReadMachiningParamString(nIndex, MAC_GUID, "", m_sGUID) > 0 Then ReadMachiningParamString(nIndex, MAC_NAME, "", m_sName) Else nIndex = -1 m_sGUID = Guid.NewGuid.ToString() m_sName = "PrintingParam" End If m_sOrigName = m_sName m_CathegoryList.Add(New MachiningCathegory(MachiningCathegory.Cathegories.GENERAL, nIndex)) m_CathegoryList.Add(New MachiningCathegory(MachiningCathegory.Cathegories.LINK, nIndex)) m_CathegoryList.Add(New MachiningCathegory(MachiningCathegory.Cathegories.RIBS, nIndex)) m_CathegoryList.Add(New MachiningCathegory(MachiningCathegory.Cathegories.SHELL_NUMBER, nIndex)) m_CathegoryList.Add(New MachiningCathegory(MachiningCathegory.Cathegories.AUX_SOLID, nIndex)) m_CathegoryList.Add(New MachiningCathegory(MachiningCathegory.Cathegories.MATERIALS, nIndex)) For Each Cathegory In m_CathegoryList For Each MachiningParam In Cathegory.MachiningParamList AddHandler MachiningParam.PropertyChanged, AddressOf OnMachiningParamPropertyChanged Next Next End Sub Sub New(sName As String, bSlicing45 As Boolean, dStrandH As Double, dStrandW As Double, nStrandCount As Integer, dOffset As Double, dStartPointOffsetOnSlice As Double, dStrandOrder As MPAR_STRANDORDERS, dDirection As MPAR_DIRECTIONS, dLinkType As MPAR_LINKTYPES, dLinkParam As Double, dLinkZup As Double, dOffsetLeadPoint As Double, dLeadIn As MPAR_LEADINOUT, dLeadInTangDist As Double, dLeadInOrthoDist As Double, dLeadOut As MPAR_LEADINOUT, dLeadOutTangDist As Double, dLeadOutOrthoDist As Double, dCoastingLen As Double, dCoastingFeed As Double, dWipeLen As Double, dWipeFeedPu As Double, dFloorCount As Integer, dG0Feed As Double, dMaterial As String, dToolDiam As Double, dRibsOverlap As Double, dRibsStrandCount As Integer, dRibsLink As Boolean, dRibsInvertOrder As Boolean, dRibsInvertDirection As Boolean, dRibsLeadInInvert As Boolean, dRibsLeadInLen As Double, dRibsLeadOutInvert As Boolean, dRibsLeadOutLen As Double, dRibsLeadOutCoasting As Double, dRibsLeadOutWipe As Double, dRibsLeadOutWipeDir As Double) End Sub Private Sub SaveName() m_sOrigName = m_sName End Sub Private Sub ResetName() m_sName = m_sOrigName NotifyPropertyChanged(NameOf(ghName)) End Sub Friend Sub Save() If bIsModified Then ' salvo tutti i parametri su orig SaveParams() ' resetto stato di modificata UpdateIsModified() ' segno Db come modificato Map.refMachiningDbVM.SetIsModified(True) End If End Sub Private Sub SaveParams() SaveName() For Each Cathegory In m_CathegoryList Cathegory.SaveParams() Next End Sub Friend Sub ResetModification() ResetName() If bIsModified Then ' annullo le modifiche di tutti i parametri ResetParams() ' resetto stato di modificata UpdateIsModified() End If End Sub Private Sub ResetParams() For Each Cathegory In m_CathegoryList Cathegory.ResetParams() Next End Sub Friend Sub WriteParamsOnDb(nIndex As Integer) WriteMachiningParam(nIndex, MAC_GUID, m_sGUID) WriteMachiningParam(nIndex, MAC_NAME, m_sName) For Each Cathegory In m_CathegoryList Cathegory.WriteParamOnDb(nIndex) Next End Sub Friend Overridable Sub OnMachiningParamPropertyChanged(sender As Object, e As PropertyChangedEventArgs) Select Case e.PropertyName Case NameOf(sender.dValue), NameOf(sender.sValue), NameOf(sender.bValue), NameOf(sender.SelValue) UpdateIsModified() End Select End Sub End Class Public Class MachiningIndex Inherits VMBase Private Shared m_Empty As New MachiningIndex(-1, Guid.Empty, "None") Private m_nIndex As Integer Public ReadOnly Property nIndex As Integer Get Return m_nIndex End Get End Property Private m_sGUID As Guid Public ReadOnly Property sGUID As Guid Get Return m_sGUID End Get End Property Private m_sName As String Public ReadOnly Property sName As String Get Return m_sName End Get End Property Sub New(nIndex As Integer, GUID As Guid, sName As String) m_nIndex = nIndex m_sGUID = GUID m_sName = sName End Sub Friend Shared Function Empty() As MachiningIndex Return m_Empty End Function End Class Public Class MachiningCathegory Inherits VMBase Public Enum Cathegories As Integer GENERAL = 1 LINK = 2 RIBS = 8 SHELL_NUMBER = 9 AUX_SOLID = 10 MATERIALS = 11 End Enum Protected m_Type As Cathegories Public Overloads ReadOnly Property Type As Cathegories Get Return m_Type End Get End Property Protected m_sName As String Public ReadOnly Property sName As String Get Return m_sName End Get End Property Protected m_MachiningParamList As List(Of MachiningParam) Public ReadOnly Property MachiningParamList As List(Of MachiningParam) Get Return m_MachiningParamList End Get End Property Protected m_Cathegory_IsExpanded As Boolean Public Property Cathegory_IsExpanded As Boolean Get Return m_Cathegory_IsExpanded End Get Set(value As Boolean) m_Cathegory_IsExpanded = value End Set End Property Sub New() End Sub Sub New(Type As Cathegories, nIndex As Integer) m_Type = Type Select Case m_Type Case Cathegories.GENERAL m_sName = "General" m_MachiningParamList = New List(Of MachiningParam)({New ComboMachiningParam(MachiningParam.Params.SLICINGTYPE, nIndex), New CheckMachiningParam(MachiningParam.Params.SPIRALVASE, nIndex), New NumericMachiningParam(MachiningParam.Params.STRANDH, nIndex), New NumericMachiningParam(MachiningParam.Params.STRANDW, nIndex), New NumericMachiningParam(MachiningParam.Params.STRANDCOUNT, nIndex), New NumericMachiningParam(MachiningParam.Params.OFFSET, nIndex), New NumericMachiningParam(MachiningParam.Params.STRANDOVERLAP, nIndex), New NumericMachiningParam(MachiningParam.Params.STARTPOINTOFFSETONSLICE, nIndex), New ComboMachiningParam(MachiningParam.Params.STRANDORDER, nIndex), New ComboMachiningParam(MachiningParam.Params.DIRECTION, nIndex), New NumericMachiningParam(MachiningParam.Params.FLOORCOUNT, nIndex), New NumericMachiningParam(MachiningParam.Params.G0FEED, nIndex), New NumericMachiningParam(MachiningParam.Params.TOOLDIAM, nIndex), New NumericMachiningParam(MachiningParam.Params.CONSTANT, nIndex)}) Case Cathegories.LINK m_sName = "Shell" m_MachiningParamList = New List(Of MachiningParam)({New ComboMachiningParam(MachiningParam.Params.LINKTYPE, nIndex), New NumericMachiningParam(MachiningParam.Params.LINKPARAM, nIndex), New NumericMachiningParam(MachiningParam.Params.LINKZUP, nIndex), New ComboMachiningParam(MachiningParam.Params.LEADIN, nIndex), New NumericMachiningParam(MachiningParam.Params.LEADINTANGDIST, nIndex), New NumericMachiningParam(MachiningParam.Params.LEADINORTHODIST, nIndex), New NumericMachiningParam(MachiningParam.Params.OFFSETLEADPOINT, nIndex), New ComboMachiningParam(MachiningParam.Params.LEADOUT, nIndex), New NumericMachiningParam(MachiningParam.Params.LEADOUTTANGDIST, nIndex), New NumericMachiningParam(MachiningParam.Params.LEADOUTORTHODIST, nIndex), New NumericMachiningParam(MachiningParam.Params.COASTINGLEN, nIndex), New NumericMachiningParam(MachiningParam.Params.COASTINGFEED, nIndex), New NumericMachiningParam(MachiningParam.Params.WIPELEN, nIndex), New NumericMachiningParam(MachiningParam.Params.WIPEFEEDPU, nIndex), New NumericMachiningParam(MachiningParam.Params.WIPEDIR, nIndex)}) Case Cathegories.RIBS m_sName = "Ribs" m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.RIBSOVERLAP, nIndex), New NumericMachiningParam(MachiningParam.Params.RIBSSTRANDCOUNT, nIndex), New CheckMachiningParam(MachiningParam.Params.RIBSLINK, nIndex), New CheckMachiningParam(MachiningParam.Params.RIBSINVERTORDER, nIndex), New CheckMachiningParam(MachiningParam.Params.RIBSINVERTDIRECTION, nIndex), New CheckMachiningParam(MachiningParam.Params.RIBSLEADININVERT, nIndex), New NumericMachiningParam(MachiningParam.Params.RIBSLEADINLEN, nIndex), New CheckMachiningParam(MachiningParam.Params.RIBSLEADOUTINVERT, nIndex), New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTLEN, nIndex), New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTCOASTING, nIndex), New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTWIPE, nIndex), New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTWIPEDIR, nIndex)}) Case Cathegories.SHELL_NUMBER m_sName = "Reduce Shell Number" m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.SHELLNBRDIFFERENCE, nIndex), New NumericMachiningParam(MachiningParam.Params.SHELLNBRCOASTING, nIndex), New NumericMachiningParam(MachiningParam.Params.SHELLNBRWIPE, nIndex), New NumericMachiningParam(MachiningParam.Params.SHELLNBRWIPEDIR, nIndex)}) Case Cathegories.AUX_SOLID m_sName = "Filled Solid" m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSOVERLAP, nIndex), New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nIndex), New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDORDER, nIndex), New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSLINKTYPE, nIndex), New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSLINKPARAM, nIndex), New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE, nIndex), New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSCOASTINGLEN, nIndex), New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPELEN, nIndex), New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPEDIR, nIndex)}) Case Cathegories.MATERIALS m_sName = "Materials" Dim sMaterials As String = "" ReadMachiningParamSplit(nIndex, MAC_MATERIALS, "", sMaterials) Dim MaterialGuidList As List(Of String) = sMaterials.Split(";"c).ToList() m_MachiningParamList = New List(Of MachiningParam) For Each Material In Map.refTopPanelVM.MaterialList m_MachiningParamList.Add(New MaterialMachiningParam(Material.sName, Material.sGUID, MaterialGuidList.Contains(Material.sGUID))) Next End Select End Sub Friend Sub SaveParams() For Each Param In m_MachiningParamList Param.SaveParam() Next End Sub Friend Sub ResetParams() For Each Param In m_MachiningParamList Param.ResetParam() Next End Sub Friend Sub WriteParamOnDb(nIndex As Integer) If Type = Cathegories.MATERIALS Then WriteMachiningParamSplit(nIndex, MAC_MATERIALS, "") End If For Each Param In m_MachiningParamList Param.WriteParamOnDb(nIndex) Next End Sub End Class Public MustInherit Class MachiningParam Inherits VMBase Public Enum Params As Integer NAME = 2 SLICINGTYPE = 3 STRANDH = 4 STRANDW = 5 STRANDCOUNT = 6 OFFSET = 7 STARTPOINTOFFSETONSLICE = 8 STRANDORDER = 9 DIRECTION = 10 LINKTYPE = 11 LINKPARAM = 12 LINKZUP = 13 OFFSETLEADPOINT = 14 LEADIN = 15 LEADINTANGDIST = 16 LEADINORTHODIST = 17 LEADOUT = 18 LEADOUTTANGDIST = 19 LEADOUTORTHODIST = 20 COASTINGLEN = 21 COASTINGFEED = 22 WIPELEN = 23 WIPEFEEDPU = 24 FLOORCOUNT = 25 G0FEED = 26 TOOLDIAM = 27 RIBSOVERLAP = 28 RIBSSTRANDCOUNT = 29 RIBSLINK = 30 RIBSINVERTORDER = 31 RIBSINVERTDIRECTION = 32 RIBSLEADININVERT = 33 RIBSLEADINLEN = 34 RIBSLEADOUTINVERT = 35 RIBSLEADOUTLEN = 36 RIBSLEADOUTCOASTING = 37 RIBSLEADOUTWIPE = 38 RIBSLEADOUTWIPEDIR = 39 SHELLNBRDIFFERENCE = 40 SHELLNBRCOASTING = 41 SHELLNBRWIPE = 42 SHELLNBRWIPEDIR = 43 AUXSOLIDSOVERLAP = 44 AUXSOLIDSINFILL = 45 AUXSOLIDSSTRANDORDER = 46 AUXSOLIDSLINKTYPE = 47 AUXSOLIDSLINKPARAM = 48 AUXSOLIDSSTARTPOINTOFFSETONSLICE = 49 AUXSOLIDSCOASTINGLEN = 50 AUXSOLIDSWIPELEN = 51 AUXSOLIDSWIPEDIR = 52 SPIRALVASE = 53 WIPEDIR = 54 STRANDOVERLAP = 55 CONSTANT = 56 MATERIALS = 100 End Enum Protected m_Type As Params Public ReadOnly Property Type As Params Get Return m_Type End Get End Property Protected m_sName As String Public ReadOnly Property sName As String Get Return m_sName End Get End Property Public MustOverride ReadOnly Property bIsModified As Boolean Sub New(Type As Params) m_Type = Type Select Case m_Type Case Params.SLICINGTYPE m_sName = "Slicing direction" Case Params.STRANDH m_sName = "Strand Height" Case Params.STRANDW m_sName = "Strand Width" Case Params.STRANDCOUNT m_sName = "Strand Count" Case Params.OFFSET m_sName = "Offset" Case Params.STARTPOINTOFFSETONSLICE m_sName = "Start Point Offset On Layer" Case Params.STRANDORDER m_sName = "Strand Order" Case Params.DIRECTION m_sName = "Direction" Case Params.LINKTYPE m_sName = "Link Type" Case Params.LINKPARAM m_sName = "Link Param" Case Params.LINKZUP m_sName = "Link Z Up" Case Params.OFFSETLEADPOINT m_sName = "Offset Lead Point" Case Params.LEADIN m_sName = "Lead In" Case Params.LEADINTANGDIST m_sName = "Lead In Tang Dist" Case Params.LEADINORTHODIST m_sName = "Lead In Ortho Dist" Case Params.LEADOUT m_sName = "Lead Out" Case Params.LEADOUTTANGDIST m_sName = "Lead Out Tang Dist" Case Params.LEADOUTORTHODIST m_sName = "Lead Out Ortho Dist" Case Params.COASTINGLEN m_sName = "Coasting Len" Case Params.COASTINGFEED m_sName = "Coasting Feed" Case Params.WIPELEN m_sName = "Wipe Len" Case Params.WIPEFEEDPU m_sName = "Wipe Feed Pu" Case Params.FLOORCOUNT m_sName = "Floor Count" Case Params.G0FEED m_sName = "G0 Feed" Case Params.TOOLDIAM m_sName = "Nozzle Diameter" Case Params.RIBSOVERLAP m_sName = "Overlap" Case Params.RIBSSTRANDCOUNT m_sName = "Strand Count" Case Params.RIBSLINK m_sName = "Link" Case Params.RIBSINVERTORDER m_sName = "Invert Order" Case Params.RIBSINVERTDIRECTION m_sName = "Invert Direction" Case Params.RIBSLEADININVERT m_sName = "Lead In Invert" Case Params.RIBSLEADINLEN m_sName = "Lead In Len" Case Params.RIBSLEADOUTINVERT m_sName = "Lead Out Invert" Case Params.RIBSLEADOUTLEN m_sName = "Lead Out Len" Case Params.RIBSLEADOUTCOASTING m_sName = "Lead Out Coasting" Case Params.RIBSLEADOUTWIPE m_sName = "Lead Out Wipe" Case Params.RIBSLEADOUTWIPEDIR m_sName = "Lead Out Wipe Dir" Case Params.SHELLNBRDIFFERENCE m_sName = "Difference" Case Params.SHELLNBRCOASTING m_sName = "Coasting" Case Params.SHELLNBRWIPE m_sName = "Wipe" Case Params.SHELLNBRWIPEDIR m_sName = "Wipe Direction" Case Params.AUXSOLIDSOVERLAP m_sName = "Overlap" Case Params.AUXSOLIDSINFILL m_sName = "Infill" Case Params.AUXSOLIDSSTRANDORDER m_sName = "Strand Order" Case Params.AUXSOLIDSLINKTYPE m_sName = "Link Type" Case Params.AUXSOLIDSLINKPARAM m_sName = "Link Parameter" Case Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE m_sName = "Start Point Offset On Slice" Case Params.AUXSOLIDSCOASTINGLEN m_sName = "Coasting Length" Case Params.AUXSOLIDSWIPELEN m_sName = "Wipe Length" Case Params.AUXSOLIDSWIPEDIR m_sName = "Wipe Direction" Case Params.SPIRALVASE m_sName = "Spiral Vase" Case Params.WIPEDIR m_sName = "Wipe Direction" Case Params.STRANDOVERLAP m_sName = "Strand Overlap" Case Params.CONSTANT m_sName = "Constant" End Select End Sub Sub New(sName As String) m_Type = Params.MATERIALS m_sName = sName End Sub Friend MustOverride Sub WriteParamOnDb(nIndex As Integer) Friend Overridable Sub WriteParamInPart(nIndex As Integer) End Sub Friend MustOverride Sub SaveParam() Friend MustOverride Sub ResetParam() End Class Public Class NumericMachiningParam Inherits MachiningParam Protected m_bIsLen As Boolean = False Protected m_dValue As Double Public ReadOnly Property dValue As Double Get Return m_dValue End Get End Property Public Overridable Property sValue As String Get Return If(m_bIsLen, LenToString(m_dValue, 1), m_dValue) End Get Set(value As String) If m_bIsLen Then StringToLen(value, m_dValue) Else m_dValue = value End If NotifyPropertyChanged(NameOf(sValue)) End Set End Property Protected m_dOrigValue As Double Public ReadOnly Property dOrigValue As Double Get Return m_dOrigValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_dValue <> m_dOrigValue End Get End Property Sub New(Type As Params) MyBase.New(Type) End Sub Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) If nIndex = 0 Then m_dValue = 0 m_bIsLen = True Else Select Case Type Case Params.STRANDH m_dValue = ReadMachiningParamDouble(nIndex, MAC_STRANDH, 0) m_bIsLen = True Case Params.STRANDW m_dValue = ReadMachiningParamDouble(nIndex, MAC_STRANDW, 0) m_bIsLen = True Case Params.STRANDCOUNT m_dValue = ReadMachiningParamDouble(nIndex, MAC_STRANDCOUNT, 0) m_bIsLen = True Case Params.OFFSET m_dValue = ReadMachiningParamDouble(nIndex, MAC_OFFSET, 0) m_bIsLen = True Case Params.STRANDOVERLAP m_dValue = ReadMachiningParamDouble(nIndex, MAC_STRANDOVERLAP, 0) m_bIsLen = True Case Params.STARTPOINTOFFSETONSLICE m_dValue = ReadMachiningParamDouble(nIndex, MAC_STARTPOINTOFFSETONSLICE, 0) m_bIsLen = True Case Params.LINKPARAM m_dValue = ReadMachiningParamDouble(nIndex, MAC_LINKPARAM, 0) m_bIsLen = True Case Params.LINKZUP m_dValue = ReadMachiningParamDouble(nIndex, MAC_LINKZUP, 0) m_bIsLen = True Case Params.OFFSETLEADPOINT m_dValue = ReadMachiningParamDouble(nIndex, MAC_OFFSETLEADPOINT, 0) m_bIsLen = True Case Params.LEADINTANGDIST m_dValue = ReadMachiningParamDouble(nIndex, MAC_LEADINTANGDIST, 0) m_bIsLen = True Case Params.LEADINORTHODIST m_dValue = ReadMachiningParamDouble(nIndex, MAC_LEADINORTHODIST, 0) m_bIsLen = True Case Params.LEADOUTTANGDIST m_dValue = ReadMachiningParamDouble(nIndex, MAC_LEADOUTTANGDIST, 0) m_bIsLen = True Case Params.LEADOUTORTHODIST m_dValue = ReadMachiningParamDouble(nIndex, MAC_LEADOUTORTHODIST, 0) m_bIsLen = True Case Params.COASTINGLEN m_dValue = ReadMachiningParamDouble(nIndex, MAC_COASTINGLEN, 0) m_bIsLen = True Case Params.COASTINGFEED m_dValue = ReadMachiningParamDouble(nIndex, MAC_COASTINGFEED, 0) m_bIsLen = True Case Params.WIPELEN m_dValue = ReadMachiningParamDouble(nIndex, MAC_WIPELEN, 0) m_bIsLen = True Case Params.WIPEFEEDPU m_dValue = ReadMachiningParamDouble(nIndex, MAC_WIPEFEEDPU, 0) m_bIsLen = True Case Params.WIPEDIR m_dValue = ReadMachiningParamDouble(nIndex, MAC_WIPEDIR, 0) m_bIsLen = True Case Params.FLOORCOUNT m_dValue = ReadMachiningParamDouble(nIndex, MAC_FLOORCOUNT, 0) m_bIsLen = True Case Params.G0FEED m_dValue = ReadMachiningParamDouble(nIndex, MAC_G0FEED, 0) m_bIsLen = True Case Params.TOOLDIAM m_dValue = ReadMachiningParamDouble(nIndex, MAC_TOOLDIAM, 0) m_bIsLen = True Case Params.RIBSOVERLAP m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSOVERLAP, 0) m_bIsLen = True Case Params.RIBSSTRANDCOUNT m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSSTRANDCOUNT, 0) m_bIsLen = True Case Params.RIBSLEADINLEN m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADINLEN, 0) m_bIsLen = True Case Params.RIBSLEADOUTLEN m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADOUTLEN, 0) m_bIsLen = True Case Params.RIBSLEADOUTCOASTING m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADOUTCOASTING, 0) m_bIsLen = True Case Params.RIBSLEADOUTWIPE m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADOUTWIPE, 0) m_bIsLen = True Case Params.RIBSLEADOUTWIPEDIR m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADOUTWIPEDIR, 0) m_bIsLen = True Case Params.SHELLNBRDIFFERENCE m_dValue = ReadMachiningParamDouble(nIndex, MAC_SHELLNBRDIFFERENCE, 0) m_bIsLen = True Case Params.SHELLNBRCOASTING m_dValue = ReadMachiningParamDouble(nIndex, MAC_SHELLNBRCOASTING, 0) m_bIsLen = True Case Params.SHELLNBRWIPE m_dValue = ReadMachiningParamDouble(nIndex, MAC_SHELLNBRWIPE, 0) m_bIsLen = True Case Params.SHELLNBRWIPEDIR m_dValue = ReadMachiningParamDouble(nIndex, MAC_SHELLNBRWIPEDIR, 0) m_bIsLen = True Case Params.AUXSOLIDSOVERLAP m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSOVERLAP, 0) m_bIsLen = True Case Params.AUXSOLIDSLINKPARAM m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSLINKPARAM, 0) m_bIsLen = True Case Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSSTARTPOINTOFFSETONSLICE, 0) m_bIsLen = True Case Params.AUXSOLIDSCOASTINGLEN m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSCOASTINGLEN, 0) m_bIsLen = True Case Params.AUXSOLIDSWIPELEN m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSWIPELEN, 0) m_bIsLen = True Case Params.AUXSOLIDSWIPEDIR m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSWIPEDIR, 0) m_bIsLen = True Case Params.CONSTANT m_dValue = ReadMachiningParamDouble(nIndex, MAC_CONSTANT, 100) m_bIsLen = False End Select End If m_dOrigValue = m_dValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Dim sWriteValue As String = "" If m_bIsLen Then sWriteValue = LenToString(m_dValue, 2) Else sWriteValue = DoubleToString(m_dValue, 2) End If Select Case Type Case Params.STRANDH WriteMachiningParam(nIndex, MAC_STRANDH, sWriteValue) Case Params.STRANDW WriteMachiningParam(nIndex, MAC_STRANDW, sWriteValue) Case Params.STRANDCOUNT WriteMachiningParam(nIndex, MAC_STRANDCOUNT, sWriteValue) Case Params.OFFSET WriteMachiningParam(nIndex, MAC_OFFSET, sWriteValue) Case Params.STRANDOVERLAP WriteMachiningParam(nIndex, MAC_STRANDOVERLAP, sWriteValue) Case Params.STARTPOINTOFFSETONSLICE WriteMachiningParam(nIndex, MAC_STARTPOINTOFFSETONSLICE, sWriteValue) Case Params.LINKPARAM WriteMachiningParam(nIndex, MAC_LINKPARAM, sWriteValue) Case Params.LINKZUP WriteMachiningParam(nIndex, MAC_LINKZUP, sWriteValue) Case Params.OFFSETLEADPOINT WriteMachiningParam(nIndex, MAC_OFFSETLEADPOINT, sWriteValue) Case Params.LEADINTANGDIST WriteMachiningParam(nIndex, MAC_LEADINTANGDIST, sWriteValue) Case Params.LEADINORTHODIST WriteMachiningParam(nIndex, MAC_LEADINORTHODIST, sWriteValue) Case Params.LEADOUTTANGDIST WriteMachiningParam(nIndex, MAC_LEADOUTTANGDIST, sWriteValue) Case Params.LEADOUTORTHODIST WriteMachiningParam(nIndex, MAC_LEADOUTORTHODIST, sWriteValue) Case Params.COASTINGLEN WriteMachiningParam(nIndex, MAC_COASTINGLEN, sWriteValue) Case Params.COASTINGFEED WriteMachiningParam(nIndex, MAC_COASTINGFEED, sWriteValue) Case Params.WIPELEN WriteMachiningParam(nIndex, MAC_WIPELEN, sWriteValue) Case Params.WIPEFEEDPU WriteMachiningParam(nIndex, MAC_WIPEFEEDPU, sWriteValue) Case Params.WIPEDIR WriteMachiningParam(nIndex, MAC_WIPEDIR, sWriteValue) Case Params.FLOORCOUNT WriteMachiningParam(nIndex, MAC_FLOORCOUNT, sWriteValue) Case Params.G0FEED WriteMachiningParam(nIndex, MAC_G0FEED, sWriteValue) Case Params.TOOLDIAM WriteMachiningParam(nIndex, MAC_TOOLDIAM, sWriteValue) Case Params.RIBSOVERLAP WriteMachiningParam(nIndex, MAC_RIBSOVERLAP, sWriteValue) Case Params.RIBSSTRANDCOUNT WriteMachiningParam(nIndex, MAC_RIBSSTRANDCOUNT, sWriteValue) Case Params.RIBSLEADINLEN WriteMachiningParam(nIndex, MAC_RIBSLEADINLEN, sWriteValue) Case Params.RIBSLEADOUTLEN WriteMachiningParam(nIndex, MAC_RIBSLEADOUTLEN, sWriteValue) Case Params.RIBSLEADOUTCOASTING WriteMachiningParam(nIndex, MAC_RIBSLEADOUTCOASTING, sWriteValue) Case Params.RIBSLEADOUTWIPE WriteMachiningParam(nIndex, MAC_RIBSLEADOUTWIPE, sWriteValue) Case Params.RIBSLEADOUTWIPEDIR WriteMachiningParam(nIndex, MAC_RIBSLEADOUTWIPEDIR, sWriteValue) Case Params.SHELLNBRDIFFERENCE WriteMachiningParam(nIndex, MAC_SHELLNBRDIFFERENCE, sWriteValue) Case Params.SHELLNBRCOASTING WriteMachiningParam(nIndex, MAC_SHELLNBRCOASTING, sWriteValue) Case Params.SHELLNBRWIPE WriteMachiningParam(nIndex, MAC_SHELLNBRWIPE, sWriteValue) Case Params.SHELLNBRWIPEDIR WriteMachiningParam(nIndex, MAC_SHELLNBRWIPEDIR, sWriteValue) Case Params.AUXSOLIDSOVERLAP WriteMachiningParam(nIndex, MAC_AUXSOLIDSOVERLAP, sWriteValue) Case Params.AUXSOLIDSLINKPARAM WriteMachiningParam(nIndex, MAC_AUXSOLIDSLINKPARAM, sWriteValue) Case Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTARTPOINTOFFSETONSLICE, sWriteValue) Case Params.AUXSOLIDSCOASTINGLEN WriteMachiningParam(nIndex, MAC_AUXSOLIDSCOASTINGLEN, sWriteValue) Case Params.AUXSOLIDSWIPELEN WriteMachiningParam(nIndex, MAC_AUXSOLIDSWIPELEN, sWriteValue) Case Params.AUXSOLIDSWIPEDIR WriteMachiningParam(nIndex, MAC_AUXSOLIDSWIPEDIR, sWriteValue) Case Params.CONSTANT WriteMachiningParam(nIndex, MAC_CONSTANT, sWriteValue) End Select End Sub Friend Overrides Sub SaveParam() m_dOrigValue = m_dValue End Sub Friend Overrides Sub ResetParam() m_dValue = m_dOrigValue NotifyPropertyChanged(NameOf(sValue)) End Sub End Class Public Class StringMachiningParam Inherits MachiningParam Protected m_sValue As String Public Property sValue As String Get Return m_sValue End Get Set(value As String) m_sValue = value NotifyPropertyChanged(NameOf(sValue)) End Set End Property Protected m_sOrigValue As String Public ReadOnly Property sOrigValue As String Get Return m_sOrigValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_sValue <> m_sOrigValue End Get End Property Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) m_sValue = sValue m_sOrigValue = m_sValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Select Case Type Case Params.STRANDH 'WritePrivateProfileString(nIndex, MAC_STRANDH, sWriteValue) End Select End Sub Friend Overrides Sub SaveParam() m_sOrigValue = m_sValue End Sub Friend Overrides Sub ResetParam() m_sValue = m_sOrigValue NotifyPropertyChanged(NameOf(sValue)) End Sub End Class Public Class ComboMachiningParam Inherits MachiningParam Protected m_ValueList As List(Of IdNameStruct) Public ReadOnly Property ValueList As List(Of IdNameStruct) Get Return m_ValueList End Get End Property Protected m_SelValue As IdNameStruct Public Overridable Property SelValue As IdNameStruct Get Return m_SelValue End Get Set(value As IdNameStruct) m_SelValue = value NotifyPropertyChanged(NameOf(SelValue)) End Set End Property Protected m_OrigSelValue As IdNameStruct Public ReadOnly Property OrigSelValue As IdNameStruct Get Return m_OrigSelValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_SelValue.Id <> m_OrigSelValue.Id End Get End Property Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) If nIndex = 0 Then m_ValueList = New List(Of IdNameStruct) m_SelValue = Nothing Else Select Case Type Case Params.SLICINGTYPE Dim nHorizontalPrint As Integer = GetPrivateProfileInt(S_MACH_PRINTING3D, K_HORIZONTAL_PRINT, 0, CurrentMachine.sMachIniFile) m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_SLICINGTYPE.VERTICAL, "Vertical"), New IdNameStruct(Machining.MPAR_SLICINGTYPE.HORIZONTAL, "Horizontal")}) If nHorizontalPrint > 0 Then m_ValueList.Add(New IdNameStruct(Machining.MPAR_SLICINGTYPE.DEG45, "45°")) End If Dim nSelValue As Double = ReadMachiningParamDouble(nIndex, MAC_SLICINGTYPE, -1) If nSelValue = -1 Then Dim dSlicing45 As Double = 0 dSlicing45 = ReadMachiningParamDouble(nIndex, MAC_SLICING45, 0) nSelValue = If(dSlicing45 = 0, Machining.MPAR_SLICINGTYPE.VERTICAL, Machining.MPAR_SLICINGTYPE.DEG45) End If m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = nSelValue) Case Params.STRANDORDER m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_STRANDORDERS.OUTTOIN, "From Outside To Inside"), New IdNameStruct(Machining.MPAR_STRANDORDERS.INTOOUT, "From Inside To Outside")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_STRANDORDER, 0)) Case Params.DIRECTION m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_DIRECTIONS.CCW, "Counterclockwise"), New IdNameStruct(Machining.MPAR_DIRECTIONS.CW, "Clockwise")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_DIRECTION, 0)) Case Params.LINKTYPE m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_LINKTYPES.NONE, "None"), New IdNameStruct(Machining.MPAR_LINKTYPES.LINEAR, "Linear"), New IdNameStruct(Machining.MPAR_LINKTYPES.BIARC, "Biarc")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_LINKTYPE, 0)) Case Params.LEADIN m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_LEADINOUT.NONE, "None"), New IdNameStruct(Machining.MPAR_LEADINOUT.LINEAR, "Linear"), New IdNameStruct(Machining.MPAR_LEADINOUT.ARC, "Arc")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_LEADIN, 0)) Case Params.LEADOUT m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_LEADINOUT.NONE, "None"), New IdNameStruct(Machining.MPAR_LEADINOUT.LINEAR, "Linear"), New IdNameStruct(Machining.MPAR_LEADINOUT.ARC, "Arc")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_LEADOUT, 0)) Case Params.AUXSOLIDSINFILL m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_INFILL.NONE, "None"), New IdNameStruct(Machining.MPAR_INFILL.OFFSET, "Offset"), New IdNameStruct(Machining.MPAR_INFILL.ZIGZAG, "ZigZag")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSINFILL, 0)) Case Params.AUXSOLIDSSTRANDORDER m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_STRANDORDERS.OUTTOIN, "From Outside To Inside"), New IdNameStruct(Machining.MPAR_STRANDORDERS.INTOOUT, "From Inside To Outside")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSSTRANDORDER, 0)) Case Params.AUXSOLIDSLINKTYPE m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_LINKTYPES.NONE, "None"), New IdNameStruct(Machining.MPAR_LINKTYPES.LINEAR, "Linear"), New IdNameStruct(Machining.MPAR_LINKTYPES.BIARC, "Biarc")}) m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSLINKTYPE, 0)) End Select End If m_OrigSelValue = m_SelValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Select Case Type Case Params.SLICINGTYPE WriteMachiningParam(nIndex, MAC_SLICING45, m_SelValue.Id) Case Params.STRANDORDER WriteMachiningParam(nIndex, MAC_STRANDORDER, m_SelValue.Id) Case Params.DIRECTION WriteMachiningParam(nIndex, MAC_DIRECTION, m_SelValue.Id) Case Params.LINKTYPE WriteMachiningParam(nIndex, MAC_LINKTYPE, m_SelValue.Id) Case Params.LEADIN WriteMachiningParam(nIndex, MAC_LEADIN, m_SelValue.Id) Case Params.LEADOUT WriteMachiningParam(nIndex, MAC_LEADOUT, m_SelValue.Id) Case Params.AUXSOLIDSINFILL WriteMachiningParam(nIndex, MAC_AUXSOLIDSINFILL, m_SelValue.Id) Case Params.AUXSOLIDSSTRANDORDER WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTRANDORDER, m_SelValue.Id) Case Params.AUXSOLIDSLINKTYPE WriteMachiningParam(nIndex, MAC_AUXSOLIDSLINKTYPE, m_SelValue.Id) End Select End Sub Friend Overrides Sub SaveParam() m_OrigSelValue = m_SelValue End Sub Friend Overrides Sub ResetParam() m_SelValue = m_OrigSelValue NotifyPropertyChanged(NameOf(SelValue)) End Sub End Class Public Class CheckMachiningParam Inherits MachiningParam Protected m_bValue As Boolean Public Overridable Property bValue As Boolean Get Return m_bValue End Get Set(value As Boolean) m_bValue = value NotifyPropertyChanged(NameOf(bValue)) End Set End Property Protected m_bOrigValue As String Public ReadOnly Property bOrigValue As String Get Return m_bOrigValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_bValue <> m_bOrigValue End Get End Property Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) If nIndex = 0 Then m_bValue = 0 Else Select Case Type Case Params.SPIRALVASE m_bValue = ReadMachiningParamDouble(nIndex, MAC_SPIRALVASE, 0) Case Params.RIBSLINK m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLINK, 0) Case Params.RIBSINVERTORDER m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSINVERTORDER, 0) Case Params.RIBSINVERTDIRECTION m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSINVERTDIRECTION, 0) Case Params.RIBSLEADININVERT m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADININVERT, 0) Case Params.RIBSLEADOUTINVERT m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADOUTINVERT, 0) End Select End If m_bOrigValue = m_bValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Select Case Type Case Params.SPIRALVASE WriteMachiningParam(nIndex, MAC_SPIRALVASE, If(m_bValue, 1, 0)) Case Params.RIBSLINK WriteMachiningParam(nIndex, MAC_RIBSLINK, If(m_bValue, 1, 0)) Case Params.RIBSINVERTORDER WriteMachiningParam(nIndex, MAC_RIBSINVERTORDER, If(m_bValue, 1, 0)) Case Params.RIBSINVERTDIRECTION WriteMachiningParam(nIndex, MAC_RIBSINVERTDIRECTION, If(m_bValue, 1, 0)) Case Params.RIBSLEADININVERT WriteMachiningParam(nIndex, MAC_RIBSLEADININVERT, If(m_bValue, 1, 0)) Case Params.RIBSLEADOUTINVERT WriteMachiningParam(nIndex, MAC_RIBSLEADOUTINVERT, If(m_bValue, 1, 0)) End Select End Sub Friend Overrides Sub SaveParam() m_bOrigValue = m_bValue End Sub Friend Overrides Sub ResetParam() m_bValue = m_bOrigValue NotifyPropertyChanged(NameOf(bValue)) End Sub End Class Public Class MaterialMachiningParam Inherits MachiningParam Private m_sGUID As String Public Property sGUID As String Get Return m_sGUID End Get Set(value As String) m_sGUID = value End Set End Property Private m_bValue As Boolean Public Property bValue As Boolean Get Return m_bValue End Get Set(value As Boolean) m_bValue = value NotifyPropertyChanged(NameOf(bValue)) End Set End Property Private m_bOrigValue As String Public ReadOnly Property bOriValue As String Get Return m_bOrigValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_bValue <> m_bOrigValue End Get End Property Sub New(sName As String, sGUID As String, bValue As Boolean) MyBase.New(sName) m_sGUID = sGUID m_bValue = bValue m_bOrigValue = m_bValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Dim sMaterials As String = "" ReadMachiningParamSplit(nIndex, MAC_MATERIALS, "", sMaterials) Dim MaterialGuidList As New List(Of String) If Not String.IsNullOrWhiteSpace(sMaterials) Then MaterialGuidList = sMaterials.Split(";"c).ToList() End If If Not bValue Then MaterialGuidList.Remove(m_sGUID) ElseIf Not MaterialGuidList.Contains(m_sGUID) Then MaterialGuidList.Add(m_sGUID) End If sMaterials = "" For Index = 0 To MaterialGuidList.Count - 1 sMaterials &= MaterialGuidList(Index) & If(Index < MaterialGuidList.Count - 1, ";"c, "") Next WriteMachiningParamSplit(nIndex, MAC_MATERIALS, sMaterials) End Sub Friend Overrides Sub SaveParam() m_bOrigValue = m_bValue End Sub Friend Overrides Sub ResetParam() m_bValue = m_bOrigValue NotifyPropertyChanged(NameOf(bValue)) End Sub End Class