Files
icarus/Icarus/MaterialDb/Material.vb
DarioS 40970b417a Icarus :
- assegnazione default nuovi  parametri di materiali
- sistemazione esportazione 3mf/stl
- assegnazione direttorio base dei file lua in esecuzione degli stessi.
2023-01-12 09:38:33 +01:00

869 lines
30 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.ComponentModel
Imports System.Text
Imports EgtUILib
Imports EgtWPFLib5
Public Class Material
Inherits VMBase
Private m_CathegoryList As New ObservableCollection(Of MaterialCathegory)
Public ReadOnly Property CathegoryList As ObservableCollection(Of MaterialCathegory)
Get
Return m_CathegoryList
End Get
End Property
Private 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.MaterialParamList.Any(Function(y) y.bIsModified))
NotifyPropertyChanged(NameOf(ghName))
End Sub
Private m_nIndex As Integer
Public ReadOnly Property nIndex As Integer
Get
Return m_nIndex
End Get
End Property
Private m_sGUID As String
Public ReadOnly Property sGUID As String
Get
Return m_sGUID
End Get
End Property
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
Map.refMaterialDbVM.SetNameVisibility(False)
NotifyPropertyChanged(NameOf(ghName))
End Set
End Property
Public ReadOnly Property ghName As String
Get
Return m_sName & If(m_bIsModified, "*", "")
End Get
End Property
' per lettura da file
Sub New(nIndex As Integer)
m_nIndex = nIndex
ReadMaterialParamString(nIndex, MAT_GUID, "", m_sGUID)
ReadMaterialParamString(nIndex, MAT_NAME, "", m_sName)
'EgtGetStringUtf8FromIni(nIndex, MAT_NAME, "", m_sName, sMatIniFilePath)
m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.GENERAL, nIndex))
m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.TEMPERATURES, nIndex))
m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.CONSTANT, nIndex))
For Each Cathegory In m_CathegoryList
For Each MaterialParam In Cathegory.MaterialParamList
AddHandler MaterialParam.PropertyChanged, AddressOf OnMaterialParamPropertyChanged
Next
Next
End Sub
' per copia
Sub New()
m_nIndex = Map.refMaterialDbVM.MaterialList.Max(Function(x) x.nIndex) + 1
m_sGUID = Guid.NewGuid.ToString()
m_sName = "New Material Param"
Dim nCopyIndex As Integer = Map.refMaterialDbVM.SelMaterial.m_nIndex
m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.GENERAL, nCopyIndex))
Dim Orig As StringMaterialParam = m_CathegoryList(0).MaterialParamList.FirstOrDefault(Function(x) x.Type = MaterialParam.Params.ORIG)
If Not IsNothing(Orig) Then
Orig.SetGuid(Map.refMaterialDbVM.SelMaterial.m_sGUID)
End If
m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.TEMPERATURES, nCopyIndex))
m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.CONSTANT, nCopyIndex))
For Each Cathegory In m_CathegoryList
For Each MaterialParam In Cathegory.MaterialParamList
AddHandler MaterialParam.PropertyChanged, AddressOf OnMaterialParamPropertyChanged
Next
Next
m_bIsModified = True
End Sub
Private Sub ReadAllParams()
'm_nSlicingType = ReadMaterialParamDouble(m_nIndex, MAC_SLICINGTYPE, 0, CurrentMachine.sMachiningFilePath)
'm_dStrandH = ReadMaterialParamDouble(m_nIndex, MAC_STRANDH, 0, CurrentMachine.sMachiningFilePath)
'm_dStrandW = ReadMaterialParamDouble(m_nIndex, MAC_STRANDW, 0, CurrentMachine.sMachiningFilePath)
'm_nStrandCount = ReadMaterialParamDouble(m_nIndex, MAC_STRANDCOUNT, 0, CurrentMachine.sMachiningFilePath)
'm_dOffset = ReadMaterialParamDouble(m_nIndex, MAC_OFFSET, 0, CurrentMachine.sMachiningFilePath)
'm_dStartPointOffsetOnSlice = ReadMaterialParamDouble(m_nIndex, MAC_STARTPOINTOFFSETONSLICE, 0, CurrentMachine.sMachiningFilePath)
'm_dStrandOrder = ReadMaterialParamDouble(m_nIndex, MAC_STRANDORDER, 0, CurrentMachine.sMachiningFilePath)
'm_dDirection = ReadMaterialParamDouble(m_nIndex, MAC_DIRECTION, 0, CurrentMachine.sMachiningFilePath)
'm_dLinkType = ReadMaterialParamDouble(m_nIndex, MAC_LINKTYPE, 0, CurrentMachine.sMachiningFilePath)
'm_dLinkParam = ReadMaterialParamDouble(m_nIndex, MAC_LINKPARAM, 0, CurrentMachine.sMachiningFilePath)
'm_dLinkZup = ReadMaterialParamDouble(m_nIndex, MAC_LINKZUP, 0, CurrentMachine.sMachiningFilePath)
'm_dOffsetLeadPoint = ReadMaterialParamDouble(m_nIndex, MAC_OFFSETLEADPOINT, 0, CurrentMachine.sMachiningFilePath)
'm_dLeadIn = ReadMaterialParamDouble(m_nIndex, MAC_LEADIN, 0, CurrentMachine.sMachiningFilePath)
'm_dLeadInTangDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADINTANGDIST, 0, CurrentMachine.sMachiningFilePath)
'm_dLeadInOrthoDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADINORTHODIST, 0, CurrentMachine.sMachiningFilePath)
'm_dLeadOut = ReadMaterialParamDouble(m_nIndex, MAC_LEADOUT, 0, CurrentMachine.sMachiningFilePath)
'm_dLeadOutTangDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADOUTTANGDIST, 0, CurrentMachine.sMachiningFilePath)
'm_dLeadOutOrthoDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADOUTORTHODIST, 0, CurrentMachine.sMachiningFilePath)
'm_dCoastingLen = ReadMaterialParamDouble(m_nIndex, MAC_COASTINGLEN, 0, CurrentMachine.sMachiningFilePath)
'm_dCoastingFeed = ReadMaterialParamDouble(m_nIndex, MAC_COASTINGFEED, 0, CurrentMachine.sMachiningFilePath)
'm_dWipeLen = ReadMaterialParamDouble(m_nIndex, MAC_WIPELEN, 0, CurrentMachine.sMachiningFilePath)
'm_dWipeFeedPu = ReadMaterialParamDouble(m_nIndex, MAC_WIPEFEEDPU, 0, CurrentMachine.sMachiningFilePath)
'm_dFloorCount = ReadMaterialParamDouble(m_nIndex, MAC_FLOORCOUNT, 0, CurrentMachine.sMachiningFilePath)
'm_dG0Feed = ReadMaterialParamDouble(m_nIndex, MAC_G0FEED, 0, CurrentMachine.sMachiningFilePath)
'm_dToolDiam = ReadMaterialParamDouble(m_nIndex, MAC_TOOLDIAM, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsOverlap = ReadMaterialParamDouble(m_nIndex, MAC_RIBSOVERLAP, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsStrandCount = ReadMaterialParamDouble(m_nIndex, MAC_RIBSSTRANDCOUNT, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLink = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLINK, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsInvertOrder = ReadMaterialParamDouble(m_nIndex, MAC_RIBSINVERTORDER, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsInvertDirection = ReadMaterialParamDouble(m_nIndex, MAC_RIBSINVERTDIRECTION, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLeadInInvert = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADININVERT, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLeadInLen = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADINLEN, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLeadOutInvert = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTINVERT, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLeadOutLen = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTLEN, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLeadOutCoasting = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTCOASTING, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLeadOutWipe = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTWIPE, 0, CurrentMachine.sMachiningFilePath)
'm_dRibsLeadOutWipeDir = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTWIPEDIR, 0, CurrentMachine.sMachiningFilePath)
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.refMaterialDbVM.SetIsModified(True)
End If
End Sub
Private Sub SaveParams()
For Each Cathegory In m_CathegoryList
Cathegory.SaveParams()
Next
End Sub
Friend Sub ResetModification()
If bIsModified Then
' annullo le modifiche di tutti i parametri
SaveParams()
' 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)
WriteMaterialParam(nIndex, MAT_GUID, m_sGUID)
WriteMaterialParam(nIndex, MAT_NAME, m_sName)
' EgtWriteStringUtf8toIni(nIndex, MAT_NAME, m_sName)
For Each Cathegory In m_CathegoryList
Cathegory.WriteParamOnDb(nIndex)
Next
End Sub
Private Sub OnMaterialParamPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
Select Case e.PropertyName
Case NameOf(sender.dValue), NameOf(sender.sValue), NameOf(sender.bValue), NameOf(sender.SelValue)
m_bIsModified = m_CathegoryList.Any(Function(x) x.MaterialParamList.Any(Function(y) y.bIsModified))
NotifyPropertyChanged(NameOf(ghName))
End Select
End Sub
End Class
Public Class MaterialIndex
Private m_nIndex As Integer
Public ReadOnly Property nIndex As Integer
Get
Return m_nIndex
End Get
End Property
Private m_sGUID As String
Public ReadOnly Property sGUID As String
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, sGUID As String, sName As String)
m_nIndex = nIndex
m_sGUID = sGUID
m_sName = sName
End Sub
Friend Function GetSelMaterialData(Param As MaterialParam.Params) As Double
Dim sParamKey As String = ""
Dim dDefault As Double = 0
Select Case Param
Case MaterialParam.Params.T1
sParamKey = MAT_T1
Case MaterialParam.Params.T2
sParamKey = MAT_T2
Case MaterialParam.Params.T3
sParamKey = MAT_T3
Case MaterialParam.Params.T4
sParamKey = MAT_T4
Case MaterialParam.Params.T5
sParamKey = MAT_T5
Case MaterialParam.Params.K_EXTRUSION
sParamKey = MAT_KEXTRUSION
dDefault = 100
Case MaterialParam.Params.K_LAY_TIME
sParamKey = MAT_KLAYERTIME
dDefault = 100
Case MaterialParam.Params.C1
sParamKey = MAT_C1
Case MaterialParam.Params.C2
sParamKey = MAT_C2
Case MaterialParam.Params.DENSITY
sParamKey = MAT_DENSITY
Case MaterialParam.Params.AMAX
sParamKey = MAT_AMAX
Case MaterialParam.Params.ATRG
sParamKey = MAT_ATRG
Case MaterialParam.Params.AMIN
sParamKey = MAT_AMIN
Case MaterialParam.Params.BMAX
sParamKey = MAT_BMAX
Case MaterialParam.Params.BTRG
sParamKey = MAT_BTRG
Case MaterialParam.Params.BMIN
sParamKey = MAT_BMIN
Case MaterialParam.Params.KW
sParamKey = MAT_KW
Case MaterialParam.Params.KZ
sParamKey = MAT_KZ
Case MaterialParam.Params.KN
sParamKey = MAT_KN
End Select
Return ReadMaterialParamDouble(m_nIndex, sParamKey, dDefault)
End Function
End Class
Public Class MaterialCathegory
Inherits VMBase
Public Enum Cathegories As Integer
GENERAL = 1
TEMPERATURES = 2
CONSTANT = 3
End Enum
Private m_Type As Cathegories
Public ReadOnly Property Type As Cathegories
Get
Return m_Type
End Get
End Property
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Private m_MaterialParamList As List(Of MaterialParam)
Public ReadOnly Property MaterialParamList As List(Of MaterialParam)
Get
Return m_MaterialParamList
End Get
End Property
Private 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
Private m_Cathegory_Visibility As Visibility = Visibility.Collapsed
Public ReadOnly Property Cathegory_Visibility As Visibility
Get
Return m_Cathegory_Visibility
End Get
End Property
Sub New(Type As Cathegories, nIndex As Integer)
m_Type = Type
Select Case m_Type
Case Cathegories.GENERAL
m_sName = "General"
m_MaterialParamList = New List(Of MaterialParam)({New NumericMaterialParam(MaterialParam.Params.K_EXTRUSION, nIndex),
New NumericMaterialParam(MaterialParam.Params.K_LAY_TIME, nIndex),
New NumericMaterialParam(MaterialParam.Params.DENSITY, nIndex),
New StringMaterialParam(MaterialParam.Params.ORIG, nIndex)})
m_Cathegory_Visibility = Visibility.Visible
Case Cathegories.TEMPERATURES
m_sName = "Temperatures"
m_MaterialParamList = New List(Of MaterialParam)({New NumericMaterialParam(MaterialParam.Params.T1, nIndex),
New NumericMaterialParam(MaterialParam.Params.T2, nIndex),
New NumericMaterialParam(MaterialParam.Params.T3, nIndex),
New NumericMaterialParam(MaterialParam.Params.T4, nIndex),
New NumericMaterialParam(MaterialParam.Params.T5, nIndex)})
m_Cathegory_Visibility = Visibility.Visible
Case Cathegories.CONSTANT
m_sName = "Constant"
m_MaterialParamList = New List(Of MaterialParam)({New NumericMaterialParam(MaterialParam.Params.C1, nIndex),
New NumericMaterialParam(MaterialParam.Params.C2, nIndex),
New NumericMaterialParam(MaterialParam.Params.AMAX, nIndex),
New NumericMaterialParam(MaterialParam.Params.ATRG, nIndex),
New NumericMaterialParam(MaterialParam.Params.AMIN, nIndex),
New NumericMaterialParam(MaterialParam.Params.BMAX, nIndex),
New NumericMaterialParam(MaterialParam.Params.BTRG, nIndex),
New NumericMaterialParam(MaterialParam.Params.BMIN, nIndex),
New NumericMaterialParam(MaterialParam.Params.KW, nIndex),
New NumericMaterialParam(MaterialParam.Params.KZ, nIndex),
New NumericMaterialParam(MaterialParam.Params.KN, nIndex)})
m_Cathegory_Visibility = If(Map.refMainWindowVM.MainWindowM.nUserLevel >= 5, Visibility.Visible, Visibility.Collapsed)
End Select
NotifyPropertyChanged(NameOf(Cathegory_Visibility))
End Sub
Friend Sub SaveParams()
For Each Param In m_MaterialParamList
Param.SaveParam()
Next
End Sub
Friend Sub ResetParams()
For Each Param In m_MaterialParamList
Param.ResetParam()
Next
End Sub
Friend Sub WriteParamOnDb(nIndex As Integer)
For Each Param In m_MaterialParamList
Param.WriteParamOnDb(nIndex)
Next
End Sub
End Class
Public MustInherit Class MaterialParam
Inherits VMBase
Public Enum Params As Integer
NAME = 2
T1 = 3
T2 = 4
T3 = 5
T4 = 6
T5 = 7
K_EXTRUSION = 8
K_LAY_TIME = 9
C1 = 10
C2 = 11
DENSITY = 12
AMAX = 13
ATRG = 14
AMIN = 15
BMAX = 16
BTRG = 17
BMIN = 18
KW = 19
KZ = 20
KN = 21
ORIG = 22
End Enum
Private m_Type As Params
Public ReadOnly Property Type As Params
Get
Return m_Type
End Get
End Property
Private 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.T1
m_sName = "Temperature 1"
Case Params.T2
m_sName = "Temperature 2"
Case Params.T3
m_sName = "Temperature 3"
Case Params.T4
m_sName = "Temperature 4"
Case Params.T5
m_sName = "Temperature 5"
Case Params.K_EXTRUSION
m_sName = "Flow Multiplier [%]"
Case Params.K_LAY_TIME
m_sName = "Layer Time Multiplier [%]"
Case Params.C1
m_sName = "C1"
Case Params.C2
m_sName = "C2"
Case Params.DENSITY
m_sName = "Density"
Case Params.AMAX
m_sName = "A Max"
Case Params.ATRG
m_sName = "A Target"
Case Params.AMIN
m_sName = "A Min"
Case Params.BMAX
m_sName = "B Max"
Case Params.BTRG
m_sName = "B Target"
Case Params.BMIN
m_sName = "B Min"
Case Params.KW
m_sName = "KW"
Case Params.KZ
m_sName = "KZ"
Case Params.KN
m_sName = "KN"
Case Params.ORIG
m_sName = "Original"
End Select
End Sub
Friend MustOverride Sub WriteParamOnDb(nIndex As Integer)
Friend MustOverride Sub SaveParam()
Friend MustOverride Sub ResetParam()
End Class
Public Class NumericMaterialParam
Inherits MaterialParam
Private m_bIsLen As Boolean = False
Private m_dValue As Double
Public Property dValue As String
Get
Return If(m_bIsLen, LenToString(m_dValue, 1), m_dValue)
End Get
Set(value As String)
If m_bIsLen Then
StringToLen(value, m_dValue)
Else
m_dValue = value
End If
NotifyPropertyChanged(NameOf(dValue))
End Set
End Property
Private 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, nIndex As Integer)
MyBase.New(Type)
Select Case Type
Case Params.T1
m_dValue = ReadMaterialParamDouble(nIndex, MAT_T1, 0)
m_bIsLen = False
Case Params.T2
m_dValue = ReadMaterialParamDouble(nIndex, MAT_T2, 0)
m_bIsLen = False
Case Params.T3
m_dValue = ReadMaterialParamDouble(nIndex, MAT_T3, 0)
m_bIsLen = False
Case Params.T4
m_dValue = ReadMaterialParamDouble(nIndex, MAT_T4, 0)
m_bIsLen = False
Case Params.T5
m_dValue = ReadMaterialParamDouble(nIndex, MAT_T5, 0)
m_bIsLen = False
Case Params.K_EXTRUSION
m_dValue = ReadMaterialParamDouble(nIndex, MAT_KEXTRUSION, 100)
m_bIsLen = False
Case Params.K_LAY_TIME
m_dValue = ReadMaterialParamDouble(nIndex, MAT_KLAYERTIME, 100)
m_bIsLen = False
Case Params.C1
m_dValue = ReadMaterialParamDouble(nIndex, MAT_C1, 0)
m_bIsLen = False
Case Params.C2
m_dValue = ReadMaterialParamDouble(nIndex, MAT_C2, 0)
m_bIsLen = False
Case Params.DENSITY
m_dValue = ReadMaterialParamDouble(nIndex, MAT_DENSITY, 0)
m_bIsLen = False
Case Params.AMAX
m_dValue = ReadMaterialParamDouble(nIndex, MAT_AMAX, 0)
m_bIsLen = False
Case Params.ATRG
m_dValue = ReadMaterialParamDouble(nIndex, MAT_ATRG, 0)
m_bIsLen = False
Case Params.AMIN
m_dValue = ReadMaterialParamDouble(nIndex, MAT_AMIN, 0)
m_bIsLen = False
Case Params.BMAX
m_dValue = ReadMaterialParamDouble(nIndex, MAT_BMAX, 0)
m_bIsLen = False
Case Params.BTRG
m_dValue = ReadMaterialParamDouble(nIndex, MAT_BTRG, 0)
m_bIsLen = False
Case Params.BMIN
m_dValue = ReadMaterialParamDouble(nIndex, MAT_BMIN, 0)
m_bIsLen = False
Case Params.KW
m_dValue = ReadMaterialParamDouble(nIndex, MAT_KW, 0)
m_bIsLen = False
Case Params.KZ
m_dValue = ReadMaterialParamDouble(nIndex, MAT_KZ, 0)
m_bIsLen = False
Case Params.KN
m_dValue = ReadMaterialParamDouble(nIndex, MAT_KN, 0)
m_bIsLen = False
End Select
m_dOrigValue = m_dValue
End Sub
Friend Overrides Sub WriteParamOnDb(nIndex As Integer)
Dim sWriteValue As String = ""
If m_bIsLen Then
sWriteValue = LenToString(m_dValue, 5)
Else
sWriteValue = DoubleToString(m_dValue, 5)
End If
Select Case Type
Case Params.T1
WriteMaterialParam(nIndex, MAT_T1, sWriteValue)
Case Params.T2
WriteMaterialParam(nIndex, MAT_T2, sWriteValue)
Case Params.T3
WriteMaterialParam(nIndex, MAT_T3, sWriteValue)
Case Params.T4
WriteMaterialParam(nIndex, MAT_T4, sWriteValue)
Case Params.T5
WriteMaterialParam(nIndex, MAT_T5, sWriteValue)
Case Params.K_EXTRUSION
WriteMaterialParam(nIndex, MAT_KEXTRUSION, sWriteValue)
Case Params.K_LAY_TIME
WriteMaterialParam(nIndex, MAT_KLAYERTIME, sWriteValue)
Case Params.C1
WriteMaterialParam(nIndex, MAT_C1, sWriteValue)
Case Params.C2
WriteMaterialParam(nIndex, MAT_C2, sWriteValue)
Case Params.DENSITY
WriteMaterialParam(nIndex, MAT_DENSITY, sWriteValue)
Case Params.AMAX
WriteMaterialParam(nIndex, MAT_AMAX, sWriteValue)
Case Params.ATRG
WriteMaterialParam(nIndex, MAT_ATRG, sWriteValue)
Case Params.AMIN
WriteMaterialParam(nIndex, MAT_AMIN, sWriteValue)
Case Params.BMAX
WriteMaterialParam(nIndex, MAT_BMAX, sWriteValue)
Case Params.BTRG
WriteMaterialParam(nIndex, MAT_BTRG, sWriteValue)
Case Params.BMIN
WriteMaterialParam(nIndex, MAT_BMIN, sWriteValue)
Case Params.KW
WriteMaterialParam(nIndex, MAT_KW, sWriteValue)
Case Params.KZ
WriteMaterialParam(nIndex, MAT_KZ, sWriteValue)
Case Params.KN
WriteMaterialParam(nIndex, MAT_KN, sWriteValue)
End Select
End Sub
Friend Overrides Sub SaveParam()
m_dOrigValue = m_dValue
End Sub
Friend Overrides Sub ResetParam()
m_dValue = m_dOrigValue
End Sub
End Class
Public Class StringMaterialParam
Inherits MaterialParam
Public Const DEFAULT_MATERIAL As String = "***"
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
Friend Sub SetGuid(sGUID As String)
Dim OrigMaterial As MaterialIndex = Map.refTopPanelVM.MaterialList.FirstOrDefault(Function(x) x.sGUID = sGUID)
If Not IsNothing(OrigMaterial) Then
m_sGUID = OrigMaterial.sGUID
m_sValue = OrigMaterial.sName
End If
End Sub
Private 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
Private 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
Private m_OrigButton_Visibility As Visibility = Visibility.Collapsed
Public ReadOnly Property OrigButton_Visibility As Visibility
Get
Return m_OrigButton_Visibility
End Get
End Property
Private m_String_Visibility As Visibility = Visibility.Collapsed
Public ReadOnly Property String_Visibility As Visibility
Get
Return m_String_Visibility
End Get
End Property
' Definizione comandi
Private m_cmdOriginal As ICommand
Sub New(Type As Params, nIndex As Integer)
MyBase.New(Type)
Select Case Type
Case Params.ORIG
Dim sOrigGUID As String = ""
ReadMaterialParamString(nIndex, MAT_ORIG, "", sOrigGUID)
If sOrigGUID = DEFAULT_MATERIAL Then
m_sGUID = DEFAULT_MATERIAL
m_sValue = DEFAULT_MATERIAL
' se livello alto, lo visualizzo comunque
If Map.refMainWindowVM.MainWindowM.nUserLevel >= 5 Then
m_String_Visibility = Visibility.Visible
Else
m_String_Visibility = Visibility.Collapsed
End If
Else
Dim OrigMaterial As MaterialIndex = Map.refTopPanelVM.MaterialList.FirstOrDefault(Function(x) x.sGUID = sOrigGUID)
If Not IsNothing(OrigMaterial) Then
m_sGUID = OrigMaterial.sGUID
m_sValue = OrigMaterial.sName
' m_sValue = OrigMaterial.sName
End If
m_String_Visibility = Visibility.Visible
End If
NotifyPropertyChanged(NameOf(String_Visibility))
End Select
' verifico chiave per assegnare readonly
If Map.refMainWindowVM.MainWindowM.nUserLevel >= 5 Then
m_OrigButton_Visibility = Visibility.Visible
End If
m_sOrigValue = m_sValue
End Sub
Friend Overrides Sub WriteParamOnDb(nIndex As Integer)
Select Case Type
Case Params.ORIG
WriteMaterialParam(nIndex, MAT_ORIG, m_sGUID)
End Select
End Sub
Friend Overrides Sub SaveParam()
m_sOrigValue = m_sValue
End Sub
Friend Overrides Sub ResetParam()
m_sValue = m_sOrigValue
End Sub
#Region "COMMANDS"
#Region "Original"
Public ReadOnly Property Original_Command As ICommand
Get
If m_cmdOriginal Is Nothing Then
m_cmdOriginal = New Command(AddressOf Original)
End If
Return m_cmdOriginal
End Get
End Property
Public Sub Original()
If MessageBox.Show("Are you sure you want to set this material as original?", "Original material confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
m_sGUID = DEFAULT_MATERIAL
m_sValue = DEFAULT_MATERIAL
NotifyPropertyChanged(NameOf(sValue))
End If
End Sub
#End Region ' Original
#End Region ' COMMANDS
End Class
Public Class ComboMaterialParam
Inherits MaterialParam
Private m_ValueList As List(Of IdNameStruct)
Public ReadOnly Property ValueList As List(Of IdNameStruct)
Get
Return m_ValueList
End Get
End Property
Private m_SelValue As IdNameStruct
Public Property SelValue As IdNameStruct
Get
Return m_SelValue
End Get
Set(value As IdNameStruct)
m_SelValue = value
NotifyPropertyChanged(NameOf(SelValue))
End Set
End Property
Private m_OrigSelValue As IdNameStruct
Public ReadOnly Property OrigSelValue As IdNameStruct
Get
Return m_OrigSelValue
End Get
End Property
Public Overrides ReadOnly Property bIsModified As Boolean
Get
Return m_SelValue.Id <> m_OrigSelValue.Id
End Get
End Property
Sub New(Type As Params, nIndex As Integer)
MyBase.New(Type)
Select Case Type
'Case Params.STRANDORDER
' m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Material.MPAR_STRANDORDERS.INTOOUT, "From Inside To Outside"),
' New IdNameStruct(Material.MPAR_STRANDORDERS.OUTTOIN, "From Outside To Inside")})
' m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMaterialParamDouble(nIndex, MAC_STRANDORDER, 0))
End Select
m_OrigSelValue = m_SelValue
End Sub
Friend Overrides Sub WriteParamOnDb(nIndex As Integer)
Select Case Type
'Case Params.STRANDORDER
' WriteMaterialParam(nIndex, MAC_STRANDORDER, m_SelValue.Id)
End Select
End Sub
Friend Overrides Sub SaveParam()
m_OrigSelValue = m_SelValue
End Sub
Friend Overrides Sub ResetParam()
m_SelValue = m_OrigSelValue
End Sub
End Class
Public Class CheckMaterialParam
Inherits MaterialParam
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(Type As Params, nIndex As Integer)
MyBase.New(Type)
Select Case Type
End Select
m_bOrigValue = m_bValue
End Sub
Friend Overrides Sub WriteParamOnDb(nIndex As Integer)
Select Case Type
End Select
End Sub
Friend Overrides Sub SaveParam()
m_bOrigValue = m_bValue
End Sub
Friend Overrides Sub ResetParam()
m_bValue = m_bOrigValue
End Sub
End Class