Imports System.Collections.ObjectModel Imports System.Reflection Imports EgtUILib Imports EgtWPFLib5 Public Class FilledSolidParamPanelVM 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.SetRefFilledSolidParamPanelVM(Me) End Sub #End Region ' CONSTRUCTORS #Region "METHODS" Friend Sub Init() If IsNothing(Map.refFilledSolidPanelVM.SelFilledSolid) Then ' ripristino modalita' standard Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL) Return End If Dim nPartId As Integer = Map.refTopPanelVM.SelPart.nPartId Dim nFilledSolidId As Integer = GDB_ID.NULL Select Case Map.refFilledSolidPanelVM.SelFilledSolid.Type Case RibEntity.RibTypes.FROMDRAW nFilledSolidId = Map.refFilledSolidPanelVM.SelFilledSolid.nCurveId Case RibEntity.RibTypes.FROMIMPORT nFilledSolidId = Map.refFilledSolidPanelVM.SelFilledSolid.nExtrusionId End Select m_Type = Cathegories.AUX_SOLID m_sName = "Filled Solid" m_MachiningParamList = New List(Of MachiningParam)({New FilledSolidComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nFilledSolidId, nPartId, Me), New FilledSolidcheckMachiningParam(MachiningParam.Params.AUXSOLIDSINFILLLINK, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDCOUNT, nFilledSolidId, nPartId, Me), New FilledSolidComboMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDORDER, nFilledSolidId, nPartId, Me), New FilledSolidComboMachiningParam(MachiningParam.Params.AUXSOLIDSLINKTYPE, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSLINKPARAM, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSOFFSETLEADPOINT, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSDENSITY, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSGRIDOVERLAP, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSDIRECTION, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSOFFSETX, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSOFFSETY, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSOVERLAP, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSCOASTINGLEN, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPELEN, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPEDIR, nFilledSolidId, nPartId, Me)}) NotifyPropertyChanged(NameOf(MachiningParamList)) NotifyPropertyChanged(NameOf(sName)) ' verifico dipendenze tra parametri Select Case m_Type Case Cathegories.AUX_SOLID For Each Param In {MachiningParam.Params.AUXSOLIDSINFILL} Dim MachiningParam As ComboMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param) MachiningParam.ManageDependencyParam() Next End Select 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 WriteParamsInFilledSolid(nRibId As Integer) ' se parametri modificati Dim bModified As Boolean = False For Each Param In m_MachiningParamList Select Case Param.GetType() Case GetType(FilledSolidNumericMachiningParam) Dim NumericParam As FilledSolidNumericMachiningParam = TryCast(Param, FilledSolidNumericMachiningParam) If NumericParam.bIsModified AndAlso Not bModified Then bModified = True NumericParam.WriteParamInFilledSolid(nRibId) Case GetType(FilledSolidComboMachiningParam) Dim NumericParam As FilledSolidComboMachiningParam = TryCast(Param, FilledSolidComboMachiningParam) If NumericParam.bIsModified AndAlso Not bModified Then bModified = True NumericParam.WriteParamInFilledSolid(nRibId) End Select 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.refFilledSolidPanelVM.SelFilledSolid) Then ' scrivo i parametri modificati Select Case Map.refFilledSolidPanelVM.SelFilledSolid.Type Case FilledSolidEntity.FilledSolidTypes.FROMDRAW WriteParamsInFilledSolid(Map.refFilledSolidPanelVM.SelFilledSolid.nCurveId) WriteParamsInFilledSolid(Map.refFilledSolidPanelVM.SelFilledSolid.nExtrusionId) Case FilledSolidEntity.FilledSolidTypes.FROMIMPORT WriteParamsInFilledSolid(Map.refFilledSolidPanelVM.SelFilledSolid.nExtrusionId) End Select End If ' ripristino modalita' standard Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL) Map.refFilledSolidPanelVM.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.refFilledSolidPanelVM.ResetMachParamIsChecked() End Sub #End Region ' Cancel #End Region ' COMMANDS End Class Public Class FilledSolidNumericMachiningParam 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, nFilledSolidId As Integer, nPartId As Integer, Cathegory As MachiningCathegory) MyBase.New(Type, Cathegory) Dim bReadFromPart As Boolean = False Select Case Type Case Params.AUXSOLIDSSTRANDCOUNT bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDCOUNT, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSSTRANDCOUNT, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSOVERLAP bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSOVERLAP, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSOVERLAP, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSLINKPARAM bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSLINKPARAM, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSLINKPARAM, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSSTARTPOINTOFFSETONSLICE, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSSTARTPOINTOFFSETONSLICE, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSOFFSETLEADPOINT bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETLEADPOINT, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSOFFSETLEADPOINT, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSDENSITY bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSDENSITY, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSDENSITY, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSGRIDOVERLAP bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSGRIDOVERLAP, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSGRIDOVERLAP, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSDIRECTION bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSDIRECTION, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSDIRECTION, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSOFFSETX bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETX, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSOFFSETX, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSOFFSETY bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETY, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSOFFSETY, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSCOASTINGLEN bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSCOASTINGLEN, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSCOASTINGLEN, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSWIPELEN bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSWIPELEN, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSWIPELEN, m_dPartValue) m_bIsLen = True Case Params.AUXSOLIDSWIPEDIR bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSWIPEDIR, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSWIPEDIR, 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 WriteParamInFilledSolid(nFilledSolidId 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.AUXSOLIDSSTRANDCOUNT If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDCOUNT, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDCOUNT) End If Case Params.AUXSOLIDSOVERLAP If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSOVERLAP, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSOVERLAP) End If Case Params.AUXSOLIDSLINKPARAM If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSLINKPARAM, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSLINKPARAM) End If Case Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSSTARTPOINTOFFSETONSLICE, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSSTARTPOINTOFFSETONSLICE) End If Case Params.AUXSOLIDSOFFSETLEADPOINT If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETLEADPOINT, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETLEADPOINT) End If Case Params.AUXSOLIDSDENSITY If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSDENSITY, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSDENSITY) End If Case Params.AUXSOLIDSGRIDOVERLAP If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSGRIDOVERLAP, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSGRIDOVERLAP) End If Case Params.AUXSOLIDSDIRECTION If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSDIRECTION, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSDIRECTION) End If Case Params.AUXSOLIDSOFFSETX If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETX, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETX) End If Case Params.AUXSOLIDSOFFSETY If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETY, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSOFFSETY) End If Case Params.AUXSOLIDSCOASTINGLEN If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSCOASTINGLEN, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSCOASTINGLEN) End If Case Params.AUXSOLIDSWIPELEN If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSWIPELEN, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSWIPELEN) End If Case Params.AUXSOLIDSWIPEDIR If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSWIPEDIR, sWriteValue) Else EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSWIPEDIR) 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 Public Class FilledSolidComboMachiningParam Inherits ComboMachiningParam Public Overrides Property SelValue As IdNameStruct Get Return m_SelValue End Get Set(value As IdNameStruct) m_SelValue = value NotifyPropertyChanged(NameOf(SelValue)) NotifyPropertyChanged(NameOf(bIsModifiedFromPart)) ManageDependencyParam() End Set End Property Protected m_PartSelValue As IdNameStruct Public ReadOnly Property PartSelValue As IdNameStruct Get Return m_PartSelValue End Get End Property Public ReadOnly Property bIsModifiedFromPart As Boolean Get Return m_SelValue.Id <> m_PartSelValue.Id End Get End Property ' Definizione comandi Private m_cmdResetParam As ICommand Sub New(Type As Params, nRibId As Integer, nPartId As Integer, Cathegory As MachiningCathegory) MyBase.New(Type, Cathegory) Dim bReadFromRib As Boolean = False Dim bReadFromPart As Boolean = False Select Case Type Case Params.AUXSOLIDSINFILL m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_INFILL_TYPE.NONE, "None"), New IdNameStruct(Machining.MPAR_INFILL_TYPE.OFFSET, "Offset"), New IdNameStruct(Machining.MPAR_INFILL_TYPE.ZIGZAG, "ZigZag"), New IdNameStruct(Machining.MPAR_INFILL_TYPE.LINES, "Lines"), New IdNameStruct(Machining.MPAR_INFILL_TYPE.GRID, "Grid"), New IdNameStruct(Machining.MPAR_INFILL_TYPE.ZIGZAG_GRID, "Zigzag Grid"), New IdNameStruct(Machining.MPAR_INFILL_TYPE.HONEYCOMB, "Honeycomb"), New IdNameStruct(Machining.MPAR_INFILL_TYPE.HONEYCOMB_GRID, "Honeycomb Grid")}) Dim nSelValue As Integer = 1 bReadFromRib = EgtGetInfo(nRibId, MAC_AUXSOLIDSINFILL, nSelValue) If bReadFromRib Then m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = nSelValue) End If bReadFromPart = EgtGetInfo(nPartId, MAC_AUXSOLIDSINFILL, nSelValue) m_PartSelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = nSelValue) Case Params.AUXSOLIDSSTRANDORDER m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_STRANDORDERS.OUTTOIN, "From Outside To Inside"), New IdNameStruct(Machining.MPAR_STRANDORDERS.INTOOUT, "From Inside To Outside")}) Dim nSelValue As Integer = 1 bReadFromRib = EgtGetInfo(nRibId, MAC_AUXSOLIDSSTRANDORDER, nSelValue) If bReadFromRib Then m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = nSelValue) End If bReadFromPart = EgtGetInfo(nPartId, MAC_AUXSOLIDSSTRANDORDER, nSelValue) m_PartSelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = nSelValue) Case Params.AUXSOLIDSLINKTYPE m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Machining.MPAR_LINKTYPES.NONE, "None"), New IdNameStruct(Machining.MPAR_LINKTYPES.LINEAR, "Linear"), New IdNameStruct(Machining.MPAR_LINKTYPES.BIARC, "Biarc")}) Dim nSelValue As Integer = 1 bReadFromRib = EgtGetInfo(nRibId, MAC_AUXSOLIDSLINKTYPE, nSelValue) If bReadFromRib Then m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = nSelValue) End If bReadFromPart = EgtGetInfo(nPartId, MAC_AUXSOLIDSLINKTYPE, nSelValue) m_PartSelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = nSelValue) End Select m_OrigSelValue = m_SelValue If Not bReadFromRib Then If bReadFromPart Then m_SelValue = m_PartSelValue m_OrigSelValue = m_PartSelValue Else Select Case Type Case Params.AUXSOLIDSINFILL m_OrigSelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = Machining.MPAR_INFILL_TYPE.NONE) m_SelValue = m_OrigSelValue Case Params.AUXSOLIDSSTRANDORDER m_OrigSelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = Machining.MPAR_STRANDORDERS.OUTTOIN) m_SelValue = m_OrigSelValue Case Params.AUXSOLIDSLINKTYPE m_OrigSelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = Machining.MPAR_LINKTYPES.NONE) m_SelValue = m_OrigSelValue End Select End If End If End Sub Friend Sub WriteParamInFilledSolid(nRibId As Integer) Select Case Type Case Params.AUXSOLIDSINFILL If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_AUXSOLIDSINFILL, m_SelValue.Id) Else EgtRemoveInfo(nRibId, MAC_AUXSOLIDSINFILL) End If Case Params.AUXSOLIDSSTRANDORDER If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_AUXSOLIDSSTRANDORDER, m_SelValue.Id) Else EgtRemoveInfo(nRibId, MAC_AUXSOLIDSSTRANDORDER) End If Case Params.AUXSOLIDSLINKTYPE If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_AUXSOLIDSLINKTYPE, m_SelValue.Id) Else EgtRemoveInfo(nRibId, MAC_AUXSOLIDSLINKTYPE) End If End Select End Sub Friend Overrides Sub SaveParam() m_OrigSelValue = m_SelValue End Sub Friend Overrides Sub ResetParam() m_SelValue = m_OrigSelValue 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_SelValue = m_PartSelValue NotifyPropertyChanged(NameOf(SelValue)) NotifyPropertyChanged(NameOf(bIsModifiedFromPart)) End Sub #End Region ' ResetParam #End Region ' COMMANDS End Class Public Class FilledSolidCheckMachiningParam Inherits CheckMachiningParam Public Overrides Property bValue As Boolean Get Return m_bValue End Get Set(value As Boolean) m_bValue = value NotifyPropertyChanged(NameOf(bValue)) NotifyPropertyChanged(NameOf(bIsModifiedFromPart)) End Set End Property Protected m_bPartValue As Boolean Public ReadOnly Property bPartValue As Boolean Get Return m_bPartValue End Get End Property Public ReadOnly Property bIsModifiedFromPart As Boolean Get Return m_bValue <> m_bPartValue End Get End Property ' Definizione comandi Private m_cmdResetParam As ICommand Sub New(Type As Params, nAuxSolidId As Integer, nPartId As Integer, Cathegory As MachiningCathegory) MyBase.New(Type, Cathegory) Dim bReadFromPart As Boolean = False Select Case Type Case Params.AUXSOLIDSINFILLLINK bReadFromPart = EgtGetInfo(nAuxSolidId, MAC_AUXSOLIDSINFILLLINK, m_bValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSINFILLLINK, m_bPartValue) End Select m_bOrigValue = m_bValue If Not bReadFromPart Then m_bValue = m_bPartValue m_bOrigValue = m_bPartValue End If End Sub Friend Sub WriteParamInRib(nAuxSolidId As Integer) Select Case Type Case Params.AUXSOLIDSINFILLLINK If bIsModifiedFromPart Then EgtSetInfo(nAuxSolidId, MAC_AUXSOLIDSINFILLLINK, If(m_bValue, 1, 0)) Else EgtRemoveInfo(nAuxSolidId, MAC_AUXSOLIDSINFILLLINK) End If End Select End Sub Friend Overrides Sub SaveParam() m_bOrigValue = m_bValue End Sub Friend Overrides Sub ResetParam() m_bValue = m_bOrigValue NotifyPropertyChanged(NameOf(bValue)) 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_bValue = m_bPartValue NotifyPropertyChanged(NameOf(bValue)) NotifyPropertyChanged(NameOf(bIsModifiedFromPart)) End Sub #End Region ' ResetParam #End Region ' COMMANDS End Class