Files
icarus/Icarus/MachiningDb/Machining.vb
T

2150 lines
100 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports System.Reflection
Imports EgtUILib
Imports EgtWPFLib5
Imports Icarus.Machining
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_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_UNBOUNDED = 5
RIB_EXTERNAL = 6
RIB_INTERNAL = 7
RIB_SUPPORT = 8
End Enum
Public Enum MPAR_INFILL_TYPE As Integer
NONE = 0
OFFSET = 16
ZIGZAG = 17
LINES = 32
GRID = 33
ZIGZAG_GRID = 34
HONEYCOMB = 35
HONEYCOMB_GRID = 36
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 = "New Machining"
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.INFILL, 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 Overridable 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
Protected Overridable 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
INFILL = 11
MATERIALS = 12
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, Me),
New CheckMachiningParam(MachiningParam.Params.SPIRALVASE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.STRANDH, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.STRANDW, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.STRANDCOUNT, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.OFFSET, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.STRANDOVERLAP, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.STARTPOINTOFFSETONSLICE, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.STRANDORDER, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.DIRECTION, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.G0FEED, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.G0FEEDZ, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.LINKZUP, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.TOOLDIAM, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.FLOWRATE_PC, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.DYNAMIC_MODE, nIndex, Me),
New OrderedMachiningParam(MachiningParam.Params.PRINT_ORDER, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.PREFLOWDELAY, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.POSTFLOWDELAY, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.SCREWBACK, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.SLICINGHEIGHT, nIndex, Me)})
Case Cathegories.LINK
m_sName = "Shell"
m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.INNERSHELLWIDTH, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.OFFSETLEADPOINT, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.LINKTYPE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.LINKPARAM, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.LEADIN, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.LEADINTANGDIST, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.LEADINORTHODIST, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.LEADOUT, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.LEADOUTTANGDIST, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.LEADOUTORTHODIST, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.COASTINGLEN, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.COASTINGFEED_PC, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.WIPELEN, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.WIPEFEED_PC, nIndex, Me)})
'New NumericMachiningParam(MachiningParam.Params.WIPEDIR, nIndex, Me)})
Case Cathegories.RIBS
m_sName = "Ribs"
m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.RIBSSTRANDWIDTH, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.RIBSTYPE, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.RIBSLIMITUNBOUNDEDWITHSOLID, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.RIBSOVERLAP, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.RIBSSTRANDCOUNT, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.RIBSLINK, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.RIBSINVERTORDER, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.RIBSINVERTDIRECTION, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.RIBSINVERTSTRANDORDER, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.RIBSLEADININVERT, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.RIBSLEADINLEN, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.RIBSLEADOUTINVERT, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTLEN, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTCOASTING, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTWIPE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.RIBSLEADOUTWIPEDIR, nIndex, Me)})
Case Cathegories.SHELL_NUMBER
m_sName = "Reduce Shell Number"
m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.SHELLNBRDIFFERENCE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.SHELLNBRCOASTING, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.SHELLNBRWIPE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.SHELLNBRWIPEDIR, nIndex, Me)})
Case Cathegories.AUX_SOLID
m_sName = "Filled Solid"
m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDWIDTH, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.AUXSOLIDSINFILLLINK, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDCOUNT, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDORDER, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSLINKTYPE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSLINKPARAM, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSOFFSETLEADPOINT, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSDENSITY, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSGRIDOVERLAP, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSDIRECTION, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSOFFSETX, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSOFFSETY, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSOVERLAP, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSCOASTINGLEN, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPELEN, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPEDIR, nIndex, Me)})
Case Cathegories.INFILL
m_sName = "Infill"
m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.INFILLSTRANDWIDTH, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.FLOORCOUNT, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.FLOORTYPE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.CEILCOUNT, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.CEILTYPE, nIndex, Me),
New ComboMachiningParam(MachiningParam.Params.INFILLTYPE, nIndex, Me),
New CheckMachiningParam(MachiningParam.Params.INFILLLINK, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLDENSITY, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLGRIDOVERLAP, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLDIRECTION, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLOFFSETX, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLOFFSETY, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLOVERLAP, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLCOASTING, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLWIPE, nIndex, Me),
New NumericMachiningParam(MachiningParam.Params.INFILLWIPEDIR, nIndex, Me)})
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), Me))
Next
End Select
' verifico dipendenze tra parametri
Select Case m_Type
Case Cathegories.LINK
For Each Param In {MachiningParam.Params.LINKTYPE, MachiningParam.Params.LEADIN, MachiningParam.Params.LEADOUT}
Dim MachiningParam As ComboMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param)
MachiningParam.ManageDependencyParam()
Next
Case Cathegories.RIBS
For Each Param In {MachiningParam.Params.RIBSTYPE}
Dim MachiningParam As ComboMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param)
MachiningParam.ManageDependencyParam()
Next
Case Cathegories.AUX_SOLID
For Each Param In {MachiningParam.Params.AUXSOLIDSINFILL}
Dim MachiningParam As ComboMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param)
MachiningParam.ManageDependencyParam()
Next
For Each Param In {MachiningParam.Params.AUXSOLIDSSTRANDCOUNT}
Dim MachiningParam As NumericMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param)
MachiningParam.ManageDependencyParam()
Next
Case Cathegories.INFILL
For Each Param In {MachiningParam.Params.FLOORCOUNT, MachiningParam.Params.CEILCOUNT}
Dim MachiningParam As NumericMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param)
MachiningParam.ManageDependencyParam()
Next
For Each Param In {MachiningParam.Params.INFILLTYPE}
Dim MachiningParam As ComboMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param)
MachiningParam.ManageDependencyParam()
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 Class ToolTipDataMsg
Inherits VMBase
Protected m_sNameTitleToolTip As String
Public ReadOnly Property sNameTitleToolTip As String
Get
Return m_sNameTitleToolTip
End Get
End Property
Protected m_sNameDescriptionToolTip As String
Public ReadOnly Property sNameDescriptionToolTip As String
Get
Return m_sNameDescriptionToolTip
End Get
End Property
Protected m_sIconOrientation As String
Public ReadOnly Property sIconOrientation As String
Get
Return m_sIconOrientation
End Get
End Property
Protected m_sIconToolTip_First As String
Public ReadOnly Property sIconToolTip_First As String
Get
Return m_sIconToolTip_First
End Get
End Property
Protected m_nDimension_First As Integer
Public ReadOnly Property nDimension_First As Integer
Get
Return m_nDimension_First
End Get
End Property
Protected m_nDimension_Second As Integer
Public ReadOnly Property nDimension_Second As Integer
Get
Return m_nDimension_Second
End Get
End Property
Protected m_sIconToolTip_Second As String
Public ReadOnly Property sIconToolTip_Second As String
Get
Return m_sIconToolTip_Second
End Get
End Property
Sub New(Type As MachiningParam.Params, bIsBeta As Boolean)
Dim sTitle As String = ""
Dim sDescription As String = ""
If GetPrivateProfileString(Type, K_TITLE, "", sTitle, CurrentMachine.sToolTipFilePath) > 0 Then
GetPrivateProfileString(Type, K_DESCRIPTION, "", sDescription, CurrentMachine.sToolTipFilePath)
If bIsBeta Then
m_sNameTitleToolTip = ReadToolTipMsg(sTitle) & " (BETA)"
Else
m_sNameTitleToolTip = ReadToolTipMsg(sTitle)
End If
m_sNameDescriptionToolTip = ReadToolTipMsg(sDescription)
End If
If GetPrivateProfileString(Type, K_FIRST_ICON, "", m_sIconToolTip_First, CurrentMachine.sToolTipFilePath) > 0 Then
GetPrivateProfileString(Type, K_ORIENTATION_ICON, "", m_sIconOrientation, CurrentMachine.sToolTipFilePath)
m_nDimension_First = 200
End If
If GetPrivateProfileString(Type, K_SECOND_ICON, "", m_sIconToolTip_Second, CurrentMachine.sToolTipFilePath) > 0 Then
GetPrivateProfileString(Type, K_ORIENTATION_ICON, "", m_sIconOrientation, CurrentMachine.sToolTipFilePath)
m_nDimension_Second = 200
End If
End Sub
End Class
Public MustInherit Class MachiningParam
Inherits VMBase
Protected m_Tooltip As ToolTipDataMsg
Public ReadOnly Property Tooltip As ToolTipDataMsg
Get
Return m_Tooltip
End Get
End Property
Public Enum MinMaxTypes As Integer
ABSOLUT = 1
PERCENTAGE = 2
End Enum
Public Enum Params As Integer
SLICINGTYPE = 1
SPIRALVASE = 2
STRANDH = 3
STRANDW = 4
STRANDCOUNT = 5
OFFSET = 6
STRANDOVERLAP = 7
STARTPOINTOFFSETONSLICE = 8
STRANDORDER = 9
DIRECTION = 10
G0FEED = 12
LINKZUP = 13
G0FEEDZ = 14
TOOLDIAM = 15
FLOWRATE_PC = 16
DYNAMIC_MODE = 17
PRINT_ORDER = 18
PREFLOWDELAY = 19
POSTFLOWDELAY = 20
SCREWBACK = 21
SLICINGHEIGHT = 22
LINKTYPE = 51
LINKPARAM = 52
LEADIN = 53
LEADINTANGDIST = 54
LEADINORTHODIST = 55
OFFSETLEADPOINT = 56
LEADOUT = 57
LEADOUTTANGDIST = 58
LEADOUTORTHODIST = 59
COASTINGLEN = 60
COASTINGFEED_PC = 61
WIPELEN = 62
WIPEFEED_PC = 63
INNERSHELLWIDTH = 64
'WIPEDIR = 64
RIBSTYPE = 101
RIBSOVERLAP = 102
RIBSSTRANDCOUNT = 103
RIBSLINK = 104
RIBSINVERTORDER = 105
RIBSINVERTDIRECTION = 106
RIBSINVERTSTRANDORDER = 107
RIBSLEADININVERT = 108
RIBSLEADINLEN = 109
RIBSLEADOUTINVERT = 110
RIBSLEADOUTLEN = 111
RIBSLEADOUTCOASTING = 112
RIBSLEADOUTWIPE = 113
RIBSLEADOUTWIPEDIR = 114
RIBSLIMITUNBOUNDEDWITHSOLID = 115
RIBSSTRANDWIDTH = 116
SHELLNBRDIFFERENCE = 151
SHELLNBRCOASTING = 152
SHELLNBRWIPE = 153
SHELLNBRWIPEDIR = 154
AUXSOLIDSOVERLAP = 201
AUXSOLIDSINFILL = 202
AUXSOLIDSSTRANDORDER = 203
AUXSOLIDSLINKTYPE = 204
AUXSOLIDSLINKPARAM = 205
AUXSOLIDSSTARTPOINTOFFSETONSLICE = 206
AUXSOLIDSOFFSETLEADPOINT = 207
AUXSOLIDSDENSITY = 208
AUXSOLIDSGRIDOVERLAP = 209
AUXSOLIDSDIRECTION = 210
AUXSOLIDSOFFSETX = 211
AUXSOLIDSOFFSETY = 212
AUXSOLIDSCOASTINGLEN = 213
AUXSOLIDSWIPELEN = 214
AUXSOLIDSWIPEDIR = 215
AUXSOLIDSSTRANDCOUNT = 216
AUXSOLIDSINFILLLINK = 217
AUXSOLIDSSTRANDWIDTH = 218
FLOORCOUNT = 250
FLOORTYPE = 251
CEILCOUNT = 252
CEILTYPE = 253
INFILLTYPE = 254
INFILLLINK = 255
INFILLDENSITY = 256
INFILLOVERLAP = 257
INFILLGRIDOVERLAP = 258
INFILLDIRECTION = 259
INFILLOFFSETX = 260
INFILLOFFSETY = 261
INFILLCOASTING = 262
INFILLWIPE = 263
INFILLWIPEDIR = 264
INFILLSTRANDWIDTH = 265
Materials = 500
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
Protected m_Cathegory As MachiningCathegory
Public ReadOnly Property Cathegory As MachiningCathegory
Get
Return m_Cathegory
End Get
End Property
Public ReadOnly Property bIsBeta As Boolean
Get
Select Case m_Type
Case Params.FLOORCOUNT, Params.FLOORTYPE, Params.CEILCOUNT, Params.CEILTYPE, Params.INFILLTYPE
Return True
Case Else
Return False
End Select
End Get
End Property
Public ReadOnly Property IsBeta_Visibility As Visibility
Get
Return If(bIsBeta, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
Sub New(Type As Params, Cathegory As MachiningCathegory)
m_Type = Type
m_Cathegory = Cathegory
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.INNERSHELLWIDTH
m_sName = "Custom Inner Shell Width"
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.PREFLOWDELAY
m_sName = "Pre Flow Delay"
Case Params.POSTFLOWDELAY
m_sName = "Post Flow Delay"
Case Params.SCREWBACK
m_sName = "Screw Back"
Case Params.SLICINGHEIGHT
m_sName = "Slicing Height"
Case Params.RIBSSTRANDWIDTH
m_sName = "Custom Strand Width"
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.RIBSINVERTSTRANDORDER
m_sName = "Invert Strand Order"
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.RIBSLIMITUNBOUNDEDWITHSOLID
m_sName = "Limit Unbounded With Solid"
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.AUXSOLIDSSTRANDWIDTH
m_sName = "Custom Strand Width"
Case Params.AUXSOLIDSOVERLAP
m_sName = "Overlap [%]"
Case Params.AUXSOLIDSINFILL
m_sName = "Infill"
Case Params.AUXSOLIDSINFILLLINK
m_sName = "Infill Link"
Case Params.AUXSOLIDSSTRANDCOUNT
m_sName = "Strand Count"
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.AUXSOLIDSOFFSETLEADPOINT
m_sName = "Offset Lead Point"
Case Params.AUXSOLIDSDENSITY
m_sName = "Density [%]"
Case Params.AUXSOLIDSGRIDOVERLAP
m_sName = "Grid Overlap [%]"
Case Params.AUXSOLIDSDIRECTION
m_sName = "Direction"
Case Params.AUXSOLIDSOFFSETX
m_sName = "Offset X"
Case Params.AUXSOLIDSOFFSETY
m_sName = "Offset Y"
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"
Case Params.INFILLSTRANDWIDTH
m_sName = "Custom Strand Width"
Case Params.FLOORTYPE
m_sName = "Floor Type"
Case Params.CEILCOUNT
m_sName = "Ceil Count"
Case Params.CEILTYPE
m_sName = "Ceil Type"
Case Params.INFILLTYPE
m_sName = "Infill Type"
Case Params.INFILLLINK
m_sName = "Link"
Case Params.INFILLDENSITY
m_sName = "Density [%]"
Case Params.INFILLOVERLAP
m_sName = "Overlap [%]"
Case Params.INFILLGRIDOVERLAP
m_sName = "Grid Overlap [%]"
Case Params.INFILLDIRECTION
m_sName = "Direction"
Case Params.INFILLOFFSETX
m_sName = "Offset X"
Case Params.INFILLOFFSETY
m_sName = "Offset Y"
Case Params.INFILLCOASTING
m_sName = "Coasting"
Case Params.INFILLWIPE
m_sName = "Wipe"
Case Params.INFILLWIPEDIR
m_sName = "Wipe Direction"
End Select
m_Tooltip = New ToolTipDataMsg(m_Type, bIsBeta)
End Sub
Sub New(sName As String, Cathegory As MachiningCathegory)
m_Type = Params.MATERIALS
m_Cathegory = Cathegory
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_bIsActiveMinMax As Boolean = False
Protected m_MinMaxLinkedParam As Params = 0
Protected m_MinMaxType As MinMaxTypes = 0
Protected m_dMinValue As Double
Protected m_dMaxValue As Double
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)
Dim dTempValue As Double = 0
If m_bIsLen Then
StringToLen(value, dTempValue)
Else
StringToDouble(value, dTempValue)
End If
If m_bIsActiveMinMax Then
If m_MinMaxType = MinMaxTypes.ABSOLUT Then
If dTempValue >= m_dMinValue AndAlso dTempValue <= m_dMaxValue Then
m_dValue = dTempValue
End If
ElseIf m_MinMaxType = MinMaxTypes.PERCENTAGE Then
Dim LinkedParam As MachiningParam = Nothing
' cerco il parametro a cui e' collegato
For Each CurrCathegory In Map.refMachiningDbVM.SelMachining.CathegoryList
LinkedParam = CurrCathegory.MachiningParamList.FirstOrDefault(Function(x) x.Type = m_MinMaxLinkedParam)
If Not IsNothing(LinkedParam) Then Exit For
Next
If Not IsNothing(LinkedParam) AndAlso TypeOf LinkedParam Is NumericMachiningParam Then
Dim NumericLinkedParam As NumericMachiningParam = DirectCast(LinkedParam, NumericMachiningParam)
If dTempValue >= NumericLinkedParam.dValue * m_dMinValue / 100 AndAlso dTempValue <= NumericLinkedParam.dValue * m_dMaxValue / 100 Then
m_dValue = dTempValue
End If
Else
m_dValue = dTempValue
End If
End If
Else
m_dValue = dTempValue
End If
NotifyPropertyChanged(NameOf(sValue))
ManageDependencyParam()
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
Protected m_bIsActive As Boolean = True
Public ReadOnly Property bIsActive As Boolean
Get
Return m_bIsActive
End Get
End Property
Friend Sub SetIsActive(bValue As Boolean)
m_bIsActive = bValue
NotifyPropertyChanged(NameOf(bIsActive))
End Sub
Sub New(Type As Params, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
End Sub
Sub New(Type As Params, nIndex As Integer, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
' leggo ed imposto eventuali min e max
Dim sMinMax As String = ""
If GetPrivateProfileString(S_MINMAX, Type, "", sMinMax, CurrentMachine.sMachIniFile) > 0 Then
Dim sMinMaxValues() As String = sMinMax.Split(","c)
Dim dMin As Double = 0
Dim dMax As Double = 0
If sMinMaxValues.Count() = 2 Then
If StringToDouble(sMinMaxValues(0), dMin) AndAlso StringToDouble(sMinMaxValues(1), dMax) Then
m_MinMaxType = MinMaxTypes.ABSOLUT
m_dMinValue = dMin
m_dMaxValue = dMax
m_bIsActiveMinMax = True
End If
ElseIf sMinMaxValues.Count() > 2 Then
Dim nMinMaxType As Integer = 0
If StringToDouble(sMinMaxValues(0), nMinMaxType) AndAlso nMinMaxType = 1 Then
If StringToDouble(sMinMaxValues(0), dMin) AndAlso StringToDouble(sMinMaxValues(1), dMax) Then
m_MinMaxType = nMinMaxType
m_dMinValue = dMin
m_dMaxValue = dMax
m_bIsActiveMinMax = True
End If
ElseIf StringToDouble(sMinMaxValues(0), nMinMaxType) AndAlso nMinMaxType = 2 Then
Dim nMinMaxLinkedParam As Integer = 0
If sMinMaxValues.Count() >= 4 AndAlso Integer.TryParse(sMinMaxValues(1), nMinMaxLinkedParam) AndAlso StringToDouble(sMinMaxValues(2), dMin) AndAlso StringToDouble(sMinMaxValues(3), dMax) Then
m_MinMaxLinkedParam = nMinMaxLinkedParam
m_MinMaxType = nMinMaxType
m_dMinValue = dMin
m_dMaxValue = dMax
m_bIsActiveMinMax = True
End If
End If
End If
End If
If Type = Params.SLICINGHEIGHT Then
m_dMinValue = 0
m_dMaxValue = CurrentMachine.dSlicingMaxHeight
m_bIsActiveMinMax = True
End If
' leggo parametri da Db
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.INNERSHELLWIDTH
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INNERSHELLWIDTH, 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.PREFLOWDELAY
m_dValue = ReadMachiningParamDouble(nIndex, MAC_PREFLOWDELAY, 0)
m_bIsLen = False
Case Params.POSTFLOWDELAY
m_dValue = ReadMachiningParamDouble(nIndex, MAC_POSTFLOWDELAY, 0)
m_bIsLen = False
Case Params.SCREWBACK
m_dValue = ReadMachiningParamDouble(nIndex, MAC_SCREWBACK, 45)
m_bIsLen = False
Case Params.SLICINGHEIGHT
m_dValue = ReadMachiningParamDouble(nIndex, MAC_SLICINGHEIGHT, CurrentMachine.dSlicingMaxHeight)
m_bIsLen = False
Case Params.RIBSSTRANDWIDTH
m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSSTRANDWIDTH, 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.AUXSOLIDSSTRANDWIDTH
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSSTRANDWIDTH, 0)
m_bIsLen = True
Case Params.AUXSOLIDSSTRANDCOUNT
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSSTRANDCOUNT, 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.AUXSOLIDSOFFSETLEADPOINT
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSOFFSETLEADPOINT, 0)
m_bIsLen = True
Case Params.AUXSOLIDSDENSITY
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSDENSITY, 0)
m_bIsLen = False
Case Params.AUXSOLIDSGRIDOVERLAP
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSGRIDOVERLAP, 0)
m_bIsLen = True
Case Params.AUXSOLIDSDIRECTION
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSDIRECTION, 0)
m_bIsLen = False
Case Params.AUXSOLIDSOFFSETX
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSOFFSETX, 0)
m_bIsLen = True
Case Params.AUXSOLIDSOFFSETY
m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSOFFSETY, 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
Case Params.INFILLSTRANDWIDTH
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLSTRANDWIDTH, 0)
m_bIsLen = True
Case Params.CEILCOUNT
m_dValue = ReadMachiningParamDouble(nIndex, MAC_CEILCOUNT, 0)
m_bIsLen = False
Case Params.INFILLDENSITY
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLDENSITY, 0)
m_bIsLen = False
Case Params.INFILLOVERLAP
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLOVERLAP, 0)
m_bIsLen = False
Case Params.INFILLGRIDOVERLAP
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLGRIDOVERLAP, 0)
m_bIsLen = False
Case Params.INFILLDIRECTION
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLDIRECTION, 0)
m_bIsLen = False
Case Params.INFILLOFFSETX
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLOFFSETX, 0)
m_bIsLen = True
Case Params.INFILLOFFSETY
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLOFFSETY, 0)
m_bIsLen = True
Case Params.INFILLCOASTING
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLCOASTING, 0)
m_bIsLen = True
Case Params.INFILLWIPE
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLWIPE, 0)
m_bIsLen = True
Case Params.INFILLWIPEDIR
m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLWIPEDIR, 0)
m_bIsLen = False
End Select
End If
m_dOrigValue = m_dValue
End Sub
Friend Sub ManageDependencyParam()
' gestisco dis/attivazione parametri dipendenti
Select Case m_Type
Case Params.FLOORCOUNT
Dim ComboMachiningParam As ComboMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.FLOORTYPE)
ComboMachiningParam.SetIsActive(m_dValue <> 0)
Case Params.CEILCOUNT
Dim ComboMachiningParam As ComboMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.CEILTYPE)
ComboMachiningParam.SetIsActive(m_dValue <> 0)
Case Params.AUXSOLIDSSTRANDCOUNT
Dim AuxSolidsInfillParam As ComboMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSINFILL)
Dim ComboMachiningParam As ComboMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSSTRANDORDER)
ComboMachiningParam.SetIsActive(m_dValue > 0 OrElse AuxSolidsInfillParam.SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET)
ComboMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSLINKTYPE)
ComboMachiningParam.SetIsActive(m_dValue > 0 OrElse AuxSolidsInfillParam.SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET)
Dim NumericMachiningParam As NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSLINKPARAM)
NumericMachiningParam.SetIsActive(m_dValue > 0 OrElse AuxSolidsInfillParam.SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET)
NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE)
NumericMachiningParam.SetIsActive(m_dValue > 0 OrElse AuxSolidsInfillParam.SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET)
NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSOFFSETLEADPOINT)
NumericMachiningParam.SetIsActive(m_dValue > 0 OrElse AuxSolidsInfillParam.SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET)
End Select
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.INNERSHELLWIDTH
WriteMachiningParam(nIndex, MAC_INNERSHELLWIDTH, 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.PREFLOWDELAY
WriteMachiningParam(nIndex, MAC_PREFLOWDELAY, sWriteValue, sFilePath)
Case Params.POSTFLOWDELAY
WriteMachiningParam(nIndex, MAC_POSTFLOWDELAY, sWriteValue, sFilePath)
Case Params.SCREWBACK
WriteMachiningParam(nIndex, MAC_SCREWBACK, sWriteValue, sFilePath)
Case Params.SLICINGHEIGHT
WriteMachiningParam(nIndex, MAC_SLICINGHEIGHT, sWriteValue, sFilePath)
Case Params.RIBSSTRANDWIDTH
WriteMachiningParam(nIndex, MAC_RIBSSTRANDWIDTH, 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.AUXSOLIDSSTRANDWIDTH
WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTRANDWIDTH, sWriteValue, sFilePath)
Case Params.AUXSOLIDSSTRANDCOUNT
WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTRANDCOUNT, 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.AUXSOLIDSOFFSETLEADPOINT
WriteMachiningParam(nIndex, MAC_AUXSOLIDSOFFSETLEADPOINT, sWriteValue, sFilePath)
Case Params.AUXSOLIDSDENSITY
WriteMachiningParam(nIndex, MAC_AUXSOLIDSDENSITY, sWriteValue, sFilePath)
Case Params.AUXSOLIDSGRIDOVERLAP
WriteMachiningParam(nIndex, MAC_AUXSOLIDSGRIDOVERLAP, sWriteValue, sFilePath)
Case Params.AUXSOLIDSDIRECTION
WriteMachiningParam(nIndex, MAC_AUXSOLIDSDIRECTION, sWriteValue, sFilePath)
Case Params.AUXSOLIDSOFFSETX
WriteMachiningParam(nIndex, MAC_AUXSOLIDSOFFSETX, sWriteValue, sFilePath)
Case Params.AUXSOLIDSOFFSETY
WriteMachiningParam(nIndex, MAC_AUXSOLIDSOFFSETY, 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)
Case Params.INFILLSTRANDWIDTH
WriteMachiningParam(nIndex, MAC_INFILLSTRANDWIDTH, sWriteValue, sFilePath)
Case Params.CEILCOUNT
WriteMachiningParam(nIndex, MAC_CEILCOUNT, sWriteValue, sFilePath)
Case Params.INFILLDENSITY
WriteMachiningParam(nIndex, MAC_INFILLDENSITY, sWriteValue, sFilePath)
Case Params.INFILLOVERLAP
WriteMachiningParam(nIndex, MAC_INFILLOVERLAP, sWriteValue, sFilePath)
Case Params.INFILLGRIDOVERLAP
WriteMachiningParam(nIndex, MAC_INFILLGRIDOVERLAP, sWriteValue, sFilePath)
Case Params.INFILLDIRECTION
WriteMachiningParam(nIndex, MAC_INFILLDIRECTION, sWriteValue, sFilePath)
Case Params.INFILLOFFSETX
WriteMachiningParam(nIndex, MAC_INFILLOFFSETX, sWriteValue, sFilePath)
Case Params.INFILLOFFSETY
WriteMachiningParam(nIndex, MAC_INFILLOFFSETY, sWriteValue, sFilePath)
Case Params.INFILLCOASTING
WriteMachiningParam(nIndex, MAC_INFILLCOASTING, sWriteValue, sFilePath)
Case Params.INFILLWIPE
WriteMachiningParam(nIndex, MAC_INFILLWIPE, sWriteValue, sFilePath)
Case Params.INFILLWIPEDIR
WriteMachiningParam(nIndex, MAC_INFILLWIPEDIR, 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, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
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))
ManageDependencyParam()
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
Protected m_bIsActive As Boolean = True
Public ReadOnly Property bIsActive As Boolean
Get
Return m_bIsActive
End Get
End Property
Friend Sub SetIsActive(bValue As Boolean)
m_bIsActive = bValue
NotifyPropertyChanged(NameOf(bIsActive))
End Sub
Sub New(Type As Params, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
End Sub
Sub New(Type As Params, nIndex As Integer, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
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, Machining.MPAR_STRANDORDERS.OUTTOIN))
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, Machining.MPAR_DIRECTIONS.CCW))
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, Machining.MPAR_LEADINOUT.NONE))
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, Machining.MPAR_LEADINOUT.NONE))
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, Machining.MPAR_LEADINOUT.NONE))
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, Machining.MPAR_RIBSTYPE.INTERNAL))
Case Params.AUXSOLIDSINFILL
m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_INFILL_TYPE.NONE, "None"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.OFFSET, "Offset"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.ZIGZAG, "ZigZag"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.LINES, "Lines"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.GRID, "Grid"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.ZIGZAG_GRID, "Zigzag Grid"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.HONEYCOMB, "Honeycomb"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.HONEYCOMB_GRID, "Honeycomb Grid")})
m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSINFILL, Machining.MPAR_INFILL_TYPE.NONE))
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, Machining.MPAR_STRANDORDERS.OUTTOIN))
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, Machining.MPAR_LINKTYPES.NONE))
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, Machining.MPAR_DYNAMIC_MODE.STANDARD))
Case Params.FLOORTYPE
m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_INFILL_TYPE.OFFSET, "Offset"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.ZIGZAG, "ZigZag")})
m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_FLOORTYPE, Machining.MPAR_INFILL_TYPE.OFFSET))
Case Params.CEILTYPE
m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_INFILL_TYPE.OFFSET, "Offset"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.ZIGZAG, "ZigZag")})
m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_CEILTYPE, Machining.MPAR_INFILL_TYPE.OFFSET))
Case Params.INFILLTYPE
m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_INFILL_TYPE.NONE, "None"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.LINES, "Lines"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.GRID, "Grid"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.ZIGZAG_GRID, "Zigzag Grid"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.HONEYCOMB, "Honeycomb"),
New IdNameStruct(Machining.MPAR_INFILL_TYPE.HONEYCOMB_GRID, "Honeycomb Grid")})
m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMachiningParamDouble(nIndex, MAC_INFILLTYPE, Machining.MPAR_INFILL_TYPE.NONE))
End Select
End If
m_OrigSelValue = m_SelValue
End Sub
Friend Sub ManageDependencyParam()
' gestisco dis/attivazione parametri dipendenti
Select Case m_Type
Case Params.LINKTYPE
Dim NumMachiningParam As NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.LINKPARAM)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_LINKTYPES.NONE)
Case Params.LEADIN
Dim NumMachiningParam As NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.LEADINTANGDIST)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_LEADINOUT.NONE)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.LEADINORTHODIST)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_LEADINOUT.NONE)
Case Params.LEADOUT
Dim NumMachiningParam As NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.LEADOUTTANGDIST)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_LEADINOUT.NONE)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.LEADOUTORTHODIST)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_LEADINOUT.NONE)
Case Params.RIBSTYPE
Dim CheckMachiningParam As CheckMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.RIBSLIMITUNBOUNDEDWITHSOLID)
CheckMachiningParam.SetIsActive(m_SelValue.Id = MPAR_RIBSTYPE.UNBOUNDED)
Case Params.AUXSOLIDSINFILL
Dim AuxSolidsStrandCountParam As NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSSTRANDCOUNT)
Dim ComboMachiningParam As ComboMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSSTRANDORDER)
ComboMachiningParam.SetIsActive(m_SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET OrElse AuxSolidsStrandCountParam.dValue > 0)
ComboMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSLINKTYPE)
ComboMachiningParam.SetIsActive(m_SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET OrElse AuxSolidsStrandCountParam.dValue > 0)
Dim NumMachiningParam As NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSLINKPARAM)
NumMachiningParam.SetIsActive(m_SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET OrElse AuxSolidsStrandCountParam.dValue > 0)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE)
NumMachiningParam.SetIsActive(m_SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET OrElse AuxSolidsStrandCountParam.dValue > 0)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSOFFSETLEADPOINT)
NumMachiningParam.SetIsActive(m_SelValue.Id = Machining.MPAR_INFILL_TYPE.OFFSET OrElse AuxSolidsStrandCountParam.dValue > 0)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSDENSITY)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.ZIGZAG AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.OFFSET)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSGRIDOVERLAP)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.ZIGZAG AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.OFFSET AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.LINES AndAlso
m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.GRID)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSDIRECTION)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.ZIGZAG AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.OFFSET)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSOFFSETX)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.ZIGZAG AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.OFFSET)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSOFFSETY)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.ZIGZAG AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.OFFSET)
Dim CheckMachiningParam As CheckMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.AUXSOLIDSINFILLLINK)
CheckMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.ZIGZAG AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.OFFSET)
Case Params.INFILLTYPE
Dim NumMachiningParam As NumericMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.INFILLDENSITY)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.INFILLGRIDOVERLAP)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.LINES AndAlso m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.GRID)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.INFILLDIRECTION)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.INFILLOFFSETX)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE)
NumMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.INFILLOFFSETY)
NumMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE)
Dim CheckMachiningParam As CheckMachiningParam = m_Cathegory.MachiningParamList.FirstOrDefault(Function(z) z.Type = Params.INFILLLINK)
CheckMachiningParam.SetIsActive(m_SelValue.Id <> Machining.MPAR_INFILL_TYPE.NONE)
End Select
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)
Case Params.FLOORTYPE
WriteMachiningParam(nIndex, MAC_FLOORTYPE, m_SelValue.Id, sFilePath)
Case Params.CEILTYPE
WriteMachiningParam(nIndex, MAC_CEILTYPE, m_SelValue.Id, sFilePath)
Case Params.INFILLTYPE
WriteMachiningParam(nIndex, MAC_INFILLTYPE, 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
Protected m_bIsActive As Boolean = True
Public ReadOnly Property bIsActive As Boolean
Get
Return m_bIsActive
End Get
End Property
Friend Sub SetIsActive(bValue As Boolean)
m_bIsActive = bValue
NotifyPropertyChanged(NameOf(bIsActive))
End Sub
Sub New(Type As Params, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
End Sub
Sub New(Type As Params, nIndex As Integer, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
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.RIBSINVERTSTRANDORDER
m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSINVERTSTRANDORDER, 0)
Case Params.RIBSLEADININVERT
m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADININVERT, 0)
Case Params.RIBSLEADOUTINVERT
m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLEADOUTINVERT, 0)
Case Params.RIBSLIMITUNBOUNDEDWITHSOLID
m_bValue = ReadMachiningParamDouble(nIndex, MAC_RIBSLIMITUNBOUNDEDWITHSOLID, 0)
Case Params.AUXSOLIDSINFILLLINK
m_bValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSINFILLLINK, 0)
Case Params.INFILLLINK
m_bValue = ReadMachiningParamDouble(nIndex, MAC_INFILLLINK, 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.RIBSINVERTSTRANDORDER
WriteMachiningParam(nIndex, MAC_RIBSINVERTSTRANDORDER, 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)
Case Params.RIBSLIMITUNBOUNDEDWITHSOLID
WriteMachiningParam(nIndex, MAC_RIBSLIMITUNBOUNDEDWITHSOLID, If(m_bValue, 1, 0), sFilePath)
Case Params.AUXSOLIDSINFILLLINK
WriteMachiningParam(nIndex, MAC_AUXSOLIDSINFILLLINK, If(m_bValue, 1, 0), sFilePath)
Case Params.INFILLLINK
WriteMachiningParam(nIndex, MAC_INFILLLINK, 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, Cathegory As MachiningCathegory)
MyBase.New(sName, Cathegory)
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_StandardValueOrderList As List(Of Integer)
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 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 IntegerValueList.Count <> 8 Then
IntegerValueList = m_StandardValueOrderList
End If
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
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
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, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
End Sub
Sub New(Type As Params, nIndex As Integer, Cathegory As MachiningCathegory)
MyBase.New(Type, Cathegory)
If nIndex = 0 Then
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 Shell"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.INFILL, "Infill"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.AUX_SOLID, "Filled Solid"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_UNBOUNDED, "Unbounded Rib"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_EXTERNAL, "External Rib"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_INTERNAL, "Internal Rib"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_SUPPORT, "Support Rib")})
m_SelValue = Nothing
End Select
Else
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 Shell"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.INFILL, "Infill"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.AUX_SOLID, "Filled Solid"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_UNBOUNDED, "Unbounded Rib"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_EXTERNAL, "External Rib"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_INTERNAL, "Internal Rib"),
New IdNameStruct(Machining.MPAR_PRINT_ORDER.RIB_SUPPORT, "Support Rib")})
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
OrderByReference(m_ValueList, m_StandardValueOrderList)
m_ValueList = New ObservableCollection(Of IdNameStruct)(m_ValueList.OrderBy(Function(x) x.Id))
If Value <> CurrValue Then
NotifyPropertyChanged(NameOf(ValueList))
NotifyPropertyChanged(NameOf(Value))
NotifyPropertyChanged(NameOf(SelValue))
End If
End Sub
#End Region ' ResetOrder
#End Region ' COMMANDS
End Class