Files
icarus/3dPrintApp/Project/ProjectVM.vb
T
2022-06-10 15:53:41 +02:00

479 lines
19 KiB
VB.net

Imports System.Windows.Threading
Imports EgtWPFLib5
Imports EgtUILib
Imports System.Collections.ObjectModel
Imports System.IO
Public Class ProjectVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private m_MaterialList As New List(Of String)
Public ReadOnly Property MaterialList As List(Of String)
Get
Return m_MaterialList
End Get
End Property
Private m_SelMaterial As String
Public Property SelMaterial As String
Get
Return m_SelMaterial
End Get
Set(value As String)
m_SelMaterial = value
WriteMainPrivateProfileString(S_PRINTING3D, K_CURRMATERIAL, value)
End Set
End Property
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)
m_SelPart = value
' Eseguo la selezione
EgtDeselectAll()
EgtSelectPartObjs(m_SelPart.nPartId)
EgtDraw()
End Set
End Property
Private m_MachiningLib As New List(Of String)
Public ReadOnly Property MachiningLib As List(Of String)
Get
Return m_MachiningLib
End Get
End Property
'Private m_Calc_Timer As New DispatcherTimer
'Private Property m_GridDims As New ObservableCollection(Of GridDimension)
'Public Property GridDims As ObservableCollection(Of GridDimension)
' Get
' Return m_GridDims
' End Get
' Set
' m_GridDims = Value
' NotifyPropertyChanged(NameOf(GridDims))
' End Set
'End Property
'Private m_BTLStructureVM As BTLStructureVM
'Public Property BTLStructureVM As BTLStructureVM
' Get
' Return m_BTLStructureVM
' End Get
' Set(value As BTLStructureVM)
' m_BTLStructureVM = value
' NotifyPropertyChanged(NameOf(BTLStructureVM))
' End Set
'End Property
'Private m_MachGroupPanelVM As MyMachGroupPanelVM
'Public Property MachGroupPanelVM As MyMachGroupPanelVM
' Get
' Return m_MachGroupPanelVM
' End Get
' Set(value As MyMachGroupPanelVM)
' m_MachGroupPanelVM = value
' NotifyPropertyChanged(NameOf(MachGroupPanelVM))
' End Set
'End Property
'Private m_bCalcRunning As Boolean = False
'Public ReadOnly Property bCalcRunning As Boolean
' Get
' Return m_bCalcRunning
' End Get
'End Property
'Private m_bLockUX As Boolean = False
'Private m_LeftPanel_Visibility As Boolean = True
'Public Property LeftPanel_Visibility As Visibility
' Get
' Return If(m_LeftPanel_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_LeftPanel_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetLeftPanel_Visibility(IsVisible As Boolean)
' m_LeftPanel_Visibility = IsVisible
'End Sub
'Private m_TopPanel_Visibility As Boolean = False
'Public Property TopPanel_Visibility As Visibility
' Get
' Return If(m_TopPanel_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_TopPanel_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetTopPanel_Visibility(IsVisible As Boolean)
' m_TopPanel_Visibility = IsVisible
'End Sub
'Private m_BottomPanel_Visibility As Boolean = True
'Public Property BottomPanel_Visibility As Visibility
' Get
' Return If(m_BottomPanel_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_BottomPanel_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetBottomPanel_Visibility(IsVisible As Boolean)
' m_BottomPanel_Visibility = IsVisible
'End Sub
'Private m_PartManager_Visibility As Boolean = True
'Public ReadOnly Property PartManager_Visibility As Visibility
' Get
' Return If(Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refProjectVM.BTLStructureVM.SelBTLPartsCnt = 1, Visibility.Visible, Visibility.Collapsed)
' End Get
'End Property
'Private m_FeatureManager_Visibility As Boolean = True
'Public Property FeatureManager_Visibility As Visibility
' Get
' Return If(m_FeatureManager_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_FeatureManager_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetFeatureManager_Visibility(IsVisible As Boolean)
' m_FeatureManager_Visibility = IsVisible
'End Sub
'Private m_ShowBeamPanel_Visibility As Boolean = True
'Public Property ShowBeamPanel_Visibility As Visibility
' Get
' Return If(m_ShowBeamPanel_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_ShowBeamPanel_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetShowBeamPanel_Visibility(IsVisible As Boolean)
' m_ShowBeamPanel_Visibility = IsVisible
'End Sub
'Private m_ProjManager_Visibility As Boolean = True
'Public Property ProjManager_Visibility As Visibility
' Get
' Return If(m_ProjManager_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_ProjManager_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetProjManager_Visibility(IsVisible As Boolean)
' m_ProjManager_Visibility = IsVisible
'End Sub
'Private m_ProdManager_Visibility As Boolean = True
'Public Property ProdManager_Visibility As Visibility
' Get
' Return If(m_ProdManager_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_ProdManager_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetProdManager_Visibility(IsVisible As Boolean)
' m_ProdManager_Visibility = IsVisible
'End Sub
'Private m_OptimizePanel_Visibility As Boolean = True
'Public Property OptimizePanel_Visibility As Visibility
' Get
' Return If(m_OptimizePanel_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_OptimizePanel_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetOptimizePanel_Visibility(IsVisible As Boolean)
' m_OptimizePanel_Visibility = IsVisible
' NotifyPropertyChanged(NameOf(OptimizePanel_Visibility))
' Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.CalcRotFlip_Visibility))
' Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.Optimize_Visibility))
' Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.OriginType_Visibility))
' Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.ViewPage_Visibility))
' Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.MachiningPage_Visibility))
' Map.refOptimizePanelVM.NotifyPropertyChanged(NameOf(Map.refOptimizePanelVM.NestingOption_Visibility))
'End Sub
'Friend Sub NotifyCalcPanel_Visibility()
' Map.refCALCPanelVM.NotifyPropertyChanged(NameOf(Map.refCALCPanelVM.ViewPage_Visibility))
'End Sub
'Private m_FreeContourManager_Visibility As Boolean = False
'Public Property FreeContourManager_Visibility As Visibility
' Get
' Return If(m_FreeContourManager_Visibility, Visibility.Visible, Visibility.Collapsed)
' End Get
' Set(value As Visibility)
' m_FreeContourManager_Visibility = (value = Visibility.Visible)
' End Set
'End Property
'Friend Sub SetFreeContourManager_Visibility(IsVisible As Boolean)
' m_FreeContourManager_Visibility = IsVisible
' NotifyPropertyChanged("FreeContourManager_Visibility")
'End Sub
'Friend Sub NotifyAllPanelVisibility()
' NotifyPropertyChanged("LeftPanel_Visibility")
' NotifyPropertyChanged("TopPanel_Visibility")
' NotifyPropertyChanged("BottomPanel_Visibility")
' NotifyPropertyChanged("PartManager_Visibility")
' NotifyPropertyChanged("FeatureManager_Visibility")
' NotifyPropertyChanged("ShowBeamPanel_Visibility")
' NotifyPropertyChanged("ProjManager_Visibility")
' NotifyPropertyChanged("ProdManager_Visibility")
' NotifyCalcPanel_Visibility()
'End Sub
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
' Creo riferimento a questa classe in Map
Map.SetRefProjectVM(Me)
' imposto timer per aggiornamenti Calc
'm_Calc_Timer.Interval = TimeSpan.FromMilliseconds(500)
'AddHandler m_Calc_Timer.Tick, AddressOf Calc_Timer_Tick
'' imposto dimensioni colonne/righe della Grid
'DimensionsIniFile.ReadGridDimensions(ConstDims.PROJECT_VIEW, GridDims)
' carico lista materiali
InitMaterialList()
' carico lista parametri di stampa
InitMachiningsList()
End Sub
#End Region ' CONSTRUCTOR
'#Region "METHODS"
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, "OriginalSolid")
' 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 InitMaterialList()
Dim MaterialFiles As String() = Directory.GetFiles(Map.refMainWindowVM.MainWindowM.sMaterialsDir)
For Each Material In MaterialFiles
If String.Compare(Path.GetExtension(Material), "csv", True) Then
MaterialList.Add(Path.GetFileNameWithoutExtension(Material))
End If
Next
Dim sCurrMaterial As String = ""
GetMainPrivateProfileString(S_PRINTING3D, K_CURRMATERIAL, "", sCurrMaterial)
If MaterialList.Contains(sCurrMaterial) Then
m_SelMaterial = sCurrMaterial
End If
End Sub
Friend Sub InitMachiningsList()
Dim MachiningFiles As String() = Directory.GetFiles(Map.refMainWindowVM.MainWindowM.sMachiningsDir)
For Each Machining In MachiningFiles
If String.Compare(Path.GetExtension(Machining), "ini", True) Then
m_MachiningLib.Add(Path.GetFileNameWithoutExtension(Machining))
End If
Next
End Sub
' Friend Sub SetCalcRunning(value As Boolean)
' If value Then m_Calc_Timer.Start()
' m_bCalcRunning = value
' End Sub
' Friend Sub ManageIsEnabled(bIsEnabled As Boolean)
' Map.refInstrumentPanelVM.SetInstrumentPanelIsEnabled(bIsEnabled)
' Map.refCALCPanelVM.SetCalcPanelIsEnabled(bIsEnabled)
' Map.refMainMenuVM.SetMainMenuIsEnabled(bIsEnabled)
' Map.refPartManagerVM.SetPartManagerIsEnabled(bIsEnabled)
' Map.refLeftPanelVM.SetLeftPanelIsEnabled(bIsEnabled)
' Map.refProjManagerVM.SetProjManagerIsEnabled(bIsEnabled)
' Map.refProdManagerVM.SetProdManagerIsEnabled(bIsEnabled)
' Map.refTopPanelVM.SetTopPanelIsEnabled(bIsEnabled)
' Map.refOptimizePanelVM.SetOptimizePanelIsEnabled(bIsEnabled)
' Map.refFeatureManagerVM.SetFeatureManagerIsEnabled(bIsEnabled)
' End Sub
' 'Private Sub Calc_Timer_Tick()
' ' If m_bCalcRunning <> m_bLockUX Then
' ' ' se calcolo iniziato
' ' If m_bCalcRunning Then
' ' ManageIsEnabled(False)
' ' ' aggiungere gestione colonne editabili delle tabelle
' ' If Not IsNothing(Map.refPartListVM.colPart_Do) Then
' ' Map.refPartListVM.colPart_Do.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then
' ' Map.refFeatureListVM.colFeature_Do.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refPParameterListVM.colPParam_Value) Then
' ' Map.refPParameterListVM.colPParam_Value.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refQParameterListVM.colQParam_Value) Then
' ' Map.refQParameterListVM.colQParam_Value.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refQParameterListVM.colQParam_Custom) Then
' ' Map.refQParameterListVM.colQParam_Custom.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refRawPartListVM.colRawPart_StartCut) Then
' ' Map.refRawPartListVM.colRawPart_StartCut.IsReadOnly = True
' ' End If
' ' If m_BTLStructureVM.nPROJTYPE <> BWType.BEAM AndAlso Not IsNothing(Map.refRawPartListVM.colRawPart_W) Then
' ' Map.refRawPartListVM.colRawPart_W.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refRawPartListVM.colRawPart_L) Then
' ' Map.refRawPartListVM.colRawPart_L.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_Offset) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_Offset.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_Rot) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_Rot.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_Flip) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_Flip.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_PosX) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_PosX.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_PosY) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_PosY.IsReadOnly = True
' ' End If
' ' If Not IsNothing(Map.refFeatureInPartInRawPartListVM.colFeatureInPartInRawPart_Do) Then
' ' Map.refFeatureInPartInRawPartListVM.colFeatureInPartInRawPart_Do.IsReadOnly = True
' ' End If
' ' m_bLockUX = True
' ' ' se calcolo finito
' ' Else
' ' ManageIsEnabled(True)
' ' ' aggiungere gestione colonne editabili delle tabelle
' ' If Not IsNothing(Map.refPartListVM.colPart_Do) Then
' ' Map.refPartListVM.colPart_Do.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then
' ' Map.refFeatureListVM.colFeature_Do.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refPParameterListVM.colPParam_Value) Then
' ' Map.refPParameterListVM.colPParam_Value.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refQParameterListVM.colQParam_Value) Then
' ' Map.refQParameterListVM.colQParam_Value.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refQParameterListVM.colQParam_Custom) Then
' ' Map.refQParameterListVM.colQParam_Custom.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refRawPartListVM.colRawPart_StartCut) Then
' ' Map.refRawPartListVM.colRawPart_StartCut.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refRawPartListVM.colRawPart_W) Then
' ' Map.refRawPartListVM.colRawPart_W.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refRawPartListVM.colRawPart_L) Then
' ' Map.refRawPartListVM.colRawPart_L.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_Offset) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_Offset.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_Rot) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_Rot.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_Flip) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_Flip.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_PosX) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_PosX.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refPartInRawPartListVM.colPartInRawPart_PosY) Then
' ' Map.refPartInRawPartListVM.colPartInRawPart_PosY.IsReadOnly = False
' ' End If
' ' If Not IsNothing(Map.refFeatureInPartInRawPartListVM.colFeatureInPartInRawPart_Do) Then
' ' Map.refFeatureInPartInRawPartListVM.colFeatureInPartInRawPart_Do.IsReadOnly = False
' ' End If
' ' ' fermo il timer
' ' If Not m_bCalcRunning Then
' ' m_Calc_Timer.Stop()
' ' m_bLockUX = False
' ' End If
' ' End If
' ' End If
' 'End Sub
'#End Region ' METHODS
End Class