54c5d41c67
- correzione contextMenu in ManagePart - Tooltip su tutte le icone - gestione disattivazione interfaccia durante import
1052 lines
46 KiB
VB.net
1052 lines
46 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class PartManager_GeomEntity
|
|
Inherits VMBase
|
|
|
|
' layer sotto cui e' questa entita'
|
|
Private m_OrigLayer As ManagePart_Layer
|
|
Friend ReadOnly Property OrigLayer As ManagePart_Layer
|
|
Get
|
|
Return m_OrigLayer
|
|
End Get
|
|
End Property
|
|
|
|
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.refManagePartPanelVM.SetSelPartManager_GeomEntity(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 Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
SetTextBoxVisibility(False)
|
|
NotifyPropertyChanged(NameOf(sName))
|
|
If Map.refManagePartPanelVM.Type = ManagePartPanelVM.ManagePartType.MODIFY Then
|
|
EgtSetInfo(m_nId, ENTITY_NAME, value)
|
|
End If
|
|
Map.refManagePartPanelVM.SetIsEnabled(True)
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property ghName As String
|
|
Get
|
|
Return m_nId
|
|
End Get
|
|
End Property
|
|
|
|
Private m_MenuList As New ObservableCollection(Of GeomEntity_MenuItem)
|
|
Public Property MenuList As ObservableCollection(Of GeomEntity_MenuItem)
|
|
Get
|
|
Return m_MenuList
|
|
End Get
|
|
Set(value As ObservableCollection(Of GeomEntity_MenuItem))
|
|
m_MenuList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_UserShouldEditValueNow As Boolean = False
|
|
Public Property UserShouldEditValueNow As Boolean
|
|
Get
|
|
Return m_UserShouldEditValueNow
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_UserShouldEditValueNow = value
|
|
End Set
|
|
End Property
|
|
Friend Sub SetUserShouldEditValueNow()
|
|
m_UserShouldEditValueNow = True
|
|
NotifyPropertyChanged(NameOf(UserShouldEditValueNow))
|
|
m_UserShouldEditValueNow = False
|
|
NotifyPropertyChanged(NameOf(UserShouldEditValueNow))
|
|
End Sub
|
|
|
|
Private m_TextBox_Visibility As Visibility = Visibility.Collapsed
|
|
Public ReadOnly Property TextBox_Visibility As Visibility
|
|
Get
|
|
Return m_TextBox_Visibility
|
|
End Get
|
|
End Property
|
|
|
|
Private m_TextBlock_Visibility As Visibility = Visibility.Visible
|
|
Public ReadOnly Property TextBlock_Visibility As Visibility
|
|
Get
|
|
Return m_TextBlock_Visibility
|
|
End Get
|
|
End Property
|
|
|
|
' Definizione comandi
|
|
Private m_cmdGeomEntityDoubleClick As ICommand
|
|
|
|
Sub New(OrigLayer As ManagePart_Layer, nId As Integer)
|
|
m_nId = nId
|
|
Dim sName As String = ""
|
|
EgtGetInfo(m_nId, ENTITY_NAME, sName)
|
|
m_sName = If(String.IsNullOrWhiteSpace(sName), m_nId, sName)
|
|
m_OrigLayer = OrigLayer
|
|
' aggiungo voci layer a contextmenu
|
|
UpdateContextMenu()
|
|
End Sub
|
|
|
|
Friend Sub UpdateContextMenu()
|
|
m_MenuList.Clear()
|
|
Select Case Map.refManagePartPanelVM.Type
|
|
Case ManagePartPanelVM.ManagePartType.IMPORT
|
|
Dim bIsSurface As Boolean = False
|
|
For Each ProjectPart In Map.refManagePartPanelVM.ManagerPartList
|
|
' verifico in quali layer puo' andare questo elemento
|
|
Dim EntityType As GDB_TY = EgtGetType(nId)
|
|
Dim nPrintSolidCount As Integer = 0
|
|
Dim ManageLayer As ManagePart_Layer = ProjectPart.LayerList.FirstOrDefault(Function(x) x.Type = ManagePart_Layer.LayerType.PRINT_SOLID)
|
|
If Not IsNothing(ManageLayer) Then
|
|
nPrintSolidCount = ManageLayer.EntityList.Count
|
|
End If
|
|
Select Case EntityType
|
|
Case GDB_TY.GEO_POINT, GDB_TY.CRV_COMPO, GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_LINE
|
|
If Not IsNothing(OrigLayer) Then
|
|
' recupero i layer
|
|
If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.MACH_START Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.MACH_START, ProjectPart))
|
|
If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.OTHERS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
Else
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.MACH_START, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
End If
|
|
Case GDB_TY.SRF_MESH
|
|
bIsSurface = True
|
|
If Not IsNothing(OrigLayer) Then
|
|
' verifico se volume chiuso
|
|
If nPrintSolidCount = 0 AndAlso (Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.PRINT_SOLID) Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart))
|
|
If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.SHELL_NUMBER Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, ProjectPart))
|
|
If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.AUX_SOLIDS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart))
|
|
If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.RIBS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart))
|
|
If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.OTHERS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
Else
|
|
If nPrintSolidCount = 0 Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
End If
|
|
End Select
|
|
Next
|
|
If bIsSurface Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.CHANGENAME))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.DELETE))
|
|
Case ManagePartPanelVM.ManagePartType.MODIFY
|
|
Dim bIsSurface As Boolean = False
|
|
For Each ProjectPart In Map.refTopPanelVM.PartList
|
|
' verifico in quali layer puo' andare questo elemento
|
|
Dim EntityType As GDB_TY = EgtGetType(nId)
|
|
Dim nPrintSolidCount As Integer = EgtGetGroupObjs(ProjectPart.nPrintSolidLayerId)
|
|
Select Case EntityType
|
|
Case GDB_TY.GEO_POINT, GDB_TY.CRV_COMPO, GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_LINE
|
|
If Not IsNothing(OrigLayer) Then
|
|
' recupero i layer
|
|
If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.MACH_START Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.MACH_START, ProjectPart))
|
|
If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.OTHERS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
Else
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.MACH_START, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
End If
|
|
Case GDB_TY.SRF_MESH
|
|
bIsSurface = True
|
|
If Not IsNothing(OrigLayer) Then
|
|
' verifico se volume chiuso
|
|
If nPrintSolidCount = 0 AndAlso (ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.PRINT_SOLID) Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart))
|
|
If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.SHELL_NUMBER Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, ProjectPart))
|
|
If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.AUX_SOLIDS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart))
|
|
If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.RIBS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart))
|
|
If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.OTHERS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
Else
|
|
If nPrintSolidCount = 0 Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart))
|
|
End If
|
|
End Select
|
|
Next
|
|
If bIsSurface Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.CHANGENAME))
|
|
m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.DELETE))
|
|
End Select
|
|
End Sub
|
|
|
|
Friend Sub UpdateOrigLayer(NewLayer As ManagePart_Layer)
|
|
m_OrigLayer = NewLayer
|
|
End Sub
|
|
|
|
Friend Sub SetTextBoxVisibility(bValue As Boolean)
|
|
m_TextBox_Visibility = If(bValue, Visibility.Visible, Visibility.Collapsed)
|
|
m_TextBlock_Visibility = If(Not bValue, Visibility.Visible, Visibility.Collapsed)
|
|
NotifyPropertyChanged(NameOf(TextBox_Visibility))
|
|
NotifyPropertyChanged(NameOf(TextBlock_Visibility))
|
|
If bValue Then SetUserShouldEditValueNow()
|
|
End Sub
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "GeomEntityDoubleClick"
|
|
|
|
Public ReadOnly Property GeomEntityDoubleClick_Command As ICommand
|
|
Get
|
|
If m_cmdGeomEntityDoubleClick Is Nothing Then
|
|
m_cmdGeomEntityDoubleClick = New Command(AddressOf GeomEntityDoubleClick)
|
|
End If
|
|
Return m_cmdGeomEntityDoubleClick
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub GeomEntityDoubleClick()
|
|
If Not IsNothing(Map.refManagePartPanelVM.SelManagerLayer) Then
|
|
Map.refManagePartPanelVM.ImportedEntityList.Remove(Me)
|
|
' aggiorno riferimenti layer e context menu
|
|
UpdateOrigLayer(Map.refManagePartPanelVM.SelManagerLayer)
|
|
UpdateContextMenu()
|
|
Map.refManagePartPanelVM.SelManagerLayer.EntityList.Add(Me)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' ImportedEntity
|
|
|
|
#End Region ' COMMANDS
|
|
|
|
End Class
|
|
|
|
Public Class ManagePart_Part
|
|
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.refManagePartPanelVM.SetSelManagerPart(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_PrintPart As Print3dPartVM
|
|
Public ReadOnly Property PrintPart As Print3dPartVM
|
|
Get
|
|
Return m_PrintPart
|
|
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
|
|
SetTextBoxVisibility(False)
|
|
NotifyPropertyChanged(NameOf(sName))
|
|
If Map.refManagePartPanelVM.Type = ManagePartPanelVM.ManagePartType.MODIFY Then
|
|
m_PrintPart.UpdateName(value)
|
|
EgtSetInfo(m_PrintPart.nPartId, PART_NAME, value)
|
|
End If
|
|
Map.refManagePartPanelVM.SetIsEnabled(True)
|
|
End Set
|
|
End Property
|
|
|
|
Private m_MenuList As New List(Of ManagerPart_MenuItem)
|
|
Public Property MenuList As List(Of ManagerPart_MenuItem)
|
|
Get
|
|
Return m_MenuList
|
|
End Get
|
|
Set(value As List(Of ManagerPart_MenuItem))
|
|
m_MenuList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_LayerList As New ObservableCollection(Of ManagePart_Layer)
|
|
Public ReadOnly Property LayerList As ObservableCollection(Of ManagePart_Layer)
|
|
Get
|
|
Return m_LayerList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_UserShouldEditValueNow As Boolean = False
|
|
Public Property UserShouldEditValueNow As Boolean
|
|
Get
|
|
Return m_UserShouldEditValueNow
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_UserShouldEditValueNow = value
|
|
End Set
|
|
End Property
|
|
Friend Sub SetUserShouldEditValueNow()
|
|
m_UserShouldEditValueNow = True
|
|
NotifyPropertyChanged(NameOf(UserShouldEditValueNow))
|
|
m_UserShouldEditValueNow = False
|
|
NotifyPropertyChanged(NameOf(UserShouldEditValueNow))
|
|
End Sub
|
|
|
|
Private m_TextBox_Visibility As Visibility = Visibility.Collapsed
|
|
Public ReadOnly Property TextBox_Visibility As Visibility
|
|
Get
|
|
Return m_TextBox_Visibility
|
|
End Get
|
|
End Property
|
|
|
|
Private m_TextBlock_Visibility As Visibility = Visibility.Visible
|
|
Public ReadOnly Property TextBlock_Visibility As Visibility
|
|
Get
|
|
Return m_TextBlock_Visibility
|
|
End Get
|
|
End Property
|
|
|
|
Sub New(PrintPart As Print3dPartVM)
|
|
m_PrintPart = PrintPart
|
|
'NotifyPropertyChanged(NameOf(sName))
|
|
If Map.refManagePartPanelVM.ManagerPartList.Count = 0 Then
|
|
m_nId = 1
|
|
Else
|
|
m_nId = Map.refManagePartPanelVM.ManagerPartList.Max(Function(x) x.nId) + 1
|
|
End If
|
|
If Not IsNothing(PrintPart) Then
|
|
m_sName = m_PrintPart.sName
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.PRINT_SOLID, "Print", PrintPart))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.MACH_START, "Layer Start", PrintPart))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.RIBS, "Ribs", PrintPart))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, "Reduce Shell Number", PrintPart))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, "Filled Solids", PrintPart))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.OTHERS, "Others", PrintPart))
|
|
Else
|
|
m_sName = "Part" & m_nId
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.PRINT_SOLID, "Print"))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.MACH_START, "Layer Start"))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.RIBS, "Ribs"))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, "Reduce Shell Number"))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, "Filled Solids"))
|
|
m_LayerList.Add(New ManagePart_Layer(Me, ManagePart_Layer.LayerType.OTHERS, "Others"))
|
|
End If
|
|
' creo context menu per cambio nome ed eliminazione
|
|
m_MenuList.Add(New ManagerPart_MenuItem(Me, ManagerPart_MenuItem.PartMenuCmd.CHANGENAME))
|
|
m_MenuList.Add(New ManagerPart_MenuItem(Me, ManagerPart_MenuItem.PartMenuCmd.DELETE))
|
|
End Sub
|
|
|
|
Friend Sub SetTextBoxVisibility(bValue As Boolean)
|
|
m_TextBox_Visibility = If(bValue, Visibility.Visible, Visibility.Collapsed)
|
|
m_TextBlock_Visibility = If(Not bValue, Visibility.Visible, Visibility.Collapsed)
|
|
NotifyPropertyChanged(NameOf(TextBox_Visibility))
|
|
NotifyPropertyChanged(NameOf(TextBlock_Visibility))
|
|
If bValue Then SetUserShouldEditValueNow()
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class ManagePart_Layer
|
|
Inherits VMBase
|
|
|
|
Public Enum LayerType As Integer
|
|
PRINT_SOLID = 1
|
|
'REFERENCE = 2
|
|
MACH_START = 3
|
|
RIBS = 4
|
|
SHELL_NUMBER = 5
|
|
AUX_SOLIDS = 6
|
|
OTHERS = 7
|
|
CHANGENAME = 15
|
|
DELETE = 16
|
|
NEWPART = 17
|
|
End Enum
|
|
|
|
' enita' di origine
|
|
Private m_OrigPart As ManagePart_Part
|
|
Public ReadOnly Property OrigPart As ManagePart_Part
|
|
Get
|
|
Return m_OrigPart
|
|
End Get
|
|
End Property
|
|
|
|
Private m_nLayerId As Integer
|
|
Friend ReadOnly Property nLayerId As Integer
|
|
Get
|
|
Return m_nLayerId
|
|
End Get
|
|
End Property
|
|
|
|
Private m_bIsSelected As Boolean
|
|
Public Property bIsSelected As Boolean
|
|
Get
|
|
Return m_bIsSelected
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_bIsSelected = value
|
|
Map.refManagePartPanelVM.SetSelManagerLayer(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_MenuList As New List(Of ManagerLayer_MenuItem)
|
|
Public Property MenuList As List(Of ManagerLayer_MenuItem)
|
|
Get
|
|
Return m_MenuList
|
|
End Get
|
|
Set(value As List(Of ManagerLayer_MenuItem))
|
|
m_MenuList = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_EntityList As New ObservableCollection(Of PartManager_GeomEntity)
|
|
Public Property EntityList As ObservableCollection(Of PartManager_GeomEntity)
|
|
Get
|
|
Return m_EntityList
|
|
End Get
|
|
Set(value As ObservableCollection(Of PartManager_GeomEntity))
|
|
m_EntityList = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(OrigPart As ManagePart_Part, Type As LayerType, sName As String)
|
|
m_OrigPart = OrigPart
|
|
m_Type = Type
|
|
m_sName = sName
|
|
If Map.refManagePartPanelVM.Type = ManagePartPanelVM.ManagePartType.MODIFY Then
|
|
' creo context menu per importazione solido da stampare
|
|
m_MenuList.Add(New ManagerLayer_MenuItem(Me, ManagerLayer_MenuItem.LayerMenuCmd.IMPORTPRINT))
|
|
End If
|
|
End Sub
|
|
|
|
Sub New(OrigPart As ManagePart_Part, Type As LayerType, sName As String, PrintPart As Print3dPartVM)
|
|
m_OrigPart = OrigPart
|
|
m_Type = Type
|
|
m_sName = sName
|
|
Select Case Type
|
|
Case LayerType.PRINT_SOLID
|
|
m_nLayerId = PrintPart.nPrintSolidLayerId
|
|
Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId)
|
|
If nEntityId <> GDB_ID.NULL Then
|
|
m_EntityList.Add(New PartManager_GeomEntity(Me, nEntityId))
|
|
End If
|
|
' se sono in modifica
|
|
If Map.refManagePartPanelVM.Type = ManagePartPanelVM.ManagePartType.MODIFY Then
|
|
' creo context menu per importazione solido da stampare
|
|
m_MenuList.Add(New ManagerLayer_MenuItem(Me, ManagerLayer_MenuItem.LayerMenuCmd.IMPORTPRINT))
|
|
End If
|
|
Case LayerType.MACH_START
|
|
m_nLayerId = PrintPart.nMachStartLayerId
|
|
Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId)
|
|
While nEntityId <> GDB_ID.NULL
|
|
m_EntityList.Add(New PartManager_GeomEntity(Me, nEntityId))
|
|
nEntityId = EgtGetNext(nEntityId)
|
|
End While
|
|
Case LayerType.RIBS
|
|
m_nLayerId = PrintPart.nRibsLayerId
|
|
Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId)
|
|
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 PartManager_GeomEntity(Me, nEntityId))
|
|
End If
|
|
nEntityId = EgtGetNext(nEntityId)
|
|
End While
|
|
Case LayerType.SHELL_NUMBER
|
|
m_nLayerId = PrintPart.nShellNumberLayerId
|
|
Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId)
|
|
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 PartManager_GeomEntity(Me, nEntityId))
|
|
End If
|
|
nEntityId = EgtGetNext(nEntityId)
|
|
End While
|
|
Case LayerType.AUX_SOLIDS
|
|
m_nLayerId = PrintPart.nAuxSolidsLayerId
|
|
Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId)
|
|
While nEntityId <> GDB_ID.NULL
|
|
Dim FIlledSolidType As Integer = FilledSolidEntity.FilledSolidTypes.FROMDRAW
|
|
EgtGetInfo(nEntityId, KEY_AUXSOLID_TYPE, FIlledSolidType)
|
|
If FIlledSolidType = FilledSolidEntity.FilledSolidTypes.FROMIMPORT Then
|
|
m_EntityList.Add(New PartManager_GeomEntity(Me, nEntityId))
|
|
End If
|
|
nEntityId = EgtGetNext(nEntityId)
|
|
End While
|
|
Case LayerType.OTHERS
|
|
m_nLayerId = PrintPart.nOthersLayerId
|
|
Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId)
|
|
While nEntityId <> GDB_ID.NULL
|
|
m_EntityList.Add(New PartManager_GeomEntity(Me, nEntityId))
|
|
nEntityId = EgtGetNext(nEntityId)
|
|
End While
|
|
End Select
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class GeomEntity_MenuItem
|
|
Inherits VMBase
|
|
|
|
' enita' di origine
|
|
Private m_OrigEntity As PartManager_GeomEntity
|
|
|
|
' pezzo in cui spostare
|
|
Private m_GeomPart As Print3dPartVM
|
|
Private m_Part As ManagePart_Part
|
|
|
|
' tipo del layer indicato
|
|
Private m_Type As ManagePart_Layer.LayerType
|
|
Public Property Type As ManagePart_Layer.LayerType
|
|
Get
|
|
Return m_Type
|
|
End Get
|
|
Set(value As ManagePart_Layer.LayerType)
|
|
m_Type = value
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property sMsg As String
|
|
Get
|
|
Dim sType As String = ""
|
|
Select Case m_Type
|
|
Case ManagePart_Layer.LayerType.PRINT_SOLID
|
|
sType = "Print"
|
|
Case ManagePart_Layer.LayerType.MACH_START
|
|
sType = "Layer Start"
|
|
Case ManagePart_Layer.LayerType.RIBS
|
|
sType = "Ribs"
|
|
Case ManagePart_Layer.LayerType.SHELL_NUMBER
|
|
sType = "Reduce shell number"
|
|
Case ManagePart_Layer.LayerType.AUX_SOLIDS
|
|
sType = "Filled Solids"
|
|
Case ManagePart_Layer.LayerType.OTHERS
|
|
sType = "Others"
|
|
Case ManagePart_Layer.LayerType.NEWPART
|
|
Return "Create New Part"
|
|
Case ManagePart_Layer.LayerType.CHANGENAME
|
|
Return "Change Name"
|
|
Case ManagePart_Layer.LayerType.DELETE
|
|
Return "Delete Entity"
|
|
End Select
|
|
Dim PartName As String = ""
|
|
If Map.refManagePartPanelVM.ManagerPartList.Count > 1 Then
|
|
Dim NewPart As ManagePart_Part = Nothing
|
|
Select Case Map.refManagePartPanelVM.Type
|
|
Case ManagePartPanelVM.ManagePartType.IMPORT
|
|
NewPart = Map.refManagePartPanelVM.ManagerPartList.FirstOrDefault(Function(x) x Is m_Part)
|
|
Case ManagePartPanelVM.ManagePartType.MODIFY
|
|
NewPart = Map.refManagePartPanelVM.ManagerPartList.FirstOrDefault(Function(x) x.PrintPart.nPartId = m_GeomPart.nPartId)
|
|
End Select
|
|
If Not IsNothing(NewPart) Then
|
|
PartName = " (" & NewPart.sName & ")"
|
|
End If
|
|
End If
|
|
Return "Move to " & sType & PartName
|
|
End Get
|
|
End Property
|
|
|
|
' Definizione comando
|
|
Private m_cmdCommand As ICommand
|
|
|
|
Sub New(OrigEntity As PartManager_GeomEntity, Type As ManagePart_Layer.LayerType, GeomPart As Print3dPartVM)
|
|
m_OrigEntity = OrigEntity
|
|
m_Type = Type
|
|
m_GeomPart = GeomPart
|
|
End Sub
|
|
|
|
Sub New(OrigEntity As PartManager_GeomEntity, Type As ManagePart_Layer.LayerType, Part As ManagePart_Part)
|
|
m_OrigEntity = OrigEntity
|
|
m_Type = Type
|
|
m_Part = Part
|
|
End Sub
|
|
|
|
Sub New(OrigEntity As PartManager_GeomEntity, Type As ManagePart_Layer.LayerType)
|
|
m_OrigEntity = OrigEntity
|
|
m_Type = Type
|
|
End Sub
|
|
|
|
#Region "Command"
|
|
|
|
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()
|
|
If m_Type = ManagePart_Layer.LayerType.CHANGENAME Then
|
|
m_OrigEntity.SetTextBoxVisibility(True)
|
|
Map.refManagePartPanelVM.SetIsEnabled(True)
|
|
Return
|
|
ElseIf m_Type = ManagePart_Layer.LayerType.DELETE Then
|
|
If MessageBox.Show("Are you sure you want to delete this entity?", "Delete confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
|
EgtErase(m_OrigEntity.nId)
|
|
' se l'entita' e' gia' in lista pezzi
|
|
If Not IsNothing(m_OrigEntity.OrigLayer) Then
|
|
' elimino dalla lista pezzi
|
|
m_OrigEntity.OrigLayer.EntityList.Remove(m_OrigEntity)
|
|
Else
|
|
' altrimenti lo elimino dalla lista entita' importate
|
|
Map.refManagePartPanelVM.ImportedEntityList.Remove(m_OrigEntity)
|
|
End If
|
|
' se e' presente elimino flag di spostamento a 45 gradi
|
|
Dim nPartId As Integer = EgtGetParent(EgtGetParent(m_OrigEntity.nId))
|
|
EgtRemoveInfo(nPartId, KEY_MOVEDPART)
|
|
EgtDraw()
|
|
' aggiorno riferimenti nel context menu item
|
|
Map.refManagePartPanelVM.UpdateAllEntityContextMenu()
|
|
' Imposto flag di ricalcolo slice
|
|
If Map.refManagePartPanelVM.Type = ManagePartPanelVM.ManagePartType.MODIFY Then
|
|
EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True)
|
|
End If
|
|
End If
|
|
Return
|
|
ElseIf m_Type = ManagePart_Layer.LayerType.NEWPART Then
|
|
Select Case Map.refManagePartPanelVM.Type
|
|
Case ManagePartPanelVM.ManagePartType.IMPORT
|
|
Dim NewPart As ManagePart_Part = New ManagePart_Part(Nothing)
|
|
Map.refManagePartPanelVM.ManagerPartList.Add(NewPart)
|
|
' se l'entita' e' gia' in lista pezzi
|
|
If Not IsNothing(m_OrigEntity.OrigLayer) Then
|
|
' elimino dalla lista pezzi
|
|
m_OrigEntity.OrigLayer.EntityList.Remove(m_OrigEntity)
|
|
Else
|
|
' altrimenti lo elimino dalla lista entita' importate
|
|
Map.refManagePartPanelVM.ImportedEntityList.Remove(m_OrigEntity)
|
|
End If
|
|
If Not IsNothing(NewPart) Then
|
|
Dim NewLayer As ManagePart_Layer = NewPart.LayerList.FirstOrDefault(Function(x) x.Type = ManagePart_Layer.LayerType.PRINT_SOLID)
|
|
If Not IsNothing(NewLayer) Then
|
|
NewLayer.EntityList.Add(m_OrigEntity)
|
|
' aggiorno riferimenti nell'entita'
|
|
m_OrigEntity.UpdateOrigLayer(NewLayer)
|
|
' aggiorno colore
|
|
EgtSetColor(m_OrigEntity.nId, GetColor(LayerType.PRINTPART))
|
|
End If
|
|
End If
|
|
' aggiorno i contextmenu di tutti gli entity
|
|
Map.refManagePartPanelVM.UpdateAllEntityContextMenu()
|
|
Case ManagePartPanelVM.ManagePartType.MODIFY
|
|
' recupero path da vecchio pezzo
|
|
Dim sFilePath As String = ""
|
|
EgtGetInfo(m_OrigEntity.OrigLayer.OrigPart.PrintPart.nPartId, FILE_PATH, sFilePath)
|
|
'Dim frImportedPart As New Frame3d
|
|
'EgtGetGroupGlobFrame(m_nImportedPartId, frImportedPart)
|
|
' creo pezzo
|
|
Dim nPartId As Integer = EgtCreateGroup(GDB_ID.ROOT) ', frImportedPart)
|
|
EgtSetName(nPartId, PART)
|
|
Dim nFrameId As Integer = GDB_ID.NULL
|
|
Dim b3PrintSolid As New BBox3d
|
|
' creo layer solido di stampa
|
|
Dim nPrintPartLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nPrintPartLayerId, PRINT_SOLID)
|
|
EgtSetColor(nPrintPartLayerId, GeomEntityColors.c3Print)
|
|
EgtRelocateGlob(m_OrigEntity.nId, nPrintPartLayerId, GDB_POS.LAST_SON)
|
|
' calcolo box superficie per creazione riferimento
|
|
EgtGetBBoxGlob(m_OrigEntity.nId, GDB_BB.STANDARD, b3PrintSolid)
|
|
' creo layer mach start
|
|
Dim nMachStartLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nMachStartLayerId, LAY_MACH_START)
|
|
EgtSetColor(nMachStartLayerId, GeomEntityColors.c3MachStart)
|
|
Dim nMachStartId As Integer = GDB_ID.NULL
|
|
' creo punto di partenza
|
|
Dim ptStart As Point3d = b3PrintSolid.Center() - 0.6 * b3PrintSolid.DimY() * Vector3d.Y_AX() - 0.5 * b3PrintSolid.DimZ() * Vector3d.Z_AX()
|
|
nMachStartId = EgtCreateGeoPoint(nMachStartLayerId, ptStart, GDB_RT.GLOB)
|
|
EgtSetName(nMachStartId, START_GEOM)
|
|
' creo layer ribs
|
|
Dim nRibsLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nRibsLayerId, LAY_RIBS)
|
|
EgtSetColor(nRibsLayerId, GeomEntityColors.c3Rib)
|
|
' creo layer shell number
|
|
Dim nShellNumberLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nShellNumberLayerId, LAY_SHELL_NBR)
|
|
EgtSetColor(nShellNumberLayerId, GeomEntityColors.c3ShellNumber)
|
|
' creo layer aux
|
|
Dim nAuxSolidsLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nAuxSolidsLayerId, LAY_AUX_SOLIDS)
|
|
EgtSetColor(nAuxSolidsLayerId, GeomEntityColors.c3AuxSolids)
|
|
' creo layer others
|
|
Dim nOthersLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nOthersLayerId, LAY_OTHERS)
|
|
EgtSetColor(nOthersLayerId, GeomEntityColors.c3Others)
|
|
' aggiungo riferimento
|
|
Dim nPartReferenceLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nPartReferenceLayerId, LAY_PARTREFERENCE)
|
|
Dim nReferenceLayerId As Integer = EgtCreateGroup(nPartId)
|
|
EgtSetName(nReferenceLayerId, LAY_REFERENCE)
|
|
EgtSetInfo(nReferenceLayerId, KEY_REFERENCE, ReferenceBtn.References.BL)
|
|
' appoggio il pezzo sulla tavola
|
|
EgtMove(nPartId, New Vector3d(0, 0, -b3PrintSolid.Min.z))
|
|
' lo aggiungo a lista pezzi
|
|
EgtSetInfo(nPartId, FILE_PATH, sFilePath)
|
|
EgtSetInfo(nPartId, "PartOnTable", 1)
|
|
Dim NewPart As New Print3dPartVM(nPartId, nPrintPartLayerId, nPartReferenceLayerId, nReferenceLayerId, nFrameId, nMachStartLayerId, nRibsLayerId, nShellNumberLayerId, nAuxSolidsLayerId, nOthersLayerId, sFilePath)
|
|
Map.refTopPanelVM.PartList.Add(NewPart)
|
|
' aggiorno riferimento
|
|
Map.refReferencePanelVM.UpdateFramePosition(NewPart)
|
|
Dim ManagePart_Part As ManagePart_Part = New ManagePart_Part(NewPart)
|
|
' elimino da posizione originale
|
|
m_OrigEntity.OrigLayer.EntityList.Remove(m_OrigEntity)
|
|
EgtSetInfo(nPartId, PART_NAME, ManagePart_Part.sName)
|
|
' lo aggiungo a lista
|
|
Map.refManagePartPanelVM.ManagerPartList.Add(ManagePart_Part)
|
|
' aggiorno riferimenti nel context menu item
|
|
Map.refManagePartPanelVM.UpdateAllEntityContextMenu()
|
|
' Imposto flag di ricalcolo slice
|
|
EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True)
|
|
End Select
|
|
' aggiorno visibilita' da check di categoria
|
|
Dim PrintViewlayer As ViewLayer = Map.refViewLayerManagerVM.LayerList.FirstOrDefault(Function(x) x.Type = ViewLayer.ViewLayerType.PRINT_SOLID)
|
|
EgtSetStatus(m_OrigEntity.nId, If(IsNothing(PrintViewlayer.bIsVisible) OrElse PrintViewlayer.bIsVisible, GDB_ST.ON_, GDB_ST.OFF))
|
|
EgtDraw()
|
|
Return
|
|
End If
|
|
Select Case Map.refManagePartPanelVM.Type
|
|
Case ManagePartPanelVM.ManagePartType.IMPORT
|
|
' se l'entita' e' gia' in lista pezzi
|
|
If Not IsNothing(m_OrigEntity.OrigLayer) Then
|
|
' elimino dalla lista pezzi
|
|
m_OrigEntity.OrigLayer.EntityList.Remove(m_OrigEntity)
|
|
Else
|
|
' altrimenti lo elimino dalla lista entita' importate
|
|
Map.refManagePartPanelVM.ImportedEntityList.Remove(m_OrigEntity)
|
|
End If
|
|
Dim NewPart As ManagePart_Part = Map.refManagePartPanelVM.ManagerPartList.FirstOrDefault(Function(x) x Is m_Part)
|
|
If Not IsNothing(NewPart) Then
|
|
Dim NewLayer As ManagePart_Layer = NewPart.LayerList.FirstOrDefault(Function(x) x.Type = m_Type)
|
|
If Not IsNothing(NewLayer) Then
|
|
NewLayer.EntityList.Add(m_OrigEntity)
|
|
' aggiorno riferimenti nell'entita'
|
|
m_OrigEntity.UpdateOrigLayer(NewLayer)
|
|
' aggiorno colore
|
|
EgtSetColor(m_OrigEntity.nId, GetColor(m_Type))
|
|
' aggiorno visibilita' da check di categoria
|
|
Dim PrintViewlayer As ViewLayer = Map.refViewLayerManagerVM.LayerList.FirstOrDefault(Function(x) x.Type = m_Type)
|
|
EgtSetStatus(m_OrigEntity.nId, If(IsNothing(PrintViewlayer.bIsVisible) OrElse PrintViewlayer.bIsVisible, GDB_ST.ON_, GDB_ST.OFF))
|
|
EgtDraw()
|
|
End If
|
|
End If
|
|
' aggiorno riferimenti nel context menu item
|
|
Map.refManagePartPanelVM.UpdateAllEntityContextMenu()
|
|
Case ManagePartPanelVM.ManagePartType.MODIFY
|
|
Dim bIsMovedPartOrRib As Boolean = False
|
|
' recupero layer da pezzo
|
|
Dim nLayerId As Integer = GDB_ID.NULL
|
|
Select Case m_Type
|
|
Case ManagePart_Layer.LayerType.PRINT_SOLID
|
|
nLayerId = m_GeomPart.nPrintSolidLayerId
|
|
Case ManagePart_Layer.LayerType.MACH_START
|
|
nLayerId = m_GeomPart.nMachStartLayerId
|
|
Case ManagePart_Layer.LayerType.RIBS
|
|
nLayerId = m_GeomPart.nRibsLayerId
|
|
Case ManagePart_Layer.LayerType.SHELL_NUMBER
|
|
nLayerId = m_GeomPart.nShellNumberLayerId
|
|
Case ManagePart_Layer.LayerType.AUX_SOLIDS
|
|
nLayerId = m_GeomPart.nAuxSolidsLayerId
|
|
Case ManagePart_Layer.LayerType.OTHERS
|
|
nLayerId = m_GeomPart.nOthersLayerId
|
|
End Select
|
|
' sposto entita'
|
|
If EgtRelocateGlob(m_OrigEntity.nId, nLayerId) Then
|
|
' elimino info vecchio layer
|
|
Select Case m_OrigEntity.OrigLayer.Type
|
|
Case ManagePart_Layer.LayerType.PRINT_SOLID
|
|
'EgtResetMark(m_OrigEntity.nId)
|
|
' se e' presente flag di spostamento a 45 gradi
|
|
Dim nPartId As Integer = EgtGetParent(EgtGetParent(m_OrigEntity.nId))
|
|
Dim vtMoved As Vector3d
|
|
If EgtGetInfo(nPartId, KEY_MOVEDPART, vtMoved) Then
|
|
' lo sposto e rimuovo info
|
|
EgtMove(m_OrigEntity.nId, -vtMoved, GDB_RT.GLOB)
|
|
EgtRemoveInfo(nPartId, KEY_MOVEDPART)
|
|
End If
|
|
bIsMovedPartOrRib = True
|
|
Case ManagePart_Layer.LayerType.MACH_START
|
|
Case ManagePart_Layer.LayerType.RIBS
|
|
EgtRemoveInfo(m_OrigEntity.nId, KEY_RIB_TYPE)
|
|
EgtRemoveInfo(m_OrigEntity.nId, RIB_ID)
|
|
bIsMovedPartOrRib = True
|
|
Case ManagePart_Layer.LayerType.SHELL_NUMBER
|
|
EgtRemoveInfo(m_OrigEntity.nId, KEY_SHELLNBR_TYPE)
|
|
Case ManagePart_Layer.LayerType.AUX_SOLIDS
|
|
EgtRemoveInfo(m_OrigEntity.nId, KEY_AUXSOLID_TYPE)
|
|
Case ManagePart_Layer.LayerType.OTHERS
|
|
End Select
|
|
' sposto in lista
|
|
m_OrigEntity.OrigLayer.EntityList.Remove(m_OrigEntity)
|
|
Dim bUpdateAllContextMenu As Boolean = False
|
|
Dim NewPart As ManagePart_Part = Map.refManagePartPanelVM.ManagerPartList.FirstOrDefault(Function(x) x.PrintPart.nPartId = m_GeomPart.nPartId)
|
|
If Not IsNothing(NewPart) Then
|
|
Dim NewLayer As ManagePart_Layer = NewPart.LayerList.FirstOrDefault(Function(x) x.Type = m_Type)
|
|
If Not IsNothing(NewLayer) Then
|
|
NewLayer.EntityList.Add(m_OrigEntity)
|
|
bUpdateAllContextMenu = (m_OrigEntity.OrigLayer.Type = ManagePart_Layer.LayerType.PRINT_SOLID) OrElse (NewLayer.Type = ManagePart_Layer.LayerType.PRINT_SOLID)
|
|
' aggiorno riferimenti nell'entita'
|
|
m_OrigEntity.UpdateOrigLayer(NewLayer)
|
|
End If
|
|
End If
|
|
' aggiungo info nuovo layer
|
|
Select Case m_Type
|
|
Case ManagePart_Layer.LayerType.PRINT_SOLID
|
|
EgtSetName(m_OrigEntity.nId, PRINT_SOLID)
|
|
' rimuovo eventuale nota spostamento per 45 gradi
|
|
EgtRemoveInfo(m_OrigEntity.OrigLayer.OrigPart.nId, KEY_MOVEDPART)
|
|
bIsMovedPartOrRib = True
|
|
Case ManagePart_Layer.LayerType.MACH_START
|
|
EgtSetName(m_OrigEntity.nId, LAY_MACH_START)
|
|
Case ManagePart_Layer.LayerType.RIBS
|
|
EgtSetName(m_OrigEntity.nId, LAY_RIBS)
|
|
EgtSetInfo(m_OrigEntity.nId, KEY_RIB_TYPE, RibEntity.RibTypes.FROMIMPORT)
|
|
EgtSetInfo(m_OrigEntity.nId, RIB_ID, RibPanelVM.GetNextRibIndex())
|
|
bIsMovedPartOrRib = True
|
|
Case ManagePart_Layer.LayerType.SHELL_NUMBER
|
|
EgtSetName(m_OrigEntity.nId, LAY_SHELL_NBR)
|
|
EgtSetInfo(m_OrigEntity.nId, KEY_SHELLNBR_TYPE, ShellNumberEntity.ShellNumberTypes.FROMIMPORT)
|
|
Case ManagePart_Layer.LayerType.AUX_SOLIDS
|
|
EgtSetName(m_OrigEntity.nId, LAY_AUX_SOLIDS)
|
|
EgtSetInfo(m_OrigEntity.nId, KEY_AUXSOLID_TYPE, RibEntity.RibTypes.FROMIMPORT)
|
|
Case ManagePart_Layer.LayerType.OTHERS
|
|
EgtSetName(m_OrigEntity.nId, LAY_OTHERS)
|
|
End Select
|
|
' resetto colore entita'
|
|
EgtResetColor(m_OrigEntity.nId)
|
|
' se spostato un Rib, aggiorno posizione riferimento e pezzo
|
|
If bIsMovedPartOrRib Then
|
|
Map.refReferencePanelVM.UpdateFramePosition(NewPart.PrintPart)
|
|
Map.refDispositionPanelVM.UpdateZPos()
|
|
Map.refSliceManagerVM.UpdateDimensions()
|
|
End If
|
|
EgtDraw()
|
|
' aggiorno riferimenti nel context menu item
|
|
If bUpdateAllContextMenu Then
|
|
Map.refManagePartPanelVM.UpdateAllEntityContextMenu()
|
|
Else
|
|
m_OrigEntity.UpdateContextMenu()
|
|
End If
|
|
End If
|
|
' Imposto flag di ricalcolo slice
|
|
EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True)
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' Command
|
|
|
|
End Class
|
|
|
|
Public Class ManagerPart_MenuItem
|
|
Inherits VMBase
|
|
|
|
Public Enum PartMenuCmd
|
|
CHANGENAME = 1
|
|
DELETE = 2
|
|
End Enum
|
|
|
|
Private m_OrigPart As ManagePart_Part
|
|
|
|
' tipo del comando
|
|
Private m_Type As PartMenuCmd
|
|
Public Property Type As PartMenuCmd
|
|
Get
|
|
Return m_Type
|
|
End Get
|
|
Set(value As PartMenuCmd)
|
|
m_Type = value
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property sMsg As String
|
|
Get
|
|
Select Case m_Type
|
|
Case PartMenuCmd.CHANGENAME
|
|
Return "Change Name"
|
|
Case Else ' PartMenuCmd.DELETE
|
|
Return "Delete Part"
|
|
End Select
|
|
End Get
|
|
End Property
|
|
|
|
' Definizione comando
|
|
Private m_cmdCommand As ICommand
|
|
|
|
Sub New(OrigPart As ManagePart_Part, Type As PartMenuCmd)
|
|
m_OrigPart = OrigPart
|
|
m_Type = Type
|
|
End Sub
|
|
|
|
#Region "Command"
|
|
|
|
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()
|
|
Select Case m_Type
|
|
Case PartMenuCmd.CHANGENAME
|
|
m_OrigPart.SetTextBoxVisibility(True)
|
|
Map.refManagePartPanelVM.SetIsEnabled(True)
|
|
Case PartMenuCmd.DELETE
|
|
If Map.refManagePartPanelVM.ManagerPartList.Count <= 1 Then Return
|
|
Select Case Map.refManagePartPanelVM.Type
|
|
Case ManagePartPanelVM.ManagePartType.IMPORT
|
|
For Each Layer In m_OrigPart.LayerList
|
|
For EntityIndex = Layer.EntityList.Count - 1 To 0 Step -1
|
|
Dim Entity As PartManager_GeomEntity = Layer.EntityList(EntityIndex)
|
|
' le rimuovo da lista entita' pezzo
|
|
Layer.EntityList.Remove(Entity)
|
|
' la rimetto in lista importati
|
|
Map.refManagePartPanelVM.ImportedEntityList.Add(Entity)
|
|
Next
|
|
Next
|
|
' elimino pezzo da lista
|
|
Map.refManagePartPanelVM.ManagerPartList.Remove(m_OrigPart)
|
|
Case ManagePartPanelVM.ManagePartType.MODIFY
|
|
' elimino pezzo geometrico
|
|
EgtErase(m_OrigPart.PrintPart.nPartId)
|
|
' elimino pezzo da lista
|
|
Map.refManagePartPanelVM.ManagerPartList.Remove(m_OrigPart)
|
|
Dim bSelFirstPart As Boolean = m_OrigPart.PrintPart.nPartId = Map.refTopPanelVM.SelPart.nPartId
|
|
' elimino pezzo da lista Top
|
|
Map.refTopPanelVM.PartList.Remove(m_OrigPart.PrintPart)
|
|
EgtDraw()
|
|
If bSelFirstPart Then Map.refTopPanelVM.SelFirstPart()
|
|
End Select
|
|
' aggiorno riferimenti nel context menu item
|
|
Map.refManagePartPanelVM.UpdateAllEntityContextMenu()
|
|
' Imposto flag di ricalcolo slice
|
|
If Not IsNothing(Map.refTopPanelVM.SelPart) Then ' in prima importazione non c'e' alcun pezzo selezionato
|
|
EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True)
|
|
End If
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' Command
|
|
|
|
End Class
|
|
|
|
Public Class ManagerLayer_MenuItem
|
|
Inherits VMBase
|
|
|
|
Public Enum LayerMenuCmd
|
|
IMPORTPRINT = 1
|
|
End Enum
|
|
|
|
Private m_OrigLayer As ManagePart_Layer
|
|
Friend ReadOnly Property OrigLayer As ManagePart_Layer
|
|
Get
|
|
Return m_OrigLayer
|
|
End Get
|
|
End Property
|
|
|
|
' tipo del comando
|
|
Private m_Type As LayerMenuCmd
|
|
Public Property Type As LayerMenuCmd
|
|
Get
|
|
Return m_Type
|
|
End Get
|
|
Set(value As LayerMenuCmd)
|
|
m_Type = value
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property sMsg As String
|
|
Get
|
|
Select Case m_Type
|
|
Case Else ' PartMenuCmd.IMPORTPRINT
|
|
Return "Import Print"
|
|
End Select
|
|
End Get
|
|
End Property
|
|
|
|
' Definizione comando
|
|
Private m_cmdCommand As ICommand
|
|
|
|
Sub New(OrigLayer As ManagePart_Layer, Type As LayerMenuCmd)
|
|
m_OrigLayer = OrigLayer
|
|
m_Type = Type
|
|
End Sub
|
|
|
|
#Region "Command"
|
|
|
|
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()
|
|
If Map.refSceneHostVM.MainController.GetStep <> 0 Then Return
|
|
Select Case m_Type
|
|
Case Else ' PartMenuCmd.IMPORTPRINT
|
|
Dim bDeleteOldPrint As Boolean = False
|
|
If m_OrigLayer.EntityList.Count > 0 Then
|
|
If MessageBox.Show("Importing a new print solid the current one will be deleted. Are you sure you want to proced?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) <> MessageBoxResult.Yes Then
|
|
Return
|
|
Else
|
|
bDeleteOldPrint = True
|
|
End If
|
|
End If
|
|
Map.refSceneHostVM.InsertPrint(Me)
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' Command
|
|
|
|
End Class |