Files
OmagCUT/DirectCuts/Polishing.xaml.vb
T
Dario Sassi ab283a3efa OmagCUT 3.1e2 :
- correzioni al polishing (oar si notifica che è un taglio diretto e si controlla meglio l'utensile)
- varie migliorie nei tagli diretti.
2026-05-10 11:12:38 +02:00

221 lines
9.2 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtUILib
Public Class Polishing
' Riferimenti a pagine
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC
Private m_refControlDirectCutUC As ControlsDirectCutUC1
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Flag di simulazione in corso
Private m_bSimul As Boolean = False
' Origine tavola e dati grezzo
Private m_bRawOk As Boolean = False
Private m_ptTabOri As Point3d
Private m_ptRawMin As Point3d
Private m_ptRawMax As Point3d
' Parametri della lavorazione
Private m_bPoliOk As Boolean = False
' Lista dei kit di lucidatura disponibili
Private m_KitList As New ObservableCollection(Of String)
Private Sub Polishing_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' assegno messaggi
SimulBtn.ToolTip = EgtMsg(90301) ' Simula
OkBtn.ToolTip = EgtMsg(90230) ' Esegui
End Sub
Private Sub Polishing_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Attivo la pagina
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_refControlDirectCutUC = m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC1
m_bActive = True
' Se rientro da simulazione
If m_bSimul Then
m_bSimul = False
' Disabilito registrazione progetto modificato
EgtDisableModified()
' Aggiorno visualizzazione
ShowAllCurrPhaseMachinings()
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook)
EgtDraw()
Return
End If
' Disabilito registrazione progetto modificato
EgtDisableModified()
' Carico i kit di lucidatura disponibili
ReadKitList()
' Associo la lista dei kit alla combobox
PolishingCmBx.ItemsSource = m_KitList
' Rendo corrente ultima lucidatura scelta, altrimenti la prima della lista
If m_KitList.Count > 0 Then
Dim sLastPolishing As String = ""
GetPrivateProfileString( S_DIRECTCUTS, K_DC_POLISH_NAME, m_KitList( 0), sLastPolishing, m_MainWindow.GetIniFile())
PolishingCmBx.SelectedItem = sLastPolishing
If PolishingCmBx.SelectedIndex < 0 Then PolishingCmBx.SelectedIndex = 0
End If
' Se non c'è kit selezionato, disabilito simulazione ed esecuzione
If PolishingCmBx.SelectedIndex < 0 Then
m_bPoliOk = False
UpdateSimulOkBtn()
End If
' Rendo semitrasparente il grezzo
Dim nRawSolidId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID)
EgtSetAlpha( nRawSolidId, 60)
' Aggiorno visualizzazione
EgtDraw()
End Sub
Friend Sub Polishing_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_refControlDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC1.DirectCutPages.DirectCut
' Cancello eventuali lucidature
RemovePolishings()
' Dichiaro polishing non più attivo
DirectCut.m_bPolishingOn = False
' Riattivo eventuali lavorazioni presenti
ActivateAllMachinings()
' Nascondo la macchina
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = False
EgtSetMachineLook(MCH_LOOK.TAB)
' Ripristino opacità del grezzo
Dim nRawSolidId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID)
EgtSetAlpha( nRawSolidId, 100)
' Abilito registrazione progetto modificato
EgtEnableModified()
' Aggiorno visualizzazione
EgtDraw()
End If
' Dichiaro pagina non attiva
m_bActive = False
End Sub
Private Sub ReadKitList()
' Pulisco
m_KitList.Clear()
' Leggo
Dim nKitIndex As Integer = 1
Dim sKitName As String = ""
Dim sKitFile As String = m_MainWindow.GetKitsFile()
While ReadKitName( nKitIndex, sKitFile, sKitName)
m_KitList.Add( sKitName)
nKitIndex += 1
End While
End Sub
Private Function ReadKitName( nKitIndex As Integer, sKitFile As String, ByRef sKitName As String) As boolean
' Leggo il nome del kit
Dim sKey As String = K_KIT & nKitIndex.ToString("D2")
Return ( GetPrivateProfileString( S_HEADER, sKey, "", sKitName, sKitFile) > 0)
End Function
Private Sub UpdateSimulOkBtn()
If m_bPoliOk Then
SimulBtn.IsEnabled = True
SimulBtn.Foreground = Brushes.Black
OkBtn.IsEnabled = True
OkBtn.Foreground = Brushes.Black
Else
SimulBtn.IsEnabled = False
SimulBtn.Foreground = Brushes.DarkGray
OkBtn.IsEnabled = False
OkBtn.Foreground = Brushes.DarkGray
End If
End Sub
Private Sub TypeCmBx_SelectionChanged(sender As Object, e As EventArgs) Handles PolishingCmBx.SelectionChanged
Dim nIndex As String = PolishingCmBx.SelectedIndex
If nIndex < 0 Then Return
Dim sKitName As String = m_KitList( nIndex)
WritePrivateProfileString( S_DIRECTCUTS, K_DC_POLISH_NAME, sKitName, m_MainWindow.GetIniFile())
' Calcolo la lucidatura
CreatePolishing( sKitName)
' Aggiornamenti interfaccia utente e grafica
UpdateSimulOkBtn()
EgtDraw()
End Sub
Private Sub SimulBtn_Click(sender As Object, e As RoutedEventArgs) Handles SimulBtn.Click
' Verifico ci sia una lucidatura valida
If Not m_bPoliOk Then Return
' Salvo il progetto con le lavorazioni
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
Dim sMchPath As String = m_MainWindow.GetTempDir() & "\" & "DirectProj.nge"
m_MainWindow.m_CurrentProjectPageUC.SaveFile(sMchPath, False)
' Predispongo passaggio a simulazione
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_refControlDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
m_MainWindow.m_ActivePage = MainWindow.Pages.Simulation
End Sub
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
#If TRIAL Then
m_CurrProjPage.SetWarningMessage("Trial Version")
#Else
' Verifico non sia versione Ufficio
If m_MainWindow.GetKeyOption( MainWindow.KEY_OPT.OFFICE_TYPE) Then
m_CurrProjPage.SetWarningMessage( "Office Version")
Return
End If
' Verifico ci sia una lucidatura valida
If Not m_bPoliOk Then Return
' Salvo il progetto con le lavorazioni
Dim sMchPath As String = m_MainWindow.GetTempDir() & "\" & "DirectProj.nge"
m_MainWindow.m_CurrentProjectPageUC.SaveFile(sMchPath, False)
' Genero file CNC (lancio anche se errore in precedenza)
Dim sCncPath As String = m_MainWindow.GetCncDir() & "\DirectCut" & m_MainWindow.m_CurrentMachine.sIsoFileExt
Dim bOk As Boolean = EgtGenerate(sCncPath, "OmagCut ver." & m_MainWindow.GetVersion())
' Se errore in generazione, segnalo l'errore ed esco
If Not bOk Then
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return
End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript(True)
End If
#End If
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_refControlDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreatePolishing( sKitName As String) As Boolean
' Verifico sia definita la lucidatura
If String.IsNullOrWhiteSpace( sKitName) Then
m_bPoliOk = False
Return False
End If
' Disattivo eventuali lavorazioni presenti
DeactivateAllMachinings()
' Cancello eventuali precedenti lucidature
RemovePolishings()
' Creo la lavorazione
Dim nKerfId As Integer = EgtGetFirstNameInGroup( m_CurrProjPage.m_nRawId, NAME_KERF)
m_bPoliOk = AddPolishings( sKitName, nKerfId)
EgtSetCurrPhase( 1)
' Dichiaro polishing attivo
DirectCut.m_bPolishingOn = True
Return m_bPoliOk
End Function
End Class