90adb8b200
- Corretto slice senza parametri di lavorazione - Corretta aggiunta di piu' none in lista lavorazioni - Aggiunto modulo per gestione colori delle superfici
761 lines
26 KiB
VB.net
761 lines
26 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.IO
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class TopPanelVM
|
|
Inherits VMBase
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
#Region "Pages & Modes"
|
|
|
|
Private m_SelPage As Integer = -1
|
|
Public Property SelPage As Integer
|
|
Get
|
|
Return m_SelPage
|
|
End Get
|
|
Set(value As Integer)
|
|
' lancio selezione pagina con verifica file modificato
|
|
SetSelPage(value)
|
|
End Set
|
|
End Property
|
|
' funzione che permette di cambiare pagina
|
|
' bVerifyModification: se vero verifica modifiche su file e chiede di salvare
|
|
Friend Sub SetSelPage(Page As Pages, Optional bVerifyModification As Boolean = True)
|
|
Dim bOk As Boolean = True
|
|
' Esco dallo stato corrente
|
|
Select Case m_SelPage
|
|
Case Pages.IMPORT
|
|
bOk = ExitIMPORT()
|
|
Case Pages.MODIFY
|
|
bOk = ExitMODIFY()
|
|
Case Pages.SLICE
|
|
bOk = ExitSLICE()
|
|
Case Pages.SIMULATION
|
|
bOk = ExitSIMULATION()
|
|
Case Pages.MATERIALDB
|
|
bOk = ExitMATERIALDB()
|
|
Case Pages.MACHININGDB
|
|
bOk = ExitMACHININGDB()
|
|
Case Pages.CURRMACHINING
|
|
bOk = ExitCURRMACHINING()
|
|
Case Pages.MODIFYPART
|
|
bOk = ExitMODIFYPART()
|
|
End Select
|
|
If bOk Then
|
|
' Entro nel nuovo stato
|
|
m_SelPage = Page
|
|
Select Case m_SelPage
|
|
Case Pages.IMPORT
|
|
InitIMPORT()
|
|
Case Pages.MODIFY
|
|
InitMODIFY()
|
|
Case Pages.SLICE
|
|
InitSLICE()
|
|
Case Pages.SIMULATION
|
|
InitSIMULATION()
|
|
Case Pages.MATERIALDB
|
|
InitMATERIALDB()
|
|
Case Pages.MACHININGDB
|
|
InitMACHININGDB()
|
|
Case Pages.CURRMACHINING
|
|
InitCURRMACHINING()
|
|
Case Pages.MODIFYPART
|
|
InitMODIFYPART()
|
|
Case Else
|
|
InitNULL()
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
Private m_ModifyModeList As New List(Of ModifyModeButton)({New ModifyModeButton("Disposition", ModifyModes.DISPOSITION),
|
|
New ModifyModeButton("Origin Point", ModifyModes.REFERENCE),
|
|
New ModifyModeButton("Layer Start", ModifyModes.STARTMACH),
|
|
New ModifyModeButton("Ribs", ModifyModes.RIBS),
|
|
New ModifyModeButton("Reduce Shell Number", ModifyModes.SHELLNUMBER),
|
|
New ModifyModeButton("Filled Solid", ModifyModes.AUXSOLIDS)})
|
|
Public ReadOnly Property ModifyModeList As List(Of ModifyModeButton)
|
|
Get
|
|
Return m_ModifyModeList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelModifyMode As ModifyModeButton
|
|
Public Property SelModifyMode As ModifyModeButton
|
|
Get
|
|
Return m_SelModifyMode
|
|
End Get
|
|
Set(value As ModifyModeButton)
|
|
' se in slice
|
|
If m_SelPage = Pages.SLICE Then
|
|
' imposto pagina di modifica
|
|
SetSelPage(Pages.MODIFY)
|
|
End If
|
|
' se non c'e' pezzo selezionato , modalita' nulla
|
|
If IsNothing(m_SelPart) Then
|
|
m_SelModifyMode = Nothing
|
|
Else
|
|
m_SelModifyMode = value
|
|
End If
|
|
If Not IsNothing(m_SelModifyMode) AndAlso Map.refTopPanelVM.m_PartList.Count > 0 AndAlso Not IsNothing(Map.refTopPanelVM.SelPart) Then
|
|
Dim SelLeftPanel As LeftPanelVM.Panels = LeftPanelVM.Panels.NULL
|
|
Select Case m_SelModifyMode.ModifyMode
|
|
Case ModifyModes.DISPOSITION
|
|
SelLeftPanel = LeftPanelVM.Panels.DISPOSITION
|
|
Case ModifyModes.REFERENCE
|
|
SelLeftPanel = LeftPanelVM.Panels.REFERENCE
|
|
Case ModifyModes.STARTMACH
|
|
SelLeftPanel = LeftPanelVM.Panels.STARTMACH
|
|
Case ModifyModes.RIBS
|
|
SelLeftPanel = LeftPanelVM.Panels.RIBS
|
|
Case ModifyModes.SHELLNUMBER
|
|
SelLeftPanel = LeftPanelVM.Panels.SHELLNUMBER
|
|
Case ModifyModes.AUXSOLIDS
|
|
SelLeftPanel = LeftPanelVM.Panels.AUXSOLIDS
|
|
Case Else
|
|
SelLeftPanel = LeftPanelVM.Panels.NULL
|
|
End Select
|
|
Map.refLeftPanelVM.SetSelPanel(SelLeftPanel)
|
|
Else
|
|
Map.refLeftPanelVM.SetSelPanel(LeftPanelVM.Panels.NULL)
|
|
NotifyPropertyChanged(NameOf(SelModifyMode))
|
|
End If
|
|
' chiudo il popup
|
|
SetModifyIsChecked(False)
|
|
End Set
|
|
End Property
|
|
Friend Sub SetSelModifyMode(ModifyMode As ModifyModes)
|
|
SelModifyMode = m_ModifyModeList.FirstOrDefault(Function(x) x.ModifyMode = ModifyMode)
|
|
NotifyPropertyChanged(NameOf(SelModifyMode))
|
|
End Sub
|
|
|
|
Private m_bModify_IsChecked As Boolean
|
|
Public Property bModify_IsChecked As Boolean
|
|
Get
|
|
Return m_bModify_IsChecked
|
|
End Get
|
|
Set(value As Boolean)
|
|
If Map.refSceneHostVM.MainController.GetStep = 0 Then
|
|
m_bModify_IsChecked = value
|
|
Else
|
|
NotifyPropertyChanged(NameOf(bModify_IsChecked))
|
|
End If
|
|
End Set
|
|
End Property
|
|
Friend Sub SetModifyIsChecked(value As Boolean)
|
|
m_bModify_IsChecked = value
|
|
NotifyPropertyChanged(NameOf(bModify_IsChecked))
|
|
End Sub
|
|
|
|
#End Region ' Pages
|
|
|
|
#Region "Parts Manager"
|
|
|
|
Private m_PartList As New ObservableCollection(Of Print3dPartVM)
|
|
Public ReadOnly Property PartList As ObservableCollection(Of Print3dPartVM)
|
|
Get
|
|
Return m_PartList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelPart As Print3dPartVM
|
|
Public Property SelPart As Print3dPartVM
|
|
Get
|
|
Return m_SelPart
|
|
End Get
|
|
Set(value As Print3dPartVM)
|
|
If Not IsNothing(m_SelPart) Then
|
|
' deseleziono eventuale pezzo precedente
|
|
EgtResetMark(m_SelPart.nPrintSolidId)
|
|
End If
|
|
m_SelPart = value
|
|
If Not IsNothing(value) Then
|
|
' Eseguo la selezione
|
|
EgtDeselectAll()
|
|
EgtSetMark(m_SelPart.nPrintSolidId)
|
|
EgtDraw()
|
|
' imposto lavorazione e materiale del pezzo selezionato
|
|
Map.refCurrMachiningPanelVM.ReadMachParamFromSelPart()
|
|
Dim DbMachining As MachiningIndex = MachiningList.FirstOrDefault(Function(x) x.sGUID = Map.refCurrMachiningPanelVM.CurrMachining.sCurrGUID)
|
|
If IsNothing(DbMachining) Then DbMachining = MachiningIndex.Empty()
|
|
SetSelMachining(DbMachining)
|
|
' notifico posizione pezzo
|
|
Map.refDispositionPanelVM.RefreshPos()
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
#End Region ' Parts Manager
|
|
|
|
#Region "Material"
|
|
|
|
Private m_MaterialList As New ObservableCollection(Of MaterialIndex)
|
|
Public ReadOnly Property MaterialList As ObservableCollection(Of MaterialIndex)
|
|
Get
|
|
Return m_MaterialList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelMaterial As MaterialIndex
|
|
Public Property SelMaterial As MaterialIndex
|
|
Get
|
|
Return m_SelMaterial
|
|
End Get
|
|
Set(value As MaterialIndex)
|
|
' salvo materiale selezionato come ultimo utilizzato
|
|
If Not IsNothing(value) Then WriteMainPrivateProfileString(S_PRINTING3D, K_CURRMATERIAL, value.sGUID)
|
|
' salvo lavorazione selezionata per riselezionarlo
|
|
Dim PrevMachiningGuid As Guid = m_SelMachining.sGUID
|
|
' seleziono materiale
|
|
m_SelMaterial = value
|
|
' scrivo materiale sulla tavola
|
|
If Not IsNothing(m_SelMaterial) Then
|
|
Dim nTabPartId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, TABLE)
|
|
If nTabPartId <> GDB_ID.NULL Then
|
|
EgtSetInfo(nTabPartId, KEY_MATERIAL_GUID, Map.refTopPanelVM.SelMaterial.sGUID)
|
|
EgtSetInfo(nTabPartId, KEY_MATERIAL_NAME, Map.refTopPanelVM.SelMaterial.sName)
|
|
End If
|
|
End If
|
|
' ricarico lista lavorazioni valide per il materiale selezionato
|
|
InitMachiningsList()
|
|
Dim PrevMachining As MachiningIndex = m_MachiningList.FirstOrDefault(Function(x) x.sGUID = PrevMachiningGuid)
|
|
SetSelMachining(If(Not IsNothing(PrevMachining), PrevMachining, MachiningIndex.Empty()))
|
|
End Set
|
|
End Property
|
|
Friend Sub SetSelMaterial(value As MaterialIndex)
|
|
m_SelMaterial = value
|
|
NotifyPropertyChanged(NameOf(SelMaterial))
|
|
End Sub
|
|
|
|
#End Region ' Material
|
|
|
|
#Region "Machining"
|
|
|
|
Private m_MachiningList As New ObservableCollection(Of MachiningIndex)
|
|
Public ReadOnly Property MachiningList As ObservableCollection(Of MachiningIndex)
|
|
Get
|
|
Return m_MachiningList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelMachining As MachiningIndex
|
|
Public Property SelMachining As MachiningIndex
|
|
Get
|
|
Return m_SelMachining
|
|
End Get
|
|
Set(value As MachiningIndex)
|
|
If Not IsNothing(value) Then
|
|
' verifico se selezionata none
|
|
If Not IsNothing(m_SelMachining) AndAlso m_SelMachining.sGUID = MachiningIndex.Empty().sGUID AndAlso value.sGUID <> MachiningIndex.Empty().sGUID AndAlso m_MachiningList.Contains(MachiningIndex.Empty()) Then
|
|
' e la rimuovo
|
|
m_MachiningList.Remove(MachiningIndex.Empty())
|
|
End If
|
|
WriteMainPrivateProfileString(S_PRINTING3D, K_CURRMACHINING, value.sGUID.ToString())
|
|
' imposto selezionata come corrente
|
|
If Not IsNothing(m_SelPart) AndAlso (IsNothing(m_SelMachining) OrElse value.sGUID <> m_SelMachining.sGUID) Then
|
|
Map.refCurrMachiningPanelVM.SetCurrMachining(New CurrMachining(m_SelPart.nPartId, value.nIndex))
|
|
End If
|
|
End If
|
|
m_SelMachining = value
|
|
End Set
|
|
End Property
|
|
Friend Sub SetSelMachining(SelMachining As MachiningIndex)
|
|
' verifico se precedentemente selezionata none
|
|
If Not IsNothing(m_SelMachining) AndAlso m_SelMachining.sGUID = MachiningIndex.Empty().sGUID AndAlso SelMachining.sGUID <> MachiningIndex.Empty().sGUID AndAlso m_MachiningList.Contains(MachiningIndex.Empty()) Then
|
|
' e la rimuovo
|
|
m_MachiningList.Remove(MachiningIndex.Empty())
|
|
End If
|
|
' se nuova lavorazione e' none
|
|
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
|
|
m_SelMachining = SelMachining
|
|
NotifyPropertyChanged(NameOf(SelMachining))
|
|
End Sub
|
|
|
|
'Private m_CurrMachining As CurrMachining
|
|
Public ReadOnly Property CurrMachining As CurrMachining
|
|
Get
|
|
Return If(Not IsNothing(Map.refCurrMachiningPanelVM), Map.refCurrMachiningPanelVM.CurrMachining, Nothing)
|
|
End Get
|
|
End Property
|
|
Friend Sub UpdateCurrMachining()
|
|
NotifyPropertyChanged(NameOf(CurrMachining))
|
|
End Sub
|
|
'Private Sub SetCurrMachining(CurrMachining As CurrMachining)
|
|
' m_CurrMachining = CurrMachining
|
|
' Map.refCurrMachiningPanelVM.SetCurrMachining(CurrMachining)
|
|
'End Sub
|
|
|
|
#End Region ' Machining
|
|
|
|
Private m_TopPanel_IsEnabled As Boolean = True
|
|
Public ReadOnly Property TopPanel_IsEnabled As Boolean
|
|
Get
|
|
Return m_TopPanel_IsEnabled
|
|
End Get
|
|
End Property
|
|
Friend Sub SetTopPanelIsEnabled(value As Boolean)
|
|
m_TopPanel_IsEnabled = value
|
|
NotifyPropertyChanged(NameOf(TopPanel_IsEnabled))
|
|
End Sub
|
|
|
|
' Definizione comandi
|
|
Private m_cmdPartModify As ICommand
|
|
Private m_cmdMachining As ICommand
|
|
Private m_cmdMaterialDb As ICommand
|
|
Private m_cmdPrintParamDb As ICommand
|
|
|
|
#End Region ' FIELDS & PROPERTIES
|
|
|
|
#Region "CONSTRUCTORS"
|
|
|
|
Sub New()
|
|
' Creo riferimento a questa classe in Map
|
|
Map.SetRefTopPanelVM(Me)
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTORS
|
|
|
|
#Region "METHODS"
|
|
|
|
#Region "Materials"
|
|
|
|
Friend Sub InitMaterialList()
|
|
m_MaterialList.Clear()
|
|
Dim nIndex As Integer = 1
|
|
Dim sGUID As String = ""
|
|
Dim sName As String = ""
|
|
While ReadMaterialParamString(nIndex, MAT_GUID, "", sGUID) > 0
|
|
' leggo nome
|
|
ReadMaterialParamString(nIndex, MAT_NAME, "", sName)
|
|
' EgtGetStringUtf8FromIni(nIndex, MAT_NAME, "", sName)
|
|
MaterialList.Add(New MaterialIndex(nIndex, sGUID, sName))
|
|
nIndex += 1
|
|
End While
|
|
Dim sCurrMaterial As String = ""
|
|
GetMainPrivateProfileString(S_PRINTING3D, K_CURRMATERIAL, "", sCurrMaterial)
|
|
m_SelMaterial = m_MaterialList.FirstOrDefault(Function(x) x.sGUID = sCurrMaterial)
|
|
NotifyPropertyChanged(NameOf(SelMaterial))
|
|
End Sub
|
|
|
|
Friend Function GetSelMaterialData() As Material
|
|
Return New Material(m_SelMaterial.nIndex, m_SelMaterial.sGUID, m_SelMaterial.sName)
|
|
End Function
|
|
|
|
#End Region ' Materials
|
|
|
|
#Region "Machining"
|
|
|
|
Friend Sub InitMachiningsList()
|
|
If IsNothing(m_SelMaterial) Then Return
|
|
MachiningList.Clear()
|
|
' leggo ed aggiungo le altre
|
|
Dim nIndex As Integer = 1
|
|
Dim sGUID As String = ""
|
|
Dim sName As String = ""
|
|
Dim sMaterials As String = ""
|
|
While ReadMachiningParamString(nIndex, MAC_GUID, "", sGUID) > 0
|
|
Dim Guid As Guid = Guid.Empty
|
|
Guid.TryParse(sGUID, Guid)
|
|
ReadMachiningParamString(nIndex, MAC_NAME, "", sName)
|
|
' leggo materiali che usa
|
|
ReadMachiningParamSplit(nIndex, MAC_MATERIALS, "", sMaterials)
|
|
Dim MacMaterials() As String = sMaterials.Split(";"c)
|
|
If MacMaterials.Contains(SelMaterial.sGUID) Then
|
|
MachiningList.Add(New MachiningIndex(nIndex, Guid, sName))
|
|
End If
|
|
nIndex += 1
|
|
End While
|
|
Dim sCurrMachining As String = ""
|
|
GetMainPrivateProfileString(S_PRINTING3D, K_CURRMACHINING, "", sCurrMachining)
|
|
Dim CurrMachining As Guid
|
|
Guid.TryParse(sCurrMachining, CurrMachining)
|
|
m_SelMachining = MachiningList.FirstOrDefault(Function(x) x.sGUID = CurrMachining)
|
|
NotifyPropertyChanged(NameOf(SelMachining))
|
|
End Sub
|
|
|
|
Friend Function GetSelMachining() As Machining
|
|
If IsNothing(m_SelMachining) Then Return Nothing
|
|
Return New Machining(m_SelMachining.nIndex)
|
|
End Function
|
|
|
|
|
|
'Friend Sub WriteMachParamOnSelPart()
|
|
' If IsNothing(m_SelPart) OrElse IsNothing(m_CurrMachining) Then Return
|
|
' m_CurrMachining.WriteMachParamOnPart(m_SelPart.nPartId)
|
|
'End Sub
|
|
|
|
#End Region ' Machining
|
|
|
|
#Region "Pages"
|
|
|
|
Private Sub InitIMPORT()
|
|
Map.refLeftPanelVM.SetSelPanel(LeftPanelVM.Panels.IMPORT)
|
|
Map.refImportPanelVM.Init()
|
|
End Sub
|
|
|
|
Private Function ExitIMPORT()
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitMODIFY()
|
|
SetSelModifyMode(ModifyModes.DISPOSITION)
|
|
Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL)
|
|
Map.refViewLayerManagerVM.UpdateIsVisibleFromIni()
|
|
End Sub
|
|
|
|
Private Function ExitMODIFY()
|
|
SetSelModifyMode(ModifyModes.NULL)
|
|
' Map.refLeftPanelVM.SetSelPanel(LeftPanelVM.Panels.NULL)
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitSLICE()
|
|
Map.refSliceManagerVM.UpdateState(True)
|
|
Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.TFSEDITOR)
|
|
Map.refSliderManagerVM.SetSliderVisibility(True)
|
|
Map.refSliderManagerVM.SetLayerIndexToMax()
|
|
Map.refViewLayerManagerVM.UpdateIsVisibleFromIni()
|
|
EgtDeselectAll()
|
|
End Sub
|
|
|
|
Private Function ExitSLICE()
|
|
Map.refSliceManagerVM.UpdateState(False)
|
|
Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL)
|
|
Map.refSliderManagerVM.SetSliderVisibility(False)
|
|
SelPart = SelPart
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitSIMULATION()
|
|
|
|
End Sub
|
|
|
|
Private Function ExitSIMULATION()
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitMATERIALDB()
|
|
' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma
|
|
Map.refProjManagerVM.SetProjCmdIsEnabled(False)
|
|
Map.refTopPanelVM.SetTopPanelIsEnabled(False)
|
|
Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(False)
|
|
Map.refSliceManagerVM.SetButtonsIsEnabled(False)
|
|
Map.refSliderManagerVM.SetLayerIndexIsEnabled(False)
|
|
Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(False)
|
|
' imposto pagina
|
|
Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.MATERIALDB)
|
|
End Sub
|
|
|
|
Private Function ExitMATERIALDB()
|
|
' riabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma
|
|
Map.refProjManagerVM.SetProjCmdIsEnabled(True)
|
|
Map.refTopPanelVM.SetTopPanelIsEnabled(True)
|
|
Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(True)
|
|
Map.refSliceManagerVM.SetButtonsIsEnabled(True)
|
|
Map.refSliderManagerVM.SetLayerIndexIsEnabled(True)
|
|
Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(True)
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitMACHININGDB()
|
|
' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma
|
|
Map.refProjManagerVM.SetProjCmdIsEnabled(False)
|
|
Map.refTopPanelVM.SetTopPanelIsEnabled(False)
|
|
Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(False)
|
|
Map.refSliceManagerVM.SetButtonsIsEnabled(False)
|
|
Map.refSliderManagerVM.SetLayerIndexIsEnabled(False)
|
|
Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(False)
|
|
' imposto pagina
|
|
Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.PRINTPARAMDB)
|
|
End Sub
|
|
|
|
Private Function ExitMACHININGDB()
|
|
' riabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma
|
|
Map.refProjManagerVM.SetProjCmdIsEnabled(True)
|
|
Map.refTopPanelVM.SetTopPanelIsEnabled(True)
|
|
Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(True)
|
|
Map.refSliceManagerVM.SetButtonsIsEnabled(True)
|
|
Map.refSliderManagerVM.SetLayerIndexIsEnabled(True)
|
|
Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(True)
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitCURRMACHINING()
|
|
' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma
|
|
Map.refProjManagerVM.SetProjCmdIsEnabled(False)
|
|
Map.refTopPanelVM.SetTopPanelIsEnabled(False)
|
|
Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(False)
|
|
Map.refSliceManagerVM.SetButtonsIsEnabled(False)
|
|
Map.refSliderManagerVM.SetLayerIndexIsEnabled(False)
|
|
Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(False)
|
|
' imposto pagina
|
|
Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.CURRPRINTPARAM)
|
|
End Sub
|
|
|
|
Private Function ExitCURRMACHINING()
|
|
' riabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma
|
|
Map.refProjManagerVM.SetProjCmdIsEnabled(True)
|
|
Map.refTopPanelVM.SetTopPanelIsEnabled(True)
|
|
Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(True)
|
|
Map.refSliceManagerVM.SetButtonsIsEnabled(True)
|
|
Map.refSliderManagerVM.SetLayerIndexIsEnabled(True)
|
|
Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(True)
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitMODIFYPART()
|
|
Map.refLeftPanelVM.SetSelPanel(LeftPanelVM.Panels.MODIFYPART)
|
|
End Sub
|
|
|
|
Private Function ExitMODIFYPART()
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub InitNULL()
|
|
Map.refLeftPanelVM.SetSelPanel(LeftPanelVM.Panels.NULL)
|
|
End Sub
|
|
|
|
#End Region ' Pages
|
|
|
|
#Region "Parts Manager"
|
|
|
|
Friend Sub AddNewPart(sFile As String)
|
|
' rinomino pezzo e layer
|
|
Dim nPartId As Integer = EgtGetLastPart()
|
|
EgtSetName(nPartId, PART)
|
|
Dim nLayerId As Integer = EgtGetFirstInGroup(nPartId)
|
|
EgtSetName(nLayerId, ORIGINAL_SOLID)
|
|
|
|
'' Recupero o creo layer ausiliario
|
|
'Dim nAuxId As Integer = EgtGetFirstNameInGroup(nPartId, LAY_AUX)
|
|
'If Not nAuxId Then
|
|
' nAuxId = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nAuxId, LAY_AUX)
|
|
'End If
|
|
|
|
' Richiedo posizione origine e offset pezzo
|
|
Dim b3Part As New BBox3d
|
|
EgtGetBBoxGlob(nPartId, GDB_BB.EXACT, b3Part)
|
|
Dim nRefX As Integer = 1
|
|
Dim nRefY As Integer = 1
|
|
Dim dPosX As Double = CurrentMachine.b3Tab.DimX / 2 - b3Part.DimX / 2
|
|
Dim dPosY As Double = CurrentMachine.b3Tab.DimY / 2 - b3Part.DimY / 2
|
|
' Dim Positions = EgtDialogBox( 'Part position on table:', { 'Reference', 'CB:Left,Center,Right'},
|
|
' { '', 'CB:Bottom,Middle,Top'},
|
|
' { 'X', EgtNumToString( EgtToUiUnits( dPosX), 1)},
|
|
' { 'Y', EgtNumToString( EgtToUiUnits( dPosY), 1)})
|
|
|
|
Dim ChooseReferenceWndVM As New ChooseReferenceWndVM
|
|
Dim ChooseReferenceWndV As New ChooseReferenceWndV(Application.Current.MainWindow, ChooseReferenceWndVM)
|
|
If Not ChooseReferenceWndV.ShowDialog() Then Return
|
|
|
|
Dim gg = ChooseReferenceWndVM.SelReference
|
|
'' Aggiungo il box del solido
|
|
'Dim nBoxId As Integer = EgtSurftmb(nAuxId, b3Solid, False, GDB_RT.GLOB)
|
|
|
|
'' posiziono il pezzo al centro
|
|
'Dim b3Part As New BBox3d
|
|
'EgtGetBBoxGlob(nPartId, GDB_BB.EXACT, b3Part)
|
|
'Dim dPosX As Double = (CurrentMachine.b3Tab.DimX() / 2) - (b3Part.DimX() / 2)
|
|
'Dim dPosY As Double = (CurrentMachine.b3Tab.DimY() / 2) - (b3Part.DimY() / 2)
|
|
|
|
' Posiziono il pezzo e aggiorno il suo box
|
|
Dim vtMove As Vector3d = New Point3d(dPosX, dPosY, 0) - b3Part.Min()
|
|
EgtMove(nPartId, vtMove)
|
|
b3Part.Move(vtMove)
|
|
|
|
' Creo il frame del pezzo
|
|
Dim frPart = New Frame3d(b3Part.Center() - 0.5 * b3Part.DimZ() * Vector3d.Z_AX(), Frame3d.TYPE.TOP)
|
|
Dim nFrameId = EgtCreateGeoFrame(nPartId, frPart, GDB_RT.GLOB)
|
|
If nFrameId <> GDB_ID.NULL Then
|
|
EgtSetName(nFrameId, "FramePart")
|
|
EgtSetMode(nFrameId, GDB_MD.LOCKED)
|
|
End If
|
|
|
|
EgtAddMachGroup("3dPrint")
|
|
EgtSetTable("Tab")
|
|
|
|
Dim nRawId As Integer = EgtAddRawPart(b3Part.Min, b3Part.DimX, b3Part.DimY, b3Part.DimZ, New Color3d(128, 128, 128, 30))
|
|
EgtAddPartToRawPart(nPartId, b3Part.Min, nRawId)
|
|
EgtMoveToCornerRawPart(nRawId, New Point3d(dPosX, dPosY, 0), MCH_CR.BL)
|
|
|
|
EgtResetCurrMachGroup()
|
|
|
|
' creo lo start point
|
|
Dim ptStart As Point3d = b3Part.Center() - 0.6 * b3Part.DimY() * Vector3d.Y_AX() - 0.5 * b3Part.DimZ() * Vector3d.Z_AX()
|
|
Dim nPtStartId As Integer = EgtCreateGeoPoint(nPartId, ptStart, GDB_RT.GLOB)
|
|
If nPtStartId <> GDB_ID.NULL Then
|
|
EgtSetName(nPtStartId, "StartPoint")
|
|
EgtSetColor(nPtStartId, New Color3d(255, 0, 0))
|
|
End If
|
|
|
|
' aggiungo a lista pezzi e seleziono
|
|
Dim NewPart As New Print3dPartVM(nPartId, sFile)
|
|
PartList.Add(NewPart)
|
|
SelPart = NewPart
|
|
NotifyPropertyChanged(NameOf(SelPart))
|
|
|
|
End Sub
|
|
|
|
Friend Sub SelPartFromId(nPartId As Integer)
|
|
Dim PartToSel As Print3dPartVM = m_PartList.First(Function(x) x.nPartId = nPartId)
|
|
If Not IsNothing(PartToSel) Then
|
|
SelPart = PartToSel
|
|
NotifyPropertyChanged(NameOf(SelPart))
|
|
End If
|
|
End Sub
|
|
|
|
Friend Sub SelLastPart()
|
|
If PartList.Count > 0 Then
|
|
SelPart = PartList.LastOrDefault()
|
|
NotifyPropertyChanged(NameOf(SelPart))
|
|
End If
|
|
End Sub
|
|
|
|
Friend Sub SelFirstPart()
|
|
If PartList.Count > 0 Then
|
|
SelPart = PartList.FirstOrDefault()
|
|
NotifyPropertyChanged(NameOf(SelPart))
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' Parts Manager
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "PartModify"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do CPlaneTop.
|
|
''' </summary>
|
|
Public ReadOnly Property PartModify_Command As ICommand
|
|
Get
|
|
If m_cmdPartModify Is Nothing Then
|
|
m_cmdPartModify = New Command(AddressOf PartModify)
|
|
End If
|
|
Return m_cmdPartModify
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
|
|
''' </summary>
|
|
Public Sub PartModify()
|
|
If IsNothing(m_SelPart) Then Return
|
|
SelPage = Pages.MODIFYPART
|
|
End Sub
|
|
|
|
#End Region ' PartModify
|
|
|
|
#Region "Machining"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do CPlaneTop.
|
|
''' </summary>
|
|
Public ReadOnly Property Machining_Command As ICommand
|
|
Get
|
|
If m_cmdMachining Is Nothing Then
|
|
m_cmdMachining = New Command(AddressOf Machining)
|
|
End If
|
|
Return m_cmdMachining
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
|
|
''' </summary>
|
|
Public Sub Machining()
|
|
If IsNothing(m_SelPart) OrElse IsNothing(CurrMachining) Then Return
|
|
If IsNothing(m_SelMachining) Then
|
|
MessageBox.Show("Select current Db Machining first!", "Warning", MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Return
|
|
End If
|
|
SelPage = Pages.CURRMACHINING
|
|
End Sub
|
|
|
|
#End Region ' Machining
|
|
|
|
#Region "PrintParamDb"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do CPlaneTop.
|
|
''' </summary>
|
|
Public ReadOnly Property PrintParamDb_Command As ICommand
|
|
Get
|
|
If m_cmdPrintParamDb Is Nothing Then
|
|
m_cmdPrintParamDb = New Command(AddressOf PrintParamDb)
|
|
End If
|
|
Return m_cmdPrintParamDb
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
|
|
''' </summary>
|
|
Public Sub PrintParamDb()
|
|
'Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.PRINTPARAMDB)
|
|
SelPage = Pages.MACHININGDB
|
|
End Sub
|
|
|
|
#End Region ' PrintParamDb
|
|
|
|
#Region "MaterialDb"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do CPlaneTop.
|
|
''' </summary>
|
|
Public ReadOnly Property MaterialDb_Command As ICommand
|
|
Get
|
|
If m_cmdMaterialDb Is Nothing Then
|
|
m_cmdMaterialDb = New Command(AddressOf MaterialDb)
|
|
End If
|
|
Return m_cmdMaterialDb
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
|
|
''' </summary>
|
|
Public Sub MaterialDb()
|
|
'Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.PRINTPARAMDB)
|
|
SelPage = Pages.MATERIALDB
|
|
End Sub
|
|
|
|
#End Region ' MaterialDb
|
|
|
|
#End Region ' COMMANDS
|
|
|
|
End Class
|
|
|
|
Public Class ModifyModeButton
|
|
Inherits VMBase
|
|
|
|
Private m_sName As String
|
|
Public ReadOnly Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
End Property
|
|
|
|
Private m_ModifyMode As ModifyModes
|
|
Public ReadOnly Property ModifyMode As ModifyModes
|
|
Get
|
|
Return m_ModifyMode
|
|
End Get
|
|
End Property
|
|
|
|
Sub New(sName As String, ModifyMode As ModifyModes)
|
|
m_sName = sName
|
|
m_ModifyMode = ModifyMode
|
|
End Sub
|
|
|
|
End Class
|