Files
Emmanuele Sassi 54c5d41c67 - correzione eliminazione superficie pezzo
- correzione contextMenu in ManagePart
- Tooltip su tutte le icone
- gestione disattivazione interfaccia durante import
2023-03-13 18:32:58 +01:00

186 lines
6.8 KiB
VB.net

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 "Tooltip"
Public ReadOnly Property GetDist_ToolTip As String
Get
Return "Distance"
End Get
End Property
Public ReadOnly Property EdgeAnalysis_ToolTip As String
Get
Return "Edge Analysis"
End Get
End Property
#End Region ' Tooltip
#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