Imports System.Windows Imports System.Windows.Media Imports EgtUILib Imports EgtWPFLib5 Public Class BTLFeatureVM Inherits VMBase Protected WithEvents m_BTLFeatureM As BTLFeatureM Public ReadOnly Property BTLFeatureM As BTLFeatureM Get Return m_BTLFeatureM End Get End Property Protected m_BTLPartM As BTLPartM Protected m_PartM As PartM Public ReadOnly Property nFeatureId As Integer Get Return m_BTLFeatureM.nFeatureId End Get End Property Public Overridable Property nSelGRP As Integer Get Return m_BTLFeatureM.nSelGRP End Get Set(value As Integer) m_BTLFeatureM.nSelGRP = value End Set End Property Public ReadOnly Property sDescGRP As String Get Dim sDescConstruction As String = String.Empty If CalcBeamPrivateProfileGRP(m_BTLFeatureM.nSelGRP) = 0 Then sDescConstruction = "L" Else sDescConstruction = "T" End If sDescConstruction &= m_BTLFeatureM.nPRC.ToString("000") Return sDescConstruction End Get End Property Public Property nPRC As Integer Get Return m_BTLFeatureM.nPRC End Get Set(value As Integer) m_BTLFeatureM.nPRC = value End Set End Property ' Lato Public Overridable Property nSelSIDE As Integer Get Return m_BTLFeatureM.nSelSIDE End Get Set(value As Integer) m_BTLFeatureM.nSelSIDE = value End Set End Property Public Overridable Property nSelVARIANT As Integer Get Return m_BTLFeatureM.nSelVARIANT End Get Set(value As Integer) m_BTLFeatureM.nSelVARIANT = value End Set End Property Public ReadOnly Property sName As String Get Return m_BTLFeatureM.sName End Get End Property Public Overridable Property bDO As Boolean Get Return m_BTLFeatureM.bDO End Get Set(value As Boolean) m_BTLFeatureM.bDO = value End Set End Property Public Property nPRID As Integer Get Return m_BTLFeatureM.nPRID End Get Set(value As Integer) m_BTLFeatureM.nPRID = value End Set End Property Public Property sDES As String Get Return m_BTLFeatureM.sDES End Get Set(value As String) m_BTLFeatureM.sDES = value End Set End Property Public Property frFRAME As Frame3d Get Return m_BTLFeatureM.frFRAME End Get Set(value As Frame3d) m_BTLFeatureM.frFRAME = value End Set End Property ' proprieta' che mostra la descrizione in interfaccia Public ReadOnly Property sDesc As String Get Return sDescGRP & " [" & nPRID & "] " & sName End Get End Property Public ReadOnly Property nState As CalcStates Get Return m_BTLFeatureM.nState End Get End Property Public ReadOnly Property nCALC_ERR As Integer Get Return m_BTLFeatureM.nCALC_ERR End Get End Property Public ReadOnly Property nCALC_ROT As Integer Get Return m_BTLFeatureM.nCALC_ROT End Get End Property Public ReadOnly Property sCALC_MSG As String Get Return m_BTLFeatureM.sCALC_MSG End Get End Property Public ReadOnly Property Calc_Background As SolidColorBrush Get If Not m_BTLFeatureM.bDO Then Return Brushes.Aqua Select Case m_BTLFeatureM.nState Case CalcStates.ERROR_, CalcStates.COLLISION Return Brushes.Red Case CalcStates.WARNING Return Brushes.Orange Case CalcStates.INFO, CalcStates.OK Return Brushes.Green Case CalcStates.NOTCALCULATED Return Brushes.LightGray Case Else Return Brushes.Red End Select End Get End Property Public ReadOnly Property CALC_ROT_Visibility As Visibility Get Return If(m_BTLFeatureM.nCALC_ROT <> 0, Visibility.Visible, Visibility.Collapsed) End Get End Property Public ReadOnly Property CALC_ERR_Letter As String Get Select Case m_BTLFeatureM.nState Case CalcStates.COLLISION Return "c" Case CalcStates.ERROR_ Return "e" Case CalcStates.WARNING Return "w" Case CalcStates.INFO Return "i" Case Else Return "" End Select End Get End Property Public ReadOnly Property CALC_ERR_Foreground As SolidColorBrush Get Select Case m_BTLFeatureM.nState Case CalcStates.ERROR_, CalcStates.COLLISION Return Brushes.Red Case CalcStates.WARNING Return Brushes.Orange Case CalcStates.INFO Return Brushes.Green Case Else Return Brushes.Red End Select End Get End Property ' variabile che indica se rifare il pezzo Private m_bRedo As Boolean = True Public Property bRedo As Boolean Get Return m_bRedo End Get Set(value As Boolean) m_bRedo = value End Set End Property Private m_bStrategy_Visibility As Visibility = Visibility.Collapsed Public ReadOnly Property bStrategy_Visibility As Visibility Get Return m_bStrategy_Visibility End Get End Property Public Sub SetbStrategy_Visibility(value As Boolean) m_bStrategy_Visibility = If(value, Visibility.Visible, Visibility.Collapsed) NotifyPropertyChanged(NameOf(bStrategy_Visibility)) End Sub Public ReadOnly Property IsEnabled As Boolean Get Return m_PartM.nProductionState < ItemState.Assigned End Get End Property #Region "CONSTRUCTOR" Sub New() End Sub Sub New(BTLFeatureM As BTLFeatureM) m_BTLFeatureM = BTLFeatureM m_BTLPartM = Nothing NotifyPropertyChanged(NameOf(Calc_Background)) NotifyPropertyChanged(NameOf(CALC_ROT_Visibility)) NotifyPropertyChanged(NameOf(CALC_ERR_Letter)) NotifyPropertyChanged(NameOf(CALC_ERR_Foreground)) End Sub #End Region ' CONSTRUCTOR #Region "METHODS" ' funzione che seleziona la feature nella geometria Public Sub SelGeomFeature() SelGeomFeature(nFeatureId) End Sub Private Sub SelGeomFeature(nMyFeatureId As Integer) EgtSelectObj(nMyFeatureId) Dim sVal As String = "" If EgtGetInfo(nMyFeatureId, BTL_FTR_ADJID, sVal) Then Dim vAdjId() As String = sVal.Split(","c) For Each sAdjId In vAdjId Dim nAdjId As Integer If Integer.TryParse(sAdjId, nAdjId) Then SelGeomFeature(nMyFeatureId + nAdjId) End If Next End If If EgtGetInfo(nMyFeatureId, BTL_FTR_AUXID, sVal) Then Dim vAuxId() As String = sVal.Split(","c) For Each sAuxId In vAuxId Dim nAuxId As Integer If Integer.TryParse(sAuxId, nAuxId) Then EgtSelectObj(nMyFeatureId + nAuxId) End If Next End If End Sub ' funzione che seleziona la feature nella geometria Public Sub DeselGeomFeature() DeselGeomFeature(nFeatureId) End Sub Private Sub DeselGeomFeature(nMyFeatureId As Integer) EgtDeselectObj(nMyFeatureId) Dim sVal As String = "" If EgtGetInfo(nMyFeatureId, BTL_FTR_ADJID, sVal) Then Dim vAdjId() As String = sVal.Split(","c) For Each sAdjId In vAdjId Dim nAdjId As Integer If Integer.TryParse(sAdjId, nAdjId) Then DeselGeomFeature(nMyFeatureId + nAdjId) End If Next End If If EgtGetInfo(nMyFeatureId, BTL_FTR_AUXID, sVal) Then Dim vAuxId() As String = sVal.Split(","c) For Each sAuxId In vAuxId Dim nAuxId As Integer If Integer.TryParse(sAuxId, nAuxId) Then EgtDeselectObj(nMyFeatureId + nAuxId) End If Next End If End Sub Public Overridable Sub RefreshFeature() End Sub #End Region ' METHODS End Class