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