Imports EgtUILib Imports EgtWPFLib5 Public Class SimulationPanelVM Inherits VMBase #Region "FIELDS & PROPERTIES" Private m_dPrevAngVertDegView As Double Private m_dPrevAngHorizDegView As Double Private m_MySimul As MySimulation Public Property MySimul As MySimulation Get Return m_MySimul End Get Set(value As MySimulation) m_MySimul = value NotifyPropertyChanged("MySimul") End Set End Property #Region "Messages" Public ReadOnly Property VirtualAdditive_Msg As String Get Return "Virtual Additive" End Get End Property #End Region ' Definizione comandi Private m_cmdOk As ICommand #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 ' ToolTip #End Region ' FIELDS & PROPERTIES #Region "CONSTRUCTOR" Sub New() ' Creo riferimento a questa classe in OmagOFFICEMap Map.SetRefSimulationPanelVM(Me) MySimul = New MySimulation ' leggo vista macchina da ini e la imposto Dim DefaultMachViewMode As Integer = GetMainPrivateProfileInt(S_SIMUL, K_MACHVIEWMODE, 3) MySimul.SetMachLook(DefaultMachViewMode) Map.refMachineViewPanelVM.RefreshSelViewSlider() End Sub #End Region ' CONSTRUCTOR #Region "METHODS" Friend Sub Refresh(PrevMeasureUnit As MeasureUnitOpt) End Sub Friend Sub InitSimulation() ' Deseleziono tutto EgtDeselectAll() ' Costringo ad aggiornare UI UpdateUI() ' Disabilito impostazione modificato EgtDisableModified() ' Imposto prima fase EgtSetCurrPhase(1) ' Costringo ad aggiornare UI UpdateUI() 'Cambio la vista della scena EgtGetGenericView(m_dPrevAngVertDegView, m_dPrevAngHorizDegView) EgtSetView(CurrentMachine.nStandardView, False) EgtSetMachineLook(MySimul.GetMachLook()) ' Nascondo griglia EgtSetGridShow(False, False) EgtZoom(ZM.ALL) ' Avvio ambiente di simulazione If Not EgtSimInit() OrElse Not EgtSimStart() Then If EgtGetLastMachMgrErrorId() <> 0 Then Dim sErr As String = EgtGetLastMachMgrErrorString() MessageBox.Show(sErr, EgtMsg(MSG_SIMULATION + 5), MessageBoxButton.OK, MessageBoxImage.Exclamation) Else MessageBox.Show(EgtMsg(MSG_MESSAGEBOX + 10), EgtMsg(MSG_SIMULATION + 5), MessageBoxButton.OK, MessageBoxImage.Error) End If End If ' Imposto stato corrente MySimul.SetSimulationStatus(MCH_SIM_ST.UI_STOP) MySimul.SetShowPlay(True) MySimul.SetSliderX(GetMainPrivateProfileDouble(S_SIMUL, K_SLIDERX, 1)) Dim SliderVal As Double = GetMainPrivateProfileDouble(S_SIMUL, K_SLIDERVAL, 10) MySimul.SliderValue = SliderVal MySimul.ShowCncData() MySimul.StatusMsg = EgtMsg(MSG_SIMULATIONPAGEUC + 14) ' Home ' Gestione check VMill If GetMainPrivateProfileInt(S_SIMUL, K_VIRTUALADDITIVE, 0) > 0 AndAlso EgtUILib.GetPrivateProfileInt( S_VMILL, K_VM_ENABLE, 0, CurrentMachine.sMachIniFile) > 0 Then MySimul.VMill_Visibility = Visibility.Visible MySimul.VMill_IsEnabled = True Dim bVal As Boolean MySimul.SetVMillActive( EgtGetInfo(EgtGetCurrMachGroup(), KEY_MCHGRP_VM, bVal) AndAlso bVal) Else ' Disabilito Vmill, ma inibisco dichiarazione progetto modificato MySimul.VMill_Visibility = Visibility.Collapsed MySimul.VMill_IsEnabled = False MySimul.VMillActive = False EgtDisableModified() EgtRemoveInfo(EgtGetCurrMachGroup(), KEY_MCHGRP_VM) EgtEnableModified() End If ' Gestione check Trace If GetMainPrivateProfileInt(S_SIMUL, K_TRACEENABLE, 0) > 0 And EgtUILib.GetPrivateProfileInt(S_TOOLTRACE, K_TT_ENABLE, 0, CurrentMachine.sMachIniFile) > 0 Then MySimul.Trace_Visibility = Visibility.Visible MySimul.Trace_IsEnabled = True If MySimul.TraceActive Then MySimul.TraceActive = True Else MySimul.Trace_Visibility = Visibility.Collapsed MySimul.Trace_IsEnabled = False End If ' nascondo slider strati e layer da visualizzare Map.refSliderManagerVM.SetSliderVisibility(False) Map.refViewLayerManagerVM.SetViewLayerManagerVisibility(False) ' disattivo comandi progetto Map.refProjManagerVM.SetProjCmdIsEnabled(False) ' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma Map.refProjManagerVM.SetProjCmdIsEnabled(False) Map.refTopPanelVM.SetTopPanelIsEnabled(False) Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(False) Map.refSliceManagerVM.SetButtonsIsEnabled(False) Map.refSliderManagerVM.SetLayerIndexIsEnabled(False) Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(False) Map.refInstrumentPanelVM.SetEdgeAnalysisIsEnabled(False) EgtDraw() End Sub Private Function LoadCurrTools() As Boolean '' Se macchina con cambio utensile non devo fare alcunché 'If CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Then ' Return True 'End If '' Imposto la lama corrente 'Dim sSaw As String = CurrentMachine.sCurrSaw 'If Not EgtLoadTool("H1", 1, sSaw) Then ' Return False 'End If '' Imposto eventuale secondo utensile montato 'If CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL Then ' Dim sTool As String = CurrentMachine.sCurrDrill ' If String.IsNullOrEmpty(sTool) Then sTool = CurrentMachine.sCurrMill ' If Not String.IsNullOrEmpty(sTool) AndAlso Not EgtLoadTool("H1", 2, sTool) Then ' Return False ' End If 'End If Return True End Function Friend Sub ExitSimulation() Map.refMyStatusBarVM.ClearOutputMessage() ' Mi assicuro di terminare la simulazione MySimul.ResetSimulation() '' Nascondo tutte le lavorazioni 'CamAuto.HideAllMachinings() ' Abilito impostazione modificato EgtEnableModified() ' Ripristino vista griglia EgtSetGridShow(OptionModule.m_bGridVisibility, OptionModule.m_bGridVisibility) ' Cambio la vista della scena EgtSetGenericView(m_dPrevAngVertDegView, m_dPrevAngHorizDegView, False) EgtZoom(ZM.ALL) ' mostro slider strati e layer da visualizzare Map.refSliderManagerVM.SetSliderVisibility(True) Map.refViewLayerManagerVM.SetViewLayerManagerVisibility(True) ' disattivo comandi progetto Map.refProjManagerVM.SetProjCmdIsEnabled(True) ' riabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma Map.refProjManagerVM.SetProjCmdIsEnabled(True) Map.refTopPanelVM.SetTopPanelIsEnabled(True) Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(True) Map.refSliceManagerVM.SetButtonsIsEnabled(True) Map.refSliderManagerVM.SetLayerIndexIsEnabled(True) Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(True) Map.refInstrumentPanelVM.SetEdgeAnalysisIsEnabled(True) End Sub #End Region ' METHODS #Region "COMMANDS" #Region "Ok" Public ReadOnly Property Ok_Command As ICommand Get If m_cmdOk Is Nothing Then m_cmdOk = New Command(AddressOf Ok) End If Return m_cmdOk End Get End Property Public Sub Ok() ' reset gruppo EgtResetCurrMachGroup() ' eseguo script di uscita da gruppo corrente Map.refSliceManagerVM.ExecExitMachScript() ' ripristino modalita' standard Map.refTopPanelVM.SelPage = Pages.SLICE End Sub #End Region ' Ok #End Region ' COMMANDS End Class