From 94866ce13dfdf23528c528f7b1edebdad4bbfb32 Mon Sep 17 00:00:00 2001 From: NicolaP Date: Thu, 16 Dec 2021 18:33:55 +0100 Subject: [PATCH] =?UTF-8?q?Gestione=20selezione=20qualit=C3=A0=20lavorazio?= =?UTF-8?q?ne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Constants/ConstMachIni.vb | 1 + Machine/CurrentMachine.vb | 110 +++++++++++++++++++++++++++++-- RawPhoto/ChooseMachining.xaml | 17 ++++- RawPhoto/ChooseMachining.xaml.vb | 32 +++++++++ RawPhoto/RawPartPageUC.xaml.vb | 18 +++-- 5 files changed, 165 insertions(+), 13 deletions(-) diff --git a/Constants/ConstMachIni.vb b/Constants/ConstMachIni.vb index 7e83cf0..1119149 100644 --- a/Constants/ConstMachIni.vb +++ b/Constants/ConstMachIni.vb @@ -276,6 +276,7 @@ Public Const K_CURRDRIPSAWING As String = "CurrDripSawing" Public Const K_CURRDRIPDRILLING As String = "CurrDripDrilling" Public Const K_CURRWATERJETTING As String = "CurrWaterJetting" + Public Const K_CURRWATERJETTINGQUALITY As String = "CurrWaterJettingQualilty" Public Const S_MATERIALS As String = "Materials" Public Const K_CURRMATERIAL As String = "CurrMaterial" diff --git a/Machine/CurrentMachine.vb b/Machine/CurrentMachine.vb index 5588f9b..2d9034c 100644 --- a/Machine/CurrentMachine.vb +++ b/Machine/CurrentMachine.vb @@ -1,4 +1,5 @@ Imports System.Collections.ObjectModel +Imports EgtWPFLib5 Imports EgtUILib Public Class CurrentMachine @@ -114,6 +115,7 @@ Public Class CurrentMachine Private m_sCurrDripSawing As String = String.Empty Private m_sCurrDripDrilling As String = String.Empty Private m_sCurrWaterJetting As String = String.Empty + Private m_sCurrWaterJettingQuality As String = String.Empty ' Spessore sottopezzo Private m_dAdditionalTable As Double = 0 @@ -157,6 +159,9 @@ Public Class CurrentMachine ' Lista dei materiali Private m_Materials As New ObservableCollection(Of Material) + ' Lista delle qualità di lavorazioni disponibili nel WaterJet + Private m_Qaulities As New ObservableCollection(Of String) + ' Massimo id della lista materiali nel file ini Private m_MaxIdMat As Integer = 0 @@ -709,6 +714,17 @@ Public Class CurrentMachine End Set End Property + Friend Property sCurrWaterJettingQuality As String + Get + Return m_sCurrWaterJettingQuality + End Get + Set(value As String) + If WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY, value, sMachIniFile) Then + m_sCurrWaterJettingQuality = value + End If + End Set + End Property + Friend ReadOnly Property WaterJettingActive As Double Get Return m_bWaterJetting AndAlso Not String.IsNullOrWhiteSpace(m_sCurrWaterJetting) @@ -903,6 +919,12 @@ Public Class CurrentMachine End Get End Property + Friend ReadOnly Property Qualities As ObservableCollection(Of String) + Get + Return m_Qaulities + End Get + End Property + Friend Sub AddMaterial(value As Material) For Each Material As Material In Materials If Material.nId = value.nId Then @@ -1157,6 +1179,8 @@ Public Class CurrentMachine GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPDRILLING, Nothing, m_sCurrDripDrilling, sMachIniFile) ' waterjetting GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING, Nothing, m_sCurrWaterJetting, sMachIniFile) + ' waterjettingquality + GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY, Nothing, m_sCurrWaterJettingQuality, sMachIniFile) ' Leggo numero di portautensili m_ToolChangerNbr = GetPrivateProfileInt(S_TOOLCHANGER, K_NUMBER, 0, sMachIniFile) @@ -1218,10 +1242,16 @@ Public Class CurrentMachine ' Leggo la lista dei materiali Dim Material As Material = Nothing Dim nIndex As Integer = 1 - While (GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & nIndex, Material, sMachIniFile)) - m_Materials.Add(Material) - nIndex += 1 - End While + + If m_bWaterJetting Then + LoadWJMaterial(nIndex) + 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 @@ -1239,6 +1269,78 @@ Public Class CurrentMachine m_nEnableBarCodeReader = GetPrivateProfileInt(S_MACH_BARCODEREADER, K_ENABLEBCR, 0, sMachIniFile) End Sub + Public Sub LoadWJMaterial(ByRef nIndex As Integer) + ' Svuoto l'attuale lista di materiali + m_Materials.Clear() + ' Leggo valori da file INI e li carico nelle proprietà + Dim sFilePath As String = sMachDir & "\" & "WaterjetDb" & ".ini" + Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial) + If System.IO.File.Exists(sFilePath) Then + ' vettore dei materiali + Dim sMaterial As String = String.Empty + 'recupero i Materiali + 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 EgtWPFLib5.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 EgtWPFLib5.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) + QParamList.Add(New EgtWPFLib5.WjParam(QInd, dThickness, dQ1, dQ2, dQ3, dQ4, dQ5, dQExtra)) + End If + QInd += 1 + End While + SubMatList.Add(New EgtWPFLib5.WjSubMaterial(sSubMat, QParamList)) + Index += 1 + End While + Local_MaterialList.Add(New EgtWPFLib5.WjMaterial(sMaterials(ind), SubMatList)) + Next + End If + End If + ' definisco la lista delle qualità + m_Qaulities.Add("") + m_Qaulities.Add("Q1") + m_Qaulities.Add("Q2") + m_Qaulities.Add("Q3") + m_Qaulities.Add("Q4") + m_Qaulities.Add("Q5") + m_Qaulities.Add("QExtra") + ' costruiscoi 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(nIndex, sName & "." & Local_MaterialList(i).SubMaterialList(j).Name)) + nIndex += 1 + Next + Next + End Sub + Friend Function IsVacuumMovePossible() As Boolean ' Recupero diametro lama corrente EgtTdbSetCurrTool(sCurrSaw) diff --git a/RawPhoto/ChooseMachining.xaml b/RawPhoto/ChooseMachining.xaml index 025a233..deac32a 100644 --- a/RawPhoto/ChooseMachining.xaml +++ b/RawPhoto/ChooseMachining.xaml @@ -80,9 +80,9 @@ - - + @@ -90,7 +90,18 @@ - + + + + + + + + + + + diff --git a/RawPhoto/ChooseMachining.xaml.vb b/RawPhoto/ChooseMachining.xaml.vb index 4927e60..9e7e689 100644 --- a/RawPhoto/ChooseMachining.xaml.vb +++ b/RawPhoto/ChooseMachining.xaml.vb @@ -41,11 +41,13 @@ Public Class ChooseMachining CurrMillingCmBx.ItemsSource = m_MillingList CurrPocketingCmBx.ItemsSource = m_PocketingList CurrWJettingCmBx.ItemsSource = m_WJettingList + CurrWJettingQualityCmBx.ItemsSource = m_CurrentMachine.Qualities CurrSawingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 1) AuxiliaryMachiningTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 2) CurrDrillingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 3) CurrMillingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 4) + CurrWJettingQualityTxBl.Text = "Quality" CurrWJettingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 10) CurrPocketingTxBl.Text = EgtMsg(90550) @@ -248,6 +250,10 @@ Public Class ChooseMachining End While End Sub + Private Sub CreateQualityList() + + End Sub + ' Funzione che data la stringa di materiali e spessori della lavorazione, e i dati del grezzo corrente, restituisce se la lavorazione è valida oppure no Private Function VerifyMatThickCompatibility() As Boolean If Not IsNothing(m_CurrentMachine.CurrMat) Then @@ -468,6 +474,8 @@ Public Class ChooseMachining CurrPocketingCmBx.Visibility = Windows.Visibility.Hidden CurrWJettingTxBl.Visibility = Windows.Visibility.Hidden CurrWJettingCmBx.Visibility = Windows.Visibility.Hidden + CurrWJettingQualityTxBl.Visibility = Windows.Visibility.Hidden + CurrWJettingCmBx.Visibility = Windows.Visibility.Hidden ' -- FORATURA -- se foretto presente If m_CurrentMachine.bDrill And m_DrillingList.Count() > 0 Then @@ -562,6 +570,26 @@ Public Class ChooseMachining ' verifico che sia stato inserito veramente una lavorazione prima di comunicare una modifica If CurrMillingCmBx.SelectedItem <> m_CurrentMachine.sCurrWaterJetting Then m_MachIsModified = True End If + ' Definizione di due righe della tabella con la giusta altezza + For Index As Integer = 1 To nNewRow + Dim Row As New RowDefinition + Row.Height = New GridLength(0.5, GridUnitType.Star) + ChooseMachiningGrid.RowDefinitions.Add(Row) + Next + If String.IsNullOrEmpty(CurrWJettingQualityCmBx.SelectedItem) Then + CurrWJettingQualityCmBx.SelectedItem = m_CurrentMachine.sCurrWaterJettingQuality + End If + ' verifico che la selezione sia andata a buon fine, altrimenti comunico l'avvenuta modifica + If String.IsNullOrEmpty(CurrWJettingQualityCmBx.SelectedItem) Then + ' verifico che sia stato inserito veramente una lavorazione prima di comunicare una modifica + If CurrWJettingQualityCmBx.SelectedItem <> m_CurrentMachine.sCurrWaterJettingQuality Then m_MachIsModified = True + End If + m_RowNumber = m_RowNumber + nNewRow + CurrWJettingQualityTxBl.SetValue(Grid.RowProperty, m_RowNumber - nDeltaRow - nNewRow) + CurrWJettingQualityCmBx.SetValue(Grid.RowProperty, m_RowNumber - nDeltaRow - nNewRow + 1) + + CurrWJettingQualityTxBl.Visibility = Windows.Visibility.Visible + CurrWJettingQualityCmBx.Visibility = Windows.Visibility.Visible CurrWJettingTxBl.Visibility = Windows.Visibility.Visible CurrWJettingCmBx.Visibility = Windows.Visibility.Visible End If @@ -590,6 +618,10 @@ Public Class ChooseMachining m_MainWindow.m_CurrentMachine.sCurrWaterJetting = CurrWJettingCmBx.SelectedItem.ToString() End Sub + Private Sub CurrQaulityWJettingCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrWJettingQualityCmBx.SelectionChanged + m_MainWindow.m_CurrentMachine.sCurrWaterJettingQuality = CurrWJettingQualityCmBx.SelectedItem.ToString() + End Sub + Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click DialogResult = True End Sub diff --git a/RawPhoto/RawPartPageUC.xaml.vb b/RawPhoto/RawPartPageUC.xaml.vb index 49d43d6..bbec514 100644 --- a/RawPhoto/RawPartPageUC.xaml.vb +++ b/RawPhoto/RawPartPageUC.xaml.vb @@ -165,10 +165,16 @@ Public Class RawPartPageUC End Sub Private Sub RawPartPage_Loaded(sender As Object, e As RoutedEventArgs) + ' aggiorno la lista dei materiali + Dim Index As Integer = 1 + If m_CurrentMachine.bWaterJet Then + m_CurrentMachine.LoadWJMaterial(Index) + End If + m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC m_bActive = True ' Assegno modalità acquisizione punti laser (da disegno se non collegato alla macchina) - m_bFromDraw = ( m_MainWindow.m_CNCommunication.m_nNCType = 0) + m_bFromDraw = (m_MainWindow.m_CNCommunication.m_nNCType = 0) ' Correggo differenza tra machinebuttons che ha 10 colonne e spazio disponibile solo per 9 facendolo sbordare(non si vede perchè la parte che avanza è vuota) m_MachineButtons.Width = LowerButtonGrid.ActualWidth / 12 * 10 ' Se disponibile, imposto possibilità di contorno da foto @@ -226,7 +232,7 @@ Public Class RawPartPageUC End If ' aggiorno l'apparenza del grezzo AdjustRawPartOnStart() - ' Altrimenti lo definisco + ' Altrimenti lo definisco Else ' Leggo da Ini gli ultimi valori m_RawLength = GetPrivateProfileDouble(S_RAWPART, K_RAWLENGTH, 2500, m_MainWindow.GetIniFile()) @@ -241,12 +247,12 @@ Public Class RawPartPageUC ' Eventuale gestione dati lastra If m_bSlabId Then Dim sBlock As String = "" - GetPrivateProfileString( S_RAWPART, K_BLOCKNAME, "", sBlock, m_MainWindow.GetIniFile()) - Dim nSlabNbr As Integer = GetPrivateProfileInt( S_RAWPART, K_SLABNBR, 0, m_MainWindow.GetIniFile()) + GetPrivateProfileString(S_RAWPART, K_BLOCKNAME, "", sBlock, m_MainWindow.GetIniFile()) + Dim nSlabNbr As Integer = GetPrivateProfileInt(S_RAWPART, K_SLABNBR, 0, m_MainWindow.GetIniFile()) nSlabNbr += 1 Dim sSlabNbr As String = nSlabNbr.ToString() - WritePrivateProfileString( S_RAWPART, K_SLABNBR, sSlabNbr, m_MainWindow.GetIniFile()) - Utility.SetBlockAndSlabNbr( sBlock, sSlabNbr) + WritePrivateProfileString(S_RAWPART, K_SLABNBR, sSlabNbr, m_MainWindow.GetIniFile()) + Utility.SetBlockAndSlabNbr(sBlock, sSlabNbr) End If End If ' Assegno dati grezzo rettangolare ai textbox