Files
egtbeamwall/EgtBEAMWALL.Supervisor/MachGroupPanel/MyMachGroupPanelVM.vb
T
Demetrio Cassarino a12ab8f531 -pulizia codice
2024-06-13 17:36:10 +02:00

133 lines
4.6 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class MyMachGroupPanelVM
Inherits Core.MyMachGroupPanelVM
#Region "FIELDS & PROPERTIES"
Public Shadows Property SelectedMachGroup As MachGroupVM
Get
Return m_SelectedMachGroup
End Get
Set(value As MachGroupVM)
m_SelectedMachGroup = value
If Not IsNothing(value) Then
OnPreSetCurrMachGroup()
EgtSetCurrMachGroup(value.Id)
OnPostSetCurrMachGroup()
End If
' aggiorno stato bottoni in LeftPanel
Map.refLeftPanelVM.UpdateButtonIsEnabledState()
NotifyPropertyChanged(NameOf(SelectedMachGroup))
End Set
End Property
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New(MachGroupPanelM As MachGroupPanelM)
MyBase.New(MachGroupPanelM)
' Recupero la macchina di default
Dim sDefaultMachine As String = String.Empty
GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine)
' verifico se volume grezzi calcolato
For Each MachGroup As MyMachGroupVM In m_MachGroupVMList
Dim bIsCalculated As Boolean = False
For Each Part In MachGroup.PartVMList
If Part.dVolume > 0 Then Continue For
Part.PartM.ReadVolume()
bIsCalculated = True
Next
If bIsCalculated Then
MachGroup.UpdateUsage()
End If
Next
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Protected Overrides Sub CreateMachGroupVMList()
Dim all As New List(Of MachGroupVM)
For Each MachGroupM In m_MachGroupPanelM.GetMachGroups()
all.Add(New MyMachGroupVM(MachGroupM))
Next
For Each MachGroupvM As MachGroupVM In all
AddHandler MachGroupvM.PropertyChanged, AddressOf OnMachGroupVMPropertyChanged
Next
MachGroupVMList = New ObservableCollection(Of MachGroupVM)(all)
AddHandler MachGroupVMList.CollectionChanged, AddressOf OnMachGroupVMListChanged
End Sub
Protected Overrides Sub OnMachGroupAdded(sender As Object, e As MachGroupAddedEventArgs)
Dim MachGroupVM As MachGroupVM = Nothing
Select Case DirectCast(e.NewMachGroupM, MyMachGroupM).nType
Case Core.ConstBeam.MachineType.BEAM, Core.ConstBeam.MachineType.WALL
MachGroupVM = New MyMachGroupVM(e.NewMachGroupM)
Case Core.ConstBeam.MachineType.NULL
Return
End Select
MachGroupVMList.Add(MachGroupVM)
NotifyPropertyChanged(NameOf(MachGroupVMList))
End Sub
Public Overrides Function OnPostSetCurrMachGroup() As Boolean
' resetto eventuale selezione pezzo
Dim SelMachGroup As MyMachGroupVM = DirectCast(SelectedMachGroup, MyMachGroupVM)
' resetto eventuale selezione pezzo
SelMachGroup.SelPart = Nothing
' Imposto vista solo tavola
EgtSetMachineLook(MCH_LOOK.TAB)
Map.refFeatureInPartInRawPartListVM.SetFeatureListVisibility(SelMachGroup.bResetWhileCutting)
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
EgtZoom(ZM.ALL)
Return True
End Function
Public Function FirstNotToBeProducedIndex() As Integer
Return MachGroupVMList.IndexOf(MachGroupVMList.FirstOrDefault(Function(x) DirectCast(x, MyMachGroupVM).bToBeProduced = False))
End Function
Friend Sub ResetAllMachGroups()
For Each Machgroup As MyMachGroupVM In MachGroupVMList
' se iniziato ma non finito
If Machgroup.dtStartTime <> DateTime.MinValue AndAlso Machgroup.dtEndTime = DateTime.MinValue Then
' segno come resettato
Machgroup.SetResetWhileCutting(True)
End If
Machgroup.ResetProduce()
Machgroup.NotifyPropertyChanged(NameOf(Machgroup.Produce_IsEnabled))
Next
End Sub
Public Overrides Sub AddMachGroup()
Dim SelMyMachine As MyMachine = Map.refMachinePanelVM.SelectedMachine
Dim MyMachGroupM As MyMachGroupM = m_MyMachGroupPanelM.NewMyMachGroup(SelMyMachine.Name, SelMyMachine.nType)
If Not IsNothing(MyMachGroupM) Then Return
' e lo seleziono
SelectedMachGroup = MachGroupVMList.FirstOrDefault(Function(x) x.MachGroupM Is MyMachGroupM)
End Sub
' funzione che seleziona primo gruppo
Friend Sub SelFirstMachGroup()
If Not IsNothing(Me) AndAlso Not IsNothing(MachGroupVMList) AndAlso MachGroupVMList.Count > 0 Then
SelectedMachGroup = MachGroupVMList(0)
Else
SelectedMachGroup = Nothing
EgtResetCurrMachGroup()
' nascondo tutti i pezzi
ManageBTLParts.HideAll()
End If
End Sub
#End Region ' METHODS
End Class