Files
icarus/Icarus/MachiningDb/Machining.vb
Emmanuele Sassi 629d16b4f1 - introdotto "copia da" su parametri ribs
- introdotto indice fisso ribs
- introdotto ordine di stampa dei layer (shell, rib, ecc...)
- corretta estensione in esportazione
2023-01-24 20:31:23 +01:00

1474 lines
58 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports EgtUILib
Imports EgtWPFLib5
Public Class Machining
Inherits VMBase
Public Enum MPAR_SLICINGTYPE As Integer
VERTICAL = 1
DEG45 = 2
DEG45_Y = 3
HORIZONTAL = 4
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_RIBSTYPE As Integer
INTERNAL = 1
EXTERNAL = 2
UNBOUNDED = 3
SUPPORT = 4
End Enum
Public Enum MPAR_INFILL As Integer
NONE = 1
OFFSET = 2
ZIGZAG = 3
End Enum
Public Enum MPAR_DYNAMIC_MODE As Integer
STANDARD = 1
FAST = 2
End Enum
Public Enum MPAR_PRINT_ORDER As Integer
SHELL = 1
EXTRA_SHELL = 2
INFILL = 3
AUX_SOLID = 4
RIB = 5
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
Friend Sub SetIndex(nValue As Integer)
m_nIndex = nValue
End Sub
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, Optional sFilePath As String = "")
WriteMachiningParam(nIndex, MAC_GUID, m_sGUID, sFilePath)
WriteMachiningParam(nIndex, MAC_NAME, m_sName, sFilePath)
For Each Cathegory In m_CathegoryList
Cathegory.WriteParamOnDb(nIndex, sFilePath)
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), NameOf(sender.Value)
UpdateIsModified()
Map.refMachiningDbVM.NotifyPropertyChanged(NameOf(Map.refMachiningDbVM.ImpExp_IsEnabled))
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.G0FEEDZ, nIndex),
New NumericMachiningParam(MachiningParam.Params.TOOLDIAM, nIndex),
New NumericMachiningParam(MachiningParam.Params.FLOWRATE_PC, nIndex),
New ComboMachiningParam(MachiningParam.Params.DYNAMIC_MODE, nIndex),
New OrderedMachiningParam(MachiningParam.Params.PRINT_ORDER, 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_PC, nIndex),
New NumericMachiningParam(MachiningParam.Params.WIPELEN, nIndex),
New NumericMachiningParam(MachiningParam.Params.WIPEFEED_PC, nIndex)})
'New NumericMachiningParam(MachiningParam.Params.WIPEDIR, nIndex)})
Case Cathegories.RIBS
m_sName = "Ribs"
m_MachiningParamList = New List(Of MachiningParam)({New ComboMachiningParam(MachiningParam.Params.RIBSTYPE, nIndex),
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, Optional sFilePath As String = "")
If Type = Cathegories.MATERIALS Then
WriteMachiningParamSplit(nIndex, MAC_MATERIALS, "", sFilePath)
End If
For Each Param In m_MachiningParamList
Param.WriteParamOnDb(nIndex, sFilePath)
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_PC = 22
WIPELEN = 23
WIPEFEED_PC = 24
FLOORCOUNT = 25
G0FEED = 26
G0FEEDZ = 27
TOOLDIAM = 28
RIBSTYPE = 29
RIBSOVERLAP = 30
RIBSSTRANDCOUNT = 31
RIBSLINK = 32
RIBSINVERTORDER = 33
RIBSINVERTDIRECTION = 34
RIBSLEADININVERT = 35
RIBSLEADINLEN = 36
RIBSLEADOUTINVERT = 37
RIBSLEADOUTLEN = 38
RIBSLEADOUTCOASTING = 39
RIBSLEADOUTWIPE = 40
RIBSLEADOUTWIPEDIR = 41
SHELLNBRDIFFERENCE = 42
SHELLNBRCOASTING = 43
SHELLNBRWIPE = 44
SHELLNBRWIPEDIR = 45
AUXSOLIDSOVERLAP = 46
AUXSOLIDSINFILL = 47
AUXSOLIDSSTRANDORDER = 48
AUXSOLIDSLINKTYPE = 49
AUXSOLIDSLINKPARAM = 50
AUXSOLIDSSTARTPOINTOFFSETONSLICE = 51
AUXSOLIDSCOASTINGLEN = 52
AUXSOLIDSWIPELEN = 53
AUXSOLIDSWIPEDIR = 54
SPIRALVASE = 55
'WIPEDIR = 56
STRANDOVERLAP = 57
FLOWRATE_PC = 58
DYNAMIC_MODE = 59
PRINT_ORDER = 60
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_PC
m_sName = "Coasting Feed [%]"
Case Params.WIPELEN
m_sName = "Wipe Len"
Case Params.WIPEFEED_PC
m_sName = "Wipe Feed [%]"
Case Params.FLOORCOUNT
m_sName = "Floor Count"
Case Params.G0FEED
m_sName = "G0 Feed"
Case Params.G0FEEDZ
m_sName = "G0 Feed Z"
Case Params.TOOLDIAM
m_sName = "Nozzle Diameter"
Case Params.RIBSTYPE
m_sName = "Type"
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 [deg]"
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 [deg]"
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 [deg]"
Case Params.SPIRALVASE
m_sName = "Spiral Vase"
'Case Params.WIPEDIR
' m_sName = "Wipe Direction [deg]"
Case Params.STRANDOVERLAP
m_sName = "Strand Overlap [%]"
Case Params.FLOWRATE_PC
m_sName = "Flow rate [%]"
Case Params.DYNAMIC_MODE
m_sName = "Dynamic Mode"
Case Params.PRINT_ORDER
m_sName = "Print Order"
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, Optional sFilePath As String = "")
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), DoubleToString(m_dValue, 2))
End Get
Set(value As String)
If m_bIsLen Then
StringToLen(value, m_dValue)
Else
StringToDouble(value, m_dValue)
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 = False
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 = False
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_PC
m_dValue = ReadMachiningParamDouble(nIndex, MAC_COASTINGFEEDPU, 0)
m_bIsLen = False
Case Params.WIPELEN
m_dValue = ReadMachiningParamDouble(nIndex, MAC_WIPELEN, 0)
m_bIsLen = True
Case Params.WIPEFEED_PC
m_dValue = ReadMachiningParamDouble(nIndex, MAC_WIPEFEEDPU, 0)
m_bIsLen = False
'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 = False
Case Params.G0FEED
m_dValue = ReadMachiningParamDouble(nIndex, MAC_G0FEED, 10000)
m_bIsLen = True
Case Params.G0FEEDZ
m_dValue = ReadMachiningParamDouble(nIndex, MAC_G0FEEDZ, 1000)
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 = False
Case Params.RIBSSTRANDCOUNT
m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSSTRANDCOUNT, 0)
m_bIsLen = False
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 = False
Case Params.SHELLNBRDIFFERENCE
m_dValue = ReadMachiningParamDouble(nIndex, MAC_SHELLNBRDIFFERENCE, 0)
m_bIsLen = False
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 = False
Case Params.AUXSOLIDSOVERLAP
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSOVERLAP, 0)
m_bIsLen = False
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 = False
Case Params.FLOWRATE_PC
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, Optional sFilePath As String = "")
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, sFilePath)
Case Params.STRANDW
WriteMachiningParam(nIndex, MAC_STRANDW, sWriteValue, sFilePath)
Case Params.STRANDCOUNT
WriteMachiningParam(nIndex, MAC_STRANDCOUNT, sWriteValue, sFilePath)
Case Params.OFFSET
WriteMachiningParam(nIndex, MAC_OFFSET, sWriteValue, sFilePath)
Case Params.STRANDOVERLAP
WriteMachiningParam(nIndex, MAC_STRANDOVERLAP, sWriteValue, sFilePath)
Case Params.STARTPOINTOFFSETONSLICE
WriteMachiningParam(nIndex, MAC_STARTPOINTOFFSETONSLICE, sWriteValue, sFilePath)
Case Params.LINKPARAM
WriteMachiningParam(nIndex, MAC_LINKPARAM, sWriteValue, sFilePath)
Case Params.LINKZUP
WriteMachiningParam(nIndex, MAC_LINKZUP, sWriteValue, sFilePath)
Case Params.OFFSETLEADPOINT
WriteMachiningParam(nIndex, MAC_OFFSETLEADPOINT, sWriteValue, sFilePath)
Case Params.LEADINTANGDIST
WriteMachiningParam(nIndex, MAC_LEADINTANGDIST, sWriteValue, sFilePath)
Case Params.LEADINORTHODIST
WriteMachiningParam(nIndex, MAC_LEADINORTHODIST, sWriteValue, sFilePath)
Case Params.LEADOUTTANGDIST
WriteMachiningParam(nIndex, MAC_LEADOUTTANGDIST, sWriteValue, sFilePath)
Case Params.LEADOUTORTHODIST
WriteMachiningParam(nIndex, MAC_LEADOUTORTHODIST, sWriteValue, sFilePath)
Case Params.COASTINGLEN
WriteMachiningParam(nIndex, MAC_COASTINGLEN, sWriteValue, sFilePath)
Case Params.COASTINGFEED_PC
WriteMachiningParam(nIndex, MAC_COASTINGFEEDPU, sWriteValue, sFilePath)
Case Params.WIPELEN
WriteMachiningParam(nIndex, MAC_WIPELEN, sWriteValue, sFilePath)
Case Params.WIPEFEED_PC
WriteMachiningParam(nIndex, MAC_WIPEFEEDPU, sWriteValue, sFilePath)
'Case Params.WIPEDIR
' WriteMachiningParam(nIndex, MAC_WIPEDIR, sWriteValue, sFilePath)
Case Params.FLOORCOUNT
WriteMachiningParam(nIndex, MAC_FLOORCOUNT, sWriteValue, sFilePath)
Case Params.G0FEED
WriteMachiningParam(nIndex, MAC_G0FEED, sWriteValue, sFilePath)
Case Params.G0FEEDZ
WriteMachiningParam(nIndex, MAC_G0FEEDZ, sWriteValue, sFilePath)
Case Params.TOOLDIAM
WriteMachiningParam(nIndex, MAC_TOOLDIAM, sWriteValue, sFilePath)
Case Params.RIBSOVERLAP
WriteMachiningParam(nIndex, MAC_RIBSOVERLAP, sWriteValue, sFilePath)
Case Params.RIBSSTRANDCOUNT
WriteMachiningParam(nIndex, MAC_RIBSSTRANDCOUNT, sWriteValue, sFilePath)
Case Params.RIBSLEADINLEN
WriteMachiningParam(nIndex, MAC_RIBSLEADINLEN, sWriteValue, sFilePath)
Case Params.RIBSLEADOUTLEN
WriteMachiningParam(nIndex, MAC_RIBSLEADOUTLEN, sWriteValue, sFilePath)
Case Params.RIBSLEADOUTCOASTING
WriteMachiningParam(nIndex, MAC_RIBSLEADOUTCOASTING, sWriteValue, sFilePath)
Case Params.RIBSLEADOUTWIPE
WriteMachiningParam(nIndex, MAC_RIBSLEADOUTWIPE, sWriteValue, sFilePath)
Case Params.RIBSLEADOUTWIPEDIR
WriteMachiningParam(nIndex, MAC_RIBSLEADOUTWIPEDIR, sWriteValue, sFilePath)
Case Params.SHELLNBRDIFFERENCE
WriteMachiningParam(nIndex, MAC_SHELLNBRDIFFERENCE, sWriteValue, sFilePath)
Case Params.SHELLNBRCOASTING
WriteMachiningParam(nIndex, MAC_SHELLNBRCOASTING, sWriteValue, sFilePath)
Case Params.SHELLNBRWIPE
WriteMachiningParam(nIndex, MAC_SHELLNBRWIPE, sWriteValue, sFilePath)
Case Params.SHELLNBRWIPEDIR
WriteMachiningParam(nIndex, MAC_SHELLNBRWIPEDIR, sWriteValue, sFilePath)
Case Params.AUXSOLIDSOVERLAP
WriteMachiningParam(nIndex, MAC_AUXSOLIDSOVERLAP, sWriteValue, sFilePath)
Case Params.AUXSOLIDSLINKPARAM
WriteMachiningParam(nIndex, MAC_AUXSOLIDSLINKPARAM, sWriteValue, sFilePath)
Case Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE
WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTARTPOINTOFFSETONSLICE, sWriteValue, sFilePath)
Case Params.AUXSOLIDSCOASTINGLEN
WriteMachiningParam(nIndex, MAC_AUXSOLIDSCOASTINGLEN, sWriteValue, sFilePath)
Case Params.AUXSOLIDSWIPELEN
WriteMachiningParam(nIndex, MAC_AUXSOLIDSWIPELEN, sWriteValue, sFilePath)
Case Params.AUXSOLIDSWIPEDIR
WriteMachiningParam(nIndex, MAC_AUXSOLIDSWIPEDIR, sWriteValue, sFilePath)
Case Params.FLOWRATE_PC
WriteMachiningParam(nIndex, MAC_CONSTANT, sWriteValue, sFilePath)
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, Optional sFilePath As String = "")
Select Case Type
Case Params.STRANDH
'WritePrivateProfileString(nIndex, MAC_STRANDH, sWriteValue, sFilePath)
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)
MyBase.New(Type)
End Sub
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 nSlicingType As Integer = GetPrivateProfileInt(S_MACH_PRINTING3D, K_SLICINGTYPE, 0, CurrentMachine.sMachIniFile)
m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_SLICINGTYPE.VERTICAL, "Vertical")})
If nSlicingType >= 1 Then
m_ValueList.Add(New IdNameStruct(Machining.MPAR_SLICINGTYPE.DEG45, "45deg X"))
If nSlicingType >= 2 Then
m_ValueList.Add(New IdNameStruct(Machining.MPAR_SLICINGTYPE.DEG45_Y, "45deg Y"))
If nSlicingType >= 3 Then
m_ValueList.Add(New IdNameStruct(Machining.MPAR_SLICINGTYPE.HORIZONTAL, "Horizontal"))
End If
End If
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.RIBSTYPE
m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_RIBSTYPE.INTERNAL, "Internal"),
New IdNameStruct(Machining.MPAR_RIBSTYPE.EXTERNAL, "External"),
New IdNameStruct(Machining.MPAR_RIBSTYPE.UNBOUNDED, "Unbounded"),
New IdNameStruct(Machining.MPAR_RIBSTYPE.SUPPORT, "Support")})
m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_RIBSTYPE, 1))
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))
Case Params.DYNAMIC_MODE
m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_DYNAMIC_MODE.STANDARD, "Standard"),
New IdNameStruct(Machining.MPAR_DYNAMIC_MODE.FAST, "Fast")})
m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_DYNAMICMODE, 1))
End Select
End If
m_OrigSelValue = m_SelValue
End Sub
Friend Overrides Sub WriteParamOnDb(nIndex As Integer, Optional sFilePath As String = "")
Select Case Type
Case Params.SLICINGTYPE
WriteMachiningParam(nIndex, MAC_SLICINGTYPE, m_SelValue.Id, sFilePath)
Case Params.STRANDORDER
WriteMachiningParam(nIndex, MAC_STRANDORDER, m_SelValue.Id, sFilePath)
Case Params.DIRECTION
WriteMachiningParam(nIndex, MAC_DIRECTION, m_SelValue.Id, sFilePath)
Case Params.LINKTYPE
WriteMachiningParam(nIndex, MAC_LINKTYPE, m_SelValue.Id, sFilePath)
Case Params.LEADIN
WriteMachiningParam(nIndex, MAC_LEADIN, m_SelValue.Id, sFilePath)
Case Params.LEADOUT
WriteMachiningParam(nIndex, MAC_LEADOUT, m_SelValue.Id, sFilePath)
Case Params.RIBSTYPE
WriteMachiningParam(nIndex, MAC_RIBSTYPE, m_SelValue.Id, sFilePath)
Case Params.AUXSOLIDSINFILL
WriteMachiningParam(nIndex, MAC_AUXSOLIDSINFILL, m_SelValue.Id, sFilePath)
Case Params.AUXSOLIDSSTRANDORDER
WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTRANDORDER, m_SelValue.Id, sFilePath)
Case Params.AUXSOLIDSLINKTYPE
WriteMachiningParam(nIndex, MAC_AUXSOLIDSLINKTYPE, m_SelValue.Id, sFilePath)
Case Params.DYNAMIC_MODE
WriteMachiningParam(nIndex, MAC_DYNAMICMODE, m_SelValue.Id, sFilePath)
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)
MyBase.New(Type)
End Sub
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, Optional sFilePath As String = "")
Select Case Type
Case Params.SPIRALVASE
WriteMachiningParam(nIndex, MAC_SPIRALVASE, If(m_bValue, 1, 0), sFilePath)
Case Params.RIBSLINK
WriteMachiningParam(nIndex, MAC_RIBSLINK, If(m_bValue, 1, 0), sFilePath)
Case Params.RIBSINVERTORDER
WriteMachiningParam(nIndex, MAC_RIBSINVERTORDER, If(m_bValue, 1, 0), sFilePath)
Case Params.RIBSINVERTDIRECTION
WriteMachiningParam(nIndex, MAC_RIBSINVERTDIRECTION, If(m_bValue, 1, 0), sFilePath)
Case Params.RIBSLEADININVERT
WriteMachiningParam(nIndex, MAC_RIBSLEADININVERT, If(m_bValue, 1, 0), sFilePath)
Case Params.RIBSLEADOUTINVERT
WriteMachiningParam(nIndex, MAC_RIBSLEADOUTINVERT, If(m_bValue, 1, 0), sFilePath)
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, Optional sFilePath As String = "")
Dim sMaterials As String = ""
ReadMachiningParamSplit(nIndex, MAC_MATERIALS, "", sMaterials, sFilePath)
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, sFilePath)
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 OrderedMachiningParam
Inherits MachiningParam
Protected m_ValueList As ObservableCollection(Of IdNameStruct)
Public ReadOnly Property ValueList As ObservableCollection(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
End Set
End Property
Protected m_OrigValue As String
Public ReadOnly Property OrigValue As String
Get
Return m_OrigValue
End Get
End Property
Public Property Value As String
Get
Dim Temp As String = ""
For Each Item In m_ValueList
Temp &= Item.Id & ","
Next
Return Temp.TrimEnd(","c)
End Get
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
StringValueList = value.Split(","c)
End If
If StringValueList.Count <> 5 Then
StringValueList = StandardValueList
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
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
End Select
End Set
End Property
Public Overrides ReadOnly Property bIsModified As Boolean
Get
Return Value <> m_OrigValue
End Get
End Property
' Definizione comandi
Private m_cmdMoveUpOrder As ICommand
Private m_cmdMoveDownOrder As ICommand
Private m_cmdResetOrder As ICommand
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_ValueList = New ObservableCollection(Of IdNameStruct)
m_SelValue = Nothing
Else
Select Case Type
Case Params.PRINT_ORDER
m_ValueList = New ObservableCollection(Of IdNameStruct)
ReadMachiningParamString(nIndex, MAC_PRINTORDER, "", Value)
End Select
End If
m_OrigValue = Value
m_SelValue = Nothing
NotifyPropertyChanged(NameOf(SelValue))
End Sub
Friend Overrides Sub WriteParamOnDb(nIndex As Integer, Optional sFilePath As String = "")
Select Case Type
Case Params.PRINT_ORDER
WriteMachiningParam(nIndex, MAC_PRINTORDER, Value, sFilePath)
End Select
End Sub
Friend Overrides Sub SaveParam()
m_OrigValue = Value
End Sub
Friend Overrides Sub ResetParam()
Value = m_OrigValue
m_SelValue = Nothing
NotifyPropertyChanged(NameOf(ValueList))
NotifyPropertyChanged(NameOf(SelValue))
End Sub
#Region "COMMANDS"
#Region "MoveUpOrder"
Public ReadOnly Property MoveUpOrder_Command As ICommand
Get
If m_cmdMoveUpOrder Is Nothing Then
m_cmdMoveUpOrder = New Command(AddressOf MoveUpOrder)
End If
Return m_cmdMoveUpOrder
End Get
End Property
Public Sub MoveUpOrder()
If IsNothing(m_SelValue) Then Return
Dim nIndex As Integer = m_ValueList.IndexOf(m_SelValue)
If nIndex < 0 Then Return
If nIndex > 0 Then
m_ValueList.Move(nIndex, nIndex - 1)
NotifyPropertyChanged(NameOf(Value))
End If
End Sub
#End Region ' MoveUpOrder
#Region "MoveDownOrder"
Public ReadOnly Property MoveDownOrder_Command As ICommand
Get
If m_cmdMoveDownOrder Is Nothing Then
m_cmdMoveDownOrder = New Command(AddressOf MoveDownOrder)
End If
Return m_cmdMoveDownOrder
End Get
End Property
Public Sub MoveDownOrder()
If IsNothing(m_SelValue) Then Return
Dim nIndex As Integer = m_ValueList.IndexOf(m_SelValue)
If nIndex < 0 Then Return
If nIndex < m_ValueList.Count - 1 Then
m_ValueList.Move(nIndex, nIndex + 1)
NotifyPropertyChanged(NameOf(Value))
End If
End Sub
#End Region ' MoveDownOrder
#Region "ResetOrder"
Public ReadOnly Property ResetOrder_Command As ICommand
Get
If m_cmdResetOrder Is Nothing Then
m_cmdResetOrder = New Command(AddressOf ResetOrder)
End If
Return m_cmdResetOrder
End Get
End Property
Public Sub ResetOrder()
Dim CurrValue As String = Value
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))
End If
End Sub
#End Region ' ResetOrder
#End Region ' COMMANDS
End Class