Imports System.Collections.ObjectModel Imports EgtUILib Imports EgtWPFLib5 Public Class ModifyEntity Inherits VMBase Private m_bIsSelected As Boolean Public Property bIsSelected As Boolean Get Return m_bIsSelected End Get Set(value As Boolean) m_bIsSelected = value ' seleziono in scena EgtDeselectAll() If Not IsNothing(value) Then EgtSelectObj(m_nId) End If EgtDraw() ' segno come elemento selezionato in treeview Map.refModifyPartPanelVM.SetSelModifyEntity(Me) End Set End Property Private m_nId As Integer = GDB_ID.NULL Public ReadOnly Property nId As Integer Get Return m_nId End Get End Property Private m_sName As String Public ReadOnly Property sName As String Get Return m_sName End Get End Property Public ReadOnly Property ghName As String Get Return m_nId & If(Not String.IsNullOrWhiteSpace(m_sName), " - " & m_sName, "") End Get End Property Private m_MenuList As New List(Of MenuItemVm) Public Property MenuList As List(Of MenuItemVm) Get Return m_MenuList End Get Set(value As List(Of MenuItemVm)) m_MenuList = value End Set End Property ' Definizione comandi Private m_cmdImportedEntity As ICommand Sub New(nId As Integer, sName As String) m_nId = nId m_sName = sName ' aggiungo voci layer a contextmenu m_MenuList.Add(New MenuItemVm(Me, ModifyLayer.LayerType.RIBS)) End Sub #Region "COMMANDS" #Region "ImportedEntity" Public ReadOnly Property ImportedEntity_DoubleClick As ICommand Get If m_cmdImportedEntity Is Nothing Then m_cmdImportedEntity = New Command(AddressOf ImportedEntity) End If Return m_cmdImportedEntity End Get End Property Public Sub ImportedEntity() If Not IsNothing(Map.refImportPanelVM.SelImportLayer) Then 'Map.refModifyPartPanelVM.ImportedEntityList.Remove(Me) Map.refModifyPartPanelVM.SelModifyLayer.EntityList.Add(Me) End If End Sub #End Region ' ImportedEntity #End Region ' COMMANDS End Class Public Class ModifyPart Inherits VMBase Private m_bIsSelected As Boolean Public Property bIsSelected As Boolean Get Return m_bIsSelected End Get Set(value As Boolean) m_bIsSelected = value Map.refModifyPartPanelVM.SetSelModifyPart(Me) End Set End Property Private m_nId As Integer Public ReadOnly Property nId As Integer Get Return m_nId End Get End Property Private m_sName As String Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value End Set End Property Public ReadOnly Property ghName As String Get Return If(Not String.IsNullOrWhiteSpace(m_sName), m_nId & " - " & m_sName, "Part" & m_nId) End Get End Property Private m_LayerList As New ObservableCollection(Of ModifyLayer) Public ReadOnly Property LayerList As ObservableCollection(Of ModifyLayer) Get Return m_LayerList End Get End Property Sub New(PrintPart As Print3dPartVM) 'm_nId = If(Map.refImportPanelVM.ImportPartList.Count = 0, 1, Map.refImportPanelVM.ImportPartList.Max(Function(x) x.m_nId) + 1) m_LayerList.Add(New ModifyLayer(ImportLayer.LayerType.PRINT_SOLID, "Print", PrintPart)) m_LayerList.Add(New ModifyLayer(ImportLayer.LayerType.MACH_START, "Layer Start", PrintPart)) m_LayerList.Add(New ModifyLayer(ImportLayer.LayerType.RIBS, "Ribs", PrintPart)) m_LayerList.Add(New ModifyLayer(ImportLayer.LayerType.SHELL_NUMBER, "Reduce Shell Number", PrintPart)) m_LayerList.Add(New ModifyLayer(ImportLayer.LayerType.AUX_SOLIDS, "Filled Solids", PrintPart)) m_LayerList.Add(New ModifyLayer(ImportLayer.LayerType.OTHERS, "Others", PrintPart)) End Sub End Class Public Class ModifyLayer Inherits VMBase Public Enum LayerType As Integer PRINT_SOLID = 1 MACH_START = 2 RIBS = 3 SHELL_NUMBER = 4 AUX_SOLIDS = 5 OTHERS = 6 End Enum Private m_nLayerId As Integer Private m_bIsSelected As Boolean Public Property bIsSelected As Boolean Get Return m_bIsSelected End Get Set(value As Boolean) m_bIsSelected = value Map.refModifyPartPanelVM.SetSelModifyLayer(Me) End Set End Property Private m_Type As LayerType Public Property Type As LayerType Get Return m_Type End Get Set(value As LayerType) m_Type = value End Set End Property Private m_sName As String Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value End Set End Property Private m_EntityList As New ObservableCollection(Of ModifyEntity) Public Property EntityList As ObservableCollection(Of ModifyEntity) Get Return m_EntityList End Get Set(value As ObservableCollection(Of ModifyEntity)) m_EntityList = value End Set End Property Sub New(Type As LayerType, sName As String) m_Type = Type m_sName = sName End Sub Sub New(Type As LayerType, sName As String, PrintPart As Print3dPartVM) m_Type = Type m_sName = sName Select Case Type Case LayerType.PRINT_SOLID m_nLayerId = PrintPart.nPrintSolidLayerId Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId) Dim sEntitytName As String = "" EgtGetName(nEntityId, sEntitytName) m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName)) Case LayerType.MACH_START m_nLayerId = PrintPart.nMachStartLayerId Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId) Dim sEntitytName As String = "" EgtGetName(nEntityId, sEntitytName) While nEntityId <> GDB_ID.NULL m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName)) nEntityId = EgtGetNext(nEntityId) EgtGetName(nEntityId, sEntitytName) End While Case LayerType.RIBS m_nLayerId = PrintPart.nRibsLayerId Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId) Dim sEntitytName As String = "" EgtGetName(nEntityId, sEntitytName) While nEntityId <> GDB_ID.NULL Dim RibType As Integer = RibEntity.RibTypes.FROMDRAW EgtGetInfo(nEntityId, KEY_RIB_TYPE, RibType) If RibType = RibEntity.RibTypes.FROMIMPORT Then m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName)) End If nEntityId = EgtGetNext(nEntityId) EgtGetName(nEntityId, sEntitytName) End While Case LayerType.SHELL_NUMBER m_nLayerId = PrintPart.nShellNumberLayerId Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId) Dim sEntitytName As String = "" EgtGetName(nEntityId, sEntitytName) While nEntityId <> GDB_ID.NULL Dim ShellType As Integer = ShellNumberEntity.ShellNumberTypes.FROMDRAW EgtGetInfo(nEntityId, KEY_SHELLNBR_TYPE, ShellType) If ShellType = ShellNumberEntity.ShellNumberTypes.FROMIMPORT Then m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName)) End If nEntityId = EgtGetNext(nEntityId) EgtGetName(nEntityId, sEntitytName) End While Case LayerType.AUX_SOLIDS m_nLayerId = PrintPart.nAuxSolidsLayerId Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId) Dim sEntitytName As String = "" EgtGetName(nEntityId, sEntitytName) While nEntityId <> GDB_ID.NULL 'Dim ShellType As Integer = ShellNumberEntity.ShellNumberTypes.FROMDRAW 'EgtGetInfo(nEntityId, KEY_SHELLNBR_TYPE, ShellType) 'If ShellType = ShellNumberEntity.ShellNumberTypes.FROMIMPORT Then m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName)) 'End If nEntityId = EgtGetNext(nEntityId) EgtGetName(nEntityId, sEntitytName) End While Case LayerType.OTHERS m_nLayerId = PrintPart.nOthersLayerId Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId) Dim sEntitytName As String = "" EgtGetName(nEntityId, sEntitytName) While nEntityId <> GDB_ID.NULL m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName)) nEntityId = EgtGetNext(nEntityId) EgtGetName(nEntityId, sEntitytName) End While End Select End Sub End Class Public Class MenuItemVm Inherits VMBase ' enita' di origine Private m_OrigEntity As ModifyEntity ' tipo del layer indicato Private m_Type As ModifyLayer.LayerType Public Property Type As ModifyLayer.LayerType Get Return m_Type End Get Set(value As ModifyLayer.LayerType) m_Type = value End Set End Property Public ReadOnly Property sMsg As String Get Dim sType As String = "" Select Case m_Type Case ModifyLayer.LayerType.PRINT_SOLID sType = "Print" Case ModifyLayer.LayerType.MACH_START sType = "Layer Start" Case ModifyLayer.LayerType.RIBS sType = "Ribs" Case ModifyLayer.LayerType.SHELL_NUMBER sType = "Reduce shell number" Case ModifyLayer.LayerType.AUX_SOLIDS sType = "Filled Solids" Case ModifyLayer.LayerType.OTHERS sType = "Others" End Select Return "Move to " & sType End Get End Property ' Definizione comando Private m_cmdCommand As ICommand Sub New(OrigEntity As ModifyEntity, Type As ModifyLayer.LayerType) m_OrigEntity = OrigEntity m_Type = Type End Sub #Region "Cancel" Public ReadOnly Property MenuItem_Command As ICommand Get If m_cmdCommand Is Nothing Then m_cmdCommand = New Command(AddressOf Command) End If Return m_cmdCommand End Get End Property Public Sub Command() ' recupero layer in cui spostare l'elemento End Sub #End Region ' Cancel End Class