3c2c0a48ff
- razionalizzazione e correzioni a gestione comandi diretti tramite script lua.
2177 lines
102 KiB
VB.net
2177 lines
102 KiB
VB.net
Imports System.IO
|
|
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib
|
|
Imports EgtPHOTOLib
|
|
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
|
|
|
|
' Variabile che definisce l'avvio forzato in modalità FRAME
|
|
Friend m_OnlyFrame As Boolean = False
|
|
|
|
Public Shared m_bShowSVGParkInd As Boolean = False
|
|
|
|
' 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
|
|
|
|
Friend m_IsClosingApplication As Integer = 0
|
|
|
|
' 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_sCopyProjDir 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_sToolMakersDir As String = String.Empty
|
|
Private m_sIniFile As String = String.Empty
|
|
Private m_sMachIniFile As String = String.Empty
|
|
Private m_sKitsFile As String = String.Empty
|
|
Private m_sLogFile As String = String.Empty
|
|
Private m_nDebug As Integer = 0
|
|
Private m_sVersion As String = "1.1a1"
|
|
|
|
'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
|
|
|
|
' Livello della licenza attiva associata alla chiave
|
|
Private m_nKeyLevel As Integer = 0
|
|
' Opzioni abilitate dalla licenza attiva associata alla chiave
|
|
Private m_nKeyOptions As UInteger = 0
|
|
Friend Enum KEY_OPT As UInteger
|
|
CUT_BASE = 2 ^ 0 ' 1 - Prodotto OmagCUT
|
|
MAN_MANIP = 2 ^ 1 ' 2
|
|
AUTO_MANIP = 2 ^ 2 ' 4
|
|
MAN_PHOTO = 2 ^ 3 ' 8
|
|
AUTO_PHOTO = 2 ^ 4 ' 16
|
|
CSV_AUTO = 2 ^ 5 ' 32
|
|
ENABLE_MILL = 2 ^ 6 ' 64
|
|
PRODUCTION_LINE = 2 ^ 7 ' 128
|
|
OFFICE_BASE = 2 ^ 8 ' 256 - Prodotto OmagOFFICE
|
|
VM_MULTI = 2 ^ 9 ' 512
|
|
UNDER_CUT = 2 ^ 10 ' 1024
|
|
CSV_SIMPLE = 2 ^ 11 ' 2048
|
|
PHOTO_BASE = 2 ^ 12 ' 4096 - Prodotto OmagPHOTO
|
|
TRF_IMPORT = 2 ^ 13 ' 8192
|
|
MOVE_PARTS = 2 ^ 14 ' 16384
|
|
IMPORT_SLABDXF = 2 ^ 15 ' 32768
|
|
CURVED_FRAME = 2 ^ 16 ' 65536
|
|
ENABLE_WJ = 2 ^ 17 ' 131072
|
|
ENABLE_POLISHING = 2 ^ 18 ' 262144
|
|
OFFICE_TYPE = 2 ^ 19 ' 524288
|
|
REGISTRATION = 2 ^ 20 ' 1048576
|
|
SIMPLESTATISTICS = 2 ^ 21 ' 2097152
|
|
COMPOFRAME = 2 ^ 22 ' 4194304
|
|
CUT_LIGHT = 2 ^ 23 ' 8388608
|
|
End Enum
|
|
' Opzione nesting automatico
|
|
Private m_bAutoNest As Boolean = False
|
|
|
|
' 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
|
|
|
|
' Timer per linea di produzione
|
|
Private m_ProdLineTimer As New DispatcherTimer
|
|
|
|
' Variabile che indica il tipo di pc su cui gira il programma
|
|
Private m_bIsSiemensPc As Boolean = False
|
|
|
|
' Abilitazione parcheggio dei pezzi
|
|
Private m_bEnabledDxfPark As Boolean = False
|
|
|
|
' Variabile che indica il colore corrente di ColorToSIdeAng in OptionsPageUC
|
|
Friend m_brCurrentColor As Brush
|
|
|
|
Friend Enum Pages
|
|
WorkInProgress
|
|
DirectCut
|
|
CadCut
|
|
Photo
|
|
Open
|
|
RawPart
|
|
Draw
|
|
Import
|
|
CSV
|
|
Simulation
|
|
FrameCut
|
|
Machine
|
|
Alarms
|
|
Options
|
|
End Enum
|
|
|
|
' Elenco delle operazioni tagli diretti (decoficiato in CamAuto per riconoscere il tipo taglio diretto)
|
|
Friend Enum FlagDirectCuts
|
|
ManualMove = 1
|
|
SingleCut = 2
|
|
GridCut = 3
|
|
SingleDrill = 4
|
|
Flattening = 5
|
|
Squaring = 6
|
|
SawTest = 7
|
|
Polishing = 8
|
|
CopyTemplate = 9
|
|
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 GetConfigDir() As String
|
|
Return m_sConfigDir
|
|
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 GetCopyProjDir() As String
|
|
Return m_sCopyProjDir
|
|
End Function
|
|
|
|
Public Function GetVeinMatchingDir() As String
|
|
Return m_sDataRoot & "\" & VEINMATCHING_DIR
|
|
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 GetTrfAutoDir() As String
|
|
Return m_sDataRoot & "\" & TRFAUTO_DIR
|
|
End Function
|
|
|
|
Public Function GetRuinedPartsDir() As String
|
|
Dim sRuPartsDir As String = String.Empty
|
|
If GetPrivateProfileString(S_CSV, K_RUINEDPARTSDIR, "", sRuPartsDir, m_sIniFile) = 0 Then
|
|
sRuPartsDir = m_sDataRoot & "\" & RUINEDPARTS_DFL_DIR
|
|
End If
|
|
Return sRuPartsDir
|
|
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 GetToolMakersDir() As String
|
|
Return m_sToolMakersDir
|
|
End Function
|
|
|
|
Public Function GetCurrMachine() As String
|
|
Return m_sCurrMachine
|
|
End Function
|
|
|
|
Public Function GetMachIniFile() As String
|
|
Return m_sMachIniFile
|
|
End Function
|
|
|
|
Public Function GetKitsFile() As String
|
|
Return m_sKitsFile
|
|
End Function
|
|
|
|
Public Function GetLogFile() As String
|
|
Return m_sLogFile
|
|
End Function
|
|
|
|
Friend Function GetKeyLevel() As Integer
|
|
Return m_nKeyLevel
|
|
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
|
|
|
|
Friend Function GetAutoNestingOption() As Boolean
|
|
Return m_bAutoNest
|
|
End Function
|
|
|
|
Friend Function GetVersion() As String
|
|
Return m_sVersion
|
|
End Function
|
|
|
|
Public Function IsSiemensPc() As Boolean
|
|
Return m_bIsSiemensPc
|
|
End Function
|
|
|
|
Public Function EnabledDxfPark() As Boolean
|
|
Return m_bEnabledDxfPark
|
|
End Function
|
|
|
|
Public Function GetDebug() As Integer
|
|
Return m_nDebug
|
|
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
|
|
' imposto nella libreria il riferimento del file config
|
|
EgtWPFLib5.IniFile.m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME
|
|
' Impostazione direttorio delle risorse
|
|
m_sResourcesDir = m_sDataRoot & "\" & RES_DIR
|
|
' Impostazione direttorio per file temporanei
|
|
m_sTempDir = m_sDataRoot & "\" & TEMP_DIR
|
|
EgtSetTempDir(m_sTempDir)
|
|
' Impostazione direttorio per file Cnc
|
|
m_sCncDir = m_sDataRoot & "\" & CNC_DIR
|
|
' Impostazione path Ini file
|
|
m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME
|
|
EgtSetIniFile(m_sIniFile)
|
|
' 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 copia dei progetti per modalità Ufficio
|
|
If GetPrivateProfileString(S_GENERAL, K_COPYPROJDIR, "", m_sCopyProjDir, m_sIniFile) = 0 Then
|
|
m_sCopyProjDir = m_sDataRoot & "\" & COPYPROJ_DFL_DIR
|
|
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
|
|
' Impostazione direttorio costruttori di utensili
|
|
If GetPrivateProfileString(S_MACH, K_TOOLMAKERSDIR, "", m_sToolMakersDir, m_sIniFile) = 0 Then
|
|
m_sToolMakersDir = m_sDataRoot & "\" & TOOLMAKERS_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"
|
|
' Impostazione path Kit file
|
|
m_sKitsFile = m_sMachinesRoot & "\" & m_sCurrMachine & "\" & MACHININGS_DIR & "\" & KITS_FILE
|
|
' Imposto tipo di chiave
|
|
#If TRIAL Then
|
|
EgtSetLockType(KEY_TYPE.ANY)
|
|
#Else
|
|
EgtSetLockType(KEY_TYPE.HW)
|
|
#End If
|
|
' 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)
|
|
Dim sNestKey As String = ""
|
|
EgtUILib.GetPrivateProfileString(S_LICENCE, K_NESTKEY, "", sNestKey, sLicFile)
|
|
EgtSetNestKey(sNestKey)
|
|
Dim bNetHwKey As Boolean = (GetPrivateProfileInt(S_GENERAL, K_NETKEY, 0, m_sIniFile) = 1)
|
|
EgtSetNetHwKey(bNetHwKey)
|
|
|
|
' Impostazioni per chiave di rete
|
|
Dim bNetKey As Boolean = (GetPrivateProfileInt(S_GENERAL, K_NETKEY, 0, m_sIniFile) = 1)
|
|
EgtSetNetHwKey(bNetKey)
|
|
Dim sLockId As String = ""
|
|
EgtUILib.GetPrivateProfileString(S_LICENCE, K_LOCKID, "", sLockId, sLicFile)
|
|
If Not String.IsNullOrEmpty(sLockId) Then
|
|
EgtSetLockId(sLockId)
|
|
End If
|
|
|
|
' Verifico abilitazione nesting automatico
|
|
m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey)
|
|
' Recupero opzioni della chiave
|
|
Dim bKey As Boolean = EgtGetKeyLevel(9423, 3102, 1, m_nKeyLevel) And
|
|
EgtGetKeyOptions(9423, 3102, 1, m_nKeyOptions)
|
|
' Verifico abilitazione prodotto
|
|
Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE)
|
|
' Impostazione per programma OnlyFrame: solo se CUT_BASE non attivo
|
|
If Not bProd Then
|
|
m_OnlyFrame = GetKeyOption(KEY_OPT.CUT_LIGHT)
|
|
End If
|
|
|
|
' Inizializzazione generale di EgtInterface
|
|
m_nDebug = GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_sIniFile)
|
|
m_sVersion = 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()
|
|
m_sLogFile = m_sTempDir & "\" & GENLOG_FILE_NAME
|
|
Dim sLogMsg As String = My.Application.Info.Title.ToString() & " ver. " & m_sVersion
|
|
EgtInit(m_nDebug, m_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 = If(nHeight = 0, 768, nHeight)
|
|
Me.Width = If(nWidth = 0, 1366, 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()
|
|
EgtTextBox.EnableKeybCalc = (GetPrivateProfileInt(S_GENERAL, K_VIRTUALKEYBOARD, 1, m_sIniFile) <> 0)
|
|
' Abilitazione parcheggio pezzi
|
|
m_bEnabledDxfPark = ( GetPrivateProfileInt(S_GENERAL, K_ENABLEDXFPARK, 0, GetIniFile) <> 0)
|
|
' 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
|
|
|
|
' Abilito il bottone per la gestione del comando di Check-Up-Start (posiziono utensile scelto prelavorazione)
|
|
If GetPrivateProfileInt(S_GENERAL, "Test", 0, m_sIniFile) = 0 OrElse
|
|
Not File.Exists(m_CurrentMachine.sMachDir() & "\DirectCmd\TestWork.lua") Then
|
|
m_CadCutPageUC.m_ProjectMgr.TestBtn.Visibility = Visibility.Collapsed
|
|
EgtOutLog("Warning: Missing file 'TestWork.lua' in folder 'DirectCmd', button 'TEST' collapsed!")
|
|
Else
|
|
m_CadCutPageUC.m_ProjectMgr.TestBtn.Visibility = Visibility.Visible
|
|
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(90001) ' IN LAVORO
|
|
DirectCutBtn.Content = EgtMsg(90002) ' TAGLI DIRETTI
|
|
CadCutBtn.Content = EgtMsg(90003) ' TAGLI CAD
|
|
FrameCutBtn.Content = EgtMsg(90004) ' CORNICI
|
|
MachineBtn.Content = EgtMsg(90005) ' MACCHINA
|
|
' Imposto OnIdle
|
|
AddHandler m_IdleTimer.Tick, AddressOf OnIdle
|
|
' Imposto OnProdLine
|
|
AddHandler m_ProdLineTimer.Tick, AddressOf OnProdLine
|
|
' Imposto riferimento a funzione delle textbox che disattiva scene in libreria
|
|
EgtWPFLib.EgtTextBox.m_refScenesIsEnabled = AddressOf IsEnabledScenes
|
|
|
|
' --------------------------------- SLAB DB -------------------------------------------------------
|
|
If GetPrivateProfileInt(S_SCRAPS, K_ENABLESCRAPS, 0, GetIniFile()) <> 0 Then
|
|
' leggo il direttorio in cui cercare il database delle lastre
|
|
Dim PhotDir As String = String.Empty
|
|
GetPrivateProfileString(S_SCRAPS, K_PHOTODIR, "", PhotDir, GetIniFile())
|
|
' verifico che esista il file "OmagPHOTOVb.sqlite" nel direttorio inidicato
|
|
If System.IO.File.Exists(PhotDir.Trim & "\" & DB_FILENAME) Then
|
|
|
|
If Not ManageDb.ConnectToDb(PhotDir.Trim & "\" & DB_FILENAME) Then
|
|
EgtOutLog("Error connecting to DB: " & PhotDir.Trim & "\" & DB_FILENAME)
|
|
' coumico che il grezzo contiene un pezzo e quindi non può essere definito come grezzo
|
|
m_CurrentProjectPageUC.ClearMessage()
|
|
m_CurrentProjectPageUC.SetErrorMessage("Denied connection SlabDB")
|
|
Else
|
|
' Impostazione direttorio per backup
|
|
Dim BackUpDir As String = m_sDataRoot & "\BackUp"
|
|
Directory.CreateDirectory(BackUpDir)
|
|
EgtPHOTOLib.MainData.SetConfigDir(m_sConfigDir)
|
|
EgtPHOTOLib.MainData.SetKeyLevel(m_nKeyLevel)
|
|
EgtPHOTOLib.MainData.SetKeyOptions(CInt(m_nKeyOptions))
|
|
EgtPHOTOLib.MainData.SetPhotoDir(PhotDir)
|
|
EgtPHOTOLib.MainData.SetBackUpDir(BackUpDir)
|
|
EgtPHOTOLib.MainData.SetIsOMagCUT(True)
|
|
Dim sLastBlock As String = String.Empty
|
|
GetPrivateProfileString(S_SCRAPS, K_LASTBLOCK, "", sLastBlock, GetIniFile())
|
|
If Not String.IsNullOrEmpty(sLastBlock) Then
|
|
EgtPHOTOLib.MainData.SetLastBlock(sLastBlock)
|
|
End If
|
|
|
|
If GetPrivateProfileInt(S_SCRAPS, K_ENABLE_PRINTER, 0, GetIniFile()) = 1 Then
|
|
' leggo nome file prn (per stampante zebra)
|
|
Dim m_TemplateFilePrinter As String = String.Empty
|
|
GetPrivateProfileString(S_SCRAPS, K_TEMPLATE, m_sDataRoot & "\Label\Default.prn", m_TemplateFilePrinter, GetIniFile())
|
|
' leggo nome del direttorio in cui scrivere il file ini (per stampante zebra) -- solo se si desidera scrivere il file in un direttorio diverso
|
|
Dim m_DatFilePrinter As String = String.Empty
|
|
GetPrivateProfileString(S_SCRAPS, K_DAT, m_sDataRoot & "\Temp", m_DatFilePrinter, GetIniFile())
|
|
' leggo nome file exe (per stampante zebra)
|
|
Dim m_ZebraUtilitiesExe As String = String.Empty
|
|
GetPrivateProfileString(S_SCRAPS, K_ZEBRAUTILITIES, System.AppDomain.CurrentDomain.BaseDirectory & "ZebraPrinterUtilitiesR32.exe", m_ZebraUtilitiesExe, GetIniFile())
|
|
EgtPHOTOLib.MainData.SetTemplateFilePrinter(m_TemplateFilePrinter)
|
|
EgtPHOTOLib.MainData.SetDataFilePrinter(m_DatFilePrinter)
|
|
EgtPHOTOLib.MainData.SetZebraPrinterExe(m_ZebraUtilitiesExe)
|
|
EgtPHOTOLib.MainData.SetPrinterVisibility(True)
|
|
Else
|
|
EgtPHOTOLib.MainData.SetPrinterVisibility(False)
|
|
End If
|
|
|
|
' è permessa una sola istanza alla volta del programma OmagCUT -> "(1)" : "(" & nIstance.ToString & ")"
|
|
EgtPHOTOLib.MainData.SetUser(Environment.MachineName & "\" & Environment.UserName & " (1)")
|
|
Dim sIdKey As String = String.Empty
|
|
EgtGetKeyInfo(sIdKey)
|
|
EgtPHOTOLib.MainData.SetKey(sIdKey)
|
|
End If
|
|
End If
|
|
End If
|
|
' --------------------------------- SLAB DB -------------------------------------------------------
|
|
ExitBtn.ToolTip = "Exit" & vbCrLf & "Minimize (Shift)"
|
|
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()
|
|
|
|
Dim sVal As String = String.Empty
|
|
If m_CurrentMachine.GetUserNote("FsevLength", sVal, m_CurrentMachine.sCurrSaw) Then
|
|
Dim dFsevLength As Double
|
|
StringToDouble(sVal, dFsevLength)
|
|
m_CurrentMachine.SetFsevLength(dFsevLength)
|
|
End If
|
|
If m_CurrentMachine.GetUserNote("FsevPerc", sVal, m_CurrentMachine.sCurrSaw) Then
|
|
Dim dFsevPerc As Double
|
|
StringToDouble(sVal, dFsevPerc)
|
|
m_CurrentMachine.SetFsevPerc(dFsevPerc)
|
|
End If
|
|
|
|
' Se macchina fotografica abilitata, ne inizializzo il gestore
|
|
#If Not TRIAL Then
|
|
If GetKeyOption(MainWindow.KEY_OPT.MAN_PHOTO) Then
|
|
m_Camera.Init()
|
|
End If
|
|
#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()
|
|
|
|
Dim sAssStatus As String = " discontinued"
|
|
Dim nAssLeftDays As Integer
|
|
' MESSAGGIO...
|
|
If EgtGetKeyAssLeftDays(nAssLeftDays) And nAssLeftDays >= 0 Then
|
|
If nAssLeftDays > 0 Then
|
|
sAssStatus = "expires within " & nAssLeftDays.ToString() & " days"
|
|
'sAssStatus = "to be renewed within " & nAssLeftDays.ToString() & " days"
|
|
Else
|
|
sAssStatus = "Expired"
|
|
End If
|
|
End If
|
|
|
|
Dim bShowInfoAssistance As Boolean = True
|
|
bShowInfoAssistance = (GetPrivateProfileInt(S_GENERAL, K_SHOWEXPIREASSITANCE, "1", GetIniFile) <> 0)
|
|
' Or nAssLeftDays = 358
|
|
If bShowInfoAssistance And ((nAssLeftDays <= 7 And nAssLeftDays >= 0) Or nAssLeftDays = 14 Or nAssLeftDays = 21 Or nAssLeftDays = 28) Then
|
|
' 91145=Avviso importante
|
|
Dim sMsg_Title As String = EgtMsg(91145)
|
|
' 91146=Il contratto di aggiornamento della licenza in uso scadrà tra {0} giorni./n
|
|
Dim sMsg_AssStatus As String = String.Format(EgtMsg(91146), nAssLeftDays.ToString())
|
|
' 91147=Se desiderate rimanere aggiornati e continuare ad usufruire dei benefici del servizio, vi invitiamo a contattare la nostra assistenza al seguente indirizzo:/n
|
|
Dim sMsg_RefAssistance As String = EgtMsg(91147)
|
|
Dim sAssistance As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, "Assistances", "", sAssistance, GetIniFile)
|
|
Dim sItems As String() = sAssistance.Split(","c)
|
|
For Each Item As String In sItems
|
|
sMsg_RefAssistance &= " → " & Item.Trim & " /n"
|
|
Next
|
|
' 91148=Grazie per la vostra collaborazione.
|
|
Dim sMsg_ThankYou As String = EgtMsg(91148)
|
|
Dim MyLicWn As New LicenseWindow(Me, sMsg_AssStatus & sMsg_RefAssistance & sMsg_ThankYou, sMsg_Title)
|
|
MyLicWn.WindowStartupLocation = WindowStartupLocation.CenterOwner
|
|
MyLicWn.Show()
|
|
End If
|
|
|
|
' inizializzo
|
|
End Sub
|
|
|
|
#Region "Selezione dei bottoni IN LAVORO, TAGLII DIRETTI, TAGLI CAD, CORNICI, MACCHINA, OPZIONI"
|
|
|
|
Private Sub WorkInProgressBtn_Click(sender As Object, e As RoutedEventArgs) Handles WorkInProgressBtn.Click
|
|
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
|
|
' disbilito Test
|
|
TestOff()
|
|
' disabilito DragRettangle
|
|
DragRectangleOff()
|
|
' disabilito SplitCurv
|
|
SplitCurvWJOff()
|
|
' disattivo StartCurv
|
|
StartCurvWJOff()
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = True
|
|
Case Pages.DirectCut
|
|
WorkInProgressBtn.IsChecked = True
|
|
DirectCutBtn.IsChecked = False
|
|
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_WorkInProgressPageUC)
|
|
m_ActivePage = Pages.WorkInProgress
|
|
Case Pages.CadCut And (m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.FastGrid) And Not m_CadCutPageUC.m_NestPage.m_bRegister
|
|
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.CadCut And (m_CadCutPageUC.m_CadCutMode <> CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_NestPage.m_bRegister)
|
|
' Pages.Simulation: prma era inserito nell'elenco -> prima di procedere devo uscire dalla pagina della simulazione
|
|
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
|
|
Case Else
|
|
WorkInProgressBtn.IsChecked = False
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub DirectCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles DirectCutBtn.Click
|
|
' carico la quota di svincolo di sicurezza dell'utensile
|
|
EgtMdbGetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
|
|
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
|
|
TestOff()
|
|
DragRectangleOff()
|
|
SplitCurvWJOff()
|
|
StartCurvWJOff()
|
|
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 And (m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.FastGrid) And Not m_CadCutPageUC.m_NestPage.m_bRegister
|
|
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.CadCut And (m_CadCutPageUC.m_CadCutMode <> CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_NestPage.m_bRegister)
|
|
' Pages.Simulation: prma era inserito nell'elenco -> prima di procedere devo uscire dalla pagina della simulazione
|
|
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
|
|
Case Else
|
|
WorkInProgressBtn.IsChecked = False
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub CadCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles CadCutBtn.Click
|
|
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
|
|
TestOff()
|
|
DragRectangleOff()
|
|
SplitCurvWJOff()
|
|
StartCurvWJOff()
|
|
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
|
|
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
|
|
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: prma era inserito nell'elenco -> prima di procedere devo uscire dalla pagina della simulazione
|
|
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
|
|
Case Else
|
|
CadCutBtn.IsChecked = False
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub FrameCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles FrameCutBtn.Click
|
|
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
|
|
TestOff()
|
|
DragRectangleOff()
|
|
SplitCurvWJOff()
|
|
StartCurvWJOff()
|
|
Select Case m_ActivePage
|
|
Case Pages.WorkInProgress
|
|
WorkInProgressBtn.IsChecked = False
|
|
FrameCutBtn.IsChecked = True
|
|
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
|
|
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: quando sono nella simulazione devo uscire dalla pagina
|
|
CadCutBtn.IsChecked = False
|
|
FrameCutBtn.IsChecked = True
|
|
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
|
|
Case Else
|
|
If FrameCutBtn.IsEnabled Then FrameCutBtn.IsChecked = False
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub MachineBtn_Click(sender As Object, e As RoutedEventArgs) Handles MachineBtn.Click
|
|
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
|
|
TestOff()
|
|
DragRectangleOff()
|
|
SplitCurvWJOff()
|
|
StartCurvWJOff()
|
|
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
|
|
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_MachinePageUC)
|
|
m_ActivePage = Pages.Machine
|
|
Case Pages.CadCut And (m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.FastGrid) And Not m_CadCutPageUC.m_NestPage.m_bRegister
|
|
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.CadCut And (m_CadCutPageUC.m_CadCutMode <> CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_NestPage.m_bRegister)
|
|
' Pages.Simulation: prma era inserito nell'elenco -> prima di procedere devo uscire dalla pagina della simulazione
|
|
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
|
|
Case Else
|
|
MachineBtn.IsChecked = False
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OptionsBtn_Click(sender As Object, e As RoutedEventArgs) Handles OptionsBtn.Click
|
|
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
|
|
TestOff()
|
|
DragRectangleOff()
|
|
SplitCurvWJOff()
|
|
StartCurvWJOff()
|
|
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
|
|
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
|
|
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_DirectCutPageUC)
|
|
MainWindowGrid.Children.Remove(m_CurrentProjectPageUC)
|
|
MainWindowGrid.Children.Add(m_OptionsPageUC)
|
|
m_ActivePage = Pages.Options
|
|
Case Pages.CadCut And (m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.FastGrid) And Not m_CadCutPageUC.m_NestPage.m_bRegister
|
|
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.CadCut And (m_CadCutPageUC.m_CadCutMode <> CadCutPageUC.CadCutModes.Nest Or m_CadCutPageUC.m_NestPage.m_bRegister)
|
|
' Pages.Simulation: prma era inserito nell'elenco -> prima di procedere devo uscire dalla pagina della simulazione
|
|
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 = False
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' Selezione dei bottoni IN LAVORO, TAGLII DIRETTI, TAGLI CAD, CORNICI, MACCHINA, OPZIONI
|
|
|
|
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()
|
|
' se è premuto il pulsante Shift allora provvedo ad aprire il file di Log
|
|
If (Keyboard.Modifiers And ModifierKeys.Shift) > 0 Then
|
|
' Genero file CNC (lancio anche se errore in precedenza)
|
|
Dim sTemoDirect As String = GetTempDir() & "\OmagCUTLog.txt"
|
|
Try
|
|
Process.Start("Notepad.exe", sTemoDirect)
|
|
Catch ex As Exception
|
|
EgtOutLog(ex.ToString)
|
|
End Try
|
|
End If
|
|
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
|
|
' Lancio la chiusura
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub MyClosing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
|
' Verifico se stato simulazione consente di uscire
|
|
If m_SimulationPage.GetSimExecuting() Then
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' 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(91101), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL) ' Salvare il progetto corrente?
|
|
Else
|
|
SaveCurrProj = New EgtMsgBox(Me, "", EgtMsg(91101), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL) ' Salvare il progetto corrente?
|
|
End If
|
|
Select Case SaveCurrProj.m_nPressedBtn
|
|
Case 0 ' Annulla
|
|
e.Cancel = True
|
|
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
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' Uscita da pagina corrente CSV
|
|
If Not ExitFromCsv() Then
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' Uscita da pagina corrente di split
|
|
If Not ExitFromSplit() Then
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' Uscita da pagina corrente di simulazione
|
|
If Not ExitFromSimulation() Then
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' Uscita da pagina corrente di macchina
|
|
If Not ExitFromMachine() Then
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' Uscita da pagina tagli diretti
|
|
If Not ExitFromDirectCut(sender, Nothing) Then
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' Eventuale salvataggio progetto corrente
|
|
If bPrjToSave Then
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
m_CurrentProjectPageUC.SaveNamedProject()
|
|
m_CurrentProjectPageUC.SaveProject()
|
|
End If
|
|
' Inizio la chiusura del programma (se NUM_OLD verifico di aver terminato il processo DripFeed)
|
|
EgtOutLog("Iniziato processo di chiusura programma")
|
|
m_IsClosingApplication = If(m_CNCommunication.m_nNCType = 1, 1, 2)
|
|
Dim nCount As Integer = 0
|
|
While m_IsClosingApplication <> 2
|
|
If nCount > 5 Then
|
|
Exit While
|
|
End If
|
|
' verifico che il processo DripFeed sia terminato
|
|
EgtOutLog("Stato chiusura programma: " & m_IsClosingApplication.ToString)
|
|
Thread.Sleep(100)
|
|
nCount += 1
|
|
End While
|
|
' Uscita
|
|
MainWindowExit()
|
|
End Sub
|
|
|
|
#Region "Uscita dalle pagine RAW, CSV, SPLIT, SIMULATION, TAGLI DIRETTI, MACCHINA, MAINWINDOW"
|
|
|
|
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
|
|
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
|
|
EgtMdbSave()
|
|
' 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_ControlsDirectCutUC.m_ActiveDirectCutPage
|
|
Case ControlsDirectCutUC.DirectCutPages.SingleCut
|
|
m_DirectCutPageUC.m_ControlsDirectCutUC.m_SingleCut.SingleCut_Unloaded(sender, e)
|
|
Case ControlsDirectCutUC.DirectCutPages.MultipleCut
|
|
m_DirectCutPageUC.m_ControlsDirectCutUC.m_MultipleCut.MultipleCut_Unloaded(sender, e)
|
|
Case ControlsDirectCutUC.DirectCutPages.GridCut
|
|
m_DirectCutPageUC.m_ControlsDirectCutUC.m_GridCut.GridCut_Unloaded(sender, e)
|
|
Case ControlsDirectCutUC.DirectCutPages.FlatteningCut
|
|
m_DirectCutPageUC.m_ControlsDirectCutUC.m_FlatteningCut.FlatteningCut_Unloaded(sender, e)
|
|
End Select
|
|
|
|
Select Case m_DirectCutPageUC.m_ControlsDirectCutUC1.m_ActiveDirectCutPage
|
|
Case ControlsDirectCutUC.DirectCutPages.CopyTemplate
|
|
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_CopyTemplate.CopyTemplate_Unloaded(sender, e)
|
|
Case ControlsDirectCutUC.DirectCutPages.Polishing
|
|
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_Polishing.Polishing_Unloaded(sender, e)
|
|
Case ControlsDirectCutUC1.DirectCutPages.SawTest
|
|
m_DirectCutPageUC.m_ControlsDirectCutUC1.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()
|
|
Case MachinePageUC.MachinePages.Polishings
|
|
' Verifica ed eventuale salvataggio lucidatura corrente
|
|
If Not m_MachinePageUC.m_PolishingsPageUC.SaveKit() Then
|
|
Return False
|
|
End If
|
|
Case MachinePageUC.MachinePages.WaterJet
|
|
' Verifica ed eventuale salvataggio Db Waterjet
|
|
Dim m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
|
|
Dim nPressedBtn As Integer = DirectCast(m_MachinePageUC.m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
|
|
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
|
|
Return False
|
|
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
|
|
m_MachinePageUC.m_WaterJetPageUC.WaterJetPage_Reinitialize()
|
|
End If
|
|
End Select
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub MainWindowExit()
|
|
' Chiudo comunicazione con CN
|
|
If Not IsNothing(m_CNCommunication.m_CN) Then 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
|
|
|
|
#End Region ' Uscita dalle pagine RAW, CSV, SPLIT, SIMULATION, TAGLI DIRETTI, MACCHINA, MAINWINDOW
|
|
|
|
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) And
|
|
Not GetKeyOption(KEY_OPT.OFFICE_TYPE)
|
|
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()
|
|
ElseIf m_CurrentMachine.bDemo Then
|
|
m_ProdLineTimer.Interval = TimeSpan.FromMilliseconds(2000)
|
|
m_ProdLineTimer.Start()
|
|
End If
|
|
' di default attivo la pagina CadCut
|
|
If m_OnlyFrame Then
|
|
m_ActivePage = MainWindow.Pages.FrameCut
|
|
Else
|
|
m_ActivePage = MainWindow.Pages.CadCut
|
|
End If
|
|
' seleziono il tipo di avvio
|
|
m_CurrentProjectPageUC.StartProgram()
|
|
' aggiorno la grafica
|
|
EgtZoom(ZM.ALL, True)
|
|
|
|
End Sub
|
|
|
|
Friend 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"),
|
|
GetPrivateProfileInt(S_GENERAL, K_THEME, 0, GetIniFile()))
|
|
' 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()
|
|
' Verifico presenza testa H1 per lama/fresa (nel contesto principale)
|
|
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
Dim bHeadH1 As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL)
|
|
EgtSetCurrentContext(nCurrCtx)
|
|
' Aggiorno interfaccia
|
|
If m_OnlyFrame Then
|
|
If nPrjType = CurrentProjectPageUC.PRJ_TYPE.FLATS And
|
|
m_ActivePage <> Pages.RawPart And m_ActivePage <> Pages.DirectCut And m_ActivePage <> Pages.Simulation Then
|
|
Dim FrameWnd As New EgtMsgBox(Me, EgtMsg(91141), EgtMsg(91142), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL) ' Attenzione! Licenza non abilitata per tagli CAD.
|
|
'' Gestione stato FastGrid
|
|
'm_CadCutPageUC.m_FastGridSlabManager.OnPreNewProject()
|
|
' Cancello progetto salvato con nome da file ini
|
|
WritePrivateProfileString(S_GENERAL, K_LASTNAMEPROJ, "", GetIniFile())
|
|
' Scelta tavola della macchina
|
|
Dim nTabInd As Integer = m_CadCutPageUC.m_ProjectMgr.ChooseTable()
|
|
' Creo nuovo progetto
|
|
m_CurrentProjectPageUC.NewProject(nTabInd, False)
|
|
'' Gestione stato FastGrid
|
|
'm_CadCutPageUC.m_FastGridSlabManager.OnPostNewProject()
|
|
FrameCutBtn_Click(Nothing, Nothing)
|
|
CadCutBtn.IsEnabled = False
|
|
Else
|
|
FrameCutBtn.IsEnabled = True
|
|
CadCutBtn.IsEnabled = False
|
|
' Attivo il pulsante FRAME
|
|
'FrameCutBtn.IsChecked = True
|
|
'CadCutBtn.IsChecked = False
|
|
End If
|
|
Else
|
|
CadCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FRAMES)
|
|
FrameCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FLATS) AndAlso bHeadH1
|
|
End If
|
|
|
|
' DirectCutBtn.IsEnabled = bHeadH1
|
|
End Sub
|
|
|
|
' Nomi dei file per OmagVIEW
|
|
Const CURR_PROJ_NGE As String = "CurrProj.nge"
|
|
Const CURR_PROJ_JPG As String = "CurrProj.jpg"
|
|
Const CURR_PROJ_NEW As String = "CurrProj.new"
|
|
' Nomi dei file da OmagVIEW
|
|
Const CURR_PROJ_LOCK As String = "CurrProj.lck"
|
|
Const CURR_PROJ_CHANGE As String = "CurrProj.chg"
|
|
Const CURR_PROJ_EPL As String = "CurrProj.epl"
|
|
Const CURR_PROJ_PPL As String = "CurrProj.ppl"
|
|
|
|
' OnProdLine
|
|
Private Sub OnProdLine()
|
|
' Se richiesto aggiornamento diametro lama
|
|
If m_CurrentMachine.nProdLiSawProbe >= 1 Then SawProbing(1)
|
|
If m_CurrentMachine.nProdLiSawProbe >= 2 Then SawProbing(2)
|
|
' Se OmagVIEW non previsto, esco
|
|
If String.IsNullOrWhiteSpace(m_CurrentMachine.sLineDataDir) OrElse
|
|
Not My.Computer.FileSystem.DirectoryExists(m_CurrentMachine.sLineDataDir) Then Return
|
|
' Se modalità custom, gestione dell'evento lastra terminata
|
|
If m_CurrentMachine.nSaveProduced = 3 Then
|
|
' Leggo variabile con indice progetto terminato (E81025 per Henraux)
|
|
m_CNCommunication.m_CN.n_DReadELS_handle = 0
|
|
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sVarProjFinished, 1)
|
|
Dim nVarFin As Integer = 0
|
|
For I As Integer = 1 To 4
|
|
If Not m_CurrentMachine.bDemo Then
|
|
System.Threading.Thread.Sleep(50)
|
|
End If
|
|
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
|
|
nVarFin = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
|
|
Exit For
|
|
End If
|
|
Next
|
|
' Leggo variabile con ultimo progetto finito di lavorare
|
|
Dim nLastFinished As Integer = GetPrivateProfileInt(S_GENERAL, K_LASTPROJFINISHED, 0, GetIniFile())
|
|
' Se nuovo progetto finito, ne salvo il tempo
|
|
If nVarFin <> 0 And nVarFin <> nLastFinished Then
|
|
' Salvo in INI indice del progetto terminato
|
|
WritePrivateProfileString(S_GENERAL, K_LASTPROJFINISHED, nVarFin.ToString("D4"), GetIniFile())
|
|
' Salvo in INI data e ora attuali di termine lavorazione del progetto (solo gli ultimi 10 tramite modulo)
|
|
Dim sKey As String = K_DATETIMEFINISHED & "." & (nVarFin Mod 10).ToString()
|
|
Dim sDateTime As String = My.Computer.Clock.LocalTime.ToString("dd.MM.yyyy HH\:mm\:ss")
|
|
WritePrivateProfileString(S_GENERAL, sKey, sDateTime, GetIniFile())
|
|
' Eseguo script
|
|
ExecFinishedProgScript(nVarFin, sDateTime)
|
|
End If
|
|
End If
|
|
' Se OmagVIEW blocca, esco (riproverò al prossimo giro)
|
|
Dim sLockFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_LOCK
|
|
Dim sNewFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_NEW
|
|
If My.Computer.FileSystem.FileExists(sLockFile) OrElse
|
|
My.Computer.FileSystem.FileExists(sNewFile) Then Return
|
|
' Verifico se richiesto cambio di progetto
|
|
Dim nProjInd As Integer = 0
|
|
Dim nMove As Integer = 0
|
|
If ReadProjectChange(nProjInd, nMove) Then
|
|
Dim nMaxProj As Integer = GetPrivateProfileInt(S_GENERAL, K_MAXPROJ, 100, GetIniFile())
|
|
Dim nLastProj As Integer = GetPrivateProfileInt(S_GENERAL, K_LASTPROJTOVIEW, 0, GetIniFile())
|
|
' Se progetto valido, recupero il progetto del View
|
|
If nProjInd > 0 Then
|
|
ExecProjectUpdate(nProjInd)
|
|
' Se si vuole andare oltre ultimo, forzo ritrasmissione di questo
|
|
If nProjInd = nLastProj And nMove = 1 Then
|
|
nProjInd = If(nLastProj = 1, nMaxProj, nLastProj - 1)
|
|
nMove = 1
|
|
End If
|
|
' altrimenti forzo trasmissione ultimo inviato
|
|
Else
|
|
nProjInd = If(nLastProj = 1, nMaxProj, nLastProj - 1)
|
|
nMove = 1
|
|
End If
|
|
' Se richiesto cambio di progetto
|
|
If nMove <> 0 Then
|
|
ExecProjectChange(nProjInd, nMove)
|
|
Return
|
|
End If
|
|
End If
|
|
' Se richieste modalità standard o speciali
|
|
If m_CurrentMachine.nSaveProduced <> 3 Then
|
|
StandardAndSpecialViewFileManagement()
|
|
' altrimenti modalità custom
|
|
Else
|
|
CustomViewFileManagement(nProjInd)
|
|
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 As Integer = 1 To 10
|
|
If Not m_CurrentMachine.bDemo Then
|
|
System.Threading.Thread.Sleep(50)
|
|
End If
|
|
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
|
|
nVarCopy = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
' forzo la variabile CN - aggiornando il valore dell'indice del progetto in elaborazione
|
|
If m_CurrentMachine.bDemo Then nVarCopy = GetPrivateProfileInt(S_GENERAL, K_LASTPROJ, 0, GetIniFile())
|
|
|
|
' 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 sEplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_EPL
|
|
If My.Computer.FileSystem.FileExists(sNgeFile) And
|
|
Not My.Computer.FileSystem.FileExists(sEplFile) Then
|
|
Try
|
|
' Copio file di progetto nge
|
|
Dim sNgeDest As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_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 & "\" & CURR_PROJ_JPG
|
|
My.Computer.FileSystem.CopyFile(sJpgFile, sJpgDest, True)
|
|
End If
|
|
' Creo file per flag di nuovo progetto
|
|
Dim NewWrt As New IO.StreamWriter(m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_NEW, False)
|
|
NewWrt.WriteLine("Last")
|
|
NewWrt.Close()
|
|
' Se non è scarico speciale (tipo Henraux), dichiaro progetto copiato azzerando la relativa variabile in macchina
|
|
' Con scarico speciale non va azzerata, perchè si incrementa con pulsante allo scarico
|
|
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())
|
|
' Salvo in INI data e ora attuali di inizio scarico
|
|
WritePrivateProfileString(S_GENERAL, K_DATETIMETOVIEW, My.Computer.Clock.LocalTime.ToString("dd.MM.yyyy HH\:mm\:ss"), GetIniFile())
|
|
Catch ex As Exception
|
|
EgtOutLog("Error copying files to OmagVIEW")
|
|
' Errore in copia file per OmagVIEW
|
|
m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(91117)) ' Errore in copia file per OmagVIEW
|
|
End Try
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Function SawProbing(nI As Integer) As Boolean
|
|
' Leggo da variabile CN se tastatura effettuata
|
|
m_CNCommunication.m_CN.n_DReadELS_handle = 0
|
|
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiProbingStateVar(nI), 1)
|
|
Dim nProbingState As Integer = 0
|
|
For I As Integer = 1 To 5
|
|
System.Threading.Thread.Sleep(20)
|
|
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
|
|
nProbingState = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
|
|
Exit For
|
|
End If
|
|
Next
|
|
If nProbingState <> 1 Then Return False
|
|
' Leggo da variabile CN posizione lama in TC
|
|
Dim nTcPos As Integer = 0
|
|
If m_CurrentMachine.sProdLiProbingTcPosVar(nI) <> "0" Then
|
|
m_CNCommunication.m_CN.n_DReadELS_handle = 0
|
|
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiProbingTcPosVar(nI), 1)
|
|
For I As Integer = 1 To 5
|
|
System.Threading.Thread.Sleep(20)
|
|
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
|
|
nTcPos = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
|
|
Exit For
|
|
End If
|
|
Next
|
|
Else
|
|
nTcPos = 100
|
|
End If
|
|
If nTcPos = 0 Then Return False
|
|
' Leggo da variabile CN nuovo diametro lama
|
|
m_CNCommunication.m_CN.n_DReadELS_handle = 0
|
|
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sProdLiSawDiameterVar(nI), 1)
|
|
Dim dDiam As Double = 0
|
|
For I As Integer = 1 To 5
|
|
System.Threading.Thread.Sleep(20)
|
|
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
|
|
dDiam = m_CNCommunication.m_CN.d_DReadELS_value
|
|
Exit For
|
|
End If
|
|
Next
|
|
If dDiam < EPS_SMALL Then Return False
|
|
' trasformo misura rilevata in mm
|
|
If m_CNCommunication.GetMachineInInches() Then
|
|
dDiam *= ONEINCH / 1000
|
|
Else
|
|
dDiam *= ONEMM / 1000
|
|
End If
|
|
' Reset variabile CN di tastatura effettuata
|
|
m_CNCommunication.m_CN.DVariables_WriteVariables2(m_CurrentMachine.sProdLiProbingStateVar(nI), "0")
|
|
' Aggiorno diametro lama
|
|
Dim bFound As Boolean = False
|
|
If nTcPos <> 100 Then
|
|
Dim sTcPos As String = "T" & nTcPos.ToString()
|
|
Dim sToolName As String = String.Empty
|
|
Dim nType As Integer = MCH_TY.NONE
|
|
Dim bNext As Boolean = EgtTdbGetFirstTool(MCH_TF.SAWBLADE, sToolName, nType)
|
|
While bNext
|
|
EgtTdbSetCurrTool(sToolName)
|
|
Dim sToolTcPos As String = ""
|
|
If EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolTcPos) AndAlso sTcPos = sToolTcPos Then
|
|
bFound = True
|
|
Exit While
|
|
End If
|
|
bNext = EgtTdbGetNextTool(MCH_TF.SAWBLADE, sToolName, nType)
|
|
End While
|
|
Else
|
|
Dim sToolName As String = m_CurrentMachine.sCurrSaw
|
|
If nI = 2 Then
|
|
sToolName &= "-2"
|
|
End If
|
|
EgtTdbSetCurrTool(sToolName)
|
|
bFound = True
|
|
End If
|
|
If Not bFound Then Return False
|
|
EgtTdbSetCurrToolParam(MCH_TP.DIAM, dDiam)
|
|
EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dDiam)
|
|
EgtTdbSaveCurrTool()
|
|
EgtTdbSave()
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ReadProjectChange(ByRef nProjInd As Integer, ByRef nMove As Integer) As Boolean
|
|
' Verifico presenza file di richiesta
|
|
Dim sChangeFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_CHANGE
|
|
If Not My.Computer.FileSystem.FileExists(sChangeFile) Then Return False
|
|
' Leggo i dati dal file
|
|
Try
|
|
Dim ChangeRdr As New IO.StreamReader(sChangeFile)
|
|
Dim sProjInd As String = ChangeRdr.ReadLine()
|
|
Dim sMove As String = ChangeRdr.ReadLine()
|
|
ChangeRdr.Close()
|
|
If Not Int32.TryParse(GetValueWithKey(sProjInd, "Proj"), nProjInd) Then nProjInd = 0
|
|
If Not Int32.TryParse(GetValueWithKey(sMove, "Move"), nMove) Then nMove = 0
|
|
Return True
|
|
Catch
|
|
Return False
|
|
Finally
|
|
' Rimuovo segnalazione di cambio progetto
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sChangeFile)
|
|
Catch
|
|
End Try
|
|
End Try
|
|
End Function
|
|
|
|
Private Function ExecProjectUpdate(nProjInd As Integer) As Boolean
|
|
Dim sSouFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_NGE
|
|
Dim sDestFile As String = GetSaveDir() & "\" & nProjInd.ToString("D4") & ".nge"
|
|
Try
|
|
My.Computer.FileSystem.CopyFile(sSouFile, sDestFile, True)
|
|
Return True
|
|
Catch
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
Private Function ExecProjectChange(nProjInd As Integer, nMove As Integer) As Boolean
|
|
' Massimo indice di un progetto
|
|
Dim nMaxProj As Integer = GetPrivateProfileInt(S_GENERAL, K_MAXPROJ, 100, GetIniFile())
|
|
' Progetto corrente
|
|
Dim nCurrProj As Integer = GetPrivateProfileInt(S_GENERAL, K_LASTPROJ, 0, GetIniFile())
|
|
' Ultimo progetto inviato al View automaticamente
|
|
Dim nLastProj As Integer = GetPrivateProfileInt(S_GENERAL, K_LASTPROJTOVIEW, 0, GetIniFile())
|
|
' File da inviare
|
|
Dim nNewProjInd As Integer = 0
|
|
Dim sNewFile As String = ""
|
|
' Se richiesto progetto precedente
|
|
If nMove < 0 Then
|
|
nNewProjInd = nProjInd - 1
|
|
' Retrocedendo non posso arrivare all'ultimo progetto
|
|
If nNewProjInd = nCurrProj Or nNewProjInd = nLastProj Then nNewProjInd = nProjInd
|
|
While nNewProjInd > 0
|
|
Dim sFile As String = GetSaveDir() & "\" & nNewProjInd.ToString("D4") & ".nge"
|
|
If My.Computer.FileSystem.FileExists(sFile) Then
|
|
sNewFile = sFile
|
|
Exit While
|
|
End If
|
|
nNewProjInd -= 1
|
|
End While
|
|
If nNewProjInd = 0 Then
|
|
nNewProjInd = nMaxProj
|
|
While nNewProjInd > nCurrProj
|
|
Dim sFile As String = GetSaveDir() & "\" & nNewProjInd.ToString("D4") & ".nge"
|
|
If My.Computer.FileSystem.FileExists(sFile) Then
|
|
sNewFile = sFile
|
|
Exit While
|
|
End If
|
|
nNewProjInd -= 1
|
|
End While
|
|
End If
|
|
' se altrimenti richiesto progetto successivo
|
|
ElseIf nMove > 0 Then
|
|
nNewProjInd = nProjInd + 1
|
|
If nProjInd > nLastProj Then
|
|
While nNewProjInd <= nMaxProj
|
|
Dim sFile As String = GetSaveDir() & "\" & nNewProjInd.ToString("D4") & ".nge"
|
|
If My.Computer.FileSystem.FileExists(sFile) Then
|
|
sNewFile = sFile
|
|
Exit While
|
|
End If
|
|
nNewProjInd += 1
|
|
End While
|
|
If nNewProjInd > nMaxProj Then nNewProjInd = 1
|
|
End If
|
|
While nNewProjInd <= nLastProj
|
|
Dim sFile As String = GetSaveDir() & "\" & nNewProjInd.ToString("D4") & ".nge"
|
|
If My.Computer.FileSystem.FileExists(sFile) Then
|
|
sNewFile = sFile
|
|
Exit While
|
|
End If
|
|
nNewProjInd += 1
|
|
End While
|
|
End If
|
|
' Se non trovato progetto da inviare
|
|
If String.IsNullOrWhiteSpace(sNewFile) Then Return False
|
|
' Copio il progetto
|
|
Try
|
|
' Copio file di progetto nge
|
|
Dim sNgeDest As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_NGE
|
|
My.Computer.FileSystem.CopyFile(sNewFile, sNgeDest, True)
|
|
' Se esiste file jpg omonimo, lo copio
|
|
Dim sJpgFile As String = System.IO.Path.ChangeExtension(sNewFile, ".jpg")
|
|
If My.Computer.FileSystem.FileExists(sJpgFile) Then
|
|
Dim sJpgDest As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_JPG
|
|
My.Computer.FileSystem.CopyFile(sJpgFile, sJpgDest, True)
|
|
End If
|
|
' Creo file per flag di nuovo progetto
|
|
Dim NewWrt As New IO.StreamWriter(m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_NEW, False)
|
|
NewWrt.WriteLine(If(nNewProjInd = nLastProj, "Last", "Status"))
|
|
NewWrt.Close()
|
|
Catch ex As Exception
|
|
EgtOutLog("Error change copying files to OmagVIEW")
|
|
' Errore in copia file per OmagVIEW
|
|
m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(91117)) ' Errore in copia file per OmagVIEW
|
|
End Try
|
|
Return True
|
|
End Function
|
|
|
|
Private Function StandardAndSpecialViewFileManagement() As Boolean
|
|
' Acquisizione eventuale file epl dei pezzi rovinati :
|
|
' lo sposto dal direttorio condiviso al direttorio dei rovinati e poi lo fondo in quello generale
|
|
Dim sSouEplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_EPL
|
|
If My.Computer.FileSystem.FileExists(sSouEplFile) Then
|
|
' Flag gestione unico file dei rovinati
|
|
Dim bSingleFile As Boolean = True
|
|
' Se gestione pezzi e rovinati prodotti
|
|
If m_CurrentMachine.nSaveProduced <> 0 Then
|
|
' Recupero path di origine del relativo file OmagCUT
|
|
Dim sCutDir As String = GetCutOrigDir(sSouEplFile)
|
|
' Se questo direttorio esiste
|
|
bSingleFile = Not My.Computer.FileSystem.DirectoryExists(sCutDir)
|
|
End If
|
|
' Se gestione pezzi rovinati con un unico file
|
|
If bSingleFile Then
|
|
Dim sRuPartsDir As String = GetRuinedPartsDir()
|
|
Dim sDestEplFile = sRuPartsDir & "\" & CURR_PROJ_EPL
|
|
' Eseguo spostamento file
|
|
Try
|
|
My.Computer.FileSystem.MoveFile(sSouEplFile, sDestEplFile, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error moving or erasing " & sSouEplFile)
|
|
End Try
|
|
' Path del file generale dei rovinati
|
|
Dim sRuinedFile As String = sRuPartsDir & "\" & CURR_RUINED_EPL
|
|
' Path della lista caricata per edit
|
|
Dim sCurrCsvFile As String = String.Empty
|
|
GetPrivateProfileString(S_CSV, K_CSVLASTFILE, "", sCurrCsvFile, m_sIniFile)
|
|
' Se lista corrente è quella dei pezzi rovinati, la salvo
|
|
If String.Compare(sCurrCsvFile, sRuinedFile, True) = 0 Then
|
|
m_CadCutPageUC.m_CSVPage.SaveCsvPartList()
|
|
End If
|
|
' Leggo file generale dei rovinati
|
|
Dim sDummy As String = String.Empty
|
|
Dim CsvPartList As New List(Of CsvPart)
|
|
ReadCsvPartList(sRuinedFile, sDummy, CsvPartList)
|
|
' Accodo eventuali nuovi pezzi rovinati leggendo dal file particolare
|
|
ReadCsvPartList(sDestEplFile, sDummy, CsvPartList)
|
|
' Elimino pezzi non più da nestare
|
|
RemoveNotToNestParts(CsvPartList)
|
|
' Scrivo file generale dei rovinati
|
|
WriteCsvPartList(sRuinedFile, sRuinedFile, CsvPartList)
|
|
' Se lista corrente è quella dei rovinati, la rileggo
|
|
If String.Compare(sCurrCsvFile, sRuinedFile, True) = 0 Then
|
|
m_CadCutPageUC.m_CSVPage.UpdateCsvPartList()
|
|
End If
|
|
' Cancello file particolare dei rovinati
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sDestEplFile)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error erasing " & sDestEplFile)
|
|
End Try
|
|
' altrimenti, ogni commessa ha il suo file dei pezzi rovinati
|
|
Else
|
|
' Sposto nel direttorio temporaneo
|
|
Dim sDestEplFile = m_sTempDir & "\" & CURR_PROJ_EPL
|
|
Try
|
|
My.Computer.FileSystem.MoveFile(sSouEplFile, sDestEplFile, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error moving or erasing " & sSouEplFile)
|
|
End Try
|
|
' Recupero direttorio di origine del relativo file OmagCUT
|
|
Dim sCutDir As String = GetCutOrigDir(sDestEplFile)
|
|
' Path del file generale dei pezzi rovinati
|
|
Const CURR_RUINED_EPL As String = "Ruined.epl"
|
|
Dim sRuinFile As String = sCutDir & "\" & CURR_RUINED_EPL
|
|
' Path della lista caricata per edit
|
|
Dim sCurrCsvFile As String = String.Empty
|
|
GetPrivateProfileString(S_CSV, K_CSVLASTFILE, "", sCurrCsvFile, m_sIniFile)
|
|
' Se lista corrente è quella dei rovinati, la salvo
|
|
If String.Compare(sCurrCsvFile, sRuinFile, True) = 0 Then
|
|
m_CadCutPageUC.m_CSVPage.SaveCsvPartList()
|
|
End If
|
|
' Leggo file generale dei pezzi rovinati
|
|
Dim sDummy As String = String.Empty
|
|
Dim CsvPartList As New List(Of CsvPart)
|
|
ReadCsvPartList(sRuinFile, sDummy, CsvPartList)
|
|
' Accodo eventuali nuovi pezzi rovinati leggendo dal file particolare
|
|
ReadCsvPartList(sDestEplFile, sDummy, CsvPartList)
|
|
' Elimino pezzi non più da nestare
|
|
RemoveNotToNestParts(CsvPartList)
|
|
' Scrivo file generale dei rovinati
|
|
WriteCsvPartList(sRuinFile, sRuinFile, CsvPartList)
|
|
' Se lista corrente è quella dei rovinati, la rileggo
|
|
If String.Compare(sCurrCsvFile, sRuinFile, True) = 0 Then
|
|
m_CadCutPageUC.m_CSVPage.UpdateCsvPartList()
|
|
End If
|
|
' Cancello file particolare dei rovinati
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sDestEplFile)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error erasing " & sDestEplFile)
|
|
End Try
|
|
End If
|
|
End If
|
|
' Se richiesto, acquisizione eventuale file ppl dei pezzi prodotti :
|
|
' lo sposto dal direttorio condiviso al direttorio temporaneo, per poi fonderlo nello specifico dei prodotti
|
|
Dim sSouPplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_PPL
|
|
If m_CurrentMachine.nSaveProduced <> 0 AndAlso My.Computer.FileSystem.FileExists(sSouPplFile) Then
|
|
' Sposto nel direttorio temporaneo
|
|
Dim sDestPplFile = m_sTempDir & "\" & CURR_PROJ_PPL
|
|
Try
|
|
My.Computer.FileSystem.MoveFile(sSouPplFile, sDestPplFile, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error moving or erasing " & sSouPplFile)
|
|
End Try
|
|
' Definizione direttorio e nome file di destinazione a seconda della modalità
|
|
Dim sDestDir As String = String.Empty
|
|
Dim sDestFile As String = String.Empty
|
|
If m_CurrentMachine.nSaveProduced = 1 Then
|
|
' Recupero path di origine del relativo file OmagCUT
|
|
sDestDir = GetCutOrigDir(sDestPplFile)
|
|
sDestFile = "Produced.epl"
|
|
Else
|
|
If GetPrivateProfileString(S_CSV, K_PRODUCEDPARTSDIR, "", sDestDir, m_sIniFile) = 0 Then
|
|
sDestDir = m_sDataRoot & "\" & PRODUCEDPARTS_DFL_DIR
|
|
End If
|
|
sDestFile = System.DateTime.Now.ToString("yyyy_MM_dd") & ".epl"
|
|
End If
|
|
' Se questo direttorio esiste
|
|
If My.Computer.FileSystem.DirectoryExists(sDestDir) Then
|
|
' Path del file generale dei pezzi prodotti
|
|
Dim sProdFile As String = sDestDir & "\" & sDestFile
|
|
' Path della lista caricata per edit
|
|
Dim sCurrCsvFile As String = String.Empty
|
|
GetPrivateProfileString(S_CSV, K_CSVLASTFILE, "", sCurrCsvFile, m_sIniFile)
|
|
' Se lista corrente è quella dei pezzi, la salvo
|
|
If String.Compare(sCurrCsvFile, sProdFile, True) = 0 Then
|
|
m_CadCutPageUC.m_CSVPage.SaveCsvPartList()
|
|
End If
|
|
' Leggo file generale dei pezzi prodotti
|
|
Dim sDummy As String = String.Empty
|
|
Dim CsvPartList As New List(Of CsvPart)
|
|
ReadCsvPartList(sProdFile, sDummy, CsvPartList)
|
|
' Accodo eventuali nuovi pezzi prodotti leggendo dal file particolare
|
|
ReadCsvPartList(sDestPplFile, sDummy, CsvPartList)
|
|
' Scrivo file generale dei prodotti
|
|
WriteCsvPartList(sProdFile, sProdFile, CsvPartList)
|
|
' Se lista corrente è quella dei prodotti, la rileggo
|
|
If String.Compare(sCurrCsvFile, sProdFile, True) = 0 Then
|
|
m_CadCutPageUC.m_CSVPage.UpdateCsvPartList()
|
|
End If
|
|
' Cancello file particolare dei prodotti
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sDestPplFile)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error erasing " & sDestPplFile)
|
|
End Try
|
|
Else
|
|
Dim sProdPartsDir As String = String.Empty
|
|
If GetPrivateProfileString(S_CSV, K_PRODUCEDPARTSDIR, "", sProdPartsDir, m_sIniFile) = 0 OrElse
|
|
Not My.Computer.FileSystem.DirectoryExists(sProdPartsDir) Then
|
|
sProdPartsDir = m_sDataRoot & "\" & PRODUCEDPARTS_DFL_DIR
|
|
End If
|
|
Dim sTmpPplFile = sProdPartsDir & "\" & System.DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") & ".epl"
|
|
My.Computer.FileSystem.MoveFile(sDestPplFile, sTmpPplFile, True)
|
|
EgtOutLog("Error with " & sDestDir)
|
|
End If
|
|
End If
|
|
Return True
|
|
End Function
|
|
|
|
Private Function CustomViewFileManagement(nProjInd As Integer) As Boolean
|
|
' Se non esiste file EPL, esco
|
|
Dim sSouEplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_EPL
|
|
If Not My.Computer.FileSystem.FileExists(sSouEplFile) Then Return True
|
|
' Se non esiste file PPL, esco
|
|
Dim sSouPplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_PPL
|
|
If Not My.Computer.FileSystem.FileExists(sSouPplFile) Then Return True
|
|
' Se non esiste file NGE, esco
|
|
Dim sSouNgeFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_NGE
|
|
If Not My.Computer.FileSystem.FileExists(sSouNgeFile) Then Return True
|
|
' Sposto file epl dei pezzi rovinati nel direttorio temporaneo
|
|
Dim sDestEplFile = m_sTempDir & "\" & CURR_PROJ_EPL
|
|
Try
|
|
My.Computer.FileSystem.MoveFile(sSouEplFile, sDestEplFile, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error moving or erasing " & sSouEplFile)
|
|
End Try
|
|
' Sposto file ppl dei pezzi prodotti nel direttorio temporaneo
|
|
Dim sDestPplFile = m_sTempDir & "\" & CURR_PROJ_PPL
|
|
Try
|
|
My.Computer.FileSystem.MoveFile(sSouPplFile, sDestPplFile, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error moving or erasing " & sSouPplFile)
|
|
End Try
|
|
' Sposto file nge dei pezzi prodotti nel direttorio temporaneo
|
|
Dim sDestNgeFile = m_sTempDir & "\" & CURR_PROJ_NGE
|
|
Try
|
|
My.Computer.FileSystem.MoveFile(sSouNgeFile, sDestNgeFile, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error moving or erasing " & sSouNgeFile)
|
|
End Try
|
|
' Leggo variabile con ultimo progetto mandato a OmagView
|
|
Dim nLastCopy As Integer = GetPrivateProfileInt(S_GENERAL, K_LASTPROJTOVIEW, 0, GetIniFile())
|
|
' Leggo variabile con data inizio scarico
|
|
Dim sDateTime As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_DATETIMETOVIEW, "", sDateTime, GetIniFile())
|
|
' Verifico progetto restituito da View
|
|
If nProjInd = 0 Then nProjInd = nLastCopy
|
|
' Leggo variabile con data termine lavorazione
|
|
Dim sKey As String = K_DATETIMEFINISHED & "." & (nProjInd Mod 10).ToString()
|
|
GetPrivateProfileString(S_GENERAL, sKey, sDateTime, sDateTime, GetIniFile())
|
|
' Recupero direttorio per pezzi rovinati
|
|
Dim sRuPartsDir As String = GetRuinedPartsDir()
|
|
' Esecuzione dello script custom
|
|
ExecReceivedViewScript(nProjInd, sDateTime, sRuPartsDir)
|
|
' Cancello file dei pezzi rovinati
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sDestEplFile)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error erasing " & sDestEplFile)
|
|
End Try
|
|
' Cancello file dei pezzi prodotti
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sDestPplFile)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error erasing " & sDestPplFile)
|
|
End Try
|
|
' Cancello file con le geometrie dei pezzi
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sDestNgeFile)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error erasing " & sDestNgeFile)
|
|
End Try
|
|
Return True
|
|
End Function
|
|
|
|
Friend Function ExecSentProgScript(bDirectCut As Boolean, Optional bAlreadySent As Boolean = False) As Boolean
|
|
' Verifico esistenza script
|
|
Dim sLuaPath As String = m_CurrentMachine.sMachDir() & "\Scripts\SentProg.lua"
|
|
If Not My.Computer.FileSystem.FileExists(sLuaPath) Then Return True
|
|
' Definizione variabili
|
|
EgtLuaCreateGlobTable("SPS")
|
|
EgtLuaSetGlobBoolVar("SPS.NCLINK", m_bNCLink)
|
|
EgtLuaSetGlobBoolVar("SPS.PRODLINE", m_CurrentMachine.bProdLine)
|
|
EgtLuaSetGlobBoolVar("SPS.ALREADYSENT", bAlreadySent)
|
|
EgtLuaSetGlobBoolVar("SPS.DIRECTCUT", bDirectCut)
|
|
' Esecuzione
|
|
Dim nErr As Integer = 999
|
|
If EgtLuaExecFile(sLuaPath) AndAlso
|
|
EgtLuaCallFunction("SPS.Exec") Then
|
|
' Verifica stato di errore
|
|
EgtLuaGetGlobIntVar("SPS.ERR", nErr)
|
|
End If
|
|
EgtLuaResetGlobVar("SPS")
|
|
If nErr <> 0 Then
|
|
EgtOutLog("Error in SentProg : " & nErr.ToString())
|
|
m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(90325)) ' Errore nel salvataggio delle statistiche
|
|
End If
|
|
Return (nErr = 0)
|
|
End Function
|
|
|
|
Private Function ExecFinishedProgScript(nProjInd As Integer, sDateTime As String) As Boolean
|
|
' Verifico esistenza script
|
|
Dim sLuaPath As String = m_CurrentMachine.sMachDir() & "\Scripts\FinishedProg.lua"
|
|
If Not My.Computer.FileSystem.FileExists(sLuaPath) Then Return True
|
|
' Definizione variabili
|
|
EgtLuaCreateGlobTable("FPS")
|
|
EgtLuaSetGlobBoolVar("FPS.NCLINK", m_bNCLink)
|
|
EgtLuaSetGlobBoolVar("FPS.PRODLINE", m_CurrentMachine.bProdLine)
|
|
EgtLuaSetGlobStringVar("FPS.LASTCOPY", nProjInd.ToString("D4"))
|
|
EgtLuaSetGlobStringVar("FPS.DATETIME", sDateTime)
|
|
EgtLuaSetGlobIntVar("FPS.RUPARTSCNT", 0)
|
|
' Esecuzione
|
|
Dim nErr As Integer = 999
|
|
Dim nRuPartsCnt As Integer = 0
|
|
If EgtLuaExecFile(sLuaPath) AndAlso
|
|
EgtLuaCallFunction("FPS.Exec") Then
|
|
' Verifica stato di errore
|
|
EgtLuaGetGlobIntVar("FPS.ERR", nErr)
|
|
End If
|
|
EgtLuaResetGlobVar("FPS")
|
|
' Contesto Scena del Progetto
|
|
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
If nErr <> 0 Then
|
|
EgtOutLog("Error in FinishedProg : " & nErr.ToString())
|
|
m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(90325)) ' Errore nel salvataggio delle statistiche
|
|
End If
|
|
' Ripristino contesto originale
|
|
EgtSetCurrentContext(nCurrCtx)
|
|
Return (nErr = 0)
|
|
End Function
|
|
|
|
Private Function ExecReceivedViewScript(nProjInd As Integer, sDateTime As String, sRuPartsDir As String) As Boolean
|
|
' Verifico esistenza script
|
|
Dim sLuaPath As String = m_CurrentMachine.sMachDir() & "\Scripts\ReceivedView.lua"
|
|
If Not My.Computer.FileSystem.FileExists(sLuaPath) Then Return True
|
|
' Definizione variabili
|
|
EgtLuaCreateGlobTable("RVS")
|
|
EgtLuaSetGlobBoolVar("RVS.NCLINK", m_bNCLink)
|
|
EgtLuaSetGlobBoolVar("RVS.PRODLINE", m_CurrentMachine.bProdLine)
|
|
EgtLuaSetGlobStringVar("RVS.LASTCOPY", nProjInd.ToString("D4"))
|
|
EgtLuaSetGlobStringVar("RVS.DATETIME", sDateTime)
|
|
EgtLuaSetGlobStringVar("RVS.RUPARTSDIR", sRuPartsDir)
|
|
EgtLuaSetGlobIntVar("RVS.RUPARTSCNT", 0)
|
|
' Esecuzione
|
|
Dim nErr As Integer = 999
|
|
Dim nRuPartsCnt As Integer = 0
|
|
If EgtLuaExecFile(sLuaPath) AndAlso
|
|
EgtLuaCallFunction("RVS.Exec") Then
|
|
' Verifica stato di errore
|
|
EgtLuaGetGlobIntVar("RVS.ERR", nErr)
|
|
' Lettura numero pezzi rovinati eventualmente inseriti
|
|
EgtLuaGetGlobIntVar("RVS.RUPARTSCNT", nRuPartsCnt)
|
|
End If
|
|
EgtLuaResetGlobVar("RVS")
|
|
' Contesto Scena del Progetto
|
|
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
If nErr <> 0 Then
|
|
EgtOutLog("Error in ReceivedView : " & nErr.ToString())
|
|
m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(90325)) ' Errore nel salvataggio delle statistiche
|
|
ElseIf nRuPartsCnt > 0 Then
|
|
EgtOutLog("New Ruined Parts : " & nRuPartsCnt.ToString())
|
|
m_CurrentProjectPageUC.SetInfoMessage(EgtMsg(90327)) ' Inseriti Nuovi Pezzi Rovinati
|
|
Dim nPartId As Integer = EgtGetLastPart()
|
|
For nI As Integer = 1 To nRuPartsCnt
|
|
EgtRemoveInfo(nPartId, INFO_PARTOK)
|
|
' ricreo la lista delle famiglie di pezzi presenti in parcheggio
|
|
m_CadCutPageUC.m_NestPage.GetFamilyGroupInPark()
|
|
m_CadCutPageUC.m_NestPage.StoreOnePart(nPartId, True)
|
|
nPartId = EgtGetPrevPart(nPartId)
|
|
Next
|
|
' Visualizzazione
|
|
EgtZoom(ZM.ALL)
|
|
End If
|
|
' Dichiaro progetto passato da View
|
|
If nProjInd = m_CurrentProjectPageUC.GetCurrentProject() Then
|
|
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_UNLOADSAVED, 1)
|
|
Else
|
|
Dim nTmpCtx As Integer = EgtInitContext()
|
|
If nTmpCtx <> 0 Then
|
|
Dim sNgeFile As String = GetSaveDir() & "\" & nProjInd.ToString("D4") & ".nge"
|
|
EgtOpenFile(sNgeFile)
|
|
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_UNLOADSAVED, 1)
|
|
EgtSaveFile(sNgeFile, NGE.CMPTEXT)
|
|
EgtDeleteContext(nTmpCtx)
|
|
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
|
|
End If
|
|
End If
|
|
' Aggiorno Area da lavorare dei pezzi
|
|
m_CurrentProjectPageUC.UpdateToProduceArea()
|
|
m_CurrentProjectPageUC.ShowAreas()
|
|
m_CurrentProjectPageUC.SaveProject()
|
|
EgtDraw()
|
|
' Ripristino contesto originale
|
|
EgtSetCurrentContext(nCurrCtx)
|
|
Return (nErr = 0)
|
|
End Function
|
|
|
|
Private Function GetCutOrigDir(sPplFile As String) As String
|
|
' Recupero path di origine del relativo file OmagCUT
|
|
Dim sCutPath As String = String.Empty
|
|
GetPrivateProfileString("General", "Path", "", sCutPath, sPplFile)
|
|
' Ne ricavo direttorio di origine o il padre se si chiama MACCHINA
|
|
Dim sCutDir As String
|
|
Try
|
|
sCutDir = Path.GetDirectoryName(sCutPath)
|
|
If Path.GetFileName(sCutDir).ToUpper() = "MACCHINA" Then
|
|
sCutDir = Path.GetDirectoryName(sCutDir)
|
|
End If
|
|
Catch ex As Exception
|
|
sCutDir = ""
|
|
End Try
|
|
Return sCutDir
|
|
End Function
|
|
|
|
' Evento che apre AboutBox quando viene clickato il logo
|
|
Private Sub LogoBrd_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles LogoBrd.MouseDown
|
|
' Se non premuto Shift -> AboutBox
|
|
If (Keyboard.Modifiers And ModifierKeys.Shift) = 0 Then
|
|
Dim AboutBox As New AboutBoxWD(Me)
|
|
' Altrimenti lancio cambio macchina (solo uso interno)
|
|
Else
|
|
If m_ActivePage = Pages.CadCut Or m_ActivePage = Pages.FrameCut Then
|
|
' Cambio macchina
|
|
EgtLuaCreateGlobTable("CHM")
|
|
EgtLuaExecFile(GetConfigDir() & "\ChangeMachine.lua")
|
|
Dim nRestart As Integer = 0
|
|
EgtLuaGetGlobIntVar("CHM.RESTART", nRestart)
|
|
EgtLuaResetGlobVar("CHM")
|
|
' Riavvio
|
|
If nRestart = 1 Then
|
|
Close()
|
|
Process.Start(Application.ResourceAssembly.Location)
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
' Funzione che disabilita tutte le scene
|
|
Private Sub IsEnabledScenes(IsEnabled As Boolean)
|
|
If Not IsNothing(m_CurrentProjectPageUC.CurrentProjectScene) Then m_CurrentProjectPageUC.CurrentProjectScene.Enabled = IsEnabled
|
|
If Not IsNothing(m_MachinePageUC.m_ToolsDbPageUC) Then m_MachinePageUC.m_ToolsDbPageUC.ToolScene.Enabled = IsEnabled
|
|
If Not IsNothing(m_WorkInProgressPageUC) Then m_WorkInProgressPageUC.WorkInProgressScene.Enabled = IsEnabled
|
|
If Not IsNothing(m_OpenPage) Then m_OpenPage.OpenScene.Enabled = IsEnabled
|
|
If Not IsNothing(m_DrawPageUC) Then m_DrawPageUC.DrawScene.Enabled = IsEnabled
|
|
If Not IsNothing(ProjectMgrUC.m_VeinMatchingWnd) Then ProjectMgrUC.m_VeinMatchingWnd.IsEnabled = IsEnabled
|
|
End Sub
|
|
|
|
' spegne gli oggetti selezionati in fase di Check-Up-Start (bottone Test)
|
|
Public Sub TestOff()
|
|
' deseleziono gli oggetti e spengo il bottone
|
|
EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv)
|
|
EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
|
|
EgtResetMark(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
|
|
m_CadCutPageUC.m_NestPage.m_CurrToolFromSelectedSawCurv = String.Empty
|
|
m_CadCutPageUC.m_ProjectMgr.TestBtn.IsChecked = False
|
|
Me.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False
|
|
End Sub
|
|
|
|
' spegne il comando per la mofica dei rettangoli
|
|
Public Sub DragRectangleOff()
|
|
m_CadCutPageUC.m_NestPage.DragRectangleBtn.IsChecked = False
|
|
Me.m_CadCutPageUC.m_NestPage.m_bIsCheckedDragRectangle = False
|
|
ShowParkedParts()
|
|
|
|
End Sub
|
|
|
|
Public Sub SplitCurvWJOff()
|
|
m_CadCutPageUC.m_NestPage.SplitCurveWJBtn.IsChecked = False
|
|
Me.m_CadCutPageUC.m_NestPage.m_bIsCheckedSplitCurveWJ = False
|
|
m_CadCutPageUC.m_NestPage.ResetSplitCurvWJParam()
|
|
|
|
End Sub
|
|
|
|
Public Sub StartCurvWJOff()
|
|
m_CadCutPageUC.m_NestPage.StartCurveWJBtn.IsChecked = False
|
|
Me.m_CadCutPageUC.m_NestPage.m_bIsCheckedStartCurveWJ = False
|
|
m_CadCutPageUC.m_NestPage.ResetStartCurvWJParam()
|
|
End Sub
|
|
|
|
End Class |