- Completata implementazione ModifyPartPanel

- Corretto slice senza parametri di lavorazione
- Corretta aggiunta di piu' none in lista lavorazioni
- Aggiunto modulo per gestione colori delle superfici
This commit is contained in:
Emmanuele Sassi
2022-10-27 10:19:47 +02:00
parent d41f20d95e
commit 90adb8b200
6 changed files with 209 additions and 51 deletions
+1
View File
@@ -262,6 +262,7 @@
</Compile>
<Compile Include="Utility\DisableModifiedMgr.vb" />
<Compile Include="Utility\EgwCrypto.vb" />
<Compile Include="Utility\GeomEntityColors.vb" />
<Compile Include="Utility\LuaExec.vb" />
<Compile Include="Utility\Map.vb" />
<Compile Include="Utility\MyMachine.vb" />
+17 -2
View File
@@ -224,7 +224,8 @@ Public Class ImportPanelVM
Return
Else
' Creo pezzi e layer necessari
For Each ImportPart In m_ImportPartList
For ImportPartIndex = 0 To m_ImportPartList.Count - 1
Dim ImportPart As ImportPart = m_ImportPartList(ImportPartIndex)
Dim frImportedPart As New Frame3d
EgtGetGroupGlobFrame(m_nImportedPartId, frImportedPart)
Dim nPartId As Integer = EgtCreateGroup(GDB_ID.ROOT, frImportedPart)
@@ -328,6 +329,20 @@ Public Class ImportPanelVM
For Each GeomEntity In ImportLayer.EntityList
EgtRelocateGlob(GeomEntity.nId, nOthersLayerId, GDB_POS.LAST_SON)
Next
If ImportPartIndex = 0 Then
For Each GeomEntity In ImportedEntityList
' se curva
Dim EntityType As GDB_TY = EgtGetType(GeomEntity.nId)
Select Case EntityType
Case GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_LINE
' la trasformo in curva compo
EgtCreateCurveCompo(nOthersLayerId, GeomEntity.nId, True)
Case Else
' altrimenti la sposto solamente
EgtRelocateGlob(GeomEntity.nId, nOthersLayerId, GDB_POS.LAST_SON)
End Select
Next
End If
End Select
Next
' aggiungo riferimento
@@ -366,7 +381,7 @@ Public Class ImportPanelVM
End If
EgtSetInfo(nReferenceLayerId, KEY_REFERENCE, PrintSolidEntity.Reference)
' appoggio il pezzo sulla tavola
EgtMove( nPartId, New Vector3d(0, 0, -b3PrintSolid.Min.z))
EgtMove(nPartId, New Vector3d(0, 0, -b3PrintSolid.Min.z))
' lo aggiungo a lista pezzi
Dim sFilePath As String = ""
EgtGetInfo(m_nImportedPartId, FILE_PATH, sFilePath)
+132 -47
View File
@@ -5,6 +5,14 @@ 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
@@ -39,7 +47,7 @@ Public Class ModifyEntity
Public ReadOnly Property ghName As String
Get
Return m_nId & If(Not String.IsNullOrWhiteSpace(m_sName), " - " & m_sName, "")
Return m_nId
End Get
End Property
@@ -53,40 +61,43 @@ Public Class ModifyEntity
End Set
End Property
' Definizione comandi
Private m_cmdImportedEntity As ICommand
Sub New(nId As Integer, sName As String)
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
m_MenuList.Add(New MenuItemVm(Me, ModifyLayer.LayerType.RIBS))
CreateContextMenu(OrigLayer)
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
Friend Sub UpdateContextMenu(OrigLayer As ModifyLayer)
m_MenuList.Clear()
' aggiungo voci layer a contextmenu
CreateContextMenu(OrigLayer)
End Sub
#End Region ' ImportedEntity
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
#End Region ' COMMANDS
Friend Sub UpdateOrigLayer(NewLayer As ModifyLayer)
m_OrigLayer = NewLayer
End Sub
End Class
@@ -104,10 +115,10 @@ Public Class ModifyPart
End Set
End Property
Private m_nId As Integer
Public ReadOnly Property nId As Integer
Private m_PrintPart As Print3dPartVM
Public ReadOnly Property PrintPart As Print3dPartVM
Get
Return m_nId
Return m_PrintPart
End Get
End Property
@@ -123,7 +134,7 @@ Public Class ModifyPart
Public ReadOnly Property ghName As String
Get
Return If(Not String.IsNullOrWhiteSpace(m_sName), m_nId & " - " & m_sName, "Part" & m_nId)
Return m_PrintPart.sImportedFileName
End Get
End Property
@@ -135,13 +146,13 @@ Public Class ModifyPart
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))
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
@@ -215,14 +226,14 @@ Public Class ModifyLayer
Dim nEntityId As Integer = EgtGetFirstInGroup(m_nLayerId)
Dim sEntitytName As String = ""
EgtGetName(nEntityId, sEntitytName)
m_EntityList.Add(New ModifyEntity(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))
m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName, Me))
nEntityId = EgtGetNext(nEntityId)
EgtGetName(nEntityId, sEntitytName)
End While
@@ -235,7 +246,7 @@ Public Class ModifyLayer
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))
m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName, Me))
End If
nEntityId = EgtGetNext(nEntityId)
EgtGetName(nEntityId, sEntitytName)
@@ -249,7 +260,7 @@ Public Class ModifyLayer
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))
m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName, Me))
End If
nEntityId = EgtGetNext(nEntityId)
EgtGetName(nEntityId, sEntitytName)
@@ -263,7 +274,7 @@ Public Class ModifyLayer
'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))
m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName, Me))
'End If
nEntityId = EgtGetNext(nEntityId)
EgtGetName(nEntityId, sEntitytName)
@@ -274,7 +285,7 @@ Public Class ModifyLayer
Dim sEntitytName As String = ""
EgtGetName(nEntityId, sEntitytName)
While nEntityId <> GDB_ID.NULL
m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName))
m_EntityList.Add(New ModifyEntity(nEntityId, sEntitytName, Me))
nEntityId = EgtGetNext(nEntityId)
EgtGetName(nEntityId, sEntitytName)
End While
@@ -288,6 +299,10 @@ Public Class MenuItemVm
' 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
@@ -324,9 +339,11 @@ Public Class MenuItemVm
' Definizione comando
Private m_cmdCommand As ICommand
Sub New(OrigEntity As ModifyEntity, Type As ModifyLayer.LayerType)
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"
@@ -341,8 +358,76 @@ Public Class MenuItemVm
End Property
Public Sub Command()
' recupero layer in cui spostare l'elemento
' 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
+1 -1
View File
@@ -496,7 +496,7 @@ Public Class SliceManagerVM
m_bCalculating = False
Return
End If
If IsNothing(Map.refTopPanelVM.SelMachining) Then
If IsNothing(Map.refTopPanelVM.SelMachining) OrElse IsNothing(Map.refTopPanelVM.CurrMachining) OrElse Map.refTopPanelVM.CurrMachining.dCurrStrandH <= 0 Then
MessageBox.Show("No print parameters set!", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
m_bCalculating = False
Return
+1 -1
View File
@@ -267,7 +267,7 @@ Public Class TopPanelVM
m_MachiningList.Remove(MachiningIndex.Empty())
End If
' se nuova lavorazione e' none
If SelMachining.sGUID = Guid.Empty Then
If SelMachining.sGUID = Guid.Empty AndAlso Not MachiningList.Any(Function(x) x.sGUID = MachiningIndex.Empty.sGUID) Then
' aggiungo lavorazione vuota
MachiningList.Insert(0, MachiningIndex.Empty())
End If
+57
View File
@@ -0,0 +1,57 @@
Imports EgtUILib
Module GeomEntityColors
Private m_c3Print As Color3d
Public ReadOnly Property c3Print As Color3d
Get
Return m_c3Print
End Get
End Property
Private m_c3MachStart As Color3d
Public ReadOnly Property c3MachStart As Color3d
Get
Return m_c3MachStart
End Get
End Property
Private m_c3Rib As Color3d
Public ReadOnly Property c3Rib As Color3d
Get
Return m_c3Rib
End Get
End Property
Private m_c3ShellNumber As Color3d
Public ReadOnly Property c3ShellNumber As Color3d
Get
Return m_c3ShellNumber
End Get
End Property
Private m_c3AuxSolids As Color3d
Public ReadOnly Property c3AuxSolids As Color3d
Get
Return m_c3AuxSolids
End Get
End Property
Private m_c3Others As Color3d
Public ReadOnly Property c3Others As Color3d
Get
Return m_c3Others
End Get
End Property
Sub New()
' imposto colori superfici
m_c3Print.FromColor(System.Drawing.Color.Yellow)
m_c3MachStart.FromColor(System.Drawing.Color.Red)
m_c3Rib.FromColor(System.Drawing.Color.MediumOrchid)
m_c3ShellNumber.FromColor(System.Drawing.Color.Lime)
m_c3AuxSolids.FromColor(System.Drawing.Color.DarkGoldenrod)
m_c3Others.FromColor(System.Drawing.Color.LightGray)
End Sub
End Module