EgtCAM5 2.2j1 :

- Spostamento VM e funzioni generiche di Simulazione e Stime da EgtCAM5 e OmagOFFICE alla Libreria
This commit is contained in:
Renzo Lanza
2020-10-01 08:15:02 +00:00
parent 440973131f
commit 70716d68f7
5 changed files with 83 additions and 615 deletions
@@ -1,54 +1,17 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class SimulationExpanderVM
Inherits ViewModelBase
Inherits SimulationVM
#Region "FIELDS & PROPERTIES"
'EGT PROPERTIES
' Stato di visualizzazione della macchina
Private m_nMachLook As Integer = MCH_LOOK.ALL
' Utensile corrente
Private m_sCurrTool As String = String.Empty
Private m_nStatus As MCH_SIM_ST = MCH_SIM_ST.UI_STOP
Private Property SimulationStatus As MCH_SIM_ST
Get
Return m_nStatus
End Get
Set(value As MCH_SIM_ST)
m_nStatus = value
If IniFile.m_nUserLevel >= 5 AndAlso (value = MCH_SIM_ST.UI_PAUSE OrElse value = MCH_SIM_ST.UI_STOP) Then
For Index = 0 To m_MachineAxisList.Count - 1
m_MachineAxisList(Index).IsReadOnlyAxesValue = False
Next
Else
For Index = 0 To m_MachineAxisList.Count - 1
m_MachineAxisList(Index).IsReadOnlyAxesValue = True
Next
End If
EgtSimSetUiStatus(m_nStatus)
End Set
End Property
' Stato bottone Play
Private m_bShowPlay As Boolean = True
' Coefficiente per valore Slider
Private m_SliderX As Double = 1
' Flag di esecuzione in corso
Private m_bSimExecuting As Boolean = False
Public ReadOnly Property bSimExecuting As Boolean
Get
Return m_bSimExecuting
End Get
End Property
'GRAPHICAL PROPERTIES
Private m_Simulation_IsExpanded As Boolean
Public Property Simulation_IsExpanded As Boolean
Public Overridable Property Simulation_IsExpanded As Boolean
Get
Return m_Simulation_IsExpanded
End Get
@@ -66,107 +29,11 @@ Public Class SimulationExpanderVM
End Get
Set(value As Boolean)
m_Simulation_IsEnabled = value
OnPropertyChanged("Simulation_IsEnabled")
NotifyPropertyChanged("Simulation_IsEnabled")
End Set
End Property
' lista degli assi
Private m_MachineAxisList As New ObservableCollection(Of MachineAxis)
Public ReadOnly Property MachineAxisList As ObservableCollection(Of MachineAxis)
Get
Return m_MachineAxisList
End Get
End Property
Private m_GCode As String
Public Property GCode As String
Get
Return m_GCode
End Get
Set(value As String)
If value <> m_GCode Then
m_GCode = value
OnPropertyChanged("GCode")
End If
End Set
End Property
Private m_FValue As String
Public Property FValue As String
Get
Return m_FValue
End Get
Set(value As String)
If value <> m_FValue Then
m_FValue = value
OnPropertyChanged("FValue")
End If
End Set
End Property
Private m_TName As String
Public Property TName As String
Get
Return m_TName
End Get
Set(value As String)
If value <> m_TName Then
m_TName = value
OnPropertyChanged("TName")
End If
End Set
End Property
Private m_SValue As String
Public Property SValue As String
Get
Return m_SValue
End Get
Set(value As String)
If value <> m_SValue Then
m_SValue = value
OnPropertyChanged("SValue")
End If
End Set
End Property
Private m_OpeName As String
Public Property OpeName As String
Get
Return m_OpeName
End Get
Set(value As String)
If value <> m_OpeName Then
m_OpeName = value
OnPropertyChanged("OpeName")
End If
End Set
End Property
Private m_PlayPauseImage As String
Public ReadOnly Property PlayPauseImage As String
Get
If m_bShowPlay Then
Return "/Resources/OptionPanel/MachiningOptionPanel/SimulationExpander/Play.png"
Else
Return "/Resources/OptionPanel/MachiningOptionPanel/SimulationExpander/Pause.png"
End If
End Get
End Property
Private m_StatusMsg As String
Public Property StatusMsg As String
Get
Return m_StatusMsg
End Get
Set(value As String)
m_StatusMsg = value
OnPropertyChanged("StatusMsg")
End Set
End Property
Private m_SliderValue As Double
Public Property SliderValue As Double
Public Overrides Property SliderValue As Double
Get
Return m_SliderValue
End Get
@@ -174,97 +41,13 @@ Public Class SimulationExpanderVM
value = Math.Max(1, Math.Min(value, 100))
If Math.Abs(value - m_SliderValue) > 1 Then
m_SliderValue = value
OnPropertyChanged("SliderValue")
NotifyPropertyChanged("SliderValue")
End If
EgtSimSetStep(value * m_SliderX)
EgtSimSetStep(value * GetSliderX())
End Set
End Property
Private m_VMillActive As Boolean = False
Public Property VMillActive As Boolean
Get
Return m_VMillActive
End Get
Set(value As Boolean)
m_VMillActive = value
OnPropertyChanged("VMillActive")
If m_VMillActive Then
EgtSetInfo(EgtGetCurrMachGroup(), KEY_MCHGRP_VM, m_VMillActive)
Else
EgtRemoveInfo(EgtGetCurrMachGroup(), KEY_MCHGRP_VM)
End If
Application.Msn.NotifyColleagues(Application.EMITTITLE)
End Set
End Property
Public Sub SetVMillActive(value As Boolean)
m_VMillActive = value
OnPropertyChanged("VMillActive")
End Sub
Private m_VMill_Visibility As Visibility = Visibility.Collapsed
Public Property VMill_Visibility As Visibility
Get
Return m_VMill_Visibility
End Get
Set(value As Visibility)
m_VMill_Visibility = value
OnPropertyChanged("VMill_Visibility")
End Set
End Property
Private m_VMill_IsEnabled As Boolean = False
Public Property VMill_IsEnabled As Boolean
Get
Return m_VMill_IsEnabled
End Get
Set(value As Boolean)
m_VMill_IsEnabled = value
OnPropertyChanged("VMill_IsEnabled")
End Set
End Property
' Definizione comandi
Private m_cmdStep As ICommand
Private m_cmdPlayPause As ICommand
Private m_cmdStop As ICommand
#Region "Messages"
Public ReadOnly Property SimulationMsg As String
Get
Return EgtMsg(MSG_SIMULATION + 7) 'Simulazione
End Get
End Property
Public ReadOnly Property VMillMsg As String
Get
Return EgtMsg(MSG_SIMULATION + 16) 'Virtual Milling
End Get
End Property
#End Region
#Region "ToolTip"
Public ReadOnly Property OneStepToolTip As String
Get
Return EgtMsg(MSG_SIMULATION + 8)
End Get
End Property
Public ReadOnly Property PlayPauseToolTip As String
Get
Return EgtMsg(MSG_SIMULATION + 9)
End Get
End Property
Public ReadOnly Property StopHomeToolTip As String
Get
Return EgtMsg(MSG_SIMULATION + 10)
End Get
End Property
#End Region
#End Region
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
@@ -280,147 +63,15 @@ Public Class SimulationExpanderVM
ShowCncData()
End If
End Sub)
SimulationMsg_Const = MSG_SIMULATION
SetPlayImagePath("/Resources/OptionPanel/MachiningOptionPanel/SimulationExpander/Play.png")
SetPauseImagePath("/Resources/OptionPanel/MachiningOptionPanel/SimulationExpander/Pause.png")
End Sub
#End Region
#End Region ' CONSTRUCTOR
#Region "COMMANDS"
#Region "StepCommand"
''' <summary>
''' Returns a command that create a new tool.
''' </summary>
Public ReadOnly Property StepCommand As ICommand
Get
If m_cmdStep Is Nothing Then
m_cmdStep = New RelayCommand(AddressOf StepCmd)
End If
Return m_cmdStep
End Get
End Property
''' <summary>
''' Creata the new tool. This method is invoked by the NewCommand.
''' </summary>
Public Sub StepCmd(ByVal param As Object)
StatusMsg = ""
' Disabilito check VMill
VMill_IsEnabled = False
' Se stato stop, devo avviare simulazione
If m_nStatus = MCH_SIM_ST.UI_STOP Then
SimulationStatus = MCH_SIM_ST.UI_STEP
' Aggiorno bottone
m_bShowPlay = False
OnPropertyChanged("PlayPauseImage")
ExecSim()
' Aggiorno bottone
m_bShowPlay = True
OnPropertyChanged("PlayPauseImage")
' Alrimenti imposto solo il nuovo stato
Else
SimulationStatus = MCH_SIM_ST.UI_STEP
' Aggiornamenti per bottone Play/Pause
m_bShowPlay = False
OnPropertyChanged("PlayPauseImage")
End If
End Sub
#End Region ' StepCommand
#Region "PlayPauseCommand"
''' <summary>
''' Returns a command that create a new tool.
''' </summary>
Public ReadOnly Property PlayPauseCommand As ICommand
Get
If m_cmdPlayPause Is Nothing Then
m_cmdPlayPause = New RelayCommand(AddressOf PlayPause)
End If
Return m_cmdPlayPause
End Get
End Property
''' <summary>
''' Creata the new tool. This method is invoked by the NewCommand.
''' </summary>
Public Sub PlayPause(ByVal param As Object)
StatusMsg = ""
If m_bShowPlay Then
' Disabilito check VMill
VMill_IsEnabled = False
' Aggiorno bottone
m_bShowPlay = False
OnPropertyChanged("PlayPauseImage")
' Eseguo
If m_nStatus = MCH_SIM_ST.UI_STOP Then
' Lancio simulazione
SimulationStatus = MCH_SIM_ST.UI_PLAY
ExecSim()
' Aggiorno bottone
m_bShowPlay = True
OnPropertyChanged("PlayPauseImage")
ElseIf m_nStatus = MCH_SIM_ST.UI_PAUSE Then
SimulationStatus = MCH_SIM_ST.UI_PLAY
End If
Else
' Aggiorno bottone
m_bShowPlay = True
OnPropertyChanged("PlayPauseImage")
' Se play o step, imposto stato pausa
If m_nStatus = MCH_SIM_ST.UI_PLAY Or m_nStatus = MCH_SIM_ST.UI_STEP Then
SimulationStatus = MCH_SIM_ST.UI_PAUSE
StatusMsg = EgtMsg(MSG_SIMULATION + 11) ' Pausa
End If
End If
End Sub
#End Region ' PlayPauseCommand
#Region "StopCommand"
''' <summary>
''' Returns a command that create a new tool.
''' </summary>
Public ReadOnly Property StopCommand As ICommand
Get
If m_cmdStop Is Nothing Then
m_cmdStop = New RelayCommand(AddressOf StopCmd)
End If
Return m_cmdStop
End Get
End Property
''' <summary>
''' Creata the new tool. This method is invoked by the NewCommand.
''' </summary>
Public Sub StopCmd(ByVal param As Object)
StatusMsg = ""
' Abilito check VMill
VMill_IsEnabled = True
' Se stato già stop, porto in home
If m_nStatus = MCH_SIM_ST.UI_STOP Then
' Mi riporto all'inizio
EgtSimStart()
EgtDraw()
' Aggiorno dati CNC
ShowCncData()
StatusMsg = EgtMsg(MSG_SIMULATION + 14) ' Home
Else
StatusMsg = EgtMsg(MSG_SIMULATION + 12) ' Stop
End If
' Aggiorno bottone
m_bShowPlay = True
OnPropertyChanged("PlayPauseImage")
' Imposto il nuovo stato
SimulationStatus = MCH_SIM_ST.UI_STOP
End Sub
#End Region ' StopCommand
#Region "GenerateCommand"
''' <summary>
@@ -474,7 +125,7 @@ Public Class SimulationExpanderVM
#End Region ' GenerateCommand
#End Region
#End Region ' COMMANDS
#Region "METHODS"
@@ -491,13 +142,14 @@ Public Class SimulationExpanderVM
EgtShowOnlyTable(False)
EgtZoom(ZM.ALL, False)
End If
InitializeSimulation()
EgtDraw()
m_Simulation_IsExpanded = True
Map.refOperationParametersExpanderVM.OperParamsViewIsEnabled = False
Map.refOperationsListExpanderVM.SimulationExpander_Get_IsExpanded(True)
OnPropertyChanged("Simulation_IsExpanded")
NotifyPropertyChanged("Simulation_IsExpanded")
Map.refMachiningOptionPanelVM.OnPropertyChanged("GenerateIsEnabled")
' disattivo database utensili, lavorazioni e setup se vado in simulazione
Map.refMachinePanelVM.ToolMachSetUpIsEnabled(False, False, False)
@@ -505,8 +157,8 @@ Public Class SimulationExpanderVM
End Function
Friend Function ExitSimulation() As Boolean
If m_bSimExecuting Then Return False
CloseSimulation()
If bSimExecuting Then Return False
ResetSimulation()
If IniFile.m_bShowOnlyTable Then
EgtShowOnlyTable(True)
EgtZoom(ZM.ALL)
@@ -516,7 +168,7 @@ Public Class SimulationExpanderVM
m_Simulation_IsExpanded = False
Map.refOperationParametersExpanderVM.OperParamsViewIsEnabled = True
Map.refOperationsListExpanderVM.SimulationExpander_Get_IsExpanded(False)
OnPropertyChanged("Simulation_IsExpanded")
NotifyPropertyChanged("Simulation_IsExpanded")
Map.refMachiningOptionPanelVM.OnPropertyChanged("GenerateIsEnabled")
' disattivo database utensili, lavorazioni e setup se vado in simulazione
Map.refMachinePanelVM.ToolMachSetUpIsEnabled(True, True, True)
@@ -557,9 +209,9 @@ Public Class SimulationExpanderVM
End If
End If
' Imposto stato corrente
SimulationStatus = MCH_SIM_ST.UI_STOP
m_bShowPlay = True
m_SliderX = GetPrivateProfileDouble(S_SIMUL, K_SLIDERX, 1)
SetSimulationStatus(MCH_SIM_ST.UI_STOP)
SetShowPlay(True)
SetSliderX(GetPrivateProfileDouble(S_SIMUL, K_SLIDERX, 1))
Dim SliderVal As Double = GetPrivateProfileDouble(S_SIMUL, K_SLIDERVAL, 10)
SliderValue = SliderVal
' Gestione check VMill
@@ -581,31 +233,14 @@ Public Class SimulationExpanderVM
StatusMsg = EgtMsg(MSG_SIMULATION + 14) ' Home
End Sub
Private Sub CloseSimulation()
StatusMsg = ""
' Mi assicuro di terminare la simulazione
ResetSimulation()
End Sub
Private Sub ResetSimulation()
' Termino la simulazione
SimulationStatus = MCH_SIM_ST.UI_STOP
EgtSimExit()
' Salvo valore dello slider
Dim sVal As String = DoubleToString(SliderValue, 1)
WritePrivateProfileString(S_SIMUL, K_SLIDERVAL, sVal)
' Torno alla prima fase
EgtSetCurrPhase(1, True)
End Sub
Private Sub ExecSim()
m_bSimExecuting = True
Public Overrides Sub ExecSim()
SetSimExecuting(True)
IniFile.m_bSimulExecuting = True
Map.refTopCommandBarVM.DrawIsEnabled = False
Map.refOperationsListExpanderVM.OpersListViewIsEnabled = False
Map.refOperationParametersExpanderVM.OperParamsViewIsEnabled = False
Map.refMachGroupPanelVM.SetMachGroupState(False) ' Map.refMachGroupPanelVM.MachGroupPanelIsEnabled = False
Map.refEstimationsExpanderVM.OnPropertyChanged("Estimation_IsEnabled")
Map.refEstimationsExpanderVM.NotifyPropertyChanged("Estimation_IsEnabled")
If Not EgtSimStart(False) Then
If EgtGetLastMachMgrErrorId() <> 0 Then
Dim sErr As String = EgtGetLastMachMgrErrorString()
@@ -615,38 +250,38 @@ Public Class SimulationExpanderVM
End If
End If
Dim nShowDataCounter As Integer = 0
While m_nStatus <> MCH_SIM_ST.UI_STOP
While GetStatus() <> MCH_SIM_ST.UI_STOP
' Se simulazione in svolgimento
If m_nStatus = MCH_SIM_ST.UI_PLAY Or m_nStatus = MCH_SIM_ST.UI_STEP Then
If GetStatus() = MCH_SIM_ST.UI_PLAY Or GetStatus() = MCH_SIM_ST.UI_STEP Then
' Eseguo movimento
Dim nMove As Integer
Dim bMove As Boolean = EgtSimMove(nMove)
' Se arrivato a fine step e sono in step
If bMove Then
If m_nStatus = MCH_SIM_ST.UI_STEP And nMove = MCH_SIM.END_STEP Then
If GetStatus() = MCH_SIM_ST.UI_STEP And nMove = MCH_SIM.END_STEP Then
' Imposto stato Pausa
SimulationStatus = MCH_SIM_ST.UI_PAUSE
SetSimulationStatus(MCH_SIM_ST.UI_PAUSE)
StatusMsg = EgtMsg(MSG_SIMULATION + 11) ' Pausa
' Aggiornamenti per bottone Play/Pause
m_bShowPlay = True
OnPropertyChanged("PlayPauseImage")
SetShowPlay(True)
NotifyPropertyChanged("PlayPauseImage")
End If
' Se movimento con collisione
Else If nMove = MCH_SIM.COLLISION
' Se movimento con collisione
ElseIf nMove = MCH_SIM.COLLISION Then
' Imposto stato Pausa
SimulationStatus = MCH_SIM_ST.UI_PAUSE
SetSimulationStatus(MCH_SIM_ST.UI_PAUSE)
StatusMsg = EgtMsg(MSG_SIMULATION + 11) ' Pausa
' Aggiornamenti per bottone Play/Pause
m_bShowPlay = True
OnPropertyChanged("PlayPauseImage")
SetShowPlay(True)
NotifyPropertyChanged("PlayPauseImage")
' Messaggio
MessageBox.Show(EgtMsg(MSG_SIMULATION + 19), EgtMsg(MSG_SIMULATION + 15), MessageBoxButton.OK, MessageBoxImage.Warning)
' Altrimenti movimento non riuscito
' Altrimenti movimento non riuscito
Else
SimulationStatus = MCH_SIM_ST.UI_STOP
SetSimulationStatus(MCH_SIM_ST.UI_STOP)
' Aggiornamenti per bottone Play/Pause
m_bShowPlay = True
OnPropertyChanged("PlayPauseImage")
SetShowPlay(True)
NotifyPropertyChanged("PlayPauseImage")
' Abilito check VMill
VMill_IsEnabled = True
Select Case nMove
@@ -674,7 +309,7 @@ Public Class SimulationExpanderVM
' Aggiorno visualizzazione
EgtDraw()
' Aggiorno dati CNC
If nShowDataCounter = 5 Or SimulationStatus = MCH_SIM_ST.UI_PAUSE Or SimulationStatus = MCH_SIM_ST.UI_STOP Then
If nShowDataCounter = 5 Or GetSimulationStatus() = MCH_SIM_ST.UI_PAUSE Or GetSimulationStatus() = MCH_SIM_ST.UI_STOP Then
ShowCncData()
nShowDataCounter = 0
ElseIf nShowDataCounter > 5 Then
@@ -689,110 +324,35 @@ Public Class SimulationExpanderVM
' Costringo ad aggiornare UI
UpdateUI()
End While
m_bSimExecuting = False
SetSimExecuting(False)
IniFile.m_bSimulExecuting = False
Map.refTopCommandBarVM.DrawIsEnabled = True
Map.refOperationsListExpanderVM.OpersListViewIsEnabled = True
Map.refOperationParametersExpanderVM.OperParamsViewIsEnabled = True
Map.refMachGroupPanelVM.SetMachGroupState(True) ' Map.refMachGroupPanelVM.MachGroupPanelIsEnabled = True
Map.refEstimationsExpanderVM.OnPropertyChanged("Estimation_IsEnabled")
Map.refEstimationsExpanderVM.NotifyPropertyChanged("Estimation_IsEnabled")
End Sub
Private Sub ShowCncData()
' Assi
Dim nEgtIndex As Integer = 0
Dim nAxisIndex As Integer = 0
Dim sName As String = String.Empty
Dim sToken As String = String.Empty
Dim bLinear As Boolean = True
Dim dVal As Double = 0
While EgtSimGetAxisInfoPos(nEgtIndex, sName, sToken, bLinear, dVal)
If sToken <> "**" Then
IsValidAxisIndex(nAxisIndex)
m_MachineAxisList(nAxisIndex).Name = sName
m_MachineAxisList(nAxisIndex).Token = sToken
m_MachineAxisList(nAxisIndex).Linear = bLinear
m_MachineAxisList(nAxisIndex).Value = If(bLinear, LenToString(dVal, -3), DoubleToString(dVal, -3))
nAxisIndex += 1
End If
nEgtIndex += 1
End While
For ClearIndex = m_MachineAxisList.Count - 1 To nAxisIndex Step -1
m_MachineAxisList.RemoveAt(ClearIndex)
Next
' Tipo di movimento e feed
ShowMoveTypeFeed()
' Nome utensile e speed
ShowToolNameSpeed()
' Nome operazione e tipo
ShowOperationName()
Public Overrides Sub OnPostSetSimulationStatus(value As MCH_SIM_ST)
If IniFile.m_nUserLevel >= 5 AndAlso (value = MCH_SIM_ST.UI_PAUSE OrElse value = MCH_SIM_ST.UI_STOP) Then
For Index = 0 To MachineAxisList.Count - 1
MachineAxisList(Index).IsReadOnlyAxesValue = False
Next
Else
For Index = 0 To MachineAxisList.Count - 1
MachineAxisList(Index).IsReadOnlyAxesValue = True
Next
End If
EgtSimSetUiStatus(GetStatus())
End Sub
Private Sub IsValidAxisIndex(nIndex As Integer)
For Index = m_MachineAxisList.Count To nIndex
m_MachineAxisList.Add(New MachineAxis)
Next
End Sub
Private Function ShowMoveTypeFeed() As Boolean
Dim nG As Integer = 0
Dim dFeed As Double = 0
If EgtSimGetMoveInfo(nG, dFeed) Then
If nG <> 0 Then
GCode = "G" & nG.ToString()
FValue = "F" & LenToString(dFeed, 0)
Else
GCode = "G" & nG.ToString()
FValue = ""
End If
Return True
Public Overrides Sub VMillActiveInfoTitle(VMillActive As Boolean)
If VMillActive Then
EgtSetInfo(EgtGetCurrMachGroup(), KEY_MCHGRP_VM, VMillActive)
Else
GCode = ""
FValue = ""
Return False
End If
End Function
Private Function ShowToolNameSpeed() As Boolean
Dim sTool As String = String.Empty
Dim dSpeed As Double = 0
If EgtSimGetToolInfo(sTool, dSpeed) Then
TName = sTool
If dSpeed > 1 Then
SValue = "S" & DoubleToString(dSpeed, 0)
Else
SValue = ""
End If
Return True
Else
TName = ""
SValue = ""
Return False
End If
End Function
Private Function ShowOperationName() As Boolean
Dim sName As String = String.Empty
Dim nType As Integer = 0
If EgtSimGetOperationInfo(sName, nType) Then
OpeName = sName
Return True
Else
OpeName = ""
Return False
End If
End Function
Private Sub UpdateMachView()
' Se cambiato utensile, aggiorno stato visualizzazione macchina
Dim sTool As String = String.Empty
Dim dSpeed As Double = 0
If EgtSimGetToolInfo(sTool, dSpeed) Then
If sTool <> m_sCurrTool Then
m_sCurrTool = sTool
EgtSetMachineLook(m_nMachLook)
End If
EgtRemoveInfo(EgtGetCurrMachGroup(), KEY_MCHGRP_VM)
End If
Application.Msn.NotifyColleagues(Application.EMITTITLE)
End Sub
Private Function GetCncFileName(bAskSave As Boolean, ByRef sCncFile As String, ByRef sInfo As String) As Boolean
@@ -834,6 +394,6 @@ Public Class SimulationExpanderVM
Return True
End Function
#End Region
#End Region ' METHODS
End Class
End Class