Imports System.Collections.ObjectModel Imports EgtWPFLib5 Imports EgtBEAMWALL.Core Public Class MyInstrumentPanelVM Inherits InstrumentPanelVM ' Definizione comandi Private m_cmdData As ICommand Private m_cmdChangeParameter As ICommand Private m_cmdVerify As ICommand Private m_cmdSimulate As ICommand Public Overrides Function OnPostGetDistIsChecked() As Boolean Map.refSceneHostVM.MainScene.SetStatusNull() Return True End Function #Region "COMMANDS" #Region "Data" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property Data_Command As ICommand Get If m_cmdData Is Nothing Then m_cmdData = New Command(AddressOf Data) End If Return m_cmdData End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub Data() Dim BTLDataWnd As New BTLDataWndV(Application.Current.MainWindow, New BTLDataWndVM()) BTLDataWnd.ShowDialog() End Sub #End Region ' Data #Region "ChangeParameter" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property ChangeParameter_Command As ICommand Get If m_cmdChangeParameter Is Nothing Then m_cmdChangeParameter = New Command(AddressOf ChangeParameter) End If Return m_cmdChangeParameter End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub ChangeParameter() Dim ChangeParameterWndVM As New ChangeParameterWndVM Dim ChangeParameterWnd As New ChangeParameterWndV(Application.Current.MainWindow, ChangeParameterWndVM) If ChangeParameterWnd.ShowDialog() Then ' faccio passare pezzi If Not IsNothing(ChangeParameterWndVM.SelParam) Then For Each Part In Map.refProjectVM.BTLStructureVM.BTLPartVMList For Each Feature In Part.BTLFeatureVMList.Where(Function(x) x.nPRC = ChangeParameterWndVM.SelPRC.nPRC AndAlso CalcBeamPrivateProfileGRP(x.nSelGRP) = ChangeParameterWndVM.SelPRC.nGRP) If ChangeParameterWndVM.SelParam.BTLParamM.nType = BTLParamType.CHECKBOX AndAlso Feature.bDO = ChangeParameterWndVM.SelParam.bActualValue Then Feature.bDO = ChangeParameterWndVM.SelParam.bNewValue Else Dim ParamList As ObservableCollection(Of BTLParamVM) If ChangeParameterWndVM.SelParam.BTLParamM.bIsP Then ParamList = Feature.PBTLParamVMList Else ParamList = Feature.QBTLParamVMList End If For Each Param In ParamList.Where(Function(x) x.sName = ChangeParameterWndVM.SelParam.sName) Select Case Param.nType Case BTLParamType.DOUBLE_, BTLParamType.LENGTH If Param.dValue = ChangeParameterWndVM.SelParam.dActualValue Then Param.UpdateParamValue(ChangeParameterWndVM.SelParam.dNewValue, "") '' rinfresco valori parametri feature correntemente selezionata 'If Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) AndAlso ' Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM) AndAlso ' Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM Is Feature Then ' Param.NotifyPropertyChanged("sValue") 'End If End If Case BTLParamType.STRING_ If Param.sValue = ChangeParameterWndVM.SelParam.sActualValue Then Param.UpdateParamValue(0, ChangeParameterWndVM.SelParam.sNewValue) '' rinfresco valori parametri feature correntemente selezionata 'If Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) AndAlso ' Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM) AndAlso ' Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM.nPRC = ChangeParameterWndVM.SelPRC.nPRC AndAlso ' Map.refProjectVM.BTLStructureVM.SelBTLPart.SelBTLFeatureVM.nSelGRP = ChangeParameterWndVM.SelPRC.nGRP Then ' Param.NotifyPropertyChanged("sValue") 'End If End If End Select Next End If Next '' faccio passare feature 'For Each Feature In Part.FeatureList ' If Feature.nPRC = ChangeParameterWndVM.SelPRC.nPRC Then ' For Each Param In Feature.PParamList ' If Param.sName = ChangeParameterWndVM.SelParam.sName Then ' Select Case Param.nType ' Case BTLParamType.DOUBLE_, BTLParamType.LENGTH ' If Param.dValue = ChangeParameterWndVM.SelParam.dActualValue Then ' Param.dValue = ChangeParameterWndVM.SelParam.dValue ' End If ' Case BTLParamType.STRING_ ' If Param.sValue = ChangeParameterWndVM.SelParam.sActualValue Then ' Param.sValue = ChangeParameterWndVM.SelParam.sValue ' End If ' End Select ' End If ' Next ' End If 'Next Next End If End If End Sub #End Region ' ChangeParameter #Region "Verify" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property Verify_Command As ICommand Get If m_cmdVerify Is Nothing Then m_cmdVerify = New Command(AddressOf Verify) End If Return m_cmdVerify End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub Verify() Dim Calc As New CalcIntegration Dim BarList() As CalcIntegration.Bar If Map.refMainMenuVM.SelPage = Pages.VIEW Then If ((Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift) Then Dim TempBarList(Map.refProjectVM.BTLStructureVM.BTLPartVMList.Count - 1) As CalcIntegration.Bar For PartIndex = 0 To Map.refProjectVM.BTLStructureVM.BTLPartVMList.Count - 1 Dim CurrPart As BTLPartVM = Map.refProjectVM.BTLStructureVM.BTLPartVMList(PartIndex) Dim Bar As New CalcIntegration.Bar With {.nBarId = CurrPart.nPartId, .nBarType = ProjectType.PROJ, .bBarOk = True} Select Case CurrPart.nState Case Core.CalcStates.OK Bar.nCmdType = CalcIntegration.CmdType.GENERATE Case Else Bar.nCmdType = CalcIntegration.CmdType.CHECKGEN End Select TempBarList(PartIndex) = Bar Next BarList = TempBarList ElseIf Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) Then Dim TempBarList(0) As CalcIntegration.Bar Dim Bar As New CalcIntegration.Bar With {.nBarId = Map.refProjectVM.BTLStructureVM.SelBTLPart.nPartId, .nBarType = ProjectType.PROJ, .bBarOk = True} Select Case Map.refProjectVM.BTLStructureVM.SelBTLPart.nState Case Core.CalcStates.OK Bar.nCmdType = CalcIntegration.CmdType.GENERATE Case Else Bar.nCmdType = CalcIntegration.CmdType.CHECKGEN End Select TempBarList(0) = Bar BarList = TempBarList Else Return End If Calc.Run(BarList, Map.refProjManagerVM.CurrProj.sProjDirPath, AddressOf ManageCalc) ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then If ((Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift) Then Dim TempBarList(Map.refMachGroupPanelVM.MachGroupVMList.Count - 1) As CalcIntegration.Bar For PartIndex = 0 To Map.refMachGroupPanelVM.MachGroupVMList.Count - 1 Dim CurrPart As MyMachGroupVM = Map.refMachGroupPanelVM.MachGroupVMList(PartIndex) Dim Bar As New CalcIntegration.Bar With {.nBarId = CurrPart.Id, .nBarType = ProjectType.PROD, .bBarOk = True} Select Case CurrPart.nState Case Core.CalcStates.OK Bar.nCmdType = CalcIntegration.CmdType.GENERATE Case Else Bar.nCmdType = CalcIntegration.CmdType.CHECKGEN End Select TempBarList(PartIndex) = Bar Next BarList = TempBarList ElseIf Not IsNothing(Map.refMachGroupPanelVM.SelectedMachGroup) Then Dim TempBarList(0) As CalcIntegration.Bar Dim Bar As New CalcIntegration.Bar With {.nBarId = Map.refMachGroupPanelVM.SelectedMachGroup.Id, .nBarType = ProjectType.PROD, .bBarOk = True} Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup Select Case SelMachGroup.nState Case Core.CalcStates.OK Bar.nCmdType = CalcIntegration.CmdType.GENERATE Case Else Bar.nCmdType = CalcIntegration.CmdType.CHECKGEN End Select TempBarList(0) = Bar BarList = TempBarList Else Return End If Calc.Run(BarList, Map.refProdManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc) End If End Sub Private Sub ManageCalc(dProgress As Double, sProgress As String, ByRef bCancel As Boolean) If dProgress = 0 Then Map.refMyStatusBarVM.SetLoadingProgress_Visibility(True) Map.refMyStatusBarVM.SetStopProgress_IsActive(True) Map.refMyStatusBarVM.SetStopProgress_IsEnabled(True) Map.refMyStatusBarVM.SetOutputMessage(sProgress) Map.refMyStatusBarVM.SetStopProgress_IsActive(True) Map.refMyStatusBarVM.SetStopProgress_IsEnabled(True) ElseIf dProgress = 1 Then Map.refMyStatusBarVM.SetLoadingProgress_Visibility(False) Map.refMyStatusBarVM.SetStopProgress_IsActive(False) Map.refMyStatusBarVM.SetStopProgress_IsEnabled(False) Map.refMyStatusBarVM.SetOutputMessage(sProgress, 3) End If bCancel = Map.refMyStatusBarVM.bStopProgress Map.refMyStatusBarVM.SetLoadingProgress(dProgress * 100) Map.refMyStatusBarVM.SetOutputMessage(sProgress) End Sub #End Region ' Verify #Region "Simulate" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property Simulate_Command As ICommand Get If m_cmdSimulate Is Nothing Then m_cmdSimulate = New Command(AddressOf Simulate) End If Return m_cmdSimulate End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub Simulate() Dim Calc As New CalcIntegration Dim BarList() As CalcIntegration.Bar If Map.refMainMenuVM.SelPage = Pages.VIEW Then If Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) Then Dim TempBarList(0) As CalcIntegration.Bar Dim Bar As New CalcIntegration.Bar With {.nBarId = Map.refProjectVM.BTLStructureVM.SelBTLPart.nPartId, .nBarType = ProjectType.PROJ, .bBarOk = True, .nCmdType = CalcIntegration.CmdType.SIMULATE} TempBarList(0) = Bar BarList = TempBarList Else Return End If Calc.Run(BarList, Map.refProjManagerVM.CurrProj.sProjDirPath, AddressOf ManageCalc) ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then If Not IsNothing(Map.refMachGroupPanelVM.SelectedMachGroup) Then Dim TempBarList(0) As CalcIntegration.Bar Dim Bar As New CalcIntegration.Bar With {.nBarId = Map.refMachGroupPanelVM.SelectedMachGroup.Id, .nBarType = ProjectType.PROD, .bBarOk = True, .nCmdType = CalcIntegration.CmdType.SIMULATE} TempBarList(0) = Bar BarList = TempBarList Else Return End If Calc.Run(BarList, Map.refProdManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc) End If End Sub #End Region ' Simulate #End Region ' COMMANDS End Class