Imports System.Collections.ObjectModel Imports EgtUILib Imports EgtWPFLib5 Public Class RibParamPanelVM Inherits MachiningCathegory #Region "FIELDS & PROPERTIES" ' Definizione comandi Private m_cmdOk As ICommand Private m_cmdCancel As ICommand #End Region ' FIELDS & PROPERTIES #Region "CONSTRUCTORS" Sub New() ' Creo riferimento a questa classe in EgtCAM5Map Map.SetRefRibParamPanelVM(Me) End Sub #End Region ' CONSTRUCTORS #Region "METHODS" Friend Sub Init() If IsNothing(Map.refRibPanelVM.SelRib) Then ' ripristino modalita' standard Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL) Return End If Dim nPartId As Integer = Map.refTopPanelVM.SelPart.nPartId Dim nRibId As Integer = GDB_ID.NULL Select Case Map.refRibPanelVM.SelRib.Type Case RibEntity.RibTypes.FROMDRAW nRibId = Map.refRibPanelVM.SelRib.nCurveId Case RibEntity.RibTypes.FROMIMPORT nRibId = Map.refRibPanelVM.SelRib.nExtrusionId End Select m_Type = Cathegories.RIBS m_sName = "Ribs" m_MachiningParamList = New List(Of MachiningParam)({New RibNumericMachiningParam(MachiningParam.Params.RIBSOVERLAP, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSSTRANDCOUNT, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSINVERTDIRECTION, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSLEADININVERT, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSLEADINLEN, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSLEADOUTINVERT, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSLEADOUTLEN, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSLEADOUTCOASTING, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSLEADOUTWIPE, nRibId, nPartId), New RibNumericMachiningParam(MachiningParam.Params.RIBSLEADOUTWIPEDIR, nRibId, nPartId)}) NotifyPropertyChanged(NameOf(MachiningParamList)) NotifyPropertyChanged(NameOf(sName)) End Sub Friend Sub SaveCurrParams() For Each Param In m_MachiningParamList Param.SaveParam() Next End Sub Friend Sub ResetCurrParams() For Each Param In m_MachiningParamList Param.ResetParam() Next End Sub Friend Sub WriteParamsInRib(nRibId As Integer) ' se parametri modificati Dim bModified As Boolean = False For Each Param As RibNumericMachiningParam In m_MachiningParamList If Param.bIsModified AndAlso Not bModified Then bModified = True Param.WriteParamInRib(nRibId) Next If bModified Then ' Imposto flag di ricalcolo slice EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True) End If End Sub #End Region ' METHODS #Region "COMMANDS" #Region "Ok" Public ReadOnly Property Ok_Command As ICommand Get If m_cmdOk Is Nothing Then m_cmdOk = New Command(AddressOf Ok) End If Return m_cmdOk End Get End Property Public Sub Ok() If Not IsNothing(Map.refRibPanelVM.SelRib) Then ' scrivo i parametri modificati Select Case Map.refRibPanelVM.SelRib.Type Case RibEntity.RibTypes.FROMDRAW WriteParamsInRib(Map.refRibPanelVM.SelRib.nCurveId) WriteParamsInRib(Map.refRibPanelVM.SelRib.nExtrusionId) Case RibEntity.RibTypes.FROMIMPORT WriteParamsInRib(Map.refRibPanelVM.SelRib.nExtrusionId) End Select End If ' ripristino modalita' standard Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL) Map.refRibPanelVM.ResetMachParamIsChecked() End Sub #End Region ' Ok #Region "Cancel" Public ReadOnly Property Cancel_Command As ICommand Get If m_cmdCancel Is Nothing Then m_cmdCancel = New Command(AddressOf Cancel) End If Return m_cmdCancel End Get End Property Public Sub Cancel() ' ripristino modalita' standard Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL) Map.refRibPanelVM.ResetMachParamIsChecked() End Sub #End Region ' Cancel #End Region ' COMMANDS End Class Public Class RibNumericMachiningParam Inherits NumericMachiningParam Public Overrides Property sValue As String Get Return If(m_bIsLen, LenToString(m_dValue, 1), m_dValue) End Get Set(value As String) If m_bIsLen Then StringToLen(value, m_dValue) Else m_dValue = value End If NotifyPropertyChanged(NameOf(sValue)) NotifyPropertyChanged(NameOf(bIsModifiedFromPart)) End Set End Property Private m_dPartValue As Double Public ReadOnly Property dPartValue As Double Get Return m_dPartValue End Get End Property Public ReadOnly Property bIsModifiedFromPart As Boolean Get Return m_dValue <> m_dPartValue End Get End Property ' Definizione comandi Private m_cmdResetParam As ICommand Sub New(Type As Params, nRibId As Integer, nPartId As Integer) MyBase.New(Type) Dim bReadFromPart As Boolean = False Select Case Type Case Params.RIBSOVERLAP bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSOVERLAP, m_dValue) EgtGetInfo(nPartId, MAC_RIBSOVERLAP, m_dPartValue) m_bIsLen = True Case Params.RIBSSTRANDCOUNT bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSSTRANDCOUNT, m_dValue) EgtGetInfo(nPartId, MAC_RIBSSTRANDCOUNT, m_dPartValue) m_bIsLen = True Case Params.RIBSINVERTDIRECTION bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSINVERTDIRECTION, m_dValue) EgtGetInfo(nPartId, MAC_RIBSINVERTDIRECTION, m_dPartValue) m_bIsLen = True Case Params.RIBSLEADININVERT bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSLEADININVERT, m_dValue) EgtGetInfo(nPartId, MAC_RIBSLEADININVERT, m_dPartValue) m_bIsLen = True Case Params.RIBSLEADINLEN bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSLEADINLEN, m_dValue) EgtGetInfo(nPartId, MAC_RIBSLEADINLEN, m_dPartValue) m_bIsLen = True Case Params.RIBSLEADOUTINVERT bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSLEADOUTINVERT, m_dValue) EgtGetInfo(nPartId, MAC_RIBSLEADOUTINVERT, m_dPartValue) m_bIsLen = True Case Params.RIBSLEADOUTLEN bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSLEADOUTLEN, m_dValue) EgtGetInfo(nPartId, MAC_RIBSLEADOUTLEN, m_dPartValue) m_bIsLen = True Case Params.RIBSLEADOUTCOASTING bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSLEADOUTCOASTING, m_dValue) EgtGetInfo(nPartId, MAC_RIBSLEADOUTCOASTING, m_dPartValue) m_bIsLen = True Case Params.RIBSLEADOUTWIPE bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSLEADOUTWIPE, m_dValue) EgtGetInfo(nPartId, MAC_RIBSLEADOUTWIPE, m_dPartValue) m_bIsLen = True Case Params.RIBSLEADOUTWIPEDIR bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSLEADOUTWIPEDIR, m_dValue) EgtGetInfo(nPartId, MAC_RIBSLEADOUTWIPEDIR, m_dPartValue) m_bIsLen = True End Select m_dOrigValue = m_dValue If Not bReadFromPart Then m_dValue = m_dPartValue m_dOrigValue = m_dPartValue End If End Sub Friend Sub WriteParamInRib(nRibId As Integer) Dim sWriteValue As String = "" If m_bIsLen Then sWriteValue = LenToString(m_dValue, 2) Else sWriteValue = DoubleToString(m_dValue, 2) End If Select Case Type Case Params.RIBSOVERLAP If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSOVERLAP, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSOVERLAP) End If Case Params.RIBSSTRANDCOUNT If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSSTRANDCOUNT, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSSTRANDCOUNT) End If Case Params.RIBSINVERTDIRECTION If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSINVERTDIRECTION, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSINVERTDIRECTION) End If Case Params.RIBSLEADININVERT If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSLEADININVERT, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSLEADININVERT) End If Case Params.RIBSLEADINLEN If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSLEADINLEN, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSLEADINLEN) End If Case Params.RIBSLEADOUTINVERT If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSLEADOUTINVERT, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSLEADOUTINVERT) End If Case Params.RIBSLEADOUTLEN If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSLEADOUTLEN, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSLEADOUTLEN) End If Case Params.RIBSLEADOUTCOASTING If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSLEADOUTCOASTING, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSLEADOUTCOASTING) End If Case Params.RIBSLEADOUTWIPE If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSLEADOUTWIPE, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSLEADOUTWIPE) End If Case Params.RIBSLEADOUTWIPEDIR If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSLEADOUTWIPEDIR, sWriteValue) Else EgtRemoveInfo(nRibId, MAC_RIBSLEADOUTWIPEDIR) End If End Select End Sub Friend Overrides Sub SaveParam() m_dOrigValue = m_dValue End Sub Friend Overrides Sub ResetParam() m_dValue = m_dOrigValue End Sub #Region "COMMANDS" #Region "ResetParam" Public ReadOnly Property ResetParam_Command As ICommand Get If m_cmdResetParam Is Nothing Then m_cmdResetParam = New Command(AddressOf ResetParamCmd) End If Return m_cmdResetParam End Get End Property Public Sub ResetParamCmd() m_dValue = m_dPartValue NotifyPropertyChanged(NameOf(sValue)) NotifyPropertyChanged(NameOf(bIsModifiedFromPart)) End Sub #End Region ' ResetParam #End Region ' COMMANDS End Class