Files
egtbeamwall/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/WallMachGroupVM.vb
T
2021-09-10 10:01:53 +02:00

132 lines
4.6 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports System.IO
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class WallMachGroupVM
Inherits Core.WallMachGroupVM
#Region "CONSTRUCTORS"
Sub New(WallMachGroupM As WallMachGroupM)
MyBase.New(WallMachGroupM)
End Sub
#End Region ' CONSTRUCTORS
#Region "METHODS"
Friend Function ReDrawWallMachgroup() As Boolean
' scrivo dati di tutti i pezzi
Dim nIndex As Integer
For nIndex = 0 To PartVMList.Count - 1
Dim Part As WallVM = PartVMList(nIndex)
EgtSetInfo(Id, MGR_RPT_PART & nIndex + 1, PartVMList(nIndex).nPartId & "," & Part.sPOSX & "," &
Part.sPOSY & "," & Part.PartM.nROTATED & "," & Part.PartM.nINVERTED)
Next
' elimino eventuali successive info pezzi di troppo
nIndex = PartVMList.Count + 1
Dim sTemp As String = ""
While EgtGetInfo(Id, MGR_RPT_PART & nIndex, sTemp)
EgtSetInfo(Id, MGR_RPT_PART & nIndex, "")
nIndex += 1
End While
' elimino vecchio grezzo ed eseguo script creazione nuovo
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
EgtRemoveRawPart(nRawId)
nRawId = EgtGetFirstRawPart()
End While
If Not ExecWall(Map.refMainWindowVM.MainWindowM.sTempDir, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdType.RAWPART, False) Then Return False
Return True
End Function
Public Overrides Function Copy() As Core.MyMachGroupVM
Return Nothing
End Function
#End Region ' METHODS
Protected Overrides Sub CreateWallVMList()
Dim all As List(Of WallVM) = (From WallM In m_WallMachGroupM.GetParts()
Select New WallVM(WallM, Me)).ToList()
For Each WallVM As WallVM In all
AddHandler WallVM.PropertyChanged, AddressOf OnWallVMPropertyChanged
Next
m_PartVMList = New ObservableCollection(Of Core.PartVM)(all)
AddHandler m_PartVMList.CollectionChanged, AddressOf OnWallVMListChanged
End Sub
Protected Overrides Sub OnWallAdded(sender As Object, e As PartAddedEventArgs)
Dim WallVM As WallVM = New WallVM(e.NewPart, Me)
PartVMList.Add(WallVM)
End Sub
Public Overrides Sub RefreshPartList()
End Sub
Public Overrides Sub RefreshGroupData()
End Sub
Friend Sub UpdateUsage()
m_WallMachGroupM.SetTotMat(dL * dW)
m_WallMachGroupM.SetMatForPart(0)
For Each Part In PartVMList
m_WallMachGroupM.SetMatForPart(m_WallMachGroupM.dMatForPart + (Part.dL * Part.dW))
Next
NotifyPropertyChanged(NameOf(dUsage))
NotifyPropertyChanged(NameOf(dWaste))
End Sub
#Region "COMMANDS"
#Region "DeleteMachGroup"
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Overrides Sub DeleteMachGroup()
' elimino tutte le copie
Dim nRawPartId As Integer = EgtGetFirstRawPart()
Dim nWallId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
While nWallId <> GDB_ID.NULL
If EgtRemovePartFromRawPart(nWallId) Then
Dim BTLPart As BTLPartVM = BTLPartVM.RetrieveBTLPartFromPart(nWallId)
EgtErase(nWallId)
If Not IsNothing(BTLPart) Then BTLPart.RefreshPartInProd()
End If
nWallId = EgtGetFirstPartInRawPart(nRawPartId)
End While
' elimino MachGroup
EgtRemoveMachGroup(Me.Id)
' rimuovo dalla lista grezzi
Dim Index As Integer = Map.refMachGroupPanelVM.MachGroupVMList.IndexOf(Me)
If Index = 0 Then
If Map.refMachGroupPanelVM.MachGroupVMList.Count > 1 Then
Map.refMachGroupPanelVM.SelectedMachGroup = Map.refMachGroupPanelVM.MachGroupVMList(0)
Else
Map.refMachGroupPanelVM.SelectedMachGroup = Nothing
EgtDraw()
End If
ElseIf Index = Map.refMachGroupPanelVM.MachGroupVMList.Count - 1 Then
If Map.refMachGroupPanelVM.MachGroupVMList.Count > 1 Then
Map.refMachGroupPanelVM.SelectedMachGroup = Map.refMachGroupPanelVM.MachGroupVMList(Map.refMachGroupPanelVM.MachGroupVMList.Count - 2)
Else
Map.refMachGroupPanelVM.SelectedMachGroup = Nothing
EgtDraw()
End If
Else
Map.refMachGroupPanelVM.SelectedMachGroup = Map.refMachGroupPanelVM.MachGroupVMList(Index - 1)
End If
Map.refMachGroupPanelVM.MachGroupVMList.Remove(Me)
End Sub
#End Region ' DeleteMachGroup
#End Region ' COMMANDS
End Class