Files
OmagCUT/CadCutPageUC.xaml.vb
T
Dario Sassi e2daebcb5a OmagCUT 1.6k10 :
- aggiornamenti e migliorie varie.
2015-12-07 08:05:49 +00:00

239 lines
10 KiB
VB.net

Imports EgtUILib
Imports System.Reflection
Imports System.Globalization
Public Class CadCutPageUC
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = Application.Current.MainWindow
' Dichiarazione delle Page UserControl
Friend WithEvents m_NestPage As NestPageUC
Friend m_SplitPage As SplitPageUC
' Variabile che indica la modalità
Friend m_bNesting As Boolean = False
' Oggetto di gestione della macchina fotografica
Friend m_Camera As New Camera
Private Sub CadCutPage_Initialized(sender As Object, e As EventArgs)
' Creazione delle Page UserControl
m_NestPage = New NestPageUC
m_SplitPage = New SplitPageUC
' Posizionamento nella griglia delle Page UserControl
m_NestPage.SetValue(Grid.RowSpanProperty, 3)
m_SplitPage.SetValue(Grid.RowSpanProperty, 3)
' Nascondo progress e label per messaggi
PhotoProgress.Visibility = Windows.Visibility.Hidden
OutMessageLbl.Visibility = Windows.Visibility.Hidden
' Imposto i messaggi letti dal file dei messaggi
SimulateBtn.Content = EgtMsg(MSG_CADCUTPAGEUC + 1) 'Simulate - Simula
WorkBtn.Content = EgtMsg(MSG_CADCUTPAGEUC + 2) 'Work - Lavora
End Sub
Private Sub CadCutPage_Loaded(sender As Object, e As RoutedEventArgs)
' Seleziono UserControl di apertura
CadCutPageGrid.Children.Add(m_NestPage)
m_bNesting = True
SplitImage.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/Split.png", UriKind.Relative))
EgtZoom(ZM.ALL)
' Inizializzo gestore macchina fotografica
m_Camera.Init()
End Sub
Private Sub PhotoBtn_Click(sender As Object, e As RoutedEventArgs) Handles PhotoBtn.Click
' Se macchina fotografica abilitata, faccio una foto
If m_Camera.GetCameraLink() Then
If Not m_Camera.CameraClick() Then
OutMessageLbl.Text = EgtMsg(90313) 'Fotografia non riuscita
OutMessageLbl.Background = Brushes.Tomato
OutMessageLbl.Visibility = Windows.Visibility.Visible
End If
' Altrimenti lancio browser di immagini
Else
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_PhotoPage)
End If
End Sub
Friend Sub PostPhoto(ByVal sPath As String)
' Carico la foto
m_MainWindow.m_CurrentProjectPageUC.LoadPhoto(sPath)
' Aggiorno visualizzazione
EgtZoom(ZM.ALL)
End Sub
Private Sub RawPartBtn_Click(sender As Object, e As RoutedEventArgs) Handles RawPartBtn.Click
m_MainWindow.m_CurrentProjectPageUC.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_CadCutPageUC)
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_RawPartPage)
m_MainWindow.m_ActivePage = MainWindow.Pages.RawPart
End Sub
Private Sub DrawBtn_Click(sender As Object, e As RoutedEventArgs) Handles DrawBtn.Click
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_DrawPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.Draw
End Sub
Private Sub ImportBtn_Click(sender As Object, e As RoutedEventArgs) Handles ImportBtn.Click
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_ImportPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.Import
End Sub
Private Sub CadCutPage_Unloaded(sender As Object, e As RoutedEventArgs)
' Chiudo tutti gli UserControl attivi
If m_bNesting Then
CadCutPageGrid.Children.Remove(m_NestPage)
Else
CadCutPageGrid.Children.Remove(m_SplitPage)
End If
End Sub
Private Sub SplitBtn_Click(sender As Object, e As RoutedEventArgs) Handles SplitBtn.Click
If m_bNesting Then
SplitImage.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/Nest.png", UriKind.Relative))
CadCutPageGrid.Children.Remove(m_NestPage)
CadCutPageGrid.Children.Add(m_SplitPage)
m_bNesting = False
Else
SplitImage.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/Split.png", UriKind.Relative))
CadCutPageGrid.Children.Remove(m_SplitPage)
CadCutPageGrid.Children.Add(m_NestPage)
m_bNesting = True
End If
End Sub
Private Sub NewBtn_Click(sender As Object, e As RoutedEventArgs) Handles NewBtn.Click
' Se progetto modificato, chiedo se salvarlo
If EgtGetModified() Then
Dim SaveCurrProj As New SaveCurrProjWD
SaveCurrProj.sTextString = "Salvare il progetto corrente?"
SaveCurrProj.ShowDialog()
Select Case SaveCurrProj.DialogResult
Case 0 ' Annulla
Return
Case 1 ' Si
m_MainWindow.m_CurrentProjectPageUC.SaveProject()
Case 2 ' No
' Non devo fare alcunchè
End Select
End If
m_MainWindow.m_CurrentProjectPageUC.NewProject()
EgtZoom(ZM.ALL)
End Sub
Private Sub LoadBtn_Click(sender As Object, e As RoutedEventArgs) Handles LoadBtn.Click
' Se progetto modificato, chiedo se salvarlo
If EgtGetModified() Then
Dim SaveCurrProj As New SaveCurrProjWD
SaveCurrProj.sTextString = "Salvare il progetto corrente?"
SaveCurrProj.ShowDialog()
Select Case SaveCurrProj.DialogResult
Case 0 ' Annulla
Return
Case 1 ' Si
m_MainWindow.m_CurrentProjectPageUC.SaveProject()
Case 2 ' No
' Non devo fare alcunchè
End Select
End If
' Passo alla pagina di apertura con preview
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_OpenPage)
m_MainWindow.m_ActivePage = MainWindow.Pages.Open
End Sub
Friend Sub PostLoad(ByVal sPath As String)
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
If Not m_MainWindow.m_CurrentProjectPageUC.LoadProject(sPath) Then
m_MainWindow.m_CurrentProjectPageUC.NewProject()
End If
EgtZoom(ZM.ALL)
End Sub
Private Sub SaveBtn_Click(sender As Object, e As RoutedEventArgs) Handles SaveBtn.Click
' Eseguo salvataggio
m_MainWindow.m_CurrentProjectPageUC.SaveProject()
EgtDraw()
End Sub
Private Sub SimulateBtn_Click(sender As Object, e As RoutedEventArgs) Handles SimulateBtn.Click
m_MainWindow.m_CurrentProjectPageUC.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_CadCutPageUC)
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
m_MainWindow.m_ActivePage = MainWindow.Pages.Simulation
End Sub
Private Sub WorkBtn_Click(sender As Object, e As RoutedEventArgs) Handles WorkBtn.Click
Dim bOk As Boolean = True
' Disabilito impostazione modificato
EgtDisableModified()
' Inserisco le lavorazioni
Dim sSawMch As String = String.Empty
GetPrivateProfileString(S_MACH, K_CURRMACHINING, "", sSawMch, m_MainWindow.GetIniFile())
EgtLuaCreateGlobTable("CAM")
EgtLuaSetGlobStringVar("CAM.SAWMCH", sSawMch)
bOk = EgtLuaExecFile(m_MainWindow.GetCamAutoDir() & "\CamAuto.lua")
Dim nErr As Integer = 999
EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then
bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString())
End If
' Salvo il progetto con le lavorazioni
Dim sMchPath As String = m_MainWindow.GetTempDir() & "\" & "MachProj.nge"
m_MainWindow.m_CurrentProjectPageUC.SaveFile(sMchPath)
' Genero file CNC (lancio anche se errore in precedenza)
bOk = EgtGenerate(m_MainWindow.GetCncDir() & "\CadCut.xpi", "OmagCut") And bOk
' Riporto il progetto allo stato iniziale
EgtRemoveAllOperations()
' Abilito impostazione modificato
EgtEnableModified()
' Se errore in generazione, segnalo l'errore ed esco
If Not bOk Then
OutMessageLbl.Text = EgtMsg(90314) 'Errore nella generazione del programma CN
OutMessageLbl.Background = Brushes.Tomato
OutMessageLbl.Visibility = Windows.Visibility.Visible
EgtOutLog(OutMessageLbl.Text)
Return
End If
' Download programma
If m_MainWindow.m_bNCLink Then
m_MainWindow.m_CNCommunication.m_CN.DGeneralFunctions_Reset()
If m_MainWindow.m_CNCommunication.m_nNCType = 1 Then
bOk = bOk AndAlso (m_MainWindow.m_CNCommunication.m_CN.Delete_NC_prog("%900.0") = 0)
End If
bOk = bOk AndAlso (m_MainWindow.m_CNCommunication.m_CN.Download_NC_prog(m_MainWindow.GetCncDir() & "\CadCut.xpi", "%900.0") = 0)
bOk = bOk AndAlso (m_MainWindow.m_CNCommunication.m_CN.Start_Transfer_NC_prog() = 0)
' Attesa opportuna
System.Threading.Thread.Sleep(5000)
' Attivazione programma
bOk = bOk AndAlso (m_MainWindow.m_CNCommunication.m_CN.ActivateProgram(900) = 0)
' Modalità automatica
bOk = bOk AndAlso (m_MainWindow.m_CNCommunication.m_CN.DGeneralFunctions_WriteCncMode(0) = 0)
' Se errore, lo segnalo
If Not bOk Then
OutMessageLbl.Text = EgtMsg(90315) 'Errore nella trasmissione del programma CN
OutMessageLbl.Background = Brushes.Tomato
OutMessageLbl.Visibility = Windows.Visibility.Visible
EgtOutLog(OutMessageLbl.Text)
End If
Else
OutMessageLbl.Text = EgtMsg(90316) 'Non connesso alla macchina
OutMessageLbl.Background = Brushes.Gold
OutMessageLbl.Visibility = Windows.Visibility.Visible
EgtOutLog(OutMessageLbl.Text)
End If
End Sub
End Class