Imports System.Collections.ObjectModel Imports OmagCUT.TreeViewItem Imports EgtUILib Imports EgtWPFLib Imports EgtWPFLib5 Public Class ToolsDbPageUC ' Riferimento alla MainWindow Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) ' Riferimento alla macchina corrente Private m_CurrMachine As CurrentMachine = m_MainWindow.m_CurrentMachine ' Lista degli utensili Dim ToolsList As New ObservableCollection(Of CathegoryItem) ' Proprietà Private m_bFirst As Boolean = True ' Flag nuova gestione parametri lama in disegno Private m_bNewSawbladeMaker As Boolean = False ' Stringa identificativa variabile geometrica in modifica Private m_sCurrVar As String = String.Empty ' Parametri dell'utensile corrente Private m_nToolType As Integer = MCH_TY.NONE Private m_sToolName As String = String.Empty Private m_sEndLife As String = String.Empty ' Array che contengono i tipi di Coolant Dim ToolCoolant() As String Dim SawCoolant() As String ' Conservo l'utensile precedentemente selezionato per usarlo nel caso si selezioni annulla quando si cambia utensile selezionato Private m_OldItem As Object ' Dichiarazione Scene Friend WithEvents ToolScene As New Scene Dim ToolSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost Private Sub ToolsDbPage_Initialized(sender As Object, e As EventArgs) ' Assegnazione scena all'host e posizionamento nella ToolsDbPageGrid ToolSceneHost.Child = ToolScene ToolSceneHost.SetValue(Grid.ColumnProperty, 2) ToolSceneHost.SetValue(Grid.RowProperty, 0) Me.ToolsDbPageGrid.Children.Add(ToolSceneHost) ' Assegno la lista degli utensili come sorgente del treeview ToolTreeView.ItemsSource = ToolsList ' Imposto testo delle combobox da file dei messaggi: No, Interna, Esterna, Entrambe ToolCoolant = {EgtMsg(90801), EgtMsg(90802), EgtMsg(90803), EgtMsg(90804)} SawCoolant = {EgtMsg(90801), EgtMsg(90803)} ' Imposto i messaggi letti dal file dei messaggi NewBtn.Content = EgtMsg(90715) ' Nuovo SaveBtn.Content = EgtMsg(90717) ' Salva RemoveBtn.Content = EgtMsg(90718) ' Elimina ExportBtn.Content = EgtMsg(91126) ' Normale ImportBtn.Content = EgtMsg(91127) ' Massima NameTxBl.Text = EgtMsg(90721) ' Nome TCPosTxBl.Text = EgtMsg(90722) ' Posizione HeadTxBl.Text = EgtMsg(90723) ' Testa ExitTxBl.Text = EgtMsg(90724) ' Uscita SpeedGpBx.Header = EgtMsg(90725) ' Rotazione SpeedTxBl.Text = EgtMsg(90726) ' Normale MaxSpeedTxBl.Text = EgtMsg(90727) ' Massima FeedGpBx.Header = EgtMsg(90728) ' Feed FeedTxBl.Text = EgtMsg(90729) ' Avanzamento TipFeedTxBl.Text = EgtMsg(90730) ' Testa StartFeedTxBl.Text = EgtMsg(90731) ' Ingresso EndFeedTxBl.Text = EgtMsg(90732) ' Uscita CoolantTxBl.Text = EgtMsg(90733) ' Acqua CorrTxBl.Text = EgtMsg(90734) ' Correttore OffsetGpBx.Header = EgtMsg(90735) ' Sovramateriale LonOffsetTxBl.Text = EgtMsg(90736) ' Longitudinale RadOffsetTxBl.Text = EgtMsg(90737) ' Radiale MaxAbsorptionTxBl.Text = EgtMsg(90738) ' Max assorb. MinFeedTxBl.Text = EgtMsg(90739) ' Feed minima MaxMatTxBl.Text = EgtMsg(90740) ' Max affond. UserNotesTxBl.Text = EgtMsg(90745) ' Note SerNbrTxBl.Text = EgtMsg(90746) ' Serial Number CodeTxBl.Text = EgtMsg(90747) ' Code SupplierTxBl.Text = EgtMsg(90748) ' Supplier EndLifeTxBl.Text = EgtMsg(90749) ' End Life ColorTxBl.Text = EgtMsg(91018) ' Colore lavorazione ' Associo TextBox e Label Dim TempLabel1 As New Label TempLabel1.Content = SpeedTxBl.Text SpeedTxBx.Tag = TempLabel1 Dim TempLabel2 As New Label TempLabel2.Content = MaxSpeedTxBl.Text MaxSpeedTxBx.Tag = TempLabel2 Dim TempLabel3 As New Label TempLabel3.Content = FeedTxBl.Text FeedTxBx.Tag = TempLabel3 Dim TempLabel4 As New Label TempLabel4.Content = TipFeedTxBl.Text TipFeedTxBx.Tag = TempLabel4 Dim TempLabel5 As New Label TempLabel5.Content = StartFeedTxBl.Text StartFeedTxBx.Tag = TempLabel5 Dim TempLabel6 As New Label TempLabel6.Content = EndFeedTxBl.Text EndFeedTxBx.Tag = TempLabel6 Dim TempLabel7 As New Label TempLabel7.Content = CorrTxBl.Text CorrTxBx.Tag = TempLabel7 Dim TempLabel8 As New Label TempLabel8.Content = LonOffsetTxBl.Text LonOffsetTxBx.Tag = TempLabel8 Dim TempLabel9 As New Label TempLabel9.Content = RadOffsetTxBl.Text RadOffsetTxBx.Tag = TempLabel9 Dim TempLabel10 As New Label TempLabel10.Content = MaxAbsorptionTxBl.Text MaxAbsorptionTxBx.Tag = TempLabel10 Dim TempLabel11 As New Label TempLabel11.Content = MinFeedTxBl.Text MinFeedTxBx.Tag = TempLabel11 Dim TempLabel12 As New Label TempLabel12.Content = MaxMatTxBl.Text MaxMatTxBx.Tag = TempLabel12 End Sub Private Sub ToolsDbPage_Loaded(sender As Object, e As RoutedEventArgs) If m_bFirst Then ' imposto colore di default Dim DefColor As New Color3d(0, 0, 0) GetPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor, m_MainWindow.GetIniFile()) ToolScene.SetDefaultMaterial(DefColor) ' imposto colori sfondo ToolScene.SetViewBackground(GetBackTopColor(), GetBackBottomColor()) ' imposto colore di evidenziazione Dim MarkColor As New Color3d(255, 255, 0) GetPrivateProfileColor(S_SCENE, K_MARK, MarkColor, m_MainWindow.GetIniFile()) ToolScene.SetMarkMaterial(MarkColor) ' imposto colore per superfici selezionate Dim SelSurfColor As New Color3d(255, 255, 192) GetPrivateProfileColor(S_SCENE, K_SELSURF, SelSurfColor, m_MainWindow.GetIniFile()) ToolScene.SetSelSurfMaterial(SelSurfColor) ' imposto tipo e colore del rettangolo di zoom Dim bOutline As Boolean = True Dim ZwColor As New Color3d(0, 0, 0) GetPrivateProfileZoomWin(S_SCENE, K_ZOOMWIN, bOutline, ZwColor, m_MainWindow.GetIniFile()) ToolScene.SetZoomWinAttribs(bOutline, ZwColor) ' imposto colore della linea di distanza Dim DstLnColor As New Color3d(255, 0, 0) GetPrivateProfileColor(S_SCENE, K_DISTLINE, DstLnColor, m_MainWindow.GetIniFile()) ToolScene.SetDistLineMaterial(DstLnColor) ' imposto parametri OpenGL Dim nDriver As Integer = GetPrivateProfileInt(S_OPENGL, K_DRIVER, 3, m_MainWindow.GetIniFile()) Dim b2Buff As Boolean = (GetPrivateProfileInt(S_OPENGL, K_DOUBLEBUFFER, 1, m_MainWindow.GetIniFile()) <> 0) Dim nColorBits As Integer = GetPrivateProfileInt(S_OPENGL, K_COLORBITS, 32, m_MainWindow.GetIniFile()) Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32, m_MainWindow.GetIniFile()) ToolScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits) ' inizializzo la scena (DB geometrico + visualizzazione) ToolScene.Init() ' dimensione lineare max in pixel delle textures Dim nTxrMaxLinPix As Integer = GetPrivateProfileInt(S_SCENE, K_TEXMAXLINPIX, 4096, m_MainWindow.GetIniFile()) EgtSetTextureMaxLinPixels(nTxrMaxLinPix) ' inibisco selezione diretta da Scene ToolScene.SetStatusNull() ' Inizializzo le famiglie di utensili nell'albero EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) InitializeToolGroup(m_CurrMachine.bSaw, MCH_TY.SAW_STD, EgtMsg(90751)) ' Lama InitializeToolGroup(m_CurrMachine.bDrill, MCH_TY.DRILL_STD, EgtMsg(90752)) ' Foretto InitializeToolGroup(m_CurrMachine.bMill, MCH_TY.MILL_STD, EgtMsg(90753)) ' Fresa InitializeToolGroup(m_CurrMachine.bCupWheel, MCH_TY.MILL_NOTIP, EgtMsg(90754)) ' Mola da scasso InitializeToolGroup(m_CurrMachine.bPolishingWheel, MCH_TY.MILL_POLISHING, EgtMsg(90756)) ' Mola lucidante InitializeToolGroup(m_CurrMachine.bWaterJet, MCH_TY.WATERJET, EgtMsg(90755)) ' Waterjet ' Sposto tutti i parametri in su di una riga se testa e uscita sono disattivati If Not m_CurrMachine.bShowHeadExit Then MoveParam() End If ' Verifico se macchina con nuovo SawbladeMaker Dim sSawBladeMaker As String = "" GetPrivateProfileString(S_TOOLS, K_SAWBLADEMAKER, "", sSawBladeMaker, m_MainWindow.GetIniFile()) m_bNewSawbladeMaker = String.Compare(sSawBladeMaker, "MakeStoneSawBlade.lua", True) m_bFirst = False Else EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) End If InitializeFirstSelectedItem() End Sub 'Funzione che permette l'inizializzazione di albero e parametri all'apertura della pagina ToolsDb Private Sub InitializeFirstSelectedItem() If ToolsList.Count > 0 Then For Each ToolFamily As CathegoryItem In ToolsList If ToolFamily.Items.Count > 0 Then ToolFamily.IsExpanded = True ToolFamily.Items(0).IsSelected = True EgtTdbSetCurrTool(ToolFamily.Items(0).Name) m_OldItem = ToolFamily.Items(0) GetToolParams() ViewToolParams() ViewToolDraw() Exit Sub End If Next ToolsList.Item(0).IsSelected = True HideToolParams() End If End Sub Private Sub MoveParam() SpeedGpBx.SetValue(Grid.RowProperty, 3) FeedGpBx.SetValue(Grid.RowProperty, 7) CoolantTxBl.SetValue(Grid.RowProperty, 13) CoolantCmBx.SetValue(Grid.RowProperty, 13) CorrTxBl.SetValue(Grid.RowProperty, 13) CorrTxBx.SetValue(Grid.RowProperty, 13) OffsetGpBx.SetValue(Grid.RowProperty, 16) AbsorptionBrd.SetValue(Grid.RowProperty, 23) MaxMatTxBl.SetValue(Grid.RowProperty, 20) MaxMatTxBx.SetValue(Grid.RowProperty, 20) SerNbrTxBl.SetValue(Grid.RowProperty, 27) SerNbrTxBx.SetValue(Grid.RowProperty, 27) CodeTxBl.SetValue(Grid.RowProperty, 27) CodeTxBx.SetValue(Grid.RowProperty, 27) SupplierTxBl.SetValue(Grid.RowProperty, 29) SupplierTxBx.SetValue(Grid.RowProperty, 29) EndLifeTxBl.SetValue(Grid.RowProperty, 29) EndLifeChBx.SetValue(Grid.RowProperty, 29) End Sub Private Sub NewBtn_Click(sender As Object, e As RoutedEventArgs) Handles NewBtn.Click EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) If TypeOf ToolTreeView.SelectedItem Is CathegoryItem Then Dim SelectedCathegory As CathegoryItem = ToolTreeView.SelectedItem Dim NewName As String = SelectedCathegory.Name EgtTdbGetToolNewName(NewName) If EgtTdbAddTool(NewName, SelectedCathegory.nTType) Then For Each ToolFamily As CathegoryItem In ToolsList If ToolFamily.nTType = SelectedCathegory.nTType Then Dim NewToolItem As New CustomItem(NewName, SelectedCathegory.nTType) ToolFamily.Items.Add(NewToolItem) NewToolItem.IsSelected = True ToolFamily.IsExpanded = True m_OldItem = ToolTreeView.SelectedItem Exit For End If Next ' Determino il tipo di utensile Dim nType As Integer EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType) ' Imposto testa e uscita ' Sempre lame su H1.1 e utensili foretto, fresa e mola da scasso su H1.2 If (nType And MCH_TF.WATERJET) = 0 Then Dim bSaw As Boolean = ((nType And MCH_TF.SAWBLADE) <> 0) EgtTdbSetCurrToolParam(MCH_TP.HEAD, "H1") EgtTdbSetCurrToolParam(MCH_TP.EXIT_, If(bSaw, 1, 2)) ' Waterjet sempre su H2.1 Else EgtTdbSetCurrToolParam(MCH_TP.HEAD, "H2") EgtTdbSetCurrToolParam(MCH_TP.EXIT_, 1) End If ' Per macchine senza ToolChanger, resetto la posizione su questo If m_CurrMachine.ShowToolChanger = 0 Then EgtTdbSetCurrToolParam(MCH_TP.TCPOS, "") End If ' Imposto dimensioni standard If nType = MCH_TY.DRILL_STD Then EgtTdbSetCurrToolParam(MCH_TP.LEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.DIAM, 20.0) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, 20.0) EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, 40.0) ElseIf nType = MCH_TY.SAW_STD Then EgtTdbSetCurrToolParam(MCH_TP.LEN, 80.0) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, 80.0) EgtTdbSetCurrToolParam(MCH_TP.DIAM, 600.0) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, 600.0) EgtTdbSetCurrToolParam(MCH_TP.THICK, 5.0) EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, 40.0) ElseIf nType = MCH_TY.MILL_STD Then EgtTdbSetCurrToolParam(MCH_TP.LEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.DIAM, 20.0) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, 20.0) EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, 40.0) ElseIf nType = MCH_TY.MILL_NOTIP Then EgtTdbSetCurrToolParam(MCH_TP.LEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.DIAM, 90.0) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, 90.0) EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, 10.0) ElseIf nType = MCH_TY.MILL_POLISHING Then EgtTdbSetCurrToolParam(MCH_TP.LEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, 120.0) EgtTdbSetCurrToolParam(MCH_TP.DIAM, 100.0) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, 100.0) EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, 10.0) ElseIf nType = MCH_TY.WATERJET Then EgtTdbSetCurrToolParam(MCH_TP.LEN, 5.0) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, 5.0) EgtTdbSetCurrToolParam(MCH_TP.DIAM, 1.0) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, 1.0) EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, 45.0) End If ' Gestione speciale eventuali note tipo Hofmann ManageSpecialNotes() ' Salvo e aggiorno interfaccia utente EgtTdbSaveCurrTool() GetToolParams() ViewToolParams() ViewToolDraw() End If ElseIf TypeOf ToolTreeView.SelectedItem Is CustomItem Then Dim SelectedCathegory As CustomItem = ToolTreeView.SelectedItem Dim NewName As String = SelectedCathegory.Name EgtTdbGetToolNewName(NewName) If EgtTdbCopyTool(SelectedCathegory.Name, NewName) Then ' Gestione speciale eventuali note tipo Hofmann ManageSpecialNotes() ' Annullo disegno EgtTdbSetCurrToolParam(MCH_TP.DRAW, "") EgtTdbSaveCurrTool() ' Aggiorno lista utensili Dim CurrType As Integer EgtTdbGetCurrToolParam(MCH_TP.TYPE, CurrType) For Each ToolFamily As CathegoryItem In ToolsList If ToolFamily.nTType = CurrType Then Dim NewToolItem As New CustomItem(NewName, CurrType) ToolFamily.Items.Add(NewToolItem) NewToolItem.IsSelected = True GetToolParams() m_OldItem = ToolTreeView.SelectedItem Exit For End If Next End If End If End Sub Private Function GetSpecials() As Boolean ' Note speciali devono essere visualizzate con l'utensile corrente If m_CurrMachine.ShowSpecials = 0 Then Return False Dim nType As Integer EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType) If nType <> MCH_TY.SAW_STD And m_CurrMachine.ShowSpecials = 2 Then Return False ' Imposto valori di default CodeTxBx.Text = "" SupplierTxBx.Text = "" SerNbrTxBx.Text = "" EndLifeChBx.IsChecked = False m_sEndLife = "" UserNotesTxBx.Text = "" ' Recupero le note utente Dim sUserNotes As String = "" EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, sUserNotes) ' Se esistono If Not String.IsNullOrWhiteSpace(sUserNotes) Then ' Stringa con note rimanenti Dim sToShow As String = "" ' Le divido in parti Dim sItems() As String = sUserNotes.Split(";".ToCharArray) For i As Integer = 0 To sItems.Count() - 1 If sItems(i).Contains("CODE=") Then CodeTxBx.Text = sItems(i).Substring(5) ElseIf sItems(i).Contains("SUPPL=") Then SupplierTxBx.Text = sItems(i).Substring(6) ElseIf sItems(i).Contains("S/N=") Then SerNbrTxBx.Text = sItems(i).Substring(4) ElseIf sItems(i).Contains("END=") Then EndLifeChBx.IsChecked = True m_sEndLife = sItems(i).Substring(4) ElseIf Not String.IsNullOrWhiteSpace(sItems(i)) Then sToShow &= sItems(i) & ";" End If Next UserNotesTxBx.Text = sToShow End If Return True End Function Private Function SetSpecials() As Boolean ' Note speciali devono essere visualizzate con l'utensile corrente If m_CurrMachine.ShowSpecials = 0 Then Return False Dim nType As Integer EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType) If nType <> MCH_TY.SAW_STD And m_CurrMachine.ShowSpecials = 2 Then Return False ' Ricreo la stringa Dim sUserNotes As String = "" sUserNotes &= "CODE=" & CodeTxBx.Text & ";" sUserNotes &= "SUPPL=" & SupplierTxBx.Text & ";" sUserNotes &= "S/N=" & SerNbrTxBx.Text & ";" If EndLifeChBx.IsChecked Then If String.IsNullOrWhiteSpace(m_sEndLife) Then m_sEndLife = My.Computer.Clock.LocalTime.ToString("dd.MM.yyyy HH:mm:ss") End If sUserNotes &= "END=" & m_sEndLife & ";" End If sUserNotes &= UserNotesTxBx.Text EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, sUserNotes) Return True End Function Private Sub ManageSpecialNotes() ' Note utente devono essere visualizzate con l'utensile corrente If m_CurrMachine.ShowUserNotes = 0 And m_CurrMachine.ShowSpecials = 0 Then Return Dim nType As Integer EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType) If nType <> MCH_TY.SAW_STD And m_CurrMachine.ShowUserNotes = 2 Then Return ' Recupero le note utente Dim sUserNotes As String = "" EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, sUserNotes) ' Se esistono If Not String.IsNullOrEmpty(sUserNotes) Then ' Le divido in parti Dim bIsCode As Boolean = False Dim bIsSuppl As Boolean = False Dim bIsSN As Boolean = False Dim sItems() As String = sUserNotes.Split(";".ToCharArray) For i As Integer = 0 To sItems.Count() - 1 If sItems(i).Contains("CODE=") Then bIsCode = True ElseIf sItems(i).Contains("SUPPL=") Then bIsSuppl = True ElseIf sItems(i).Contains("S/N=") Then bIsSN = True ElseIf sItems(i).Contains("START=") Then sItems(i) = "" ElseIf sItems(i).Contains("PROD=") Then sItems(i) = "" ElseIf sItems(i).Contains("END=") Then sItems(i) = "" End If Next sUserNotes = "" For i As Integer = 0 To sItems.Count() - 1 If Not String.IsNullOrWhiteSpace(sItems(i)) Then sUserNotes &= sItems(i) & ";" End If Next If Not bIsCode Then sUserNotes &= "CODE= ;" If Not bIsSuppl Then sUserNotes &= "SUPPL= ;" If Not bIsSN Then sUserNotes &= "S/N= ;" Else sUserNotes = "CODE= ; SUPPL= ; S/N= ;" End If sUserNotes &= "START=" & My.Computer.Clock.LocalTime.ToString("dd.MM.yyyy HH:mm:ss") & ";" sUserNotes &= "PROD=0;" EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, sUserNotes) End Sub Private Sub SaveBtn_Click(sender As Object, e As RoutedEventArgs) Handles SaveBtn.Click EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) SetToolParams() EgtTdbSaveCurrTool() m_sToolName = NameTxBx.Text Dim CurrTool As CustomItem = TryCast(m_OldItem, CustomItem) If CurrTool IsNot Nothing Then CurrTool.Name = m_sToolName End If End Sub Private Sub RemoveBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoveBtn.Click If TypeOf ToolTreeView.SelectedItem Is CustomItem Then Dim SelectedItem As CustomItem = ToolTreeView.SelectedItem EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) ' Cancello l'utensile EgtTdbRemoveTool(SelectedItem.Name) ' Rimuovo il nome dell'albero For Each ToolFamily As CathegoryItem In ToolsList If (ToolFamily.nTType And SelectedItem.nType) <> 0 Then ToolFamily.Items.Remove(SelectedItem) If ToolFamily.Items.Count = 0 Then ToolFamily.IsSelected = True HideToolParams() HideToolDraw() Else ToolFamily.Items(0).IsSelected = True EgtTdbSetCurrTool(ToolFamily.Items(0).Name) m_OldItem = ToolFamily.Items(0) GetToolParams() ViewToolParams() ViewToolDraw() End If End If Next End If End Sub Private Sub ExportBtn_Click(Sender As Object, e As RoutedEventArgs) Handles ExportBtn.Click ' contesto corrente EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) ' creo lista utensili per esportazione Dim ToolToExportList = New ObservableCollection(Of ImpExpToolFamily) Dim Family As CathegoryItem Dim Tool As CustomItem For Each Family In ToolsList Dim ImpExpToolFamily As New ImpExpToolFamily(Family.Name, Family.nTType) ImpExpToolFamily.PictureString = "/Resources/ToolsTreeviewImages/Folder.png" For Each Tool In Family.Items Dim CurrTool = New ImpExpToolItem(Tool.Name, False) ImpExpToolFamily.ToolList.Add(CurrTool) Next ToolToExportList.Add(ImpExpToolFamily) Next Dim ExportWndVM As New ImportExportToolWindowVM(ToolToExportList, True) Dim ExportWnd As New ImportExportToolWD(Application.Current.MainWindow, ExportWndVM) ExportWnd.ShowDialog() End Sub Private Sub ImportBtn_Click(Sender As Object, e As RoutedEventArgs) Handles ImportBtn.Click ' contesto corrente EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) ' apro dialogo di scelta file Dim ImportFileDlg As New Microsoft.Win32.OpenFileDialog() With { .Title = EgtMsg(31161) & " " & EgtMsg(31163), ' Importa Utensile .DefaultExt = ".data", .Filter = "Tools (.data)|*.data", .CheckFileExists = True, .ValidateNames = True } If ImportFileDlg.ShowDialog() <> True Then Return Dim ImportFilePath As String = ImportFileDlg.FileName ' recupero liste utensili da importare Dim ImportFileToolNameList As String() = Nothing Dim ImportFileToolFamilyList As Integer() = Nothing If Not EgtTdbToBeImported(ImportFilePath, ImportFileToolNameList, ImportFileToolFamilyList) Then Return ' li inserisco in lista per finestra di scelta Dim ToolToImportList As New ObservableCollection(Of ImpExpToolFamily) ' creo famiglie di utensili in base a quelle trovate in lista importata For ToolIndex As Integer = 0 To ImportFileToolNameList.Count - 1 Dim ToolName As String = ImportFileToolNameList(ToolIndex) Dim ToolFamily As Integer = ImportFileToolFamilyList(ToolIndex) ToolFamily = ToolFamily And (MCH_TF.DRILLBIT Or MCH_TF.SAWBLADE Or MCH_TF.MILL Or MCH_TF.MORTISE Or MCH_TF.CHISEL Or MCH_TF.WATERJET Or MCH_TF.COMPO) Dim bFounded As Boolean = False Dim ToolToImportFamily As ImpExpToolFamily For Each ToolToImportFamily In ToolToImportList If (ToolFamily = ToolToImportFamily.FamilyType) Then ToolToImportFamily.ToolList.Add(New ImpExpToolItem(ToolName, AlreadyExist(ToolName))) bFounded = True Exit For End If Next If Not bFounded Then Dim NewFamily As New ImpExpToolFamily(GetToolFamilyName(ToolFamily), ToolFamily) NewFamily.ToolList.Add(New ImpExpToolItem(ToolName, AlreadyExist(ToolName))) ToolToImportList.Add(NewFamily) End If Next Dim ImportWndVM As New ImportExportToolWindowVM(ToolToImportList, False, ImportFilePath, ImportFileToolNameList) Dim ImportWnd As New ImportExportToolWD(Application.Current.MainWindow, ImportWndVM) ImportWnd.ShowDialog() ' Aggiungo all'albero visualizzato gli utensili appena importati If ImportWnd.OkResult Then LoadImportedMachineTools(ImportWndVM.vsImported) End If End Sub Private Sub ColorBtn_Click(sender As Object, e As RoutedEventArgs) Handles ColorBtn.Click ' Il click sul bottone aprirà la finestra ChooseColor che permetterà la scelta del colore m_MainWindow.m_brCurrentColor = ColorBtn.Background Dim ChooseColor As New ChooseColor(m_MainWindow) If ChooseColor.ShowDialog() Then ColorBtn.Background = m_MainWindow.m_brCurrentColor End If End Sub Private Function AlreadyExist(ToolName As String) As Boolean Dim ToolFamily As CathegoryItem For Each ToolFamily In ToolsList Dim ToolItem As CustomItem For Each ToolItem In ToolFamily.Items If ToolName = ToolItem.Name Then Return True End If Next Next Return False End Function Private Function GetToolFamilyName(NewToolFamily As Integer) As String Dim ToolFamily As CathegoryItem For Each ToolFamily In ToolsList If NewToolFamily = ToolFamily.nTType Then Return ToolFamily.Name End If Next Return "" End Function Private Sub LoadImportedMachineTools(vsImportedTools As String()) ' Leggo tutti gli utensili presenti nella Macchina (quindi anche quelli appena importati). Dim ActiveToolsFamilies() As ToolsFamily = MyReadToolFamilies(m_CurrMachine.sMachIniFile) Dim ToolsFamilyIndex As Integer = 0 Dim ToolsFamilyItem As ToolsFamily For Each ToolsFamilyItem In ActiveToolsFamilies ' dalla lista che ho ricavato dalla libreria recupero gli utensili associati Dim FamilyTreeView As New CathegoryItem(ToolsFamilyItem.Name, ToolsFamilyItem.Id) Dim ToolFamilyItem = ToolsList.FirstOrDefault(Function(ToolFamily) ToolFamily.nTType = ToolsFamilyItem.Id) If IsNothing(ToolFamilyItem) Then ToolsList.Insert(ToolsFamilyIndex, FamilyTreeView) Else ' ricerco l'indice nella lista Tools End If Dim nType As Integer = 0 Dim ToolName As String = String.Empty Dim ToolIndex As Integer = 0 'EgtSetCurrentContext(ToolScene.GetCtx()) EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) If EgtTdbGetFirstTool(ToolsFamilyItem.Id, ToolName, nType) Then Dim ToolItem = ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName) If IsNothing(ToolItem) Then ' Se leggo un utensile non presente nella ToolsList visualizzata lo aggiungo ad essa. Dim NewToolName As New CustomItem(ToolName, nType) ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName) 'NewToolName.IsSelected = True ElseIf vsImportedTools.Contains(ToolName) Then ' Se un utensile è presente nella ToolsList visualizzata ma nel contempo è nell'array vsImported ' vuol dire che è stato sovrascritto perciò lo rimuovo e lo riaggiungo alla ToolsList. ToolsList(ToolsFamilyIndex).Items.Remove(ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName)) Dim NewToolName As New CustomItem(ToolName, nType) ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName) 'NewToolName.IsSelected = True End If ToolIndex += 1 While EgtTdbGetNextTool(ToolsFamilyItem.Id, ToolName, nType) ToolItem = ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName) If IsNothing(ToolItem) Then ' Se leggo un utensile non presente nella ToolsList visualizzata lo aggiungo ad essa. Dim NewToolName As New CustomItem(ToolName, nType) ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName) 'NewToolName.IsSelected = True ElseIf vsImportedTools.Contains(ToolName) Then ' Se un utensile è presente nella ToolsList visualizzata ma nel contempo è nell'array vsImported ' vuol dire che è stato sovrascritto perciò lo rimuovo e lo riaggiungo alla ToolsList. ToolsList(ToolsFamilyIndex).Items.Remove(ToolsList(ToolsFamilyIndex).Items.FirstOrDefault(Function(Tool) Tool.Name = ToolName)) Dim NewToolName As New CustomItem(ToolName, nType) ToolsList(ToolsFamilyIndex).Items.Insert(ToolIndex, NewToolName) 'NewToolName.IsSelected = True End If ToolIndex += 1 End While End If ToolsFamilyIndex += 1 Next End Sub Public Function MyReadToolFamilies(sMachineIniPath As String) As ToolsFamily() Dim ActiveToolsFamiliesList As New List(Of ToolsFamily) ' Se il materiale lavorato è Marmo l'ordine di lettura e inserimento di Punta e Lama nelle famiglie di utensili attivi è invertito If EgtUILib.GetPrivateProfileInt(S_TOOLS, K_SAWBLADE, 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.SAWBLADE, EgtMsg(31002))) ' Lama End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, K_DRILLBIT, 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.DRILLBIT, EgtMsg(31001))) ' Punta End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, K_MILL, 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.MILL, EgtMsg(31003))) ' Fresa End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, "CupWheel", 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.MILL, EgtMsg(90754))) ' Mola a scasso End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, "PolishingWheel", 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.MILL, EgtMsg(90756))) ' Mola lucidante End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, K_MORTISE, 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.MORTISE, EgtMsg(31004))) ' Mortasatrice End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, K_CHISEL, 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.CHISEL, EgtMsg(31009))) ' Scalpello End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, K_COMPO, 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.COMPO, EgtMsg(31005))) ' Composito End If If EgtUILib.GetPrivateProfileInt(S_TOOLS, K_WATERJET, 0, sMachineIniPath) <> 0 Then ActiveToolsFamiliesList.Add(New ToolsFamily(MCH_TF.WATERJET, EgtMsg(31010))) ' Waterjet End If Return ActiveToolsFamiliesList.ToArray End Function Friend Sub InitializeToolGroup(bEnabled As Boolean, nTType As Integer, sFName As String) If Not bEnabled Then Return ' Inserisco categoria ed eventuali elementi Dim ToolCathegory As New CathegoryItem(sFName, nTType) Dim nType As Integer = 0 Dim ToolName As String = String.Empty Dim bFound As Boolean = EgtTdbGetFirstTool(nTType, ToolName, nType) While bFound Dim nDebug As Integer = GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_sIniFile) If nType = nTType Then If nTType <> MCH_TY.MILL_STD Then ' se utensile diverso da MILL ToolCathegory.Items.Add(New CustomItem(ToolName, nType)) ElseIf nTType = MCH_TY.MILL_STD And (ToolName.Trim.ToLower <> "probe" Or nDebug > 4) Then ' Se utensile MILL con nome "probe" aggiungo solo se livello debug maggiore di 4 ToolCathegory.Items.Add(New CustomItem(ToolName, nType)) End If End If bFound = EgtTdbGetNextTool(nTType, ToolName, nType) End While ToolsList.Add(ToolCathegory) End Sub Private Sub GetToolParams() EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) EgtTdbGetCurrToolParam(MCH_TP.TYPE, m_nToolType) Dim ToolString As String = String.Empty Dim ToolInt As Integer = 0 Dim ToolDouble As Double = 0 EgtTdbGetCurrToolParam(MCH_TP.NAME, m_sToolName) NameTxBx.Text = m_sToolName EgtTdbGetCurrToolParam(MCH_TP.TCPOS, ToolString) TCPosTxBx.Text = ToolString EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, ToolDouble) MaxMatTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.LONOFFSET, ToolDouble) LonOffsetTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.RADOFFSET, ToolDouble) RadOffsetTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.COOLANT, ToolInt) Dim ToolType As Integer EgtTdbGetCurrToolParam(MCH_TP.TYPE, ToolType) If (ToolType And MCH_TF.SAWBLADE) <> 0 Then CoolantCmBx.ItemsSource = SawCoolant If ToolInt = 0 Then CoolantCmBx.SelectedIndex = 0 ElseIf ToolInt = 2 Then CoolantCmBx.SelectedIndex = 1 End If Else CoolantCmBx.ItemsSource = ToolCoolant CoolantCmBx.SelectedIndex = ToolInt End If EgtTdbGetCurrToolParam(MCH_TP.CORR, ToolInt) CorrTxBx.Text = ToolInt.ToString() EgtTdbGetCurrToolParam(MCH_TP.MAXSPEED, ToolDouble) MaxSpeedTxBx.Text = DoubleToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.SPEED, ToolDouble) SpeedTxBx.Text = DoubleToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.FEED, ToolDouble) FeedTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.TIPFEED, ToolDouble) TipFeedTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.STARTFEED, ToolDouble) StartFeedTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.ENDFEED, ToolDouble) EndFeedTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.MAXABSORPTION, ToolDouble) MaxAbsorptionTxBx.Text = DoubleToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.MINFEED, ToolDouble) MinFeedTxBx.Text = LenToString(ToolDouble, 3) EgtTdbGetCurrToolParam(MCH_TP.HEAD, ToolString) HeadTxBx.Text = ToolString EgtTdbGetCurrToolParam(MCH_TP.EXIT_, ToolInt) ExitTxBx.Text = ToolInt.ToString() If Not GetSpecials() Then EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, ToolString) UserNotesTxBx.Text = ToolString End If ' Inizializzo colore di default Dim EgtCol As Color3d = Utility.GetColorPV() ColorBtn.Background = New SolidColorBrush(Color.FromRgb(EgtCol.R, EgtCol.G, EgtCol.B)) ' Eventualmente verifico se inserito nel setup VerifyToolInSetUp(m_sToolName, TCPosTxBx.Text) End Sub Private Sub VerifyToolInSetUp(sNameTool As String, sTCPos As String) ' Se configurato cambio utensile lama If m_MainWindow.m_CurrentMachine.MountedToolConfig <> CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then Return Dim bFound As Boolean = False Dim sCurrTCPos As String = String.Empty For Each ToolPosition As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger If ToolPosition.sTool <> String.Empty Then If sNameTool = ToolPosition.sTool Then sCurrTCPos = ToolPosition.sName bFound = True Exit For End If End If Next If Not bFound Then TCPosTxBl.Foreground = Brushes.Red If String.IsNullOrEmpty(sTCPos) Then TCPosTxBl.ToolTip = EgtMsg(91019) ' Utensile non attrezzato Else TCPosTxBl.ToolTip = EgtMsg(91020) ' Utensile non attrezzato ma posizione di default indicata End If Else If String.IsNullOrEmpty(sTCPos) Then TCPosTxBl.Foreground = Brushes.Gold TCPosTxBl.ToolTip = EgtMsg(91021) & " " & sCurrTCPos ' Posizione di default non indicata ma attrezzato nella posizione Else If sTCPos <> sCurrTCPos Then TCPosTxBl.Foreground = Brushes.Gold TCPosTxBl.ToolTip = EgtMsg(91022) & " " & sCurrTCPos ' Posizione di default diversa dalla posizione di attrezzaggio Else TCPosTxBl.Foreground = Brushes.White TCPosTxBl.ToolTip = "" End If End If End If End Sub Private Sub SetToolParams() EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim dTemp As Double Dim nTemp As Integer EgtTdbSetCurrToolParam(MCH_TP.NAME, NameTxBx.Text) EgtTdbSetCurrToolParam(MCH_TP.TCPOS, TCPosTxBx.Text) If m_nToolType = MCH_TY.SAW_STD Or m_nToolType = MCH_TY.WATERJET Then StringToLen(MaxMatTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dTemp) End If If m_nToolType <> MCH_TY.DRILL_STD Then StringToLen(LonOffsetTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.LONOFFSET, dTemp) StringToLen(RadOffsetTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.RADOFFSET, dTemp) End If Dim sUuid As String = "" EgtTdbGetCurrToolParam(MCH_TP.UUID, sUuid) EgtTdbSetCurrToolParam(MCH_TP.DRAW, sUuid & ".nge") If m_nToolType = MCH_TY.SAW_STD Then If CoolantCmBx.SelectedIndex = 0 Then nTemp = 0 ElseIf CoolantCmBx.SelectedIndex = 1 Then nTemp = 2 End If Else nTemp = CoolantCmBx.SelectedIndex End If EgtTdbSetCurrToolParam(MCH_TP.COOLANT, nTemp) Int32.TryParse(CorrTxBx.Text, nTemp) EgtTdbSetCurrToolParam(MCH_TP.CORR, nTemp) StringToDouble(MaxSpeedTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.MAXSPEED, dTemp) StringToDouble(SpeedTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.SPEED, dTemp) StringToLen(FeedTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.FEED, dTemp) StringToLen(TipFeedTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.TIPFEED, dTemp) StringToLen(StartFeedTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.STARTFEED, dTemp) StringToLen(EndFeedTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.ENDFEED, dTemp) StringToDouble(MaxAbsorptionTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.MAXABSORPTION, dTemp) StringToLen(MinFeedTxBx.Text, dTemp) EgtTdbSetCurrToolParam(MCH_TP.MINFEED, dTemp) EgtTdbSetCurrToolParam(MCH_TP.HEAD, HeadTxBx.Text) Int32.TryParse(ExitTxBx.Text, nTemp) EgtTdbSetCurrToolParam(MCH_TP.EXIT_, nTemp) If Not SetSpecials() Then EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, UserNotesTxBx.Text) End If EgtTdbSetCurrToolValInNotes(MCH_TP.SYSNOTES, "COLOR", ColorToString(ColorBtn.Background.ToString())) End Sub Private Function ColorToString(color As String) As String Dim colorCut As Color = HexToRbgNew(color) Return colorCut.R & "," & colorCut.G & "," & colorCut.B End Function Public Function HexToRbgNew(ByVal Hex As String) As Color If Hex.StartsWith("#") Then Hex = Hex.Remove(0, 3) End If Dim red As Byte = CByte(HexadecimalToDecimal(Hex.Substring(0, 2))) Dim green As Byte = CByte(HexadecimalToDecimal(Hex.Substring(2, 2))) Dim blue As Byte = CByte(HexadecimalToDecimal(Hex.Substring(4, 2))) Return Color.FromArgb(255, red, green, blue) End Function Private Shared Function HexadecimalToDecimal(hex As String) As Integer hex = hex.ToUpper() Dim hexLength As Integer = hex.Length Dim dec As Double = 0 For i As Integer = 0 To hexLength - 1 Dim b As Byte = CByte(AscW(hex(i))) If b >= 48 AndAlso b <= 57 Then b -= 48 ElseIf b >= 65 AndAlso b <= 70 Then b -= 55 End If dec += b * Math.Pow(16, ((hexLength - i) - 1)) Next Return CInt(Math.Truncate(dec)) End Function Private Sub ViewToolParams() NameTxBl.Visibility = Windows.Visibility.Visible NameTxBx.Visibility = Windows.Visibility.Visible Dim bShowTcPos As Boolean = ((m_nToolType = MCH_TY.SAW_STD And m_CurrMachine.ShowToolChanger <> 0) Or m_CurrMachine.ShowToolChanger = 1) TCPosBrd.Visibility = If(bShowTcPos, Windows.Visibility.Visible, Windows.Visibility.Hidden) HeadExitBrd.Visibility = If(m_CurrMachine.bShowHeadExit, Windows.Visibility.Visible, Windows.Visibility.Hidden) SpeedGpBx.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) FeedGpBx.Visibility = Windows.Visibility.Visible TipFeedTxBl.Text = If(m_nToolType <> MCH_TY.WATERJET, EgtMsg(90730), EgtMsg(90792)) ' Testa, Foratura StartFeedTxBl.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) StartFeedTxBx.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) EndFeedTxBl.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) EndFeedTxBx.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) CoolantTxBl.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) CoolantCmBx.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) CorrTxBl.Visibility = Windows.Visibility.Hidden CorrTxBx.Visibility = Windows.Visibility.Hidden MaxMatTxBl.Visibility = If(m_nToolType = MCH_TY.SAW_STD Or m_nToolType = MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) MaxMatTxBx.Visibility = If(m_nToolType = MCH_TY.SAW_STD Or m_nToolType = MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) OffsetGpBx.Visibility = If(m_nToolType <> MCH_TY.DRILL_STD, Windows.Visibility.Visible, Windows.Visibility.Hidden) LonOffsetTxBl.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) LonOffsetTxBx.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) If m_nToolType = MCH_TY.DRILL_STD Then AbsorptionBrd.SetValue(Grid.RowProperty, 19) Else AbsorptionBrd.SetValue(Grid.RowProperty, 23) End If AbsorptionBrd.Visibility = If(m_nToolType <> MCH_TY.WATERJET, Windows.Visibility.Visible, Windows.Visibility.Hidden) Dim bShowUserNotes As Boolean = ((m_nToolType = MCH_TY.SAW_STD And m_CurrMachine.ShowUserNotes <> 0) Or m_CurrMachine.ShowUserNotes = 1) UserNotesTxBl.Visibility = If(bShowUserNotes, Windows.Visibility.Visible, Windows.Visibility.Hidden) UserNotesTxBx.Visibility = If(bShowUserNotes, Windows.Visibility.Visible, Windows.Visibility.Hidden) Dim bShowSpecials As Boolean = ((m_nToolType = MCH_TY.SAW_STD And m_CurrMachine.ShowSpecials <> 0) Or m_CurrMachine.ShowSpecials = 1) SerNbrTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) SerNbrTxBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) CodeTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) CodeTxBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) SupplierTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) SupplierTxBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) EndLifeTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) EndLifeChBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) ColorTxBl.Visibility = If(m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW, Visibility.Visible, Visibility.Hidden) ColorBtn.Visibility = If(m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW, Visibility.Visible, Visibility.Hidden) End Sub Private Sub HideToolParams() NameTxBl.Visibility = Windows.Visibility.Hidden NameTxBx.Visibility = Windows.Visibility.Hidden TCPosBrd.Visibility = Windows.Visibility.Hidden HeadExitBrd.Visibility = Windows.Visibility.Hidden SpeedGpBx.Visibility = Windows.Visibility.Hidden FeedGpBx.Visibility = Windows.Visibility.Hidden CoolantTxBl.Visibility = Windows.Visibility.Hidden CoolantCmBx.Visibility = Windows.Visibility.Hidden CorrTxBl.Visibility = Windows.Visibility.Hidden CorrTxBx.Visibility = Windows.Visibility.Hidden MaxMatTxBl.Visibility = Windows.Visibility.Hidden MaxMatTxBx.Visibility = Windows.Visibility.Hidden OffsetGpBx.Visibility = Windows.Visibility.Hidden AbsorptionBrd.Visibility = Windows.Visibility.Hidden UserNotesTxBl.Visibility = Windows.Visibility.Hidden UserNotesTxBx.Visibility = Windows.Visibility.Hidden SerNbrTxBl.Visibility = Windows.Visibility.Hidden SerNbrTxBx.Visibility = Windows.Visibility.Hidden CodeTxBl.Visibility = Windows.Visibility.Hidden CodeTxBx.Visibility = Windows.Visibility.Hidden SupplierTxBl.Visibility = Windows.Visibility.Hidden SupplierTxBx.Visibility = Windows.Visibility.Hidden EndLifeTxBl.Visibility = Windows.Visibility.Hidden EndLifeChBx.Visibility = Windows.Visibility.Hidden ColorTxBl.Visibility = Visibility.Hidden ColorBtn.Visibility = Visibility.Hidden End Sub Private Sub ToolTreeView_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles ToolTreeView.PreviewMouseUp ' Se necessario, chiedo se salvare l'utensile corrente If Not SaveCurrTool() Then Dim PreviousTool As CustomItem = m_OldItem PreviousTool.IsSelected = True Exit Sub End If ' Aggiorno If TypeOf ToolTreeView.SelectedItem Is CathegoryItem Then Dim SelectedCathegory As CathegoryItem = ToolTreeView.SelectedItem SelectedCathegory.IsExpanded = Not SelectedCathegory.IsExpanded HideToolParams() HideToolDraw() ElseIf TypeOf ToolTreeView.SelectedItem Is CustomItem Then Dim SelectedTool As CustomItem = ToolTreeView.SelectedItem EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) EgtTdbSetCurrTool(SelectedTool.Name) GetToolParams() ViewToolParams() ViewToolDraw() End If m_OldItem = ToolTreeView.SelectedItem End Sub Private Sub ViewToolDraw() ' Preparo dati per modello dell'utensile e lo creo If Not PrepareToolDraw() OrElse Not CreateToolDraw() Then EgtSetCurrentContext(ToolScene.GetCtx()) EgtNewFile() End If ' Aggiorno visualizzazione EgtSetCurrentContext(ToolScene.GetCtx()) EgtSetView(VT.TOP, False) 'EgtSetGenericView(150, -150) 'EgtSetView(VT.ISO_SE, False) EgtZoom(ZM.ALL) End Sub Private Sub HideToolDraw() EgtSetCurrentContext(ToolScene.GetCtx()) EgtNewFile() EgtDraw() End Sub Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ToolScene.OnMouseDownScene ' Annullo nome variabile corrente m_sCurrVar = String.Empty ' Si può selezionare solo con il tasto sinistro e se stato NULL If e.Button <> Windows.Forms.MouseButtons.Left Or Not ToolScene.IsStatusNull() Then Return End If ' Verifico se selezionato testo di quota EgtSetObjFilterForSelWin(False, False, False, False, True) Dim nSel As Integer EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel) Dim nId As Integer = EgtGetFirstObjInSelWin() While nId <> GDB_ID.NULL ' Recupero eventuale info di variabile Dim sVar As String = String.Empty If EgtGetInfo(nId, "Var", sVar) Then m_sCurrVar = sVar EgtSelectObj(nId) EgtDraw() Exit While End If nId = EgtGetNextObjInSelWin() End While ' Se non modifica variabile If String.IsNullOrWhiteSpace(m_sCurrVar) Then Return ' Recupero il valore della variabile Dim dVal As Double If Not GetVariableValue(dVal) Then Return ' Recupero indice messaggio titolo per calcolatrice Dim nMsg As Integer = 0 Select Case GetVariableType() Case MCH_TP.LEN nMsg = MSG_TOOLSDBPAGEUC + 21 ' Lunghezza Case MCH_TP.DIAM nMsg = MSG_TOOLSDBPAGEUC + 22 ' Diametro Case MCH_TP.THICK nMsg = MSG_TOOLSDBPAGEUC + 23 ' Spessore Case MCH_TP.MAXMAT nMsg = MSG_TOOLSDBPAGEUC + 24 ' Tagliente Case MCH_TP.CORE nMsg = 90720 ' Anima Case STEM nMsg = 90719 ' Lunghezza portautensile End Select ' Predispongo calcolatrice (converto sempre in UIUnits perchè tutte lunghezze) Dim EgtCalculator As New EgtCalculatorWD(m_MainWindow, EgtToUiUnits(dVal), 300, WidthType.PIXEL, 0, 0, EgtMsg(nMsg)) ' Se inserito valore valido e confermato If EgtCalculator.DialogResult Then RecreateToolDraw(EgtFromUiUnits(EgtCalculator.dResult)) End If ' Aggiorno visualizzazione EgtSetCurrentContext(ToolScene.GetCtx()) EgtDeselectAll() EgtSetView(VT.TOP, False) EgtZoom(ZM.ALL) End Sub Private Sub RecreateToolDraw(ByVal dVal As Double) ' Salvo il vecchio valore Dim dOldVal As Double GetVariableValue(dOldVal) ' Aggiorno dati utensile SetVariableValue(dVal) ' Creo utensile If CreateToolDraw() Then Return ' Creazione fallita, ritorno ai valori precedenti SetVariableValue(dOldVal) CreateToolDraw() End Sub Private Function GetVariableValue(ByRef dVal As Double) As Boolean ' Recupero valore variabile EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim nVarType As Integer = GetVariableType() If m_nToolType <> MCH_TY.SAW_STD OrElse nVarType <> STEM Then Return EgtTdbGetCurrToolParam(nVarType, dVal) Else Dim dL, dCore, dTh As Double If EgtTdbGetCurrToolParam(MCH_TP.LEN, dL) AndAlso EgtTdbGetCurrToolParam(MCH_TP.CORE, dCore) AndAlso EgtTdbGetCurrToolParam(MCH_TP.THICK, dTh) Then dVal = Math.Max(dL - (dCore + dTh) / 2, 0.0) Return True Else Return False End If End If End Function Private Function SetVariableValue(ByVal dVal As Double) As Boolean ' Recupero tipo di variabile EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim nType As Integer = GetVariableType() If m_nToolType = MCH_TY.SAW_STD Then Select Case nType Case MCH_TP.LEN ' lunghezza totale maggiorata di 1 mm per non essere riconosciuta come lama piatta EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dVal + 1) Case MCH_TP.DIAM EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dVal) Case MCH_TP.THICK If m_bNewSawbladeMaker Then Dim dTh, dLen As Double If EgtTdbGetCurrToolParam(MCH_TP.THICK, dTh) AndAlso EgtTdbGetCurrToolParam(MCH_TP.LEN, dLen) Then Dim dNewLen As Double = dLen + ((dVal - dTh) / 2) EgtTdbSetCurrToolParam(MCH_TP.LEN, dNewLen) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dNewLen + 1) Else Return False End If End If Case MCH_TP.CORE If m_bNewSawbladeMaker Then Dim dCore, dLen As Double If EgtTdbGetCurrToolParam(MCH_TP.CORE, dCore) AndAlso EgtTdbGetCurrToolParam(MCH_TP.LEN, dLen) Then Dim dNewLen As Double = dLen + ((dVal - dCore) / 2) EgtTdbSetCurrToolParam(MCH_TP.LEN, dNewLen) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dNewLen + 1) Else Return False End If End If End Select ElseIf m_nToolType = MCH_TY.DRILL_STD Then Select Case nType Case MCH_TP.LEN EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dVal) Case MCH_TP.DIAM EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dVal) End Select ElseIf m_nToolType = MCH_TY.MILL_STD Or m_nToolType = MCH_TY.MILL_NOTIP Or m_nToolType = MCH_TY.MILL_POLISHING Then Select Case nType Case MCH_TP.LEN EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dVal) Case MCH_TP.DIAM EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dVal) End Select ElseIf m_nToolType = MCH_TY.WATERJET Then Select Case nType Case MCH_TP.LEN EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dVal) Case MCH_TP.DIAM EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dVal) End Select End If If m_nToolType <> MCH_TY.SAW_STD OrElse nType <> STEM Then Return EgtTdbSetCurrToolParam(nType, dVal) Else Dim dCore, dTh As Double If EgtTdbGetCurrToolParam(MCH_TP.CORE, dCore) AndAlso EgtTdbGetCurrToolParam(MCH_TP.THICK, dTh) Then Dim dL As Double = Math.Max(dVal, 0.0) + ((dCore + dTh) / 2) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dL + 1) Return EgtTdbSetCurrToolParam(MCH_TP.LEN, dL) Else Return False End If End If End Function Private Function GetVariableType() As Integer Dim nType As Integer = MCH_TP.NONE If m_sCurrVar = "LEN" Then nType = MCH_TP.LEN ElseIf m_sCurrVar = "DIAM" Then nType = MCH_TP.DIAM ElseIf m_sCurrVar = "THICK" Then nType = MCH_TP.THICK ElseIf m_sCurrVar = "MAXMAT" Then nType = MCH_TP.MAXMAT ElseIf m_sCurrVar = "CORE" Then nType = MCH_TP.CORE ElseIf m_sCurrVar = "STEM" Then nType = STEM End If Return nType End Function Private Function PrepareToolDraw() As Boolean Select Case m_nToolType Case MCH_TY.DRILL_STD ' assegno parametri geometrici EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim dToolLen As Double EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolLen) If dToolLen < EPS_SMALL Then dToolLen = 120 EgtTdbSetCurrToolParam(MCH_TP.LEN, dToolLen) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dToolLen) EgtOutLog("ToolLen too small ->" & DoubleToString(dToolLen, 1)) End If Dim dToolDiam As Double EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) If dToolDiam < EPS_SMALL Then dToolDiam = 20 EgtTdbSetCurrToolParam(MCH_TP.DIAM, dToolDiam) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dToolDiam) EgtOutLog("ToolDiam too small ->" & DoubleToString(dToolDiam, 1)) End If Dim dToolMaxMat As Double EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) If dToolMaxMat < EPS_SMALL Then dToolMaxMat = 40 EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) EgtOutLog("ToolMaxMat too small ->" & DoubleToString(dToolMaxMat, 1)) End If ' passo all'ambiente di disegno dell'utensile EgtSetCurrentContext(ToolScene.GetCtx()) Return True Case MCH_TY.SAW_STD ' assegno parametri geometrici EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim dToolLen As Double EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolLen) If dToolLen < EPS_SMALL Then dToolLen = 5 EgtTdbSetCurrToolParam(MCH_TP.LEN, dToolLen) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dToolLen) EgtOutLog("ToolLen too small ->" & DoubleToString(dToolLen, 1)) End If Dim dToolDiam As Double EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) If dToolDiam < EPS_SMALL Then dToolDiam = 200 EgtTdbSetCurrToolParam(MCH_TP.DIAM, dToolDiam) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dToolDiam) EgtOutLog("ToolDiam too small ->" & DoubleToString(dToolDiam, 1)) End If Dim dToolThick As Double EgtTdbGetCurrToolParam(MCH_TP.THICK, dToolThick) If dToolThick < EPS_SMALL Then dToolThick = 5 EgtTdbSetCurrToolParam(MCH_TP.THICK, dToolThick) EgtOutLog("ToolThick too small ->" & DoubleToString(dToolThick, 1)) End If Dim dToolCore As Double EgtTdbGetCurrToolParam(MCH_TP.CORE, dToolCore) If dToolCore < EPS_SMALL Then dToolCore = If(dToolLen >= dToolThick, dToolThick - 1, 2 * dToolLen - dToolThick) EgtTdbSetCurrToolParam(MCH_TP.CORE, dToolCore) EgtOutLog("ToolCore too small ->" & DoubleToString(dToolCore, 1)) End If Dim dToolMaxMat As Double EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) If dToolMaxMat < EPS_SMALL Then dToolMaxMat = 40 EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) EgtOutLog("ToolMaxMat too small ->" & DoubleToString(dToolMaxMat, 1)) End If ' passo all'ambiente di disegno dell'utensile EgtSetCurrentContext(ToolScene.GetCtx()) Return True Case MCH_TY.MILL_STD ' assegno parametri geometrici EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim dToolLen As Double EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolLen) If dToolLen < EPS_SMALL Then dToolLen = 120 EgtTdbSetCurrToolParam(MCH_TP.LEN, dToolLen) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dToolLen) EgtOutLog("ToolLen too small ->" & DoubleToString(dToolLen, 1)) End If Dim dToolDiam As Double EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) If dToolDiam < EPS_SMALL Then dToolDiam = 20 EgtTdbSetCurrToolParam(MCH_TP.DIAM, dToolDiam) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dToolDiam) EgtOutLog("ToolDiam too small ->" & DoubleToString(dToolDiam, 1)) End If Dim dToolMaxMat As Double EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) If dToolMaxMat < EPS_SMALL Then dToolMaxMat = 40 EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) EgtOutLog("ToolMaxMat too small ->" & DoubleToString(dToolMaxMat, 1)) End If ' passo all'ambiente di disegno dell'utensile EgtSetCurrentContext(ToolScene.GetCtx()) Return True Case MCH_TY.MILL_NOTIP, MCH_TY.MILL_POLISHING ' assegno parametri geometrici EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim dToolLen As Double EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolLen) If dToolLen < EPS_SMALL Then dToolLen = 120 EgtTdbSetCurrToolParam(MCH_TP.LEN, dToolLen) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dToolLen) EgtOutLog("ToolLen too small ->" & DoubleToString(dToolLen, 1)) End If Dim dToolDiam As Double EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) If dToolDiam < EPS_SMALL Then dToolDiam = 20 EgtTdbSetCurrToolParam(MCH_TP.DIAM, dToolDiam) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dToolDiam) EgtOutLog("ToolDiam too small ->" & DoubleToString(dToolDiam, 1)) End If Dim dToolMaxMat As Double EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) If dToolMaxMat < EPS_SMALL Then dToolMaxMat = 40 EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) EgtOutLog("ToolMaxMat too small ->" & DoubleToString(dToolMaxMat, 1)) End If ' passo all'ambiente di disegno dell'utensile EgtSetCurrentContext(ToolScene.GetCtx()) Return True Case MCH_TY.WATERJET ' assegno parametri geometrici EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) Dim dToolLen As Double EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolLen) If dToolLen < EPS_SMALL Then dToolLen = 120 EgtTdbSetCurrToolParam(MCH_TP.LEN, dToolLen) EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dToolLen) EgtOutLog("ToolLen too small ->" & DoubleToString(dToolLen, 1)) End If Dim dToolDiam As Double EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) If dToolDiam < EPS_SMALL Then dToolDiam = 20 EgtTdbSetCurrToolParam(MCH_TP.DIAM, dToolDiam) EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dToolDiam) EgtOutLog("ToolDiam too small ->" & DoubleToString(dToolDiam, 1)) End If Dim dToolMaxMat As Double EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) If dToolMaxMat < EPS_SMALL Then dToolMaxMat = 40 EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dToolMaxMat) EgtOutLog("ToolMaxMat too small ->" & DoubleToString(dToolMaxMat, 1)) End If ' passo all'ambiente di disegno dell'utensile EgtSetCurrentContext(ToolScene.GetCtx()) Return True End Select Return False End Function Private Function CreateToolDraw() As Boolean Dim nErr As Integer = EgtTdbCurrToolDraw(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx(), ToolScene.GetCtx()) EgtSetCurrentContext(ToolScene.GetCtx()) Return (nErr = 0) End Function Friend Function SaveCurrTool() As Boolean SetToolParams() ' Se dati utensile modificati If EgtTdbIsCurrToolModified() Then Dim SaveCurrToolWnd As EgtMsgBox If m_MainWindow.IsSiemensPc Then SaveCurrToolWnd = New EgtMsgBox(m_MainWindow, Me.ActualWidth / 15 * 5, EgtMsgBox.WidthType.PIXEL, "", EgtMsg(91102), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL) ' Salvare l'utensile corrente? Else SaveCurrToolWnd = New EgtMsgBox(m_MainWindow, "", EgtMsg(91102), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL) ' Salvare l'utensile corrente? End If Select Case SaveCurrToolWnd.m_nPressedBtn Case 0 ' Annulla Return False Case 1 ' Si EgtTdbSaveCurrTool() m_sToolName = NameTxBx.Text Dim CurrTool As CustomItem = TryCast(m_OldItem, CustomItem) If CurrTool IsNot Nothing Then CurrTool.Name = m_sToolName End If Case 2 ' No EgtTdbSetCurrTool(m_sToolName) GetToolParams() End Select End If Return True End Function Private Sub NameTxBx_EgtClosed(sender As Object, e As EventArgs) Handles NameTxBx.EgtClosed ' Elimino spazi iniziali e finali NameTxBx.Text = NameTxBx.Text.Trim() ' Se cambiato nome If NameTxBx.Text <> m_sToolName Then ' Imposto contesto macchina EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) ' Verifico se nome già esistente Dim TempName As String = NameTxBx.Text EgtTdbGetToolNewName(TempName) ' se già esistente, avviso e rifiuto If TempName <> NameTxBx.Text Then ' Nome già utilizzato Dim InfoBox As New EgtMsgBox(m_MainWindow, "", EgtMsg(91104), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.ESCLAMATION) ' Nome già utilizzato ' Ripristino il precedente NameTxBx.Text = m_sToolName End If End If End Sub Private Sub TCPosTxBx_EgtClosed(sender As Object, e As EventArgs) Handles TCPosTxBx.EgtClosed VerifyToolInSetUp(m_sToolName, TCPosTxBx.Text) End Sub End Class