Files
OmagCUT/Machine/WaterJetPageVM.vb
T
Dario Sassi cde05bbebc OmagCUT :
- la cancellazione di un utensile o di una lavorazione ora richiede una conferma.
2026-06-29 18:36:19 +02:00

686 lines
18 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class WaterjetDbWindowVM
Inherits VMBase
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_refWaterPageV As WaterJetPageUC
#Region "FIELDS & PROPERTIES"
#Region "Materiali"
Private Property m_MaterialList As ObservableCollection(Of WjMaterial)
Public Property MaterialList As ObservableCollection(Of WjMaterial)
Get
Return m_MaterialList
End Get
Set(value As ObservableCollection(Of WjMaterial))
m_MaterialList = value
End Set
End Property
Private Property m_SelMaterial As WjMaterial
Public Property SelMaterial As WjMaterial
Get
Return m_SelMaterial
End Get
Set(value As WjMaterial)
m_SelMaterial = value
End Set
End Property
Private Property m_sNewMaterial As String
Public Property sNewMaterial As String
Get
Return m_sNewMaterial
End Get
Set(value As String)
m_sNewMaterial = value
End Set
End Property
Private Property m_NewMaterial_Visibility As Visibility = Visibility.Collapsed
Public Property NewMaterial_Visibility As Visibility
Get
Return m_NewMaterial_Visibility
End Get
Set(value As Visibility)
m_NewMaterial_Visibility = value
NotifyPropertyChanged(NameOf(NewMaterial_Visibility))
End Set
End Property
#End Region
#Region "SubMateriali"
Private Property m_SubMaterialList As New ObservableCollection(Of WjSubMaterial)
Public Property SubMaterialList As ObservableCollection(Of WjSubMaterial)
Get
Return m_SubMaterialList
End Get
Set(value As ObservableCollection(Of WjSubMaterial))
m_SubMaterialList = value
End Set
End Property
'Private Property m_SelSubMaterial As WjSubMaterial
'Public Property SelSubMaterial As WjSubMaterial
' Get
' Return m_SelSubMaterial
' End Get
' Set(value As WjSubMaterial)
' m_SelSubMaterial = value
' End Set
'End Property
Private Property m_sNewSubMaterial As String
Public Property sNewSubMaterial As String
Get
Return m_sNewSubMaterial
End Get
Set(value As String)
m_sNewSubMaterial = value
End Set
End Property
Private Property m_NewSubMaterial_Visibility As Visibility = Visibility.Collapsed
Public Property NewSubMaterial_Visibility As Visibility
Get
Return m_NewSubMaterial_Visibility
End Get
Set(value As Visibility)
m_NewSubMaterial_Visibility = value
NotifyPropertyChanged(NameOf(NewSubMaterial_Visibility))
End Set
End Property
#End Region
#Region "Parametri"
Private Property m_ParamList As ObservableCollection(Of WjParam)
Public Property ParamList As ObservableCollection(Of WjParam)
Get
Return m_ParamList
End Get
Set(value As ObservableCollection(Of WjParam))
m_ParamList = value
End Set
End Property
'Private Property m_SelParam As WjParam
'Public Property SelParam As WjParam
' Get
' Return m_SelParam
' End Get
' Set(value As WjParam)
' m_SelParam = value
' End Set
'End Property
Private m_HeadParamLstBx_Width As Double
Public ReadOnly Property HeadParamLstBx_Width As Double
Get
If m_HeadParamLstBx_Width < 10 Then
Return 700
End If
Return m_HeadParamLstBx_Width
End Get
End Property
#End Region
Const S_MATERIALS As String = "Materials"
' Definizione comandi
Private m_cmdNewMaterial As ICommand
Private m_cmdDeleteMaterial As ICommand
Private m_cmdNewSubMaterial As ICommand
Private m_cmdDeleteSubMaterial As ICommand
Private m_cmdNewWjParam As ICommand
Private m_cmdDeleteWjParam As ICommand
Private m_cmdSave As ICommand
Private m_cmdDone As ICommand
#End Region
#Region "MESSAGES"
Public ReadOnly Property Material_Msg As String
Get
Return "Materiale"
End Get
End Property
Public ReadOnly Property SubMaterial_Msg As String
Get
Return "SubMateriale"
End Get
End Property
Public ReadOnly Property Id_Msg As String
Get
Return "Id"
End Get
End Property
Public ReadOnly Property Thickness_Msg As String
Get
Return "Spess."
End Get
End Property
Public ReadOnly Property Flux_Msg As String
Get
Return "mg/min"
End Get
End Property
Public ReadOnly Property Q1_Msg As String
Get
Return "Q1"
End Get
End Property
Public ReadOnly Property Q2_Msg As String
Get
Return "Q2"
End Get
End Property
Public ReadOnly Property Q3_Msg As String
Get
Return "Q3"
End Get
End Property
Public ReadOnly Property Q4_Msg As String
Get
Return "Q4"
End Get
End Property
Public ReadOnly Property Q5_Msg As String
Get
Return "Q5"
End Get
End Property
Public ReadOnly Property QExtra_Msg As String
Get
Return "QExtra"
End Get
End Property
Public ReadOnly Property AngComp_Msg As String
Get
Return "Ang"
End Get
End Property
Public ReadOnly Property New_Msg As String
Get
Return "Nuovo"
End Get
End Property
Public ReadOnly Property Delete_Msg As String
Get
Return "Elimina"
End Get
End Property
Public ReadOnly Property Save_Msg As String
Get
Return "Salva"
End Get
End Property
Public ReadOnly Property Modify_Msg As String
Get
Return "Modifica"
End Get
End Property
#End Region
#Region "CONSTRUCTOR"
Sub New(refContext As WaterJetPageUC)
' definisco il riferiento con la pagina xaml
m_refWaterPageV = refContext
' Leggo valori da file Data e li carico nelle proprietà
Dim sFilePath As String = m_MainWindow.m_CurrentMachine.sMachDir & "\" & MACHININGS_DIR & "\" & WATERJETDB_FILE
MaterialList = New ObservableCollection(Of WjMaterial)
If File.Exists(sFilePath) Then
Dim sMaterial As String = String.Empty
If EgtUILib.GetPrivateProfileString(S_MATERIALS, "1", "", sMaterial, sFilePath) > 0 Then
Dim sMaterials() As String = sMaterial.Split(","c)
Dim ind As Integer = 0
For ind = 0 To sMaterials.Length() - 1
'recupero i sottomateriali
Dim Index As Integer = 1
Dim sSubMat As String = String.Empty
Dim SubMatList As New ObservableCollection(Of WjSubMaterial)
While EgtUILib.GetPrivateProfileString(sMaterials(ind), Index.ToString(), "", sSubMat, sFilePath) > 0
' recupero la lista dei Q
Dim QInd As Integer = 1
Dim sParam As String = String.Empty
Dim QParamList As New ObservableCollection(Of WjParam)
While EgtUILib.GetPrivateProfileString(sMaterials(ind) & "." & sSubMat, QInd.ToString(), "", sParam, sFilePath) > 0
Dim sParams() As String = sParam.Split(","c)
If sParams.Length() >= 7 Then
Dim dThickness As Double
Dim dQ1 As Double
Dim dQ2 As Double
Dim dQ3 As Double
Dim dQ4 As Double
Dim dQ5 As Double
Dim dQExtra As Double
StringToDouble(sParams(0), dThickness)
StringToDouble(sParams(1), dQ1)
StringToDouble(sParams(2), dQ2)
StringToDouble(sParams(3), dQ3)
StringToDouble(sParams(4), dQ4)
StringToDouble(sParams(5), dQ5)
StringToDouble(sParams(6), dQExtra)
Dim LocalWjParam As New WjParam(QInd, dThickness, dQ1, dQ2, dQ3, dQ4, dQ5, dQExtra, m_refWaterPageV)
QParamList.Add(LocalWjParam)
' leggo il nuovo parametro di correzione conicità (di default il parametro è 0)
If sParams.Length() >= 8 Then
Dim dAngCompo As Double
StringToDouble(sParams(7), dAngCompo)
LocalWjParam.dAngComp = dAngCompo
End If
End If
QInd += 1
End While
SubMatList.Add(New WjSubMaterial(sSubMat, QParamList))
Index += 1
End While
MaterialList.Add(New WjMaterial(sMaterials(ind), SubMatList))
Next
End If
End If
End Sub
Public Sub RefreshDImensionPage()
m_HeadParamLstBx_Width = m_refWaterPageV.ParamsGpBx.ActualWidth - 20
NotifyPropertyChanged(NameOf(HeadParamLstBx_Width))
End Sub
#End Region ' Constructor
#Region "COMMANDS"
#Region "NewMaterialCommand"
Public ReadOnly Property NewMaterialCommand As ICommand
Get
If m_cmdNewMaterial Is Nothing Then
m_cmdNewMaterial = New Command(AddressOf NewMaterial)
End If
Return m_cmdNewMaterial
End Get
End Property
Public Sub NewMaterial(ByVal param As Object)
NewSubMaterial_Visibility = Visibility.Collapsed
NewMaterial_Visibility = Visibility.Visible
End Sub
#End Region ' NewMaterial
#Region "DeleteMaterialCommand"
Public ReadOnly Property DeleteMaterialCommand As ICommand
Get
If m_cmdDeleteMaterial Is Nothing Then
m_cmdDeleteMaterial = New Command(AddressOf DeleteMaterial)
End If
Return m_cmdDeleteMaterial
End Get
End Property
Public Sub DeleteMaterial(ByVal param As Object)
If Not IsNothing(SelMaterial) Then
MaterialList.Remove(SelMaterial)
'SelMaterial.NotifyPropertyChanged(NameOf(MaterialList))
End If
End Sub
#End Region ' DeleteMaterial
#Region "NewSubMaterialCommand"
Public ReadOnly Property NewSubMaterialCommand As ICommand
Get
If m_cmdNewSubMaterial Is Nothing Then
m_cmdNewSubMaterial = New Command(AddressOf NewSubMaterial)
End If
Return m_cmdNewSubMaterial
End Get
End Property
Public Sub NewSubMaterial(ByVal param As Object)
If Not IsNothing(SelMaterial) Then
NewMaterial_Visibility = Visibility.Collapsed
NewSubMaterial_Visibility = Visibility.Visible
End If
End Sub
#End Region ' NewSubMaterial
#Region "DeleteSubMaterialCommand"
Public ReadOnly Property DeleteSubMaterialCommand As ICommand
Get
If m_cmdDeleteSubMaterial Is Nothing Then
m_cmdDeleteSubMaterial = New Command(AddressOf DeleteSubMaterial)
End If
Return m_cmdDeleteSubMaterial
End Get
End Property
Public Sub DeleteSubMaterial(ByVal param As Object)
If Not IsNothing(SelMaterial.SelSubMaterial) Then
SelMaterial.SubMaterialList.Remove(SelMaterial.SelSubMaterial)
SelMaterial.NotifyPropertyChanged(NameOf(SubMaterialList))
End If
End Sub
#End Region ' DeleteSubMaterial
#Region "NewWjParamCommand"
Public ReadOnly Property NewWjParamCommand As ICommand
Get
If m_cmdNewWjParam Is Nothing Then
m_cmdNewWjParam = New Command(AddressOf NewWjParam)
End If
Return m_cmdNewWjParam
End Get
End Property
Public Sub NewWjParam(ByVal param As Object)
If Not IsNothing(SelMaterial.SelSubMaterial) Then
Dim nId As Integer = 0
If IsNothing(SelMaterial.SelSubMaterial.ParamList) Then
nId = 1
SelMaterial.SelSubMaterial.ParamList = New ObservableCollection(Of WjParam)
Else
nId = SelMaterial.SelSubMaterial.ParamList.Count + 1
End If
SelMaterial.SelSubMaterial.ParamList.Add(New WjParam(nId, 0, 0, 0, 0, 0, 0, 0, m_refWaterPageV))
SelMaterial.SelSubMaterial.NotifyPropertyChanged(NameOf(ParamList))
End If
End Sub
#End Region ' NewWjParam
#Region "DeleteWjParamCommand"
Public ReadOnly Property DeleteWjParamCommand As ICommand
Get
If m_cmdDeleteWjParam Is Nothing Then
m_cmdDeleteWjParam = New Command(AddressOf DeleteWjParam)
End If
Return m_cmdDeleteWjParam
End Get
End Property
Public Sub DeleteWjParam(ByVal param As Object)
If Not IsNothing(SelMaterial.SelSubMaterial.SelWjParam) Then
SelMaterial.SelSubMaterial.ParamList.Remove(SelMaterial.SelSubMaterial.SelWjParam)
SelMaterial.SelSubMaterial.NotifyPropertyChanged(NameOf(ParamList))
End If
End Sub
#End Region ' DeleteWjParam
#Region "DoneCommand"
Public ReadOnly Property DoneCommand As ICommand
Get
If m_cmdDone Is Nothing Then
m_cmdDone = New Command(AddressOf Done)
End If
Return m_cmdDone
End Get
End Property
Public Sub Done(ByVal param As Object)
If NewMaterial_Visibility = Visibility.Visible Then
MaterialList.Add(New WjMaterial(sNewMaterial))
NotifyPropertyChanged(NameOf(MaterialList))
NewMaterial_Visibility = Visibility.Collapsed
ElseIf NewSubMaterial_Visibility = Visibility.Visible Then
SelMaterial.SubMaterialList.Add(New WjSubMaterial(sNewSubMaterial))
NotifyPropertyChanged(NameOf(SubMaterialList))
NewSubMaterial_Visibility = Visibility.Collapsed
End If
End Sub
#End Region ' Done
#End Region ' Commands
End Class
Public Class WjMaterial
Inherits VMBase
Private m_Name As String
Public Property Name As String
Get
Return m_Name
End Get
Set(value As String)
m_Name = value
End Set
End Property
Private m_SubMaterialList As ObservableCollection(Of WjSubMaterial)
Public Property SubMaterialList As ObservableCollection(Of WjSubMaterial)
Get
Return m_SubMaterialList
End Get
Set(value As ObservableCollection(Of WjSubMaterial))
m_SubMaterialList = value
End Set
End Property
Private Property m_SelSubMaterial As WjSubMaterial
Public Property SelSubMaterial As WjSubMaterial
Get
Return m_SelSubMaterial
End Get
Set(value As WjSubMaterial)
m_SelSubMaterial = value
End Set
End Property
Sub New(sName As String, SubMatList As ObservableCollection(Of WjSubMaterial))
m_Name = sName
m_SubMaterialList = SubMatList
End Sub
Sub New(sName As String)
m_Name = sName
End Sub
End Class
Public Class WjSubMaterial
Inherits VMBase
Private m_Name As String
Public Property Name As String
Get
Return m_Name
End Get
Set(value As String)
m_Name = value
End Set
End Property
Private m_ParamList As ObservableCollection(Of WjParam)
Public Property ParamList As ObservableCollection(Of WjParam)
Get
Return m_ParamList
End Get
Set(value As ObservableCollection(Of WjParam))
m_ParamList = value
End Set
End Property
Private Property m_SelWjParam As WjParam
Public Property SelWjParam As WjParam
Get
Return m_SelWjParam
End Get
Set(value As WjParam)
m_SelWjParam = value
End Set
End Property
Sub New(sName As String, ParamList As ObservableCollection(Of WjParam))
m_Name = sName
m_ParamList = ParamList
End Sub
Sub New(sName As String)
m_Name = sName
End Sub
End Class
Public Class WjParam
Private m_Id As Integer
Public Property Id As Integer
Get
Return m_Id
End Get
Set(value As Integer)
m_Id = value
End Set
End Property
Private m_Thickness As Double
Public Property Thickness As Double
Get
Return m_Thickness
End Get
Set(value As Double)
m_Thickness = value
End Set
End Property
Private m_Q1 As Double
Public Property Q1 As Double
Get
Return m_Q1
End Get
Set(value As Double)
m_Q1 = value
End Set
End Property
Private m_Q2 As Double
Public Property Q2 As Double
Get
Return m_Q2
End Get
Set(value As Double)
m_Q2 = value
End Set
End Property
Private m_Q3 As Double
Public Property Q3 As Double
Get
Return m_Q3
End Get
Set(value As Double)
m_Q3 = value
End Set
End Property
Private m_Q4 As Double
Public Property Q4 As Double
Get
Return m_Q4
End Get
Set(value As Double)
m_Q4 = value
End Set
End Property
Private m_Q5 As Double
Public Property Q5 As Double
Get
Return m_Q5
End Get
Set(value As Double)
m_Q5 = value
End Set
End Property
Private m_QExtra As Double
Public Property QExtra As Double
Get
Return m_QExtra
End Get
Set(value As Double)
m_QExtra = value
End Set
End Property
' angolo di compensazione conicità getto: 01/02/2023 ver 2.5b1
Private m_dAngComp As Double = 0
Public Property dAngComp As Double
Get
Return m_dAngComp
End Get
Set(value As Double)
m_dAngComp = value
End Set
End Property
Public ReadOnly Property ParamLstBx_Width As Double
Get
Return m_refWaterPageV.ParamsGpBx.ActualWidth - 20
End Get
End Property
Private m_refWaterPageV As WaterJetPageUC
Sub New(nId As Integer, dThickness As Double, dQ1 As Double, dQ2 As Double, dQ3 As Double, dQ4 As Double, dQ5 As Double, dQExtra As Double, ByRef refWJPage As WaterJetPageUC)
m_Id = nId
m_Thickness = dThickness
m_Q1 = dQ1
m_Q2 = dQ2
m_Q3 = dQ3
m_Q4 = dQ4
m_Q5 = dQ5
m_QExtra = dQExtra
m_refWaterPageV = refWJPage
End Sub
End Class