90adb8b200
- Corretto slice senza parametri di lavorazione - Corretta aggiunta di piu' none in lista lavorazioni - Aggiunto modulo per gestione colori delle superfici
435 lines
15 KiB
VB.net
435 lines
15 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class ModifyEntity
|
|
Inherits VMBase
|
|
|
|
' layer sotto cui e' questa entita'
|
|
Private m_OrigLayer As ModifyLayer
|
|
Friend ReadOnly Property OrigLayer As ModifyLayer
|
|
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.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
|
|
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
|
|
|
|
Sub New(nId As Integer, sName As String, OrigLayer As ModifyLayer)
|
|
m_nId = nId
|
|
m_sName = sName
|
|
m_OrigLayer = OrigLayer
|
|
' aggiungo voci layer a contextmenu
|
|
CreateContextMenu(OrigLayer)
|
|
End Sub
|
|
|
|
Friend Sub UpdateContextMenu(OrigLayer As ModifyLayer)
|
|
m_MenuList.Clear()
|
|
' aggiungo voci layer a contextmenu
|
|
CreateContextMenu(OrigLayer)
|
|
End Sub
|
|
|
|
Friend Sub CreateContextMenu(OrigLayer As ModifyLayer)
|
|
For Each ProjectPart In Map.refTopPanelVM.PartList
|
|
' verifico in quali layer puo' andare questo elemento
|
|
Dim EntityType As GDB_TY = EgtGetType(nId)
|
|
Select Case EntityType
|
|
Case GDB_TY.GEO_POINT, GDB_TY.CRV_COMPO, GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_LINE
|
|
' recupero i layer
|
|
If OrigLayer.Type <> ModifyLayer.LayerType.MACH_START Then m_MenuList.Add(New MenuItemVm(Me, OrigLayer, ModifyLayer.LayerType.MACH_START, ProjectPart))
|
|
If OrigLayer.Type <> ModifyLayer.LayerType.OTHERS Then m_MenuList.Add(New MenuItemVm(Me, OrigLayer, ModifyLayer.LayerType.OTHERS, ProjectPart))
|
|
Case GDB_TY.SRF_MESH
|
|
' verifico se volume chiuso
|
|
If OrigLayer.Type <> ModifyLayer.LayerType.PRINT_SOLID Then m_MenuList.Add(New MenuItemVm(Me, OrigLayer, ModifyLayer.LayerType.PRINT_SOLID, ProjectPart))
|
|
If OrigLayer.Type <> ModifyLayer.LayerType.SHELL_NUMBER Then m_MenuList.Add(New MenuItemVm(Me, OrigLayer, ModifyLayer.LayerType.SHELL_NUMBER, ProjectPart))
|
|
If OrigLayer.Type <> ModifyLayer.LayerType.AUX_SOLIDS Then m_MenuList.Add(New MenuItemVm(Me, OrigLayer, ModifyLayer.LayerType.AUX_SOLIDS, ProjectPart))
|
|
If OrigLayer.Type <> ModifyLayer.LayerType.RIBS Then m_MenuList.Add(New MenuItemVm(Me, OrigLayer, ModifyLayer.LayerType.RIBS, ProjectPart))
|
|
If OrigLayer.Type <> ModifyLayer.LayerType.OTHERS Then m_MenuList.Add(New MenuItemVm(Me, OrigLayer, ModifyLayer.LayerType.OTHERS, ProjectPart))
|
|
End Select
|
|
Next
|
|
End Sub
|
|
|
|
Friend Sub UpdateOrigLayer(NewLayer As ModifyLayer)
|
|
m_OrigLayer = NewLayer
|
|
End Sub
|
|
|
|
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_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
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property ghName As String
|
|
Get
|
|
Return m_PrintPart.sImportedFileName
|
|
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_PrintPart = PrintPart
|
|
m_LayerList.Add(New ModifyLayer(ModifyLayer.LayerType.PRINT_SOLID, "Print", PrintPart))
|
|
m_LayerList.Add(New ModifyLayer(ModifyLayer.LayerType.MACH_START, "Layer Start", PrintPart))
|
|
m_LayerList.Add(New ModifyLayer(ModifyLayer.LayerType.RIBS, "Ribs", PrintPart))
|
|
m_LayerList.Add(New ModifyLayer(ModifyLayer.LayerType.SHELL_NUMBER, "Reduce Shell Number", PrintPart))
|
|
m_LayerList.Add(New ModifyLayer(ModifyLayer.LayerType.AUX_SOLIDS, "Filled Solids", PrintPart))
|
|
m_LayerList.Add(New ModifyLayer(ModifyLayer.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, Me))
|
|
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, Me))
|
|
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, Me))
|
|
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, Me))
|
|
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, Me))
|
|
'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, Me))
|
|
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
|
|
Private m_OrigLayer As ModifyLayer
|
|
|
|
' pezzo in cui spostare
|
|
Private m_Part As Print3dPartVM
|
|
|
|
' 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, OrigLayer As ModifyLayer, Type As ModifyLayer.LayerType, Part As Print3dPartVM)
|
|
m_OrigEntity = OrigEntity
|
|
m_OrigLayer = OrigLayer
|
|
m_Type = Type
|
|
m_Part = Part
|
|
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 da pezzo
|
|
Dim nLayerId As Integer = GDB_ID.NULL
|
|
Select Case m_Type
|
|
Case ModifyLayer.LayerType.PRINT_SOLID
|
|
nLayerId = m_Part.nPrintSolidLayerId
|
|
Case ModifyLayer.LayerType.MACH_START
|
|
nLayerId = m_Part.nMachStartLayerId
|
|
Case ModifyLayer.LayerType.RIBS
|
|
nLayerId = m_Part.nRibsLayerId
|
|
Case ModifyLayer.LayerType.SHELL_NUMBER
|
|
nLayerId = m_Part.nShellNumberLayerId
|
|
Case ModifyLayer.LayerType.AUX_SOLIDS
|
|
nLayerId = m_Part.nAuxSolidsLayerId
|
|
Case ModifyLayer.LayerType.OTHERS
|
|
nLayerId = m_Part.nOthersLayerId
|
|
End Select
|
|
' sposto entita'
|
|
If EgtRelocateGlob(m_OrigEntity.nId, nLayerId) Then
|
|
' elimino info vecchio layer
|
|
Select Case m_OrigLayer.Type
|
|
Case ModifyLayer.LayerType.PRINT_SOLID
|
|
EgtResetMark(m_OrigEntity.nId)
|
|
Case ModifyLayer.LayerType.MACH_START
|
|
Case ModifyLayer.LayerType.RIBS
|
|
EgtRemoveInfo(m_OrigEntity.nId, KEY_RIB_TYPE)
|
|
Case ModifyLayer.LayerType.SHELL_NUMBER
|
|
EgtRemoveInfo(m_OrigEntity.nId, KEY_SHELLNBR_TYPE)
|
|
Case ModifyLayer.LayerType.AUX_SOLIDS
|
|
EgtRemoveInfo(m_OrigEntity.nId, KEY_AUXSOLID_TYPE)
|
|
Case ModifyLayer.LayerType.OTHERS
|
|
End Select
|
|
' sposto in lista
|
|
m_OrigLayer.EntityList.Remove(m_OrigEntity)
|
|
Dim NewPart As ModifyPart = Map.refModifyPartPanelVM.ModifyPartList.FirstOrDefault(Function(x) x.PrintPart.nPartId = m_Part.nPartId)
|
|
If Not IsNothing(NewPart) Then
|
|
Dim NewLayer As ModifyLayer = 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)
|
|
End If
|
|
End If
|
|
' aggiungo info nuovo layer
|
|
Select Case m_Type
|
|
Case ModifyLayer.LayerType.PRINT_SOLID
|
|
EgtSetName(m_OrigEntity.nId, PRINT_SOLID)
|
|
EgtSetColor(m_OrigEntity.nId, c3Print)
|
|
Case ModifyLayer.LayerType.MACH_START
|
|
EgtSetName(m_OrigEntity.nId, LAY_MACH_START)
|
|
EgtSetColor(m_OrigEntity.nId, c3MachStart)
|
|
Case ModifyLayer.LayerType.RIBS
|
|
EgtSetName(m_OrigEntity.nId, LAY_RIBS)
|
|
EgtSetInfo(m_OrigEntity.nId, KEY_RIB_TYPE, RibEntity.RibTypes.FROMIMPORT)
|
|
EgtSetColor(m_OrigEntity.nId, c3Rib)
|
|
Case ModifyLayer.LayerType.SHELL_NUMBER
|
|
EgtSetName(m_OrigEntity.nId, LAY_SHELL_NBR)
|
|
EgtSetInfo(m_OrigEntity.nId, KEY_SHELLNBR_TYPE, ShellNumberEntity.ShellNumberTypes.FROMIMPORT)
|
|
EgtSetColor(m_OrigEntity.nId, c3ShellNumber)
|
|
Case ModifyLayer.LayerType.AUX_SOLIDS
|
|
EgtSetName(m_OrigEntity.nId, LAY_AUX_SOLIDS)
|
|
EgtSetInfo(m_OrigEntity.nId, KEY_AUXSOLID_TYPE, RibEntity.RibTypes.FROMIMPORT)
|
|
EgtSetColor(m_OrigEntity.nId, c3AuxSolids)
|
|
Case ModifyLayer.LayerType.OTHERS
|
|
EgtSetName(m_OrigEntity.nId, LAY_OTHERS)
|
|
EgtSetColor(m_OrigEntity.nId, c3Others)
|
|
End Select
|
|
EgtDraw()
|
|
' aggiorno riferimenti nel context menu item
|
|
m_OrigEntity.UpdateContextMenu(m_OrigEntity.OrigLayer)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' Cancel
|
|
|
|
End Class |