Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Imports EgtWPFLib5 Public Class MyInstrumentPanelVM Inherits InstrumentPanelVM Private m_PrevSelObjs As New List(Of Integer) Friend ReadOnly Property PrevSelObjs As List(Of Integer) Get Return m_PrevSelObjs End Get End Property Private m_PrevPage As Pages Friend ReadOnly Property PrevPage As Pages Get Return m_PrevPage End Get End Property Private m_InstrumentPanel_IsEnabled As Boolean = True Public Property InstrumentPanel_IsEnabled As Boolean Get Return m_InstrumentPanel_IsEnabled End Get Set(value As Boolean) m_InstrumentPanel_IsEnabled = value End Set End Property Private m_bEdgeAnalysis_IsChecked As Boolean Public Property bEdgeAnalysis_IsChecked As Boolean Get Return m_bEdgeAnalysis_IsChecked End Get Set(value As Boolean) ' verifico che non sia in corso un altro comando If Map.refSceneHostVM.MainController.GetStep <> 0 Then Return m_bEdgeAnalysis_IsChecked = value If value Then ' salvo pagina precedente ed imposto pagina nulla m_PrevPage = Map.refTopPanelVM.SelPage Map.refTopPanelVM.SelPage = Pages.NULL ' 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) ' Disabilito segnalazione modificato Dim DisableMgr As New DisableModifiedMgr ' salvo selezione precedente e deseleziono altri oggetti Dim nSelObjId As Integer = EgtGetFirstSelectedObj() While nSelObjId <> GDB_ID.NULL m_PrevSelObjs.Add(nSelObjId) nSelObjId = EgtGetNextSelectedObj() End While ' eseguo comando su tutti i pezzi Dim sResult As String = "Chunk Number for every part:" For Each CurrPart In Map.refTopPanelVM.PartList EgtDeselectAll() Dim nPrintSolidId As Integer = EgtGetFirstInGroup(CurrPart.nPrintSolidLayerId) Dim nChunkLayerId As Integer = EgtGetFirstNameInGroup(CurrPart.nPartId, LAY_CHUNKS) If nChunkLayerId = GDB_ID.NULL Then nChunkLayerId = EgtCreateGroup(CurrPart.nPartId) EgtSetName(nChunkLayerId, LAY_CHUNKS) End If EgtSelectObj(nPrintSolidId) EgtSetCurrPartLayer(CurrPart.nPartId, nChunkLayerId) ' estraggo bordi superficie Dim nCount As Integer = 0 If EgtGetType(nPrintSolidId) = GDB_TY.SRF_FRGN Then For nChunk As Integer = 0 To EgtSurfFrChunkCount(nPrintSolidId) - 1 EgtExtractSurfFrChunkLoops(nPrintSolidId, nChunk, nChunkLayerId, nCount) Next ElseIf EgtGetType(nPrintSolidId) = GDB_TY.SRF_MESH Then EgtExtractSurfTmLoops(nPrintSolidId, nChunkLayerId, nCount) ElseIf EgtGetType(nPrintSolidId) = GDB_TY.SRF_BEZ Then EgtExtractSurfBezierLoops(nPrintSolidId, nChunkLayerId, nCount) End If sResult &= Environment.NewLine & CurrPart.sName & " = " & nCount Next EgtDeselectAll() ' li seleziono per evidenziarli For Each CurrPart In Map.refTopPanelVM.PartList Dim nChunkLayerId As Integer = EgtGetFirstNameInGroup(CurrPart.nPartId, LAY_CHUNKS) Dim nChunkId As Integer = EgtGetFirstInGroup(nChunkLayerId) While nChunkId <> GDB_ID.NULL EgtSelectObj(nChunkId) nChunkId = EgtGetNext(nChunkId) End While Next EgtDraw() ' Ripristino stato segnalazione modifica DisableMgr.ReEnable() MessageBox.Show(sResult) Else ' Disabilito segnalazione modificato Dim DisableMgr As New DisableModifiedMgr ' cancello tutti i gruppi con i chunk For Each CurrPart In Map.refTopPanelVM.PartList Dim nChunkLayerId As Integer = EgtGetFirstNameInGroup(CurrPart.nPartId, LAY_CHUNKS) If nChunkLayerId <> GDB_ID.NULL Then EgtErase(nChunkLayerId) Next ' ripristino selezioni precedenti For Each Id In m_PrevSelObjs EgtSelectObj(Id) Next ' Ripristino stato segnalazione modifica DisableMgr.ReEnable() EgtDraw() ' ripristino pagina precedente Map.refTopPanelVM.SelPage = m_PrevPage ' 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) End If End Set End Property Private m_bEdgeAnalysis_IsEnabled As Boolean = True Public Property bEdgeAnalysis_IsEnabled As Boolean Get Return m_bEdgeAnalysis_IsEnabled End Get Set(value As Boolean) m_bEdgeAnalysis_IsEnabled = value End Set End Property Friend Sub SetEdgeAnalysisIsEnabled(value As Boolean) m_bEdgeAnalysis_IsEnabled = value NotifyPropertyChanged(NameOf(bEdgeAnalysis_IsEnabled)) End Sub #Region "CONSTRUCTORS" Sub New() ' imposto riferimento in Map Map.SetRefInstrumentPanelVM(Me) End Sub #End Region ' CONSTRUCTORS #Region "METHODS" Public Overrides Function OnPostGetDistIsChecked() As Boolean Map.refSceneHostVM.MainScene.SetStatusNull() Return True End Function Friend Sub SetGetDistance_IsChecked(bIsChecked As Boolean) GetDistIsChecked = bIsChecked End Sub Friend Sub SetInstrumentPanelIsEnabled(bIsEnabled As Boolean) m_InstrumentPanel_IsEnabled = bIsEnabled NotifyPropertyChanged(NameOf(InstrumentPanel_IsEnabled)) End Sub #End Region ' METHODS End Class