cecab9494c
- aggiunta gestione flag SpecialUnload per Linee di Produzione che non fa azzerare variabile di macchina con progetto in scarico.
1031 lines
47 KiB
VB.net
1031 lines
47 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib
|
|
Imports System.ComponentModel
|
|
Imports System.Threading
|
|
Imports System.Windows.Threading
|
|
|
|
Class MainWindow
|
|
|
|
' Mutex per avere una sola istanza del programma in esecuzione
|
|
Private m_objMutex As New Mutex
|
|
|
|
' Dichiarazione della classe di connessione al CN
|
|
Friend m_CNCommunication As CNCommunication
|
|
' Variabile per presenza collegamento al CN
|
|
Friend m_bNCLink As Boolean = False
|
|
|
|
' Dichiarazione della MachineStatusBar
|
|
Friend m_MachineStatusUC As MachineStatusUC
|
|
|
|
' Coefficiente di scalatura della finestra rispetto a standard
|
|
Friend m_dMWinScale As Double = 1
|
|
|
|
' Dichiarazione delle Page UserControl
|
|
Friend m_WorkInProgressPageUC As WorkInProgressPageUC
|
|
Friend m_CurrentProjectPageUC As CurrentProjectPageUC
|
|
Friend m_DirectCutPageUC As DirectCutPageUC
|
|
Friend m_CadCutPageUC As CadCutPageUC
|
|
Friend m_OpenPage As OpenPageUC
|
|
Friend m_PhotoPage As PhotoPageUC
|
|
Friend m_RawPartPage As RawPartPageUC
|
|
Friend m_DrawPageUC As DrawPageUC
|
|
Friend m_ImportPageUC As ImportPageUC
|
|
Friend m_SimulationPage As SimulationPageUC
|
|
Friend m_FrameCutPageUC As FrameCutPageUC
|
|
Friend m_MachinePageUC As MachinePageUC
|
|
Friend m_OptionsPageUC As OptionsPageUC
|
|
|
|
' Dichiarazione variabili direttori
|
|
Private m_sExeRoot As String = String.Empty
|
|
Private m_sDataRoot As String = String.Empty
|
|
Private m_sConfigDir As String = String.Empty
|
|
Private m_sResourcesDir As String = String.Empty
|
|
Private m_sTempDir As String = String.Empty
|
|
Private m_sSaveDir As String = String.Empty
|
|
Private m_sNamedSaveDir As String = String.Empty
|
|
Private m_sCopyTemplateDir As String = String.Empty
|
|
Private m_sCncDir As String = String.Empty
|
|
Private m_sMachinesRoot As String = String.Empty
|
|
Private m_sIniFile As String = String.Empty
|
|
Private m_sMachIniFile As String = String.Empty
|
|
Private m_nDebug As Integer = 0
|
|
|
|
'Dichiarazione variabile contenente la lingua corrente
|
|
Friend m_CurrLanguage As Language
|
|
'Dichiarazione lista delle lingue disponibili e lingua corrente
|
|
Friend m_LanguagesList As New List(Of Language)
|
|
|
|
' Dichiarazione classe macchina
|
|
Friend m_CurrentMachine As CurrentMachine
|
|
' Macchina corrente
|
|
Private m_sCurrMachine As String = String.Empty
|
|
|
|
' Oggetto di gestione della macchina fotografica
|
|
Friend m_Camera As New Camera
|
|
|
|
' Opzioni abilitate dalla licenza attiva associata alla chiave
|
|
Private m_nKeyOptions As UInteger
|
|
Friend Enum KEY_OPT As UInteger
|
|
CUT_BASE = 1
|
|
MAN_MANIP = 2
|
|
AUTO_MANIP = 4
|
|
MAN_PHOTO = 8
|
|
AUTO_PHOTO = 16
|
|
AUTO_NESTING = 32
|
|
ENABLE_MILL = 64
|
|
PROCUCTION_LINE = 128
|
|
OFFICE_BASE = 256
|
|
VM_MULTI = 512
|
|
UNDER_CUT = 1024
|
|
End Enum
|
|
|
|
' Dichiarazione lista per ListBox della ImportPage
|
|
Friend m_ImportItemList As New ObservableCollection(Of IconListBoxItem)
|
|
Friend m_OpenItemList As New ObservableCollection(Of IconListBoxItem)
|
|
Friend m_PhotoItemList As New ObservableCollection(Of IconListBoxItem)
|
|
|
|
' Riferimento alla pagina correntemente attiva
|
|
Friend m_ActivePage As Pages
|
|
Friend m_PrevActivePage As Pages ' Funziona solo per tornare indietro da grezzo e foto !!
|
|
|
|
' Timer per aggiornamento interfaccia
|
|
Private m_IdleTimer As New DispatcherTimer(DispatcherPriority.ApplicationIdle)
|
|
|
|
' Timer per linea di produzione
|
|
Private m_ProdLineTimer As New DispatcherTimer(DispatcherPriority.ApplicationIdle)
|
|
|
|
' Variabile che indica il tipo di pc su cui gira il programma
|
|
Private m_bIsSiemensPc As Boolean = False
|
|
|
|
Friend Enum Pages
|
|
WorkInProgress
|
|
DirectCut
|
|
CadCut
|
|
Photo
|
|
Open
|
|
RawPart
|
|
Draw
|
|
Import
|
|
CSV
|
|
Simulation
|
|
FrameCut
|
|
Machine
|
|
Alarms
|
|
Options
|
|
End Enum
|
|
|
|
Public Function GetExeRootDir() As String
|
|
Return m_sExeRoot
|
|
End Function
|
|
|
|
Public Function GetIniFile() As String
|
|
Return m_sIniFile
|
|
End Function
|
|
|
|
Public Function GetResourcesDir() As String
|
|
Return m_sResourcesDir
|
|
End Function
|
|
|
|
Public Function GetTempDir() As String
|
|
Return m_sTempDir
|
|
End Function
|
|
|
|
Public Function GetSaveDir() As String
|
|
Return m_sSaveDir
|
|
End Function
|
|
|
|
Public Function GetNamedSaveDir() As String
|
|
Return m_sNamedSaveDir
|
|
End Function
|
|
|
|
Public Function GetCamAutoDir() As String
|
|
Return m_sDataRoot & "\" & CAMAUTO_DIR
|
|
End Function
|
|
|
|
Public Function GetCsvAutoDir() As String
|
|
Return m_sDataRoot & "\" & CSVAUTO_DIR
|
|
End Function
|
|
|
|
Public Function GetCopyTemplateDir() As String
|
|
Return m_sCopyTemplateDir
|
|
End Function
|
|
|
|
Public Function GetCncDir() As String
|
|
Return m_sCncDir
|
|
End Function
|
|
|
|
Public Function GetMachinesRootDir() As String
|
|
Return m_sMachinesRoot
|
|
End Function
|
|
|
|
Public Function GetCurrMachine() As String
|
|
Return m_sCurrMachine
|
|
End Function
|
|
|
|
Public Function GetMachIniFile() As String
|
|
Return m_sMachIniFile
|
|
End Function
|
|
|
|
Friend Function GetKeyOption(nKeyOpt As KEY_OPT) As Boolean
|
|
Return ((m_nKeyOptions And nKeyOpt) <> 0)
|
|
End Function
|
|
|
|
Friend Function GetKeyOptions() As UInteger
|
|
Return m_nKeyOptions
|
|
End Function
|
|
|
|
Public Function IsSiemensPc() As Boolean
|
|
Return m_bIsSiemensPc
|
|
End Function
|
|
|
|
Private Sub MainWindow_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
|
|
' Verifico sia l'unica istanza
|
|
ManageSingleIstance()
|
|
' Imposto path di esecuzione
|
|
m_sExeRoot = System.AppDomain.CurrentDomain.BaseDirectory.TrimEnd("\".ToCharArray())
|
|
' Impostazione path radice per i dati
|
|
If GetPrivateProfileString(S_DATA, K_DATAROOT, "", m_sDataRoot, m_sExeRoot & "\" & DAT_FILE_NAME) = 0 Then
|
|
m_sDataRoot = m_sExeRoot
|
|
End If
|
|
' Impostazione direttorio di configurazione
|
|
m_sConfigDir = m_sDataRoot & "\" & CONF_DIR
|
|
' Impostazione direttorio delle risorse
|
|
m_sResourcesDir = m_sDataRoot & "\" & RES_DIR
|
|
' Impostazione direttorio per file temporanei
|
|
m_sTempDir = m_sDataRoot & "\" & TEMP_DIR
|
|
' Impostazione direttorio per file Cnc
|
|
m_sCncDir = m_sDataRoot & "\" & CNC_DIR
|
|
' Impostazione path Ini file
|
|
m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME
|
|
' Impostazione direttorio di salvataggio automatico
|
|
If GetPrivateProfileString(S_GENERAL, K_SAVEDIR, "", m_sSaveDir, m_sIniFile) = 0 Then
|
|
m_sSaveDir = m_sDataRoot & "\" & SAVE_DFL_DIR
|
|
End If
|
|
' Impostazione direttorio di salvataggio dei progetti con nome
|
|
If GetPrivateProfileString(S_GENERAL, K_SAVENAMEDIR, "", m_sNamedSaveDir, m_sIniFile) = 0 Then
|
|
m_sNamedSaveDir = m_sDataRoot & "\" & SAVE_DFL_NAMEDIR
|
|
End If
|
|
' Impostazione direttorio di salvataggio dei DXF delle dime (CopyTemplate)
|
|
If GetPrivateProfileString(S_COPYTEMPLATE, K_CPTCURRDIR, "", m_sCopyTemplateDir, m_sIniFile) = 0 Then
|
|
m_sCopyTemplateDir = m_sDataRoot & "\" & TEMPLATE_DFL_DIR
|
|
End If
|
|
' Impostazione direttorio per le macchine
|
|
If GetPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot, m_sIniFile) = 0 Then
|
|
m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR
|
|
End If
|
|
' Recupero nome macchina corrente
|
|
GetPrivateProfileString(S_MACH, K_CURRMACH, "", m_sCurrMachine, m_sIniFile)
|
|
' Impostazione path MachIni file
|
|
m_sMachIniFile = m_sMachinesRoot & "\" & m_sCurrMachine & "\" & m_sCurrMachine & ".ini"
|
|
' Leggo e imposto chiave di protezione
|
|
Dim sLicFileName As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_LICENCE, LIC_FILE_NAME, sLicFileName, m_sIniFile)
|
|
Dim sLicFile As String = m_sConfigDir & "\" & sLicFileName
|
|
Dim sKey As String = String.Empty
|
|
GetPrivateProfileString(S_LICENCE, K_KEY, "", sKey, sLicFile)
|
|
EgtSetKey(sKey)
|
|
' Recupero opzioni della chiave
|
|
Dim bKey As Boolean = EgtGetKeyOptions(9423, 16, 1, m_nKeyOptions)
|
|
' Verifico abilitazione prodotto
|
|
Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE)
|
|
' Inizializzazione generale di EgtInterface
|
|
m_nDebug = GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_sIniFile)
|
|
Dim sLogFile As String = m_sTempDir & "\" & GENLOG_FILE_NAME
|
|
Dim sLogMsg As String = My.Application.Info.Description.ToString() & " ver. " &
|
|
My.Application.Info.Version.Major.ToString() &
|
|
"." & My.Application.Info.Version.Minor.ToString() &
|
|
(ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
|
|
My.Application.Info.Version.Revision.ToString()
|
|
EgtInit(m_nDebug, sLogFile, sLogMsg)
|
|
' Leggo direttorio dei messaggi (se manca uso direttorio di configurazione)
|
|
Dim sMsgDir As String = String.Empty
|
|
If GetPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir, m_sIniFile) = 0 Then
|
|
sMsgDir = m_sConfigDir
|
|
End If
|
|
' Leggo elenco lingue disponibili da file ini
|
|
Dim nIndex As Integer = 1
|
|
Dim ReadLanguage As Language = GetPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex, GetIniFile)
|
|
While Not IsNothing(ReadLanguage)
|
|
m_LanguagesList.Add(ReadLanguage)
|
|
nIndex += 1
|
|
ReadLanguage = GetPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex, GetIniFile)
|
|
End While
|
|
' Leggo file messaggi
|
|
Dim sMsgFile As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_MESSAGES, "", sMsgFile, m_sIniFile)
|
|
For i As Integer = 0 To m_LanguagesList.Count - 1
|
|
If m_LanguagesList(i).LanguageName = sMsgFile Then
|
|
m_CurrLanguage = m_LanguagesList(i)
|
|
End If
|
|
Next
|
|
Dim sMsgFilePath As String = sMsgDir & "\EgalTechIta.txt"
|
|
If Not IsNothing(m_CurrLanguage) Then
|
|
sMsgFilePath = sMsgDir & "\" & m_CurrLanguage.FileName
|
|
End If
|
|
If Not EgtLoadMessages(sMsgFilePath) Then
|
|
EgtOutLog("Error in EgtLoadMessages")
|
|
End If
|
|
Dim sNfeDir As String = String.Empty
|
|
GetPrivateProfileString(S_GEOMDB, K_NFEFONTDIR, "", sNfeDir, m_sIniFile)
|
|
Dim sDefFont As String = String.Empty
|
|
GetPrivateProfileString(S_GEOMDB, K_DEFAULTFONT, "", sDefFont, m_sIniFile)
|
|
EgtSetFont(sNfeDir, sDefFont)
|
|
' Imposto dir di default per libreria Lua e lancio libreria di base
|
|
Dim sLuaLibsDir As String = String.Empty
|
|
GetPrivateProfileString(S_LUA, K_LIBSDIR, "", sLuaLibsDir, m_sIniFile)
|
|
EgtSetLuaLibs(sLuaLibsDir)
|
|
Dim sLuaBaseLib As String = String.Empty
|
|
GetPrivateProfileString(S_LUA, K_BASELIB, "EgtBase", sLuaBaseLib, m_sIniFile)
|
|
EgtLuaRequire(sLuaBaseLib)
|
|
' Imposto unità di misura per interfaccia utente
|
|
Dim bMM As Boolean = (GetPrivateProfileInt(S_GENERAL, K_MMUNITS, 1, m_sIniFile) <> 0)
|
|
EgtSetUiUnits(bMM)
|
|
' Imposto posizione e dimensioni della MainWindow
|
|
Dim nFlag, nLeft, nTop, nWidth, nHeight As Integer
|
|
GetPrivateProfileWinPos(S_GENERAL, K_WINPLACE, nFlag, nLeft, nTop, nWidth, nHeight, m_sIniFile)
|
|
Me.WindowStartupLocation = Windows.WindowStartupLocation.Manual
|
|
Me.Top = nTop
|
|
Me.Left = nLeft
|
|
Me.Height = nHeight
|
|
Me.Width = nWidth
|
|
WindowState = If(nFlag = 1, WindowState.Maximized, WindowState.Normal)
|
|
m_dMWinScale = Math.Min(Me.Width / 1280, Me.Height / 832)
|
|
' Info su opzioni chiave
|
|
EgtOutLog("KeyOptions : " & bKey.ToString() & " " & m_nKeyOptions.ToString() & " " & bProd.ToString())
|
|
' Inizializzazione della libreria EgtWPFLib
|
|
EgtWPFInit()
|
|
' Inizializzo classe macchina corrente
|
|
m_CurrentMachine = New CurrentMachine
|
|
' Crezione della MachineStatusBar
|
|
m_MachineStatusUC = New MachineStatusUC
|
|
' Creazione delle Page UserControl
|
|
m_WorkInProgressPageUC = New WorkInProgressPageUC
|
|
m_DirectCutPageUC = New DirectCutPageUC
|
|
m_CadCutPageUC = New CadCutPageUC
|
|
m_OpenPage = New OpenPageUC
|
|
m_PhotoPage = New PhotoPageUC
|
|
m_RawPartPage = New RawPartPageUC
|
|
m_DrawPageUC = New DrawPageUC
|
|
m_ImportPageUC = New ImportPageUC
|
|
m_SimulationPage = New SimulationPageUC
|
|
m_FrameCutPageUC = New FrameCutPageUC
|
|
m_CurrentProjectPageUC = New CurrentProjectPageUC
|
|
m_MachinePageUC = New MachinePageUC
|
|
m_OptionsPageUC = New OptionsPageUC
|
|
' Creazione gestore comunicazione con macchina CN
|
|
m_CNCommunication = New CNCommunication
|
|
' Imposto tipologia di pc su cui gira il programma
|
|
m_bIsSiemensPc = If(GetPrivateProfileInt(S_GENERAL, K_SIEMENSPC, 0, GetIniFile()) = 0, False, True)
|
|
' Posizionamento nella griglia della MachineStatusBar
|
|
If GetPrivateProfileInt(S_NUMERICALCONTROL, K_TYPE, 0, GetMachIniFile()) = 0 Then
|
|
MainWindowGrid.ColumnDefinitions.RemoveAt(MainWindowGrid.ColumnDefinitions.Count - 1)
|
|
MainWindowGrid.RowDefinitions.RemoveAt(MainWindowGrid.RowDefinitions.Count - 1)
|
|
WorkInProgressBtn.IsEnabled = False
|
|
Else
|
|
If Not m_bIsSiemensPc Then
|
|
m_MachineStatusUC.SetValue(Grid.RowProperty, 2)
|
|
MainWindowGrid.ColumnDefinitions.RemoveAt(MainWindowGrid.ColumnDefinitions.Count - 1)
|
|
Else
|
|
m_MachineStatusUC.SetValue(Grid.ColumnProperty, 2)
|
|
m_MachineStatusUC.SetValue(Grid.RowSpanProperty, 3)
|
|
MainWindowGrid.RowDefinitions.RemoveAt(MainWindowGrid.RowDefinitions.Count - 1)
|
|
End If
|
|
End If
|
|
If m_bIsSiemensPc Then
|
|
Application.Current.Resources("FontSize_LowerCaseCharacter") = New FontSizeConverter().ConvertFrom(CStr("17"))
|
|
Application.Current.Resources("ComboBox_Height") = New LengthConverter().ConvertFrom(CStr("35"))
|
|
Application.Current.Resources("FontSize_GroupBoxHeader") = New LengthConverter().ConvertFrom(CStr("19"))
|
|
Application.Current.Resources("CheckBox_Height") = New LengthConverter().ConvertFrom(CStr("35"))
|
|
Application.Current.Resources("TextBoxInGroupBox_Margin") = New Thickness(2, 0, 9, 0)
|
|
Application.Current.Resources("RightTextBoxInBorder_Margin") = New Thickness(1, 0, 12, 0)
|
|
Application.Current.Resources("LeftTextBoxInBorder_Margin") = New Thickness(4, 0, 9, 0)
|
|
Application.Current.Resources("LeftTextBoxNoBorder_Margin") = New Thickness(6, 0, 9, 0)
|
|
Application.Current.Resources("RightComboBoxInBorder_Margin") = New Thickness(2, 0, 11, 0)
|
|
Application.Current.Resources("MachRightTextBoxInBorder_Margin") = New Thickness(2, 0, 11, 0)
|
|
Application.Current.Resources("MachLeftTextBoxInBorder_Margin") = New Thickness(4, 0, 9, 0)
|
|
Application.Current.Resources("LeftComboBoxInBorder_Margin") = New Thickness(4, 0, 9, 0)
|
|
Application.Current.Resources("MachToolLeftTextBoxNoBorder_Margin") = New Thickness(3, 0, 15, 0)
|
|
Application.Current.Resources("ArrowImage_Height") = New LengthConverter().ConvertFrom(CStr("52"))
|
|
Application.Current.Resources("ScaleImage_Height") = New LengthConverter().ConvertFrom(CStr("60"))
|
|
Application.Current.Resources("MachineStatusImage_Height") = New LengthConverter().ConvertFrom(CStr("65"))
|
|
Application.Current.Resources("SplitPageBtn_FontSize") = New LengthConverter().ConvertFrom(CStr("14"))
|
|
End If
|
|
' Posizionemento nella griglia delle Page UserControl
|
|
m_WorkInProgressPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_WorkInProgressPageUC.SetValue(Grid.RowProperty, 1)
|
|
m_OpenPage.SetValue(Grid.ColumnProperty, 0)
|
|
m_OpenPage.SetValue(Grid.RowProperty, 1)
|
|
m_PhotoPage.SetValue(Grid.ColumnProperty, 0)
|
|
m_PhotoPage.SetValue(Grid.RowProperty, 1)
|
|
m_RawPartPage.SetValue(Grid.ColumnSpanProperty, 2)
|
|
m_RawPartPage.SetValue(Grid.RowSpanProperty, 3)
|
|
m_SimulationPage.SetValue(Grid.ColumnSpanProperty, 2)
|
|
m_SimulationPage.SetValue(Grid.RowSpanProperty, 3)
|
|
m_DrawPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_DrawPageUC.SetValue(Grid.RowProperty, 1)
|
|
m_ImportPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_ImportPageUC.SetValue(Grid.RowProperty, 1)
|
|
m_CurrentProjectPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_CurrentProjectPageUC.SetValue(Grid.RowProperty, 1)
|
|
m_MachinePageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_MachinePageUC.SetValue(Grid.RowProperty, 1)
|
|
m_OptionsPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_OptionsPageUC.SetValue(Grid.RowProperty, 1)
|
|
' Posizionamento nella griglia di pagine e usercontrol di utilità
|
|
m_WorkInProgressPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_WorkInProgressPageUC.SetValue(Grid.RowProperty, 1)
|
|
' Disabilita la possibilità di imitare il click del tasto destro del mouse tenendo premuto il dito sul touch
|
|
' NB: Se abilitato impedisce di utilizzare lo stato Pressed dei Button che quindi non si evidenziano quando premuti
|
|
Stylus.SetIsPressAndHoldEnabled(Me, False)
|
|
' Imposto i messaggi letti dal file dei messaggi
|
|
WorkInProgressBtn.Content = EgtMsg(MSG_GENERAL + 1)
|
|
DirectCutBtn.Content = EgtMsg(MSG_GENERAL + 2)
|
|
CadCutBtn.Content = EgtMsg(MSG_GENERAL + 3)
|
|
FrameCutBtn.Content = EgtMsg(MSG_GENERAL + 4)
|
|
MachineBtn.Content = EgtMsg(MSG_GENERAL + 5)
|
|
' Imposto OnIdle
|
|
AddHandler m_IdleTimer.Tick, AddressOf OnIdle
|
|
' Imposto OnProdLine
|
|
AddHandler m_ProdLineTimer.Tick, AddressOf OnProdLine
|
|
End Sub
|
|
|
|
Private Sub ManageSingleIstance()
|
|
Dim bCreated As Boolean
|
|
Try
|
|
m_objMutex = New Mutex(False, "Global\OmagCut", bCreated)
|
|
Catch
|
|
bCreated = False
|
|
End Try
|
|
If Not bCreated Then
|
|
' porto in primo piano la prima istanza
|
|
Dim bFound As Boolean = False
|
|
' processi del programma a 32 bit
|
|
Dim localProc As Process() = Process.GetProcessesByName("OmagCutR32")
|
|
For Each p As Process In localProc
|
|
If p.Id <> Process.GetCurrentProcess().Id Then
|
|
bFound = True
|
|
ShowWindow(p.MainWindowHandle, 1)
|
|
Exit For
|
|
End If
|
|
Next
|
|
' se non trovati processi a 32 bit provo a 64 bit
|
|
If Not bFound Then
|
|
localProc = Process.GetProcessesByName("OmagCutR64")
|
|
For Each p As Process In localProc
|
|
If p.Id <> Process.GetCurrentProcess().Id Then
|
|
bFound = True
|
|
ShowWindow(p.MainWindowHandle, SW.RESTORE)
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
' esco dal programma
|
|
End
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub MainWindow_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles Me.Loaded
|
|
' Se il controllo numerico non è impostato a 0
|
|
If Not GetPrivateProfileInt(S_NUMERICALCONTROL, K_TYPE, 0, GetMachIniFile()) = 0 Then
|
|
' Aggiungo la MachineStatusBar alla MainWindow
|
|
MainWindowGrid.Children.Add(m_MachineStatusUC)
|
|
|
|
End If
|
|
|
|
' Preparo la macchina per la lavorazione in corso
|
|
m_WorkInProgressPageUC.Prepare()
|
|
m_WorkInProgressPageUC.UpdateTools()
|
|
|
|
' Se macchina fotografica abilitata, ne inizializzo il gestore
|
|
If GetKeyOption(MainWindow.KEY_OPT.MAN_PHOTO) Then
|
|
m_Camera.Init()
|
|
End If
|
|
|
|
' Seleziono la Page di apertura
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
|
|
' Lancio timer per aggiornamento interfaccia
|
|
m_IdleTimer.Interval = TimeSpan.FromMilliseconds(100)
|
|
m_IdleTimer.Start()
|
|
End Sub
|
|
|
|
Private Sub WorkInProgressBtn_Click(sender As Object, e As RoutedEventArgs) Handles WorkInProgressBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = True
|
|
Case Pages.DirectCut
|
|
WorkInProgressBtn.IsChecked = True
|
|
DirectCutBtn.IsChecked = False
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_WorkInProgressPageUC)
|
|
m_ActivePage = Pages.WorkInProgress
|
|
Case Pages.CadCut
|
|
WorkInProgressBtn.IsChecked = True
|
|
CadCutBtn.IsChecked = False
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_CadCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_WorkInProgressPageUC)
|
|
m_ActivePage = Pages.WorkInProgress
|
|
Case Pages.Photo, Pages.RawPart, Pages.Draw, Pages.Import, Pages.CSV, Pages.Simulation
|
|
WorkInProgressBtn.IsChecked = False
|
|
CadCutBtn.IsChecked = True
|
|
Case Pages.FrameCut
|
|
WorkInProgressBtn.IsChecked = True
|
|
FrameCutBtn.IsChecked = False
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_FrameCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_WorkInProgressPageUC)
|
|
m_ActivePage = Pages.WorkInProgress
|
|
Case Pages.Machine
|
|
WorkInProgressBtn.IsChecked = False
|
|
If Not ExitFromMachine() Then
|
|
WorkInProgressBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
Exit Sub
|
|
End If
|
|
WorkInProgressBtn.IsChecked = True
|
|
MachineBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_MachinePageUC)
|
|
MainWindowGrid.Children.Add(m_WorkInProgressPageUC)
|
|
m_ActivePage = Pages.WorkInProgress
|
|
Case Pages.Options
|
|
WorkInProgressBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_OptionsPageUC)
|
|
MainWindowGrid.Children.Add(m_WorkInProgressPageUC)
|
|
m_ActivePage = Pages.WorkInProgress
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub DirectCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles DirectCutBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = False
|
|
DirectCutBtn.IsChecked = True
|
|
MainWindowGrid.Children.Remove(m_WorkInProgressPageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_DirectCutPageUC)
|
|
m_ActivePage = Pages.DirectCut
|
|
Case Pages.DirectCut
|
|
DirectCutBtn.IsChecked = True
|
|
Case Pages.CadCut
|
|
DirectCutBtn.IsChecked = True
|
|
CadCutBtn.IsChecked = False
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_CadCutPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_DirectCutPageUC)
|
|
m_ActivePage = Pages.DirectCut
|
|
Case Pages.Photo, Pages.RawPart, Pages.Draw, Pages.Import, Pages.CSV, Pages.Simulation
|
|
DirectCutBtn.IsChecked = False
|
|
CadCutBtn.IsChecked = True
|
|
Case Pages.FrameCut
|
|
DirectCutBtn.IsChecked = True
|
|
FrameCutBtn.IsChecked = False
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_FrameCutPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_DirectCutPageUC)
|
|
m_ActivePage = Pages.DirectCut
|
|
Case Pages.Machine
|
|
DirectCutBtn.IsChecked = False
|
|
If Not ExitFromMachine() Then
|
|
DirectCutBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
Exit Sub
|
|
End If
|
|
DirectCutBtn.IsChecked = True
|
|
MachineBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_MachinePageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_DirectCutPageUC)
|
|
m_ActivePage = Pages.DirectCut
|
|
Case Pages.Options
|
|
DirectCutBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_OptionsPageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_DirectCutPageUC)
|
|
m_ActivePage = Pages.DirectCut
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub CadCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles CadCutBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = False
|
|
CadCutBtn.IsChecked = True
|
|
MainWindowGrid.Children.Remove(m_WorkInProgressPageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_CadCutPageUC)
|
|
m_ActivePage = Pages.CadCut
|
|
Case Pages.DirectCut
|
|
DirectCutBtn.IsChecked = False
|
|
CadCutBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_CadCutPageUC)
|
|
m_ActivePage = Pages.CadCut
|
|
Case Pages.CadCut
|
|
CadCutBtn.IsChecked = True
|
|
Case Pages.Photo, Pages.RawPart, Pages.Draw, Pages.Import, Pages.CSV, Pages.Simulation
|
|
CadCutBtn.IsChecked = True
|
|
Case Pages.FrameCut
|
|
CadCutBtn.IsChecked = True
|
|
FrameCutBtn.IsChecked = False
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_FrameCutPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_CadCutPageUC)
|
|
m_ActivePage = Pages.CadCut
|
|
Case Pages.Machine
|
|
CadCutBtn.IsChecked = False
|
|
If Not ExitFromMachine() Then
|
|
CadCutBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
Exit Sub
|
|
End If
|
|
CadCutBtn.IsChecked = True
|
|
MachineBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_MachinePageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_CadCutPageUC)
|
|
m_ActivePage = Pages.CadCut
|
|
Case Pages.Options
|
|
CadCutBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_OptionsPageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_CadCutPageUC)
|
|
m_ActivePage = Pages.CadCut
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub FrameCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles FrameCutBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = False
|
|
FrameCutBtn.IsChecked = True
|
|
MainWindowGrid.Children.Remove(m_WorkInProgressPageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_FrameCutPageUC)
|
|
m_ActivePage = Pages.FrameCut
|
|
Case Pages.DirectCut
|
|
DirectCutBtn.IsChecked = False
|
|
FrameCutBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_FrameCutPageUC)
|
|
m_ActivePage = Pages.FrameCut
|
|
Case Pages.CadCut
|
|
CadCutBtn.IsChecked = False
|
|
FrameCutBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_CadCutPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_FrameCutPageUC)
|
|
m_ActivePage = Pages.FrameCut
|
|
Case Pages.Photo, Pages.RawPart, Pages.Draw, Pages.Import, Pages.CSV, Pages.Simulation
|
|
CadCutBtn.IsChecked = True
|
|
FrameCutBtn.IsChecked = False
|
|
Case Pages.FrameCut
|
|
FrameCutBtn.IsChecked = True
|
|
Case Pages.Machine
|
|
FrameCutBtn.IsChecked = False
|
|
If Not ExitFromMachine() Then
|
|
FrameCutBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
Exit Sub
|
|
End If
|
|
FrameCutBtn.IsChecked = True
|
|
MachineBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_MachinePageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_FrameCutPageUC)
|
|
m_ActivePage = Pages.FrameCut
|
|
Case Pages.Options
|
|
FrameCutBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_OptionsPageUC)
|
|
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_FrameCutPageUC)
|
|
m_ActivePage = Pages.FrameCut
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub MachineBtn_Click(sender As Object, e As RoutedEventArgs) Handles MachineBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
MainWindowGrid.Children.Remove(m_WorkInProgressPageUC)
|
|
MainWindowGrid.Children.Add(m_MachinePageUC)
|
|
m_ActivePage = Pages.Machine
|
|
Case Pages.DirectCut
|
|
DirectCutBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_MachinePageUC)
|
|
m_ActivePage = Pages.Machine
|
|
Case Pages.CadCut
|
|
CadCutBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_CadCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_MachinePageUC)
|
|
m_ActivePage = Pages.Machine
|
|
Case Pages.Photo, Pages.RawPart, Pages.Draw, Pages.Import, Pages.CSV, Pages.Simulation
|
|
CadCutBtn.IsChecked = True
|
|
MachineBtn.IsChecked = False
|
|
Case Pages.FrameCut
|
|
FrameCutBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_FrameCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_MachinePageUC)
|
|
m_ActivePage = Pages.Machine
|
|
Case Pages.Machine
|
|
MachineBtn.IsChecked = True
|
|
Case Pages.Options
|
|
MachineBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_OptionsPageUC)
|
|
MainWindowGrid.Children.Add(m_MachinePageUC)
|
|
m_ActivePage = Pages.Machine
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OptionsBtn_Click(sender As Object, e As RoutedEventArgs) Handles OptionsBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
MainWindowGrid.Children.Remove(m_WorkInProgressPageUC)
|
|
MainWindowGrid.Children.Add(m_OptionsPageUC)
|
|
m_ActivePage = Pages.Options
|
|
Case Pages.DirectCut
|
|
DirectCutBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_OptionsPageUC)
|
|
m_ActivePage = Pages.Options
|
|
Case Pages.CadCut
|
|
CadCutBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_CadCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_OptionsPageUC)
|
|
m_ActivePage = Pages.Options
|
|
Case Pages.Photo, Pages.RawPart, Pages.Draw, Pages.Import, Pages.CSV, Pages.Simulation
|
|
CadCutBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
Case Pages.FrameCut
|
|
FrameCutBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_FrameCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_OptionsPageUC)
|
|
m_ActivePage = Pages.Options
|
|
Case Pages.Machine
|
|
OptionsBtn.IsChecked = False
|
|
If Not ExitFromMachine() Then
|
|
OptionsBtn.IsChecked = False
|
|
MachineBtn.IsChecked = True
|
|
Exit Sub
|
|
End If
|
|
MachineBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
MainWindowGrid.Children.Remove(m_MachinePageUC)
|
|
MainWindowGrid.Children.Add(m_OptionsPageUC)
|
|
m_ActivePage = Pages.Options
|
|
Case Pages.Options
|
|
OptionsBtn.IsChecked = True
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub MainWindow_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs) Handles Me.PreviewMouseDown
|
|
' Se sto fotografando, impedisco tutte le operazioni
|
|
If m_Camera.m_bBusy And Not m_CurrentProjectPageUC.m_SceneButtons.IsMouseOver Then
|
|
e.Handled = True
|
|
Return
|
|
End If
|
|
' Se già visualizzato errore, lo nascondo
|
|
If m_CurrentProjectPageUC.OutMessageBrd.IsMouseOver Then
|
|
m_CurrentProjectPageUC.ClearMessage()
|
|
End If
|
|
' Condizioni che impediscono di clickare fuori dalla calcolatrice o tastiera quando una di queste è aperta
|
|
If EgtWPFLib.EgtCalculator.GetbIsActive Then
|
|
e.Handled = True
|
|
Return
|
|
End If
|
|
If EgtWPFLib.EgtKeyboard.GetbIsActive Then
|
|
e.Handled = True
|
|
Return
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub MainWindow_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
|
|
'If (m_NumericKeyboardWD.IsVisible And e.Key = Key.Enter) Then
|
|
' m_NumericKeyboardWD.Visibility = Windows.Visibility.Hidden
|
|
'End If
|
|
End Sub
|
|
|
|
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs)
|
|
' Se premuto Shift si fa minimizzazione
|
|
If (Keyboard.Modifiers And ModifierKeys.Shift) > 0 Then
|
|
Me.WindowState = Windows.WindowState.Minimized
|
|
Return
|
|
End If
|
|
' Verifico se stato simulazione consente di uscire
|
|
If m_SimulationPage.GetSimExecuting() Then Return
|
|
' Verifica se progetto corrente da salvare
|
|
Dim bPrjToSave As Boolean = False
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
If EgtGetModified() Then
|
|
Dim SaveCurrProj As EgtMsgBox
|
|
If IsSiemensPc() Then
|
|
SaveCurrProj = New EgtMsgBox(Me, Me.ActualWidth / 17 * 5, EgtMsgBox.WidthType.PIXEL, "", EgtMsg(MSG_EGTMSGBOX + 1), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL)
|
|
Else
|
|
SaveCurrProj = New EgtMsgBox(Me, "", EgtMsg(MSG_EGTMSGBOX + 1), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL)
|
|
End If
|
|
Select Case SaveCurrProj.m_nPressedBtn
|
|
Case 0 ' Annulla
|
|
Return
|
|
Case 1 ' Si
|
|
bPrjToSave = True
|
|
Case 2 ' No
|
|
bPrjToSave = False
|
|
End Select
|
|
End If
|
|
' Uscita da pagina corrente definizione grezzo
|
|
If Not ExitFromRaw() Then Return
|
|
' Uscita da pagina corrente CSV
|
|
If Not ExitFromCsv() Then Return
|
|
' Uscita da pagina corrente di split
|
|
If Not ExitFromSplit() Then Return
|
|
' Uscita da pagina corrente di simulazione
|
|
If Not ExitFromSimulation() Then Return
|
|
' Uscita da pagina corrente di macchina
|
|
If Not ExitFromMachine() Then Return
|
|
' Uscita da pagina tagli diretti
|
|
If Not ExitFromDirectCut(sender, e) Then Return
|
|
' Eventuale salvataggio progetto corrente
|
|
If bPrjToSave Then
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
m_CurrentProjectPageUC.SaveNamedProject()
|
|
m_CurrentProjectPageUC.SaveProject()
|
|
End If
|
|
' Uscita
|
|
MainWindow_Unloaded(sender, e)
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Function ExitFromRaw() As Boolean
|
|
' Se non sono in definizione grezzo tutto ok
|
|
If m_ActivePage <> Pages.RawPart Then Return True
|
|
' Mi assicuro di terminare correttamente le operazioni
|
|
Return m_RawPartPage.ExitRawPart(True)
|
|
End Function
|
|
|
|
Private Function ExitFromCsv() As Boolean
|
|
' Salvo lo stato attuale della lista
|
|
m_CadCutPageUC.m_CSVPage.SaveCsvPartList()
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitFromSplit() As Boolean
|
|
' Se non sono in split tutto ok
|
|
If m_ActivePage <> Pages.CadCut Or m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.Nest Then Return True
|
|
' Mi assicuro di terminare correttamente lo split
|
|
m_CadCutPageUC.m_SplitPage.ExitSplit()
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitFromSimulation() As Boolean
|
|
' Se non sono in simulazione tutto ok
|
|
If m_ActivePage <> Pages.Simulation Then Return True
|
|
' Mi assicuro di terminare correttamente la simulazione
|
|
m_SimulationPage.ResetSimulation()
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitFromDirectCut(sender As Object, e As RoutedEventArgs) As Boolean
|
|
' Se non sono in tagli diretti tutto ok
|
|
If m_ActivePage <> Pages.DirectCut Then Return True
|
|
' Concludo le attività in corso
|
|
Select Case m_DirectCutPageUC.m_ActiveDirectCutPage
|
|
Case DirectCutPageUC.DirectCutPages.SingleCut
|
|
m_DirectCutPageUC.m_SingleCut.SingleCut_Unloaded(sender, e)
|
|
Case DirectCutPageUC.DirectCutPages.MultipleCut
|
|
m_DirectCutPageUC.m_MultipleCut.MultipleCut_Unloaded(sender, e)
|
|
Case DirectCutPageUC.DirectCutPages.GridCut
|
|
m_DirectCutPageUC.m_GridCut.GridCut_Unloaded(sender, e)
|
|
Case DirectCutPageUC.DirectCutPages.CopyTemplate
|
|
m_DirectCutPageUC.m_CopyTemplate.CopyTemplate_Unloaded(sender, e)
|
|
Case DirectCutPageUC.DirectCutPages.FlatteningCut
|
|
m_DirectCutPageUC.m_FlatteningCut.FlatteningCut_Unloaded(sender, e)
|
|
Case DirectCutPageUC.DirectCutPages.SawTest
|
|
m_DirectCutPageUC.m_SawTest.SawTest_Unloaded(sender, e)
|
|
End Select
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ExitFromMachine() As Boolean
|
|
' Se non sono in machine tutto ok
|
|
If m_ActivePage <> Pages.Machine Then Return True
|
|
' Concludo le attività in corso
|
|
Select Case m_MachinePageUC.m_ActiveMachinePage
|
|
Case MachinePageUC.MachinePages.Alarms
|
|
Case MachinePageUC.MachinePages.ToolsDb
|
|
' Verifica ed eventuale salvataggio utensile corrente
|
|
If Not m_MachinePageUC.m_ToolsDbPageUC.SaveCurrTool() Then
|
|
Return False
|
|
End If
|
|
' salvo il DB utensili
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
EgtTdbSave()
|
|
Case MachinePageUC.MachinePages.MachiningDb
|
|
' Verifica ed eventuale salvataggio lavorazione corrente
|
|
If Not m_MachinePageUC.m_MachiningDbPageUC.SaveCurrMachining() Then
|
|
Return False
|
|
End If
|
|
' salvo il DB utensili
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
EgtMdbSave()
|
|
End Select
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub MainWindow_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
|
|
' Chiudo comunicazione con CN
|
|
m_CNCommunication.m_CN.Stop_Connection()
|
|
' Chiudo il gestore della macchina fotografica
|
|
m_Camera.Close()
|
|
' Terminazione generale di EgtInterface
|
|
EgtExit()
|
|
' Rilascio mutex
|
|
m_objMutex.Close()
|
|
End Sub
|
|
|
|
Private Sub MainWindow_ContentRendered(sender As Object, e As EventArgs) Handles Me.ContentRendered
|
|
' Verifico presenza del collegamento al CN
|
|
m_bNCLink = (GetPrivateProfileInt(S_GENERAL, K_CNLINK, 0, m_sIniFile) <> 0)
|
|
m_CNCommunication.CNCommunication_Initialization()
|
|
' Se linea di produzione abilitata e collegata, lancio relativo timer
|
|
If m_bNCLink And m_CurrentMachine.bProdLine Then
|
|
m_ProdLineTimer.Interval = TimeSpan.FromMilliseconds(2000)
|
|
m_ProdLineTimer.Start()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub EgtWPFInit()
|
|
'EgtBasicInfo
|
|
EgtWPFLib.InitializeEgtWPFLib.EgtBasicInfo_Initialization("C:/EgtDev/OmagCUT",
|
|
1280, 1024, 15, 12,
|
|
"/#Century Gothic",
|
|
"/gothic.ttf",
|
|
Application.Current.FindResource("FontSize_UpperCaseCharacter"),
|
|
Application.Current.FindResource("FontSize_LowerCaseCharacter"))
|
|
' EgtMessageBox
|
|
EgtWPFLib.InitializeEgtWPFLib.EgtMsgBox_Initialization(Application.Current.FindResource("OmagCut_WindowBorder"),
|
|
Application.Current.FindResource("OmagCut_WindowGrayTextButton"),
|
|
Nothing,
|
|
Application.Current.FindResource("FontSize_UpperCaseCharacter"),
|
|
Application.Current.FindResource("FontSize_LowerCaseCharacter"))
|
|
'Inizializzazione della libreria
|
|
EgtWPFLib.InitializeEgtWPFLib.EgtPaths_Initialization()
|
|
End Sub
|
|
|
|
' OnIdle
|
|
Private Sub OnIdle()
|
|
' Recupero il tipo di progetto
|
|
Dim nPrjType As Integer = m_CurrentProjectPageUC.GetCurrentProjectType()
|
|
' Aggiorno interfaccia
|
|
CadCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FRAMES)
|
|
FrameCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FLATS)
|
|
End Sub
|
|
|
|
' OnProdLine
|
|
Private Sub OnProdLine()
|
|
' Acquisizione eventuale file epl dei pezzi rovinati :
|
|
' lo sposto dal direttorio condiviso al direttorio corrente dei CSV
|
|
Const CURR_PROJ_EPL As String = "CurrProj.epl"
|
|
Dim sSouFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_EPL
|
|
If My.Computer.FileSystem.FileExists(sSouFile) Then
|
|
' Leggo direttorio corrente dei file CSV e ne verifico esistenza
|
|
Dim sCurrDir As String = String.Empty
|
|
GetPrivateProfileString(S_CSV, K_CSVCURRDIR, "C:\", sCurrDir, GetIniFile())
|
|
If My.Computer.FileSystem.DirectoryExists(sCurrDir) Then
|
|
' Recupero da INI ultimo progetto mandato a View
|
|
Dim sName As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_LASTPROJTOVIEW, "", sName, GetIniFile())
|
|
Dim sDestFile As String = sCurrDir & "\Ruined" & sName & ".epl"
|
|
' Eseguo spostamento ed eventuale cancellazione
|
|
Try
|
|
' spostamento
|
|
My.Computer.FileSystem.MoveFile(sSouFile, sDestFile, True)
|
|
' se non contiene pezzi lo cancello (leggo dal primo pezzo il numero di pezzi ToNest)
|
|
Dim nToN As Integer = GetPrivateProfileInt("P1", "ToN", 0, sDestFile)
|
|
If nToN = 0 Then My.Computer.FileSystem.DeleteFile(sDestFile)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error moving or erasing " & sSouFile)
|
|
End Try
|
|
Else
|
|
EgtOutLog("Error in ruined parts management : " & sCurrDir & " not found")
|
|
' Errore nella gestione dei pezzi rovinati
|
|
m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(91119))
|
|
End If
|
|
End If
|
|
' Leggo variabile con indice progetto da copiare per OmagVIEW (standard E80025)
|
|
m_CNCommunication.m_CN.n_DReadELS_handle = 0
|
|
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sVarProjCopy, 1)
|
|
Dim nVarCopy As Integer = 0
|
|
For I = 0 To 20
|
|
System.Threading.Thread.Sleep(100)
|
|
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
|
|
nVarCopy = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
|
|
Exit For
|
|
End If
|
|
Next
|
|
' Leggo variabile con ultimo progetto mandato a OmagView
|
|
Dim nLastCopy As Integer = GetPrivateProfileInt(S_GENERAL, K_LASTPROJTOVIEW, 0, GetIniFile())
|
|
' Se non nulla e diversa da ultimo copiato, verifico se eseguire la copia
|
|
If nVarCopy <> 0 And nVarCopy <> nLastCopy Then
|
|
' Verifico esistenza progetto con numerazione equivalente e assenza file di lock
|
|
Dim sNgeFile As String = GetSaveDir() & "\" & nVarCopy.ToString("D4") & ".nge"
|
|
Dim sLockFile As String = m_CurrentMachine.sLineDataDir & "\CurrProj.lck"
|
|
Dim sEplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_EPL
|
|
If My.Computer.FileSystem.FileExists(sNgeFile) And
|
|
Not My.Computer.FileSystem.FileExists(sLockFile) And
|
|
Not My.Computer.FileSystem.FileExists(sEplFile) Then
|
|
Try
|
|
' Copio file di progetto nge
|
|
Dim sNgeDest As String = m_CurrentMachine.sLineDataDir & "\CurrProj.nge"
|
|
My.Computer.FileSystem.CopyFile(sNgeFile, sNgeDest, True)
|
|
' Se esiste file jpg omonimo, lo copio
|
|
Dim sJpgFile As String = System.IO.Path.ChangeExtension(sNgeFile, ".jpg")
|
|
If My.Computer.FileSystem.FileExists(sJpgFile) Then
|
|
Dim sJpgDest As String = m_CurrentMachine.sLineDataDir & "\CurrProj.jpg"
|
|
My.Computer.FileSystem.CopyFile(sJpgFile, sJpgDest, True)
|
|
End If
|
|
' Creo file per flag di nuovo progetto
|
|
Dim sNewDest As String = m_CurrentMachine.sLineDataDir & "\CurrProj.new"
|
|
Dim nF As Integer = FreeFile()
|
|
FileOpen(nF, sNewDest, OpenMode.Output)
|
|
Print(nF, "Status")
|
|
FileClose(nF)
|
|
' Se non è scarico speciale (tipo Henraux), dichiaro progetto copiato azzerando la relativa variabile in macchina
|
|
If Not m_CurrentMachine.bSpecialUnload Then
|
|
m_CNCommunication.m_CN.DVariables_WriteVariables2(m_CurrentMachine.sVarProjCopy, "0")
|
|
End If
|
|
' Salvo in INI indice del progetto copiato
|
|
WritePrivateProfileString(S_GENERAL, K_LASTPROJTOVIEW, nVarCopy.ToString("D4"), GetIniFile())
|
|
Catch ex As Exception
|
|
EgtOutLog("Error copying files to OmagVIEW")
|
|
' Errore in copia file per OmagVIEW
|
|
m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(91117))
|
|
End Try
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
' Evento che apre AboutBox quando viene clickato il logo
|
|
Private Sub LogoBrd_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles LogoBrd.MouseDown
|
|
Dim AboutBox As New AboutBoxWD(Me)
|
|
End Sub
|
|
|
|
End Class |