diff --git a/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb index 9b1c6cf0..8d75643e 100644 --- a/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb @@ -9,6 +9,16 @@ Public Class CALCPanelVM Private m_OrigSelectedMachine As Machine = Nothing + Private m_IsMachineApplied As Boolean = False + Public Property IsMachineApplied As Boolean + Get + Return m_IsMachineApplied + End Get + Set(value As Boolean) + m_IsMachineApplied = value + End Set + End Property + Private m_CALCPanel_IsEnabled As Boolean = True Public Property CALCPanel_IsEnabled As Boolean Get @@ -19,6 +29,21 @@ Public Class CALCPanelVM End Set End Property + Private m_ChooseMachineBtn_Visibility As Boolean = True + Public Property ChooseMachineBtn_Visibility As Visibility + Get + Return If(m_ChooseMachineBtn_Visibility, Visibility.Visible, Visibility.Collapsed) + End Get + Set(value As Visibility) + m_ChooseMachineBtn_Visibility = (value = Visibility.Visible) + NotifyPropertyChanged(NameOf(ChooseMachineBtn_Visibility)) + End Set + End Property + Friend Sub SetChooseMachineBtn_Visibility(IsVisible As Boolean) + m_ChooseMachineBtn_Visibility = IsVisible + NotifyPropertyChanged(NameOf(ChooseMachineBtn_Visibility)) + End Sub + Private m_ChooseMachine_Visibility As Boolean = False Public Property ChooseMachine_Visibility As Visibility Get @@ -382,7 +407,8 @@ Public Class CALCPanelVM End Sub Friend Function IsMachineModified() As Boolean - Return Not IsNothing(SelectedMachine) AndAlso + Return m_IsMachineApplied AndAlso + Not IsNothing(SelectedMachine) AndAlso Not IsNothing(m_OrigSelectedMachine) AndAlso SelectedMachine.Name <> m_OrigSelectedMachine.Name End Function @@ -700,8 +726,12 @@ Public Class CALCPanelVM ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub ChooseMachine() - ' apro la CmBx per la scelta e il pulsante di conferma - SetChooseMachine_Visibility(True) + ' rendo visibile la CmBx per la scelta e il pulsante di conferma solo se il Proj corrente non ha associato alcun Prod + If Map.refProjManagerVM.CurrProj.nProdId > 0 Then + MessageBox.Show(EgtMsg(61929), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Exclamation) + Else + SetChooseMachine_Visibility(True) + End If End Sub #End Region ' ChooseMachine @@ -726,7 +756,57 @@ Public Class CALCPanelVM Friend Sub Ok() ' aggiorno la Macchina selezionata nel Machine Panel e collasso CmBx e pulsante di conferma If Not IsNothing(SelectedMachine) Then Map.refMachinePanelVM.SelectedMachine = SelectedMachine + m_IsMachineApplied = True SetChooseMachine_Visibility(False) + ' resetto i parametri errori integration ciclando su ogni Part e per ogni Part ogni Feature + Dim ProjId = Map.refProjManagerVM.CurrProj.nProjId + Dim TempList As New List(Of BTLPartM) + Dim nPartId As Integer = EgtGetFirstPart() + While nPartId <> GDB_ID.NULL + ' se devo filtrare un progetto + If ProjId > 0 Then + ' verifico se il pezzo appartiene al ProjId + Dim nPartProjId As Integer + EgtGetInfo(nPartId, BTL_PRT_PROJ, nPartProjId) + If nPartProjId = ProjId Then + EgtRemoveInfo(nPartId, ITG_PROJ_ERR) + EgtRemoveInfo(nPartId, ITG_PROJ_MSG) + EgtRemoveInfo(nPartId, ITG_PROJ_ROT) + EgtRemoveInfo(nPartId, ITG_PROJ_FALL) + ' ora che ho resettato questo Part resetto le Feature di questo Part + Dim NewBTLPart As BTLPartM = BTLPartM.CreateBTLPart(nPartId) + Dim FeatureTempList As New List(Of BTLFeatureM) + ' Leggo outline + Dim nOutlineLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE) + Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayerId) + While nOutlineId <> GDB_ID.NULL + ' verifico che sia una feature + Dim nGRP As Integer + If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) Then + ' creo la feature + FeatureTempList.Add(BTLFeatureM.CreateBTLFeature(NewBTLPart, nOutlineId)) + End If + nOutlineId = EgtGetNext(nOutlineId) + End While + ' Leggo feature + Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS) + Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId) + While nFeatureId <> GDB_ID.NULL + ' verifico che sia una feature + Dim nGRP As Integer + If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) AndAlso Not EgtExistsInfo(nFeatureId, BTL_FTR_MAINID) Then + EgtRemoveInfo(nFeatureId, If(Map.refMainMenuVM.SelPage = Pages.VIEW, ITG_PROJ_ERR, ITG_PROD_ERR)) + EgtRemoveInfo(nFeatureId, If(Map.refMainMenuVM.SelPage = Pages.VIEW, ITG_PROJ_MSG, ITG_PROD_MSG)) + EgtRemoveInfo(nFeatureId, If(Map.refMainMenuVM.SelPage = Pages.VIEW, ITG_PROJ_ROT, ITG_PROD_ROT)) + End If + nFeatureId = EgtGetNext(nFeatureId) + End While + End If + End If + nPartId = EgtGetNextPart(nPartId) + End While + ' rigenero struttura BTL + Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(ProjId)) End Sub #End Region ' Ok diff --git a/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml index a852ce0c..494e4cb6 100644 --- a/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml +++ b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml @@ -34,7 +34,8 @@ FontWeight="Light" ToolTip="Cambio Macchina" Style="{StaticResource ToolBar_Button}" - Command="{Binding ChooseMachine_Command}"> + Command="{Binding ChooseMachine_Command}" + Visibility="{Binding ChooseMachineBtn_Visibility}"> diff --git a/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb b/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb index 1c6cce92..8cfecf0e 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb @@ -154,6 +154,7 @@ Public Class MainMenuVM Map.refProjectVM.SetProjManager_Visibility(True) Map.refProjectVM.SetProdManager_Visibility(False) Map.refProjectVM.NotifyAllPanelVisibility() + Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(True) If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then Map.refFeatureListVM.colFeature_Do.ColumnVisibility = Visibility.Visible End If @@ -229,6 +230,7 @@ Public Class MainMenuVM Map.refProjectVM.SetProjManager_Visibility(False) Map.refProjectVM.SetProdManager_Visibility(True) Map.refProjectVM.NotifyAllPanelVisibility() + Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(False) ' inizializzo gruppi di lavorazione If Not IsNothing(Map.refProdManagerVM.CurrProd) AndAlso Not IsNothing(Map.refProdManagerVM.CurrProd.nProdId) AndAlso Map.refProdManagerVM.CurrProd.nProdId > 0 Then If File.Exists(Map.refProdManagerVM.CurrProd.sProdPath) Then diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb index 6c116ce4..9a5aed24 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb @@ -118,11 +118,13 @@ Public Class ProjFileVM Case MessageBoxResult.Yes ' salvo proj Map.refProjManagerVM.Save() + Map.refCALCPanelVM.IsMachineApplied = False Case MessageBoxResult.Cancel Return False Case Else ' No EgtResetModified() Map.refCALCPanelVM.RevertToOriginalMachine() + Map.refCALCPanelVM.IsMachineApplied = False If CurrProject.bIsNew Then ' lo elimino If Directory.Exists(sProjectDirPath) Then