ad38e4d3e1
This reverts commit 00a338c202.
381 lines
13 KiB
VB.net
381 lines
13 KiB
VB.net
Imports System.IO
|
|
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
|
|
Public Module CurrentMachine
|
|
|
|
' Flag modalità Office
|
|
Private m_bOffice As Boolean = False
|
|
|
|
' File ini della macchina
|
|
Private m_sMachIniFile As String = String.Empty
|
|
|
|
' Percorso della cartella della macchina
|
|
Private m_sMachDir As String = String.Empty
|
|
|
|
' Massimo id della lista materiali nel file ini
|
|
Private m_MaxIdMat As Integer = 0
|
|
|
|
' Materiale correntemente attivo (dell'ultimo grezzo impostato)
|
|
Private m_CurrMat As Material = Nothing
|
|
|
|
' Flag per visualizzazione TcPos, Testa/uscita e Note utente
|
|
Private m_nShowToolChanger As Integer = 0 ' 0=no, 1=tutti utensili, 2=solo lame
|
|
Private m_bShowHeadExit As Boolean = False
|
|
Private m_nShowUserNotes As Integer = 0 ' 0=no, 1=tutti utensili, 2=solo lame
|
|
|
|
' Flag che indica se WaterJet presente
|
|
Private m_bWaterJet As Boolean = False
|
|
|
|
' Abilitazione DB WaterJet
|
|
Private m_bFromDBWaterJet As Boolean = False
|
|
|
|
Friend ReadOnly Property sMachIniFile As String
|
|
Get
|
|
Return m_sMachIniFile
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bWaterJet As Boolean
|
|
Get
|
|
Return m_bWaterJet
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bFromDBWaterJet As Boolean
|
|
Get
|
|
Return m_bFromDBWaterJet
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ShowToolChanger As Integer
|
|
Get
|
|
Return m_nShowToolChanger
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property bShowHeadExit As Boolean
|
|
Get
|
|
Return m_bShowHeadExit
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ShowUserNotes As Integer
|
|
Get
|
|
Return m_nShowUserNotes
|
|
End Get
|
|
End Property
|
|
|
|
' Lista dei materiali
|
|
Private m_Materials As New ObservableCollection(Of Material)
|
|
|
|
Public ReadOnly Property Materials As ObservableCollection(Of Material)
|
|
Get
|
|
Return m_Materials
|
|
End Get
|
|
End Property
|
|
|
|
' Lista delle qualità di lavorazioni disponibili nel WaterJet
|
|
Private m_Qualities As New ObservableCollection(Of String)
|
|
Friend ReadOnly Property Qualities As ObservableCollection(Of String)
|
|
Get
|
|
Return m_Qualities
|
|
End Get
|
|
End Property
|
|
|
|
' Lista dei Materiali nel caso WaterJet
|
|
Private m_WjMaterialList As New ObservableCollection(Of EgtWPFLib5.WjMaterial)
|
|
Public Property WjMaterialList As ObservableCollection(Of EgtWPFLib5.WjMaterial)
|
|
Get
|
|
Return m_WjMaterialList
|
|
End Get
|
|
Set(value As ObservableCollection(Of EgtWPFLib5.WjMaterial))
|
|
m_WjMaterialList = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Sub AddMaterial(value As Material)
|
|
For Each Material In Materials
|
|
If Material.nId = value.nId Then
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & m_MaxIdMat + 1, value, sMachIniFile)
|
|
m_MaxIdMat += 1
|
|
m_Materials.Add(value)
|
|
End Sub
|
|
|
|
Public Sub RemoveMaterial(value As Material)
|
|
' Se è il materiale corrente lo tolgo
|
|
If Not IsNothing(CurrMat) AndAlso CurrMat.nId = value.nId Then
|
|
CurrMat = Nothing
|
|
End If
|
|
' Rimuovo il materiale dall'elenco
|
|
Dim Index As Integer
|
|
For Index = 0 To Materials.Count - 1
|
|
If Materials(Index).nId = value.nId Then
|
|
m_Materials.Remove(Materials(Index))
|
|
Exit For
|
|
End If
|
|
Next
|
|
Dim TempMat As Material = Nothing
|
|
For I = Index To m_MaxIdMat - 1
|
|
GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & I + 2, TempMat, sMachIniFile)
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & I + 1, TempMat, sMachIniFile)
|
|
Next
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & m_MaxIdMat, Nothing, sMachIniFile)
|
|
m_MaxIdMat -= 1
|
|
' Rimuovo il materiale dall'elenco di tutte le lavorazioni
|
|
Dim MachiningName As String = String.Empty
|
|
Dim bFound As Boolean = EgtMdbGetFirstMachining(MCH_MY.SAWING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.SAWING, MachiningName)
|
|
End While
|
|
bFound = EgtMdbGetFirstMachining(MCH_MY.DRILLING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.DRILLING, MachiningName)
|
|
End While
|
|
bFound = EgtMdbGetFirstMachining(MCH_MY.MILLING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.DRILLING, MachiningName)
|
|
End While
|
|
|
|
End Sub
|
|
|
|
' Funzione che dato l'Id di un materiale lo rimuove dalla lavorazione corrente
|
|
Public Sub SearchAndRemoveMat(valueId As Integer)
|
|
Dim SysNotes As String = String.Empty
|
|
EgtMdbGetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
|
|
If SysNotes <> String.Empty Then
|
|
Dim MachiningMaterials() = SysNotes.Split(";".ToCharArray)
|
|
SysNotes = String.Empty
|
|
For Each Material In MachiningMaterials
|
|
Dim Param() As String = Material.Split(",".ToCharArray)
|
|
If Param(0) <> valueId.ToString Then
|
|
SysNotes &= Material & ";"
|
|
End If
|
|
Next
|
|
If SysNotes(SysNotes.Length - 1) = ";" Then
|
|
SysNotes = SysNotes.Substring(0, SysNotes.Length - 1)
|
|
End If
|
|
EgtMdbSetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
|
|
End If
|
|
EgtMdbSaveCurrMachining()
|
|
End Sub
|
|
|
|
Public Property CurrMat As Material
|
|
Get
|
|
Return m_CurrMat
|
|
End Get
|
|
Set(value As Material)
|
|
If Not IsNothing(value) Then
|
|
Dim CurrMatId As String = value.nId.ToString
|
|
Dim sKey As String = If(m_bOffice, K_CURROFFICEMATERIAL, K_CURRMATERIAL)
|
|
If bWaterJet And bFromDBWaterJet Then
|
|
WritePrivateProfileString(S_MATERIALS, sKey, CurrMatId & "." & value.nSubId, sMachIniFile)
|
|
Else
|
|
WritePrivateProfileString(S_MATERIALS, sKey, CurrMatId, sMachIniFile)
|
|
End If
|
|
m_CurrMat = value
|
|
End If
|
|
m_CurrMat = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Function SetCurrMatByName(sMatName As String) As Boolean
|
|
' Reset del materiale corrente
|
|
CurrMat = Nothing
|
|
' Verifico il nome
|
|
If String.IsNullOrWhiteSpace(sMatName) Then Return False
|
|
' Cerco il nome nella lista dei materiali
|
|
For Index = 0 To Materials.Count - 1
|
|
If String.Compare(Materials(Index).sName, sMatName, True) = 0 Then
|
|
CurrMat = Materials(Index)
|
|
Return True
|
|
End If
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
Sub InitCurrentMachine(sMachIniFile As String)
|
|
m_sMachIniFile = sMachIniFile
|
|
m_sMachDir = Path.GetDirectoryName(m_sMachIniFile)
|
|
|
|
' Pulisco la lista dei materiali
|
|
m_Materials.Clear()
|
|
m_MaxIdMat = 0
|
|
' Leggo la lista dei materiali
|
|
Dim Material As Material = Nothing
|
|
Dim nIndex As Integer = 1
|
|
m_bWaterJet = (GetPrivateProfileInt(S_TOOLS, K_WATERJET, 0, sMachIniFile) > 0)
|
|
m_bFromDBWaterJet = (GetPrivateProfileInt(S_MATERIALS, K_FROMDBWATERJET, 0, sMachIniFile) > 0)
|
|
If bWaterJet And bFromDBWaterJet Then
|
|
LoadWJMaterial(True)
|
|
Else
|
|
While (GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & nIndex, Material, sMachIniFile))
|
|
m_Materials.Add(Material)
|
|
nIndex += 1
|
|
End While
|
|
End If
|
|
' Salvo massimo indice a cui sono arrivato per usarlo quando devo aggiungere nuovi elementi alla lista
|
|
m_MaxIdMat = nIndex - 1
|
|
|
|
' Leggo abilitazione visualizzazione TcPos, Head/exit e Note
|
|
m_nShowToolChanger = GetPrivateProfileInt(S_TOOLS, K_SHOWTOOLCHANGER, 0, sMachIniFile)
|
|
m_bShowHeadExit = (GetPrivateProfileInt(S_TOOLS, K_SHOWHEADEXIT, 0, sMachIniFile) > 0)
|
|
m_nShowUserNotes = GetPrivateProfileInt(S_TOOLS, K_SHOWUSERNOTES, 0, sMachIniFile)
|
|
|
|
' Leggo materiale correntemente attivo
|
|
Dim sCurrMatId As String = String.Empty
|
|
Dim sKey As String = If(m_bOffice, K_CURROFFICEMATERIAL, K_CURRMATERIAL)
|
|
EgtUILib.GetPrivateProfileString(S_MATERIALS, sKey, "0", sCurrMatId, sMachIniFile)
|
|
If bWaterJet And bFromDBWaterJet Then
|
|
Dim sCurrMatIds As String()
|
|
sCurrMatIds = sCurrMatId.Split("."c)
|
|
If sCurrMatIds.Length > 1 Then
|
|
Dim nCurrMatId As Integer
|
|
Dim nCurrSubMatId As Integer
|
|
If Not Integer.TryParse(sCurrMatIds(0), nCurrMatId) Then nCurrMatId = 0
|
|
If Not Integer.TryParse(sCurrMatIds(1), nCurrSubMatId) Then nCurrSubMatId = 0
|
|
For Each Material In Materials
|
|
If Material.nId = nCurrMatId AndAlso Material.nSubId = nCurrSubMatId Then
|
|
m_CurrMat = Material
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
Else
|
|
Dim nCurrMatId As Integer
|
|
If Not Integer.TryParse(sCurrMatId, nCurrMatId) Then nCurrMatId = 0
|
|
For Each Material In Materials
|
|
If Material.nId = nCurrMatId Then
|
|
m_CurrMat = Material
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Public Function GetPrivateProfileMaterial(
|
|
ByVal lpAppName As String,
|
|
ByVal lpKeyName As String,
|
|
ByRef Material As Material,
|
|
ByVal lpFileName As String) As Boolean
|
|
|
|
Dim sVal As String = String.Empty
|
|
GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, lpFileName)
|
|
Dim sItems() As String = sVal.Split(",".ToCharArray)
|
|
If sItems.Count() = 2 Then
|
|
Dim nId As Integer = 0
|
|
StringToInt(sItems(0), nId)
|
|
Material = New Material(nId, sItems(1))
|
|
Return True
|
|
End If
|
|
Return False
|
|
|
|
End Function
|
|
|
|
Public Function WritePrivateProfileMaterial(
|
|
ByVal lpAppName As String,
|
|
ByVal lpKeyName As String,
|
|
ByVal Material As Material,
|
|
ByVal lpFileName As String) As Boolean
|
|
|
|
Dim MatStr As String = Nothing
|
|
If Not IsNothing(Material) Then
|
|
MatStr = Material.nId.ToString & "," & Material.sName
|
|
End If
|
|
If WritePrivateProfileString(lpAppName, lpKeyName, MatStr, sMachIniFile) Then
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
Public Sub LoadWJMaterial(Optional bIsStart As Boolean = False)
|
|
Dim TempCurrMat As Material = CurrMat
|
|
' Svuoto l'attuale lista di materiali
|
|
m_Materials.Clear()
|
|
' Leggo valori da file .data e li carico nelle proprietà
|
|
Dim sFilePath As String = m_sMachDir & WaterjetDbWindowVM.WATERJETDB_PATH
|
|
Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial)
|
|
Local_MaterialList = EgtWPFLib5.WaterjetDbWindowVM.LoadWjMaterials(sFilePath)
|
|
' definisco la lista delle qualità
|
|
m_Qualities.Add("")
|
|
m_Qualities.Add("Q1")
|
|
m_Qualities.Add("Q2")
|
|
m_Qualities.Add("Q3")
|
|
m_Qualities.Add("Q4")
|
|
m_Qualities.Add("Q5")
|
|
m_Qualities.Add("QExtra")
|
|
' costruisco la lista
|
|
Dim i As Integer = 0
|
|
Dim sName As String = String.Empty
|
|
For i = 0 To Local_MaterialList.Count - 1
|
|
sName = Local_MaterialList(i).Name
|
|
Dim j As Integer = 0
|
|
For j = 0 To Local_MaterialList(i).SubMaterialList.Count - 1
|
|
m_Materials.Add(New Material(i + 1, sName & "." & Local_MaterialList(i).SubMaterialList(j).Name, j + 1))
|
|
Next
|
|
Next
|
|
If Not bIsStart Then CurrMat = TempCurrMat
|
|
End Sub
|
|
|
|
End Module
|
|
|
|
Public Class Material
|
|
|
|
Private m_nId As Integer
|
|
Private m_sName As String
|
|
Private m_nSubId As Integer
|
|
|
|
Public ReadOnly Property nId As Integer
|
|
Get
|
|
Return m_nId
|
|
End Get
|
|
End Property
|
|
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property nSubId As Integer
|
|
Get
|
|
Return m_nSubId
|
|
End Get
|
|
End Property
|
|
|
|
Sub New(sName As String, MaterialList As ObservableCollection(Of Material))
|
|
Dim nMaxId As Integer = 0
|
|
For Each Material In MaterialList
|
|
If Material.nId > nMaxId Then
|
|
nMaxId = Material.nId
|
|
End If
|
|
Next
|
|
m_nId = nMaxId + 1
|
|
m_sName = sName
|
|
End Sub
|
|
|
|
Sub New(nId As Integer, sName As String)
|
|
m_nId = nId
|
|
m_sName = sName
|
|
End Sub
|
|
|
|
Sub New(nId As Integer, sName As String, nSubId As Integer)
|
|
m_nId = nId
|
|
m_sName = sName
|
|
m_nSubId = nSubId
|
|
End Sub
|
|
|
|
End Class
|