Imports System.Collections.ObjectModel Imports System.ComponentModel Imports System.IO Imports EgtUILib Imports EgtCAM5.Utility ''' ''' Class that represent a FamilyMachining in the treeview. ''' It's an element in the treeview that represent a folder, but also a machining family ''' Public Class FamilyMachiningTreeViewItem Inherits InheritableTreeViewItem ' Actions Friend Shared m_delIsEnabledBtns As Action(Of Boolean, Boolean, Boolean) ''' ''' Property that determines if the Machining is selected or not ''' Public Overrides Property IsSelected As Boolean Get Return m_IsSelected End Get Set(value As Boolean) If (value <> m_IsSelected) Then m_IsSelected = value If value Then m_delIsEnabledBtns(True, False, False) End If End If End Set End Property Private m_MachiningType As MCH_MY ''' ''' Property that determines the machining type of the family ''' Public Property MachiningType As MCH_MY Get Return m_MachiningType End Get Set(value As MCH_MY) m_MachiningType = value End Set End Property ' Proprietà che permette di nascondere tutti i parametri di lavorazione grazie al binding ed al converter Public ReadOnly Property Type As Integer Get Return MCH_MY.NONE End Get End Property ''' ''' Constructor that receive the name of the FamilyMachiningTreeViewItem, the MachiningType, and set ''' the picture(Folder.png) ''' Sub New(Name As String, MachiningType As MCH_MY) MyBase.New(Name) Me.MachiningType = MachiningType Me.PictureString = "/Resources/TreeView/Folder.png" End Sub End Class ''' ''' Class that represent a Machining in the treeview. ''' It's an element in the treeview that represent the child of familymachiningtreeviewitem, but also the class that read and write in the machining's database ''' Public Class MachiningTreeViewItem Inherits InheritableTreeViewItem ' Actions Friend Shared m_delRemoveMachining As Action(Of MachiningTreeViewItem) Friend Shared m_delErrorOnMachining As Action(Of Boolean) Friend Shared m_delIsEnabledBtns As Action(Of Boolean, Boolean, Boolean) #Region "Machining Property" ' Variabile che indica se la lavorazione è appena stata creata Dim m_NewMachining As Boolean = False Public Property NewMachining As Boolean Get Return m_NewMachining End Get Set(value As Boolean) m_NewMachining = value End Set End Property ''' ''' Property that determines if the Machining is selected or not ''' Public Overrides Property IsSelected As Boolean Get Return m_IsSelected End Get Set(value As Boolean) If (value <> m_IsSelected) Then m_isSelected = value If value Then EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtMdbSetCurrMachining(Me.Name) ReadMachiningParam() IsModifiedReset() NotifyPropertyChanged("Type") m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) Else WriteMachiningParam() If EgtMdbIsCurrMachiningModified() Or m_IsModifiedName Or Me.NewMachining Then Select Case MsgBox(EgtMsg(MSG_MACHININGSERRORS), MsgBoxStyle.YesNo, EgtMsg(MSG_MACHININGSERRORS + 1)) Case MsgBoxResult.Yes m_NewMachining = False m_Name = m_Name.Trim() WriteMachiningName() EgtMdbSaveCurrMachining() Case MsgBoxResult.No If m_NewMachining Then m_delRemoveMachining(Me) ElseIf m_IsModifiedName Then Dim DbName As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.NAME, DbName) NamePar = DbName End If End Select End If End If NotifyPropertyChanged("IsSelected") End If End Set End Property Private m_IsModifiedInvert As Boolean = False Private m_Invert As Boolean ''' ''' Property that read and write to the Machining's database the Invert ''' Public Property Invert As Boolean Get Return m_Invert End Get Set(value As Boolean) If value <> m_Invert Then m_Invert = value Dim DbInvert As Boolean = False EgtMdbGetCurrMachiningParam(MCH_MP.INVERT, DbInvert) m_IsModifiedInvert = If(value <> DbInvert, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("Invert") End If End Set End Property Private m_IsModifiedLeaveTab As Boolean = False Private m_LeaveTab As Boolean ''' ''' Property that read and write to the Machining's database the Leave Tab ''' Public Property LeaveTab As Boolean Get Return m_LeaveTab End Get Set(value As Boolean) If value <> m_LeaveTab Then m_LeaveTab = value Dim DbLeaveTab As Boolean = False EgtMdbGetCurrMachiningParam(MCH_MP.LEAVETAB, DbLeaveTab) m_IsModifiedLeaveTab = If(value <> DbLeaveTab, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LeaveTab") End If End Set End Property Private m_IsModifiedToolInvert As Boolean = False Private m_ToolInvert As Boolean = False ''' ''' Property that read and write to the Machining's database the Invert ''' Public Property InvertToolDir As Boolean Get Return m_ToolInvert End Get Set(value As Boolean) If value <> m_ToolInvert Then m_ToolInvert = value Dim OrigToolInvert As Boolean = False EgtMdbGetCurrMachiningParam(MCH_MP.TOOLINVERT, OrigToolInvert) m_IsModifiedToolInvert = If(value <> OrigToolInvert, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("InvertToolDir") End If End Set End Property Private m_Type As MCH_MY ''' ''' Property that read from the Machining's database the Type ''' Public ReadOnly Property Type As Integer Get Return m_Type End Get End Property 'ObservableCollection che contiene le variabili per il combobox WorkSide Private m_WorkSideList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property WorkSideList As ObservableCollection(Of IdNameStruct) Get Select Case m_Type Case MCH_MY.MORTISING m_WorkSideList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_MORTISE_WS.LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 121)), New IdNameStruct(MCH_MORTISE_WS.RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 122))}) Case MCH_MY.CHISELING m_WorkSideList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_CHISEL_WS.LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 121)), New IdNameStruct(MCH_CHISEL_WS.RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 122))}) Case Else m_WorkSideList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAW_WS.CENTER, EgtMsg(MSG_MACHININGSDBPAGE + 120)), New IdNameStruct(MCH_SAW_WS.LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 121)), New IdNameStruct(MCH_SAW_WS.RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 122))}) End Select Return m_WorkSideList End Get End Property Private m_IsModifiedSelectedWorkSide As Boolean = False Private m_SelectedWorkSide As Integer ' Proprietà che indica il WorkSide (MCH_SAW_WS) Public Property SelectedWorkSide As Integer Get If IsNothing(WorkSideList) Then Return Nothing Return m_SelectedWorkSide End Get Set(value As Integer) If value <> m_SelectedWorkSide Then If Not IsNothing(WorkSideList) Then m_SelectedWorkSide = value Dim DbWorkSide As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.WORKSIDE, DbWorkSide) DbWorkSide = IdNameStruct.IndFromId(DbWorkSide, WorkSideList) m_IsModifiedSelectedWorkSide = If(value <> DbWorkSide, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedWorkSide") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox HeadSide Private m_HeadSideList As New ObservableCollection(Of IdNameStruct)({New IdNameStruct(MCH_SAW_HS.LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 121)), New IdNameStruct(MCH_SAW_HS.RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 122))}) Public ReadOnly Property HeadSideList As ObservableCollection(Of IdNameStruct) Get Return m_HeadSideList End Get End Property Private m_IsModifiedSelectedHeadSide As Boolean = False Private m_SelectedHeadSide As Integer ' Proprietà che indica il HeadSide (MCH_SAW_HS) Public Property SelectedHeadSide As Integer Get If IsNothing(HeadSideList) Then Return Nothing Return m_SelectedHeadSide End Get Set(value As Integer) If value <> m_SelectedHeadSide Then If Not IsNothing(HeadSideList) Then m_SelectedHeadSide = value Dim DbHeadSide As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.HEADSIDE, DbHeadSide) DbHeadSide = IdNameStruct.IndFromId(DbHeadSide, HeadSideList) m_IsModifiedSelectedHeadSide = If(value <> DbHeadSide, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedHeadSide") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox LeadInType Private m_LeadInTypeList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property LeadInTypeList As ObservableCollection(Of IdNameStruct) Get Select Case m_Type Case MCH_MY.SAWING m_LeadInTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAW_LI.CENT, EgtMsg(MSG_MACHININGSDBPAGE + 120)), New IdNameStruct(MCH_SAW_LI.STRICT, EgtMsg(MSG_MACHININGSDBPAGE + 125)), New IdNameStruct(MCH_SAW_LI.OUT, EgtMsg(MSG_MACHININGSDBPAGE + 126)), New IdNameStruct(MCH_SAW_LI.EXT_CENT, EgtMsg(MSG_MACHININGSDBPAGE + 127)), New IdNameStruct(MCH_SAW_LI.EXT_OUT, EgtMsg(MSG_MACHININGSDBPAGE + 128))}) Case MCH_MY.MILLING m_LeadInTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_MIL_LI.NONE, EgtMsg(MSG_MACHININGSDBPAGE + 129)), New IdNameStruct(MCH_MIL_LI.LINEAR, EgtMsg(MSG_MACHININGSDBPAGE + 130)), New IdNameStruct(MCH_MIL_LI.TANGENT, EgtMsg(MSG_MACHININGSDBPAGE + 131)), New IdNameStruct(MCH_MIL_LI.GLIDE, EgtMsg(MSG_MACHININGSDBPAGE + 132)), New IdNameStruct(MCH_MIL_LI.ZIGZAG, EgtMsg(MSG_MACHININGSDBPAGE + 142)), New IdNameStruct(MCH_MIL_LI.HELIX, EgtMsg(MSG_MACHININGSDBPAGE + 133))}) Case MCH_MY.POCKETING m_LeadInTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_POCK_LI.NONE, EgtMsg(MSG_MACHININGSDBPAGE + 129)), New IdNameStruct(MCH_POCK_LI.GLIDE, EgtMsg(MSG_MACHININGSDBPAGE + 132)), New IdNameStruct(MCH_POCK_LI.ZIGZAG, EgtMsg(MSG_MACHININGSDBPAGE + 142)), New IdNameStruct(MCH_POCK_LI.HELIX, EgtMsg(MSG_MACHININGSDBPAGE + 133))}) Case Else m_LeadInTypeList = Nothing End Select Return m_LeadInTypeList End Get End Property Private m_IsModifiedSelectedLeadInType As Boolean = False Private m_SelectedLeadInType As Integer ' Proprietà che indica il LeadInType Public Property SelectedLeadInType As Integer Get If IsNothing(LeadInTypeList) Then Return Nothing Return IdNameStruct.IdFromInd(m_SelectedLeadInType, LeadInTypeList) End Get Set(value As Integer) If value <> m_SelectedLeadInType Then If Not IsNothing(LeadInTypeList) Then m_SelectedLeadInType = IdNameStruct.IndFromId(value, LeadInTypeList) Dim DbLeadInType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LEADINTYPE, DbLeadInType) m_IsModifiedSelectedLeadInType = If(value <> DbLeadInType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedLeadInType") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox ExtLinkType Private m_ExtLinkTypeList As New ObservableCollection(Of IdNameStruct)({New IdNameStruct(MCH_SAW_EL.CENT, EgtMsg(MSG_MACHININGSDBPAGE + 120)), New IdNameStruct(MCH_SAW_EL.EXT_PREV, EgtMsg(MSG_MACHININGSDBPAGE + 134)), New IdNameStruct(MCH_SAW_EL.EXT_NEXT, EgtMsg(MSG_MACHININGSDBPAGE + 135)), New IdNameStruct(MCH_SAW_EL.EXT_BOTH, EgtMsg(MSG_MACHININGSDBPAGE + 136))}) Public ReadOnly Property ExtLinkTypeList As ObservableCollection(Of IdNameStruct) Get Return m_ExtLinkTypeList End Get End Property Private m_IsModifiedSelectedExtLinkType As Boolean = False Private m_SelectedExtLinkType As Integer ' Proprietà che indica il ExtLinkType (MCH_SAW_EL) Public Property SelectedExtLinkType As Integer Get If IsNothing(ExtLinkTypeList) Then Return Nothing Return IdNameStruct.IdFromInd(m_SelectedExtLinkType, ExtLinkTypeList) End Get Set(value As Integer) If value <> m_SelectedExtLinkType Then If Not IsNothing(ExtLinkTypeList) Then m_SelectedExtLinkType = IdNameStruct.IndFromId(value, ExtLinkTypeList) Dim DbExtLinkType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.EXTLINKTYPE, DbExtLinkType) m_IsModifiedSelectedExtLinkType = If(value <> DbExtLinkType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedExtLinkType") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox LeadOutType Private m_LeadOutTypeList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property LeadOutTypeList As ObservableCollection(Of IdNameStruct) Get Select Case m_Type Case MCH_MY.SAWING m_LeadOutTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAW_LO.CENT, EgtMsg(MSG_MACHININGSDBPAGE + 120)), New IdNameStruct(MCH_SAW_LO.STRICT, EgtMsg(MSG_MACHININGSDBPAGE + 125)), New IdNameStruct(MCH_SAW_LO.OUT, EgtMsg(MSG_MACHININGSDBPAGE + 126)), New IdNameStruct(MCH_SAW_LO.EXT_CENT, EgtMsg(MSG_MACHININGSDBPAGE + 127)), New IdNameStruct(MCH_SAW_LO.EXT_OUT, EgtMsg(MSG_MACHININGSDBPAGE + 128))}) Case MCH_MY.MILLING m_LeadOutTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_MIL_LO.NONE, EgtMsg(MSG_MACHININGSDBPAGE + 129)), New IdNameStruct(MCH_MIL_LO.LINEAR, EgtMsg(MSG_MACHININGSDBPAGE + 130)), New IdNameStruct(MCH_MIL_LO.TANGENT, EgtMsg(MSG_MACHININGSDBPAGE + 131)), New IdNameStruct(MCH_MIL_LO.GLIDE, EgtMsg(MSG_MACHININGSDBPAGE + 132)), New IdNameStruct(MCH_MIL_LO.AS_LI, EgtMsg(MSG_MACHININGSDBPAGE + 137))}) Case MCH_MY.POCKETING m_LeadOutTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_POCK_LO.NONE, EgtMsg(MSG_MACHININGSDBPAGE + 129)), New IdNameStruct(MCH_POCK_LO.GLIDE, EgtMsg(MSG_MACHININGSDBPAGE + 132))}) Case Else m_LeadOutTypeList = Nothing End Select Return m_LeadOutTypeList End Get End Property Private m_IsModifiedSelectedLeadOutType As Boolean = False Private m_SelectedLeadOutType As Integer ' Proprietà che indica il LeadOutType Public Property SelectedLeadOutType As Integer Get If IsNothing(LeadOutTypeList) Then Return Nothing Return m_SelectedLeadOutType End Get Set(value As Integer) If value <> m_SelectedLeadOutType Then If Not IsNothing(LeadOutTypeList) Then m_SelectedLeadOutType = value Dim OrigLeadOutType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LEADOUTTYPE, OrigLeadOutType) OrigLeadOutType = IdNameStruct.IndFromId(OrigLeadOutType, LeadOutTypeList) m_IsModifiedSelectedLeadOutType = If(value <> OrigLeadOutType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedLeadOutType") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox CurveUse Private m_CurveUseList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property CurveUseList As ObservableCollection(Of IdNameStruct) Get If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_SAWINGONARCS, 0, IniFile.m_sCurrMachIniFilePath) <> 0 Then m_CurveUseList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAW_CU.SKIP, EgtMsg(MSG_MACHININGSDBPAGE + 138)), New IdNameStruct(MCH_SAW_CU.APPROX, EgtMsg(MSG_MACHININGSDBPAGE + 139)), New IdNameStruct(MCH_SAW_CU.CONVEX, EgtMsg(MSG_MACHININGSDBPAGE + 140)), New IdNameStruct(MCH_SAW_CU.KEEP, EgtMsg(MSG_MACHININGSDBPAGE + 141))}) Else m_CurveUseList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAW_CU.SKIP, EgtMsg(MSG_MACHININGSDBPAGE + 138)), New IdNameStruct(MCH_SAW_CU.APPROX, EgtMsg(MSG_MACHININGSDBPAGE + 139)), New IdNameStruct(MCH_SAW_CU.CONVEX, EgtMsg(MSG_MACHININGSDBPAGE + 140))}) End If Return m_CurveUseList End Get End Property Private m_IsModifiedSelectedCurveUse As Boolean = False Private m_SelectedCurveUse As Integer ' Proprietà che indica il CurveUse (MCH_SAW_CU) Public Property SelectedCurveUse As Integer Get If IsNothing(CurveUseList) Then Return Nothing Return IdNameStruct.IdFromInd(m_SelectedCurveUse, CurveUseList) End Get Set(value As Integer) If value <> m_SelectedCurveUse Then If Not IsNothing(CurveUseList) Then m_SelectedCurveUse = IdNameStruct.IndFromId(value, CurveUseList) Dim DbCurveUse As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.CURVEUSE, DbCurveUse) m_IsModifiedSelectedCurveUse = If(value <> DbCurveUse, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedCurveUse") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox StepType Private m_StepTypeList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property StepTypeList As ObservableCollection(Of IdNameStruct) Get Select Case m_Type Case MCH_MY.SAWING m_StepTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAW_ST.ZIGZAG, EgtMsg(MSG_MACHININGSDBPAGE + 142)), New IdNameStruct(MCH_SAW_ST.ONEWAY, EgtMsg(MSG_MACHININGSDBPAGE + 143)), New IdNameStruct(MCH_SAW_ST.TOANDFROM, EgtMsg(MSG_MACHININGSDBPAGE + 145))}) Case MCH_MY.MILLING m_StepTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_MIL_ST.ZIGZAG, EgtMsg(MSG_MACHININGSDBPAGE + 142)), New IdNameStruct(MCH_MIL_ST.ONEWAY, EgtMsg(MSG_MACHININGSDBPAGE + 143)), New IdNameStruct(MCH_MIL_ST.SPIRAL, EgtMsg(MSG_MACHININGSDBPAGE + 144))}) Case MCH_MY.MORTISING m_StepTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_MORTISE_ST.ZIGZAG, EgtMsg(MSG_MACHININGSDBPAGE + 142)), New IdNameStruct(MCH_MORTISE_ST.ONEWAY, EgtMsg(MSG_MACHININGSDBPAGE + 143))}) Case MCH_MY.SAWROUGHING, MCH_MY.SAWFINISHING m_StepTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAWROU_ST.ZIGZAG, EgtMsg(MSG_MACHININGSDBPAGE + 142)), New IdNameStruct(MCH_SAWROU_ST.ONEWAY, EgtMsg(MSG_MACHININGSDBPAGE + 143))}) Case Else m_StepTypeList = Nothing End Select Return m_StepTypeList End Get End Property Private m_IsModifiedSelectedStepType As Boolean = False Private m_SelectedStepType As Integer ' Proprietà che indica lo StepType Public Property SelectedStepType As Integer Get If IsNothing(StepTypeList) Then Return Nothing Return IdNameStruct.IdFromInd(m_SelectedStepType, StepTypeList) End Get Set(value As Integer) If value <> m_SelectedStepType Then If Not IsNothing(StepTypeList) Then m_SelectedStepType = IdNameStruct.IndFromId(value, StepTypeList) Dim DbStepType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STEPTYPE, DbStepType) m_IsModifiedSelectedStepType = If(value <> DbStepType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedStepType") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox SubType Private m_SubTypeList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property SubTypeList As ObservableCollection(Of IdNameStruct) Get Select Case m_Type Case MCH_MY.POCKETING m_SubTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_POCK_SUB.ZIGZAG, EgtMsg(MSG_MACHININGSDBPAGE + 142)), New IdNameStruct(MCH_POCK_SUB.ONEWAY, EgtMsg(MSG_MACHININGSDBPAGE + 143)), New IdNameStruct(MCH_POCK_SUB.SPIRALIN, EgtMsg(MSG_MACHININGSDBPAGE + 148)), New IdNameStruct(MCH_POCK_SUB.SPIRALOUT, EgtMsg(MSG_MACHININGSDBPAGE + 149))}) Case MCH_MY.SAWFINISHING m_SubTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SAWFIN_SUB.ALONG, EgtMsg(MSG_MACHININGSDBPAGE + 146)), New IdNameStruct(MCH_SAWFIN_SUB.ACROSS, EgtMsg(MSG_MACHININGSDBPAGE + 147))}) Case MCH_MY.GENMACHINING Dim Index = 1 Dim sGenScript As String = String.Empty m_SubTypeList = New ObservableCollection(Of IdNameStruct) While EgtUILib.GetPrivateProfileString(S_GENMACHINING, K_GENSCRIPT & Index, "", sGenScript, IniFile.m_sCurrMachIniFilePath) > 0 m_SubTypeList.Add(New IdNameStruct(Index, sGenScript)) Index += 1 End While If m_SubTypeList.Count = 0 Then m_SubTypeList.Add(New IdNameStruct(0, "")) End If Case Else m_SubTypeList = Nothing End Select Return m_SubTypeList End Get End Property Private m_IsModifiedSelectedSubType As Boolean = False Private m_SelectedSubType As Integer ' Proprietà che indica il SubType Public Property SelectedSubType As Integer Get If IsNothing(SubTypeList) Then Return Nothing Return m_SelectedSubType End Get Set(value As Integer) If value <> m_SelectedSubType Then If Not IsNothing(SubTypeList) Then m_SelectedSubType = value Dim DbSubType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.SUBTYPE, DbSubType) DbSubType = IdNameStruct.IndFromId(DbSubType, SubTypeList) m_IsModifiedSelectedSubType = If(value <> DbSubType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedSubType") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox LeadLinkType Private m_LeadLinkTypeList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property LeadLinkTypeList As ObservableCollection(Of IdNameStruct) Get Select Case m_Type Case MCH_MY.SAWROUGHING m_LeadLinkTypeList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(MCH_SAWROU_LL.CENT, EgtMsg(MSG_MACHININGSDBPAGE + 120)), New IdNameStruct(MCH_SAWROU_LL.EXT, EgtMsg(MSG_MACHININGSDBPAGE + 123))}) Case MCH_MY.SAWFINISHING m_LeadLinkTypeList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(MCH_SAWFIN_LL.STD, EgtMsg(MSG_MACHININGSDBPAGE + 124)), New IdNameStruct(MCH_SAWFIN_LL.CENT, EgtMsg(MSG_MACHININGSDBPAGE + 120)), New IdNameStruct(MCH_SAWFIN_LL.EXT, EgtMsg(MSG_MACHININGSDBPAGE + 123))}) Case Else m_LeadLinkTypeList = Nothing End Select Return m_LeadLinkTypeList End Get End Property Private m_IsModifiedSelectedLeadLinkType As Boolean = False Private m_SelectedLeadLinkType As Integer ' Proprietà che indica il LeadLinkType Public Property SelectedLeadLinkType As Integer Get If IsNothing(LeadLinkTypeList) Then Return Nothing Return IdNameStruct.IdFromInd(m_SelectedLeadLinkType, LeadLinkTypeList) End Get Set(value As Integer) If value <> m_SelectedLeadLinkType Then If Not IsNothing(LeadLinkTypeList) Then m_SelectedLeadLinkType = IdNameStruct.IndFromId(value, LeadLinkTypeList) Dim DbLeadLinkType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LEADLINKTYPE, DbLeadLinkType) m_IsModifiedSelectedLeadLinkType = If(value <> DbLeadLinkType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedLeadLinkType") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox FaceUseType Private m_FaceUseTypeList As ObservableCollection(Of IdNameStruct) Public ReadOnly Property FaceUseTypeList As ObservableCollection(Of IdNameStruct) Get Select Case m_Type Case MCH_MY.MORTISING m_FaceUseTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_MIL_FU.NONE, EgtMsg(MSG_MACHININGSDBPAGE + 153)), New IdNameStruct(MCH_MIL_FU.PARAL_DOWN, EgtMsg(MSG_MACHININGSDBPAGE + 157) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_TOP, EgtMsg(MSG_MACHININGSDBPAGE + 158) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_FRONT, EgtMsg(MSG_MACHININGSDBPAGE + 159) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_BACK, EgtMsg(MSG_MACHININGSDBPAGE + 160) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 161) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 162) & EgtMsg(MSG_MACHININGSDBPAGE + 154))}) Case Else m_FaceUseTypeList = New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_MIL_FU.NONE, EgtMsg(MSG_MACHININGSDBPAGE + 153)), New IdNameStruct(MCH_MIL_FU.PARAL_DOWN, EgtMsg(MSG_MACHININGSDBPAGE + 157) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_TOP, EgtMsg(MSG_MACHININGSDBPAGE + 158) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_FRONT, EgtMsg(MSG_MACHININGSDBPAGE + 159) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_BACK, EgtMsg(MSG_MACHININGSDBPAGE + 160) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 161) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.PARAL_RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 162) & EgtMsg(MSG_MACHININGSDBPAGE + 154)), New IdNameStruct(MCH_MIL_FU.ORTHO_DOWN, EgtMsg(MSG_MACHININGSDBPAGE + 157) & EgtMsg(MSG_MACHININGSDBPAGE + 155)), New IdNameStruct(MCH_MIL_FU.ORTHO_TOP, EgtMsg(MSG_MACHININGSDBPAGE + 158) & EgtMsg(MSG_MACHININGSDBPAGE + 155)), New IdNameStruct(MCH_MIL_FU.ORTHO_FRONT, EgtMsg(MSG_MACHININGSDBPAGE + 159) & EgtMsg(MSG_MACHININGSDBPAGE + 155)), New IdNameStruct(MCH_MIL_FU.ORTHO_BACK, EgtMsg(MSG_MACHININGSDBPAGE + 160) & EgtMsg(MSG_MACHININGSDBPAGE + 155)), New IdNameStruct(MCH_MIL_FU.ORTHO_LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 161) & EgtMsg(MSG_MACHININGSDBPAGE + 155)), New IdNameStruct(MCH_MIL_FU.ORTHO_RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 162) & EgtMsg(MSG_MACHININGSDBPAGE + 155)), New IdNameStruct(MCH_MIL_FU.ORTHO_CONT, EgtMsg(MSG_MACHININGSDBPAGE + 163) & EgtMsg(MSG_MACHININGSDBPAGE + 155)), New IdNameStruct(MCH_MIL_FU.ORTUP_DOWN, EgtMsg(MSG_MACHININGSDBPAGE + 157) & EgtMsg(MSG_MACHININGSDBPAGE + 156)), New IdNameStruct(MCH_MIL_FU.ORTUP_TOP, EgtMsg(MSG_MACHININGSDBPAGE + 158) & EgtMsg(MSG_MACHININGSDBPAGE + 156)), New IdNameStruct(MCH_MIL_FU.ORTUP_FRONT, EgtMsg(MSG_MACHININGSDBPAGE + 159) & EgtMsg(MSG_MACHININGSDBPAGE + 156)), New IdNameStruct(MCH_MIL_FU.ORTUP_BACK, EgtMsg(MSG_MACHININGSDBPAGE + 160) & EgtMsg(MSG_MACHININGSDBPAGE + 156)), New IdNameStruct(MCH_MIL_FU.ORTUP_LEFT, EgtMsg(MSG_MACHININGSDBPAGE + 161) & EgtMsg(MSG_MACHININGSDBPAGE + 156)), New IdNameStruct(MCH_MIL_FU.ORTUP_RIGHT, EgtMsg(MSG_MACHININGSDBPAGE + 162) & EgtMsg(MSG_MACHININGSDBPAGE + 156)), New IdNameStruct(MCH_MIL_FU.ORTUP_CONT, EgtMsg(MSG_MACHININGSDBPAGE + 163) & EgtMsg(MSG_MACHININGSDBPAGE + 156))}) End Select Return m_FaceUseTypeList End Get End Property Private m_IsModifiedSelectedFaceUseType As Boolean = False Private m_SelectedFaceUseType As Integer = 0 ' Proprietà che indica il FaceUseType (MCH_MIL_FU) Public Property SelectedFaceUseType As Integer Get If IsNothing(FaceUseTypeList) Then Return Nothing Return m_SelectedFaceUseType End Get Set(value As Integer) If value <> m_SelectedFaceUseType Then If Not IsNothing(FaceUseTypeList) Then m_SelectedFaceUseType = value Dim OrigFaceUseType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.FACEUSE, OrigFaceUseType) OrigFaceUseType = IdNameStruct.IndFromId(OrigFaceUseType, FaceUseTypeList) m_IsModifiedSelectedFaceUseType = If(value <> OrigFaceUseType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedFaceUseType") End If End If End Set End Property 'ObservableCollection che contiene le variabili per il combobox SolChoiceType Private m_SolChoiceTypeList As New ObservableCollection(Of IdNameStruct)( {New IdNameStruct(MCH_SCC.NONE, EgtMsg(MSG_MACHININGSDBPAGE + 105)), New IdNameStruct(MCH_SCC.STD, EgtMsg(MSG_MACHININGSDBPAGE + 106)), New IdNameStruct(MCH_SCC.OPPOSITE, EgtMsg(MSG_MACHININGSDBPAGE + 107)), New IdNameStruct(MCH_SCC.ADIR_XP, EgtMsg(MSG_MACHININGSDBPAGE + 108)), New IdNameStruct(MCH_SCC.ADIR_XM, EgtMsg(MSG_MACHININGSDBPAGE + 109)), New IdNameStruct(MCH_SCC.ADIR_YP, EgtMsg(MSG_MACHININGSDBPAGE + 110)), New IdNameStruct(MCH_SCC.ADIR_YM, EgtMsg(MSG_MACHININGSDBPAGE + 111)), New IdNameStruct(MCH_SCC.ADIR_ZP, EgtMsg(MSG_MACHININGSDBPAGE + 112)), New IdNameStruct(MCH_SCC.ADIR_ZM, EgtMsg(MSG_MACHININGSDBPAGE + 113)), New IdNameStruct(MCH_SCC.ADIR_NEAR, EgtMsg(MSG_MACHININGSDBPAGE + 114)), New IdNameStruct(MCH_SCC.ADIR_FAR, EgtMsg(MSG_MACHININGSDBPAGE + 115))}) Public ReadOnly Property SolChoiceTypeList As ObservableCollection(Of IdNameStruct) Get Return m_SolChoiceTypeList End Get End Property Private m_IsModifiedSelectedSolChoiceType As Boolean = False Private m_SelectedSolChoiceType As Integer ' Proprietà che indica il SolChoiceType (MCH_SAW_EL) Public Property SelectedSolChoiceType As Integer Get If IsNothing(SolChoiceTypeList) Then Return Nothing Return m_SelectedSolChoiceType End Get Set(value As Integer) If value <> m_SelectedSolChoiceType Then If Not IsNothing(SolChoiceTypeList) Then m_SelectedSolChoiceType = value Dim DbSolChoiceType As Integer = 0 EgtMdbGetCurrMachiningParam(MCH_MP.SOLCHOICETYPE, DbSolChoiceType) DbSolChoiceType = IdNameStruct.IndFromId(DbSolChoiceType, SolChoiceTypeList) m_IsModifiedSelectedSolChoiceType = If(value <> DbSolChoiceType, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedSolChoiceType") End If End If End Set End Property Private m_IsModifiedSpeed As Boolean = False Private m_Speed As String ''' ''' Property that read and write to the Machining's database the Speed ''' Public Property Speed As String Get Return m_Speed End Get Set(value As String) If value <> m_Speed Then m_Speed = value Dim DbSpeed As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.SPEED, DbSpeed) StringToDouble(value, dValue) m_IsModifiedSpeed = Math.Abs(dValue - DbSpeed) > 10 * EPS_ANG_SMALL If Not GetValidationError("Speed") Then m_delErrorOnMachining(True) m_delIsEnabledBtns(False, False, True) Else m_delErrorOnMachining(Not IsValid) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) End If NotifyPropertyChanged("Speed") End If End Set End Property Private m_IsModifiedFeed As Boolean = False Private m_Feed As String ''' ''' Property that read and write to the Machining's database the Feed ''' Public Property Feed As String Get Return m_Feed End Get Set(value As String) If value <> m_Feed Then m_Feed = value Dim DbFeed As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.FEED, DbFeed) StringToLen(value, dValue) m_IsModifiedFeed = Math.Abs(dValue - DbFeed) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("Feed") End If End Set End Property Private m_IsModifiedStartFeed As Boolean = False Private m_StartFeed As String ''' ''' Property that read and write to the Machining's database the Start Feed ''' Public Property StartFeed As String Get Return m_StartFeed End Get Set(value As String) If value <> m_StartFeed Then m_StartFeed = value Dim DbStartFeed As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STARTFEED, DbStartFeed) StringToLen(value, dValue) m_IsModifiedStartFeed = Math.Abs(dValue - DbStartFeed) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("StartFeed") End If End Set End Property Private m_IsModifiedEndFeed As Boolean = False Private m_EndFeed As String ''' ''' Property that read and write to the Machining's database the End Feed ''' Public Property EndFeed As String Get Return m_EndFeed End Get Set(value As String) If value <> m_EndFeed Then m_EndFeed = value Dim DbEndFeed As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.ENDFEED, DbEndFeed) StringToLen(value, dValue) m_IsModifiedEndFeed = Math.Abs(dValue - DbEndFeed) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("EndFeed") End If End Set End Property Private m_IsModifiedTipFeed As Boolean = False Private m_TipFeed As String ''' ''' Property that read and write to the Machining's database the Tip Feed ''' Public Property TipFeed As String Get Return m_TipFeed End Get Set(value As String) If value <> m_TipFeed Then m_TipFeed = value Dim DbTipFeed As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.TIPFEED, DbTipFeed) StringToLen(value, dValue) m_IsModifiedTipFeed = Math.Abs(dValue - DbTipFeed) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("TipFeed") End If End Set End Property Private m_IsModifiedOffSr As Boolean = False Private m_OffSr As String ''' ''' Property that read and write to the Machining's database the Offset Sr ''' Public Property OffSr As String Get Return m_OffSr End Get Set(value As String) If value <> m_OffSr Then m_OffSr = value Dim DbOffSr As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.OFFSR, DbOffSr) StringToLen(value, dValue) m_IsModifiedOffSr = Math.Abs(dValue - DbOffSr) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("OffSr") End If End Set End Property Private m_IsModifiedOffSl As Boolean = False Private m_OffSl As String ''' ''' Property that read and write to the Machining's database the Offset Sl ''' Public Property OffSl As String Get Return m_OffSl End Get Set(value As String) If value <> m_OffSl Then m_OffSl = value Dim DbOffSl As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.OFFSL, DbOffSl) StringToLen(value, dValue) m_IsModifiedOffSl = Math.Abs(dValue - DbOffSl) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("OffSl") End If End Set End Property Private m_IsModifiedSideAngle As Boolean = False Private m_SideAngle As String ''' ''' Property that read and write to the Machining's database the Side Angle ''' Public Property SideAngle As String Get Return m_SideAngle End Get Set(value As String) If value <> m_SideAngle Then m_SideAngle = value Dim DbSideAngle As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.SIDEANGLE, DbSideAngle) StringToLen(value, dValue) m_IsModifiedSideAngle = Math.Abs(dValue - DbSideAngle) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SideAngle") End If End Set End Property Private m_IsModifiedApprox As Boolean = False Private m_Approx As String ''' ''' Property that read and write to the Machining's database the Approx ''' Public Property Approx As String Get Return m_Approx End Get Set(value As String) If value <> m_Approx Then m_Approx = value Dim DbApprox As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.APPROX, DbApprox) StringToLen(value, dValue) m_IsModifiedApprox = Math.Abs(dValue - DbApprox) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("Approx") End If End Set End Property Private m_IsModifiedStartPos As Boolean = False Private m_StartPos As String ''' ''' Property that read and write to the Machining's database the Start Position ''' Public Property StartPos As String Get Return m_StartPos End Get Set(value As String) If value <> m_StartPos Then m_StartPos = value Dim DbStartPos As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STARTPOS, DbStartPos) StringToLen(value, dValue) m_IsModifiedStartPos = Math.Abs(dValue - DbStartPos) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("StartPos") End If End Set End Property Private m_IsModifiedStartSlowLen As Boolean = False Private m_StartSlowLen As String ''' ''' Property that read and write to the Machining's database the Start Slow Len ''' Public Property StartSlowLen As String Get Return m_StartSlowLen End Get Set(value As String) If value <> m_StartSlowLen Then m_StartSlowLen = value Dim DbStartSlowLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STARTSLOWLEN, DbStartSlowLen) StringToLen(value, dValue) m_IsModifiedStartSlowLen = Math.Abs(dValue - DbStartSlowLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("StartSlowLen") End If End Set End Property Private m_IsModifiedEndSlowLen As Boolean = False Private m_EndSlowLen As String ''' ''' Property that read and write to the Machining's database the End Slow Len ''' Public Property EndSlowLen As String Get Return m_EndSlowLen End Get Set(value As String) If value <> m_EndSlowLen Then m_EndSlowLen = value Dim DbEndSlowLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.ENDSLOWLEN, DbEndSlowLen) StringToLen(value, dValue) m_IsModifiedEndSlowLen = Math.Abs(dValue - DbEndSlowLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("EndSlowLen") End If End Set End Property Private m_IsModifiedThrouAddLen As Boolean = False Private m_ThrouAddLen As String ''' ''' Property that read and write to the Machining's database the Throu Add Len ''' Public Property ThrouAddLen As String Get Return m_ThrouAddLen End Get Set(value As String) If value <> m_ThrouAddLen Then m_ThrouAddLen = value Dim DbThrouAddLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.THROUADDLEN, DbThrouAddLen) StringToLen(value, dValue) m_IsModifiedThrouAddLen = Math.Abs(dValue - DbThrouAddLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("ThrouAddLen") End If End Set End Property Private m_IsModifiedStepPar As Boolean = False Private m_StepPar As String ''' ''' Property that read and write to the Machining's database the Step Par ''' Public Property StepPar As String Get Return m_StepPar End Get Set(value As String) If value <> m_StepPar Then m_StepPar = value Dim DbStepPar As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STEP_, DbStepPar) StringToLen(value, dValue) m_IsModifiedStepPar = Math.Abs(dValue - DbStepPar) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("StepPar") End If End Set End Property Private m_IsModifiedReturnPos As Boolean = False Private m_ReturnPos As String ''' ''' Property that read and write to the Machining's database the Return Position ''' Public Property ReturnPos As String Get Return m_ReturnPos End Get Set(value As String) If value <> m_ReturnPos Then m_ReturnPos = value Dim DbReturnPos As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.RETURNPOS, DbReturnPos) StringToLen(value, dValue) m_IsModifiedReturnPos = Math.Abs(dValue - DbReturnPos) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("ReturnPos") End If End Set End Property Private m_IsModifiedOverLap As Boolean = False Private m_OverLap As String ''' ''' Property that read and write to the Machining's database the Over Lap Str ''' Public Property OverLap As String Get Return m_OverLap End Get Set(value As String) If value = String.Empty Or value <> m_OverLap Then m_OverLap = value Dim DbOverLap As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.OVERL, DbOverLap) StringToLen(value, dValue) m_IsModifiedOverLap = Math.Abs(dValue - DbOverLap) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("OverLap") End If End Set End Property Private m_IsModifiedTabLen As Boolean = False Private m_TabLen As String ''' ''' Property that read and write to the Machining's database the Tab Len ''' Public Property TabLen As String Get Return m_TabLen End Get Set(value As String) If value <> m_TabLen Then m_TabLen = value Dim DbTabLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.TABLEN, DbTabLen) StringToLen(value, dValue) m_IsModifiedTabLen = Math.Abs(dValue - DbTabLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("TabLen") End If End Set End Property Private m_IsModifiedTabDist As Boolean = False Private m_TabDist As String ''' ''' Property that read and write to the Machining's database the Tab Dist ''' Public Property TabDist As String Get Return m_TabDist End Get Set(value As String) If value <> m_TabDist Then m_TabDist = value Dim DbTabDist As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.TABDIST, DbTabDist) StringToLen(value, dValue) m_IsModifiedTabDist = Math.Abs(dValue - DbTabDist) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("TabDist") End If End Set End Property Private m_IsModifiedTabHeight As Boolean = False Private m_TabHeight As String ''' ''' Property that read and write to the Machining's database the Tab Height ''' Public Property TabHeight As String Get Return m_TabHeight End Get Set(value As String) If value <> m_TabHeight Then m_TabHeight = value Dim DbTabHeight As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.TABHEIGHT, DbTabHeight) StringToLen(value, dValue) m_IsModifiedTabHeight = Math.Abs(dValue - DbTabHeight) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("TabHeight") End If End Set End Property Private m_IsModifiedTabAngle As Boolean = False Private m_TabAngle As String ''' ''' Property that read and write to the Machining's database the Tab Angle ''' Public Property TabAngle As String Get Return m_TabAngle End Get Set(value As String) If value <> m_TabAngle Then m_TabAngle = value Dim DbTabAngle As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.TABANGLE, DbTabAngle) StringToLen(value, dValue) m_IsModifiedTabAngle = Math.Abs(dValue - DbTabAngle) > 10 * EPS_ANG_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("TabAngle") End If End Set End Property Private m_IsModifiedLiTang As Boolean = False Private m_LiTang As String ''' ''' Property that read and write to the Machining's database the Li Tang ''' Public Property LiTang As String Get Return m_LiTang End Get Set(value As String) If value <> m_LiTang Then m_LiTang = value Dim DbLiTang As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LITANG, DbLiTang) StringToLen(value, dValue) m_IsModifiedLiTang = Math.Abs(dValue - DbLiTang) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LiTang") End If End Set End Property Private m_IsModifiedLiPerp As Boolean = False Private m_LiPerp As String ''' ''' Property that read and write to the Machining's database the Li Perp ''' Public Property LiPerp As String Get Return m_LiPerp End Get Set(value As String) If value <> m_LiPerp Then m_LiPerp = value Dim DbLiPerp As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LIPERP, DbLiPerp) StringToLen(value, dValue) m_IsModifiedLiPerp = Math.Abs(dValue - DbLiPerp) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LiPerp") End If End Set End Property Private m_IsModifiedLiElev As Boolean = False Private m_LiElev As String ''' ''' Property that read and write to the Machining's database the Li Elev ''' Public Property LiElev As String Get Return m_LiElev End Get Set(value As String) If value <> m_LiElev Then m_LiElev = value Dim DbLiElev As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LIELEV, DbLiElev) StringToLen(value, dValue) m_IsModifiedLiElev = Math.Abs(dValue - DbLiElev) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LiElev") End If End Set End Property Private m_IsModifiedLiCompLen As Boolean = False Private m_LiCompLen As String ''' ''' Property that read and write to the Machining's database the Li Comp Len ''' Public Property LiCompLen As String Get Return m_LiCompLen End Get Set(value As String) If value <> m_LiCompLen Then m_LiCompLen = value Dim DbLiCompLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LICOMPLEN, DbLiCompLen) StringToLen(value, dValue) m_IsModifiedLiCompLen = Math.Abs(dValue - DbLiCompLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LiCompLen") End If End Set End Property Private m_IsModifiedLoTang As Boolean = False Private m_LoTang As String ''' ''' Property that read and write to the Machining's database the Lo Tang ''' Public Property LoTang As String Get Return m_LoTang End Get Set(value As String) If value <> m_LoTang Then m_LoTang = value Dim DbLoTang As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LOTANG, DbLoTang) StringToLen(value, dValue) m_IsModifiedLoTang = Math.Abs(dValue - DbLoTang) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LoTang") End If End Set End Property Private m_IsModifiedLoPerp As Boolean = False Private m_LoPerp As String ''' ''' Property that read and write to the Machining's database the Lo Perp ''' Public Property LoPerp As String Get Return m_LoPerp End Get Set(value As String) If value <> m_LoPerp Then m_LoPerp = value Dim DbLoPerp As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LOPERP, DbLoPerp) StringToLen(value, dValue) m_IsModifiedLoPerp = Math.Abs(dValue - DbLoPerp) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LoPerp") End If End Set End Property Private m_IsModifiedLoElev As Boolean = False Private m_LoElev As String ''' ''' Property that read and write to the Machining's database the Lo Elev ''' Public Property LoElev As String Get Return m_LoElev End Get Set(value As String) If value <> m_LoElev Then m_LoElev = value Dim DbLoElev As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LOELEV, DbLoElev) StringToLen(value, dValue) m_IsModifiedLoElev = Math.Abs(dValue - DbLoElev) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LoElev") End If End Set End Property Private m_IsModifiedLoCompLen As Boolean = False Private m_LoCompLen As String ''' ''' Property that read and write to the Machining's database the Lo Comp Len ''' Public Property LoCompLen As String Get Return m_LoCompLen End Get Set(value As String) If value <> m_LoCompLen Then m_LoCompLen = value Dim DbLoCompLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.LOCOMPLEN, DbLoCompLen) StringToLen(value, dValue) m_IsModifiedLoCompLen = Math.Abs(dValue - DbLoCompLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("LoCompLen") End If End Set End Property Private m_IsModifiedStartAddLen As Boolean = False Private m_StartAddLen As String ''' ''' Property that read and write to the Machining's database the Start Add Len ''' Public Property StartAddLen As String Get Return m_StartAddLen End Get Set(value As String) If value <> m_StartAddLen Then m_StartAddLen = value Dim DbStartAddLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STARTADDLEN, DbStartAddLen) StringToLen(value, dValue) m_IsModifiedStartAddLen = Math.Abs(dValue - DbStartAddLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("StartAddLen") End If End Set End Property Private m_IsModifiedEndAddLen As Boolean = False Private m_EndAddLen As String ''' ''' Property that read and write to the Machining's database the End Add Len ''' Public Property EndAddLen As String Get Return m_EndAddLen End Get Set(value As String) If value <> m_EndAddLen Then m_EndAddLen = value Dim DbEndAddLen As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.ENDADDLEN, DbEndAddLen) StringToLen(value, dValue) m_IsModifiedEndAddLen = Math.Abs(dValue - DbEndAddLen) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("EndAddLen") End If End Set End Property Private m_IsModifiedStepExtArc As Boolean = False Private m_StepExtArc As String ''' ''' Property that read and write to the Machining's database the Step Ext Arc ''' Public Property StepExtArc As String Get Return m_StepExtArc End Get Set(value As String) If value <> m_StepExtArc Then m_StepExtArc = value Dim DbStepExtArc As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STEPEXTARC, DbStepExtArc) StringToLen(value, dValue) m_IsModifiedStepExtArc = Math.Abs(dValue - DbStepExtArc) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("StepExtArc") End If End Set End Property Private m_IsModifiedStepIntArc As Boolean = False Private m_StepIntArc As String ''' ''' Property that read and write to the Machining's database the Step Int Arc ''' Public Property StepIntArc As String Get Return m_StepIntArc End Get Set(value As String) If value <> m_StepIntArc Then m_StepIntArc = value Dim DbStepIntArc As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.STEPINTARC, DbStepIntArc) StringToLen(value, dValue) m_IsModifiedStepIntArc = Math.Abs(dValue - DbStepIntArc) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("StepIntArc") End If End Set End Property Private m_IsModifiedSideStep As Boolean = False Private m_SideStep As String ''' ''' Property that read and write to the Machining's database the Side Step ''' Public Property SideStep As String Get Return m_SideStep End Get Set(value As String) If value <> m_SideStep Then m_SideStep = value Dim DbSideStep As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.SIDESTEP, DbSideStep) StringToLen(value, dValue) m_IsModifiedSideStep = Math.Abs(dValue - DbSideStep) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SideStep") End If End Set End Property Private m_IsModifiedVertFeed As Boolean = False Private m_VertFeed As String ''' ''' Property that read and write to the Machining's database the Vert Feed ''' Public Property VertFeed As String Get Return m_VertFeed End Get Set(value As String) If value <> m_VertFeed Then m_VertFeed = value Dim DbVertFeed As Double = 0 Dim dValue As Double = 0 EgtMdbGetCurrMachiningParam(MCH_MP.VERTFEED, DbVertFeed) StringToLen(value, dValue) m_IsModifiedVertFeed = Math.Abs(dValue - DbVertFeed) > 10 * EPS_SMALL m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("VertFeed") End If End Set End Property ' Variabile che indica se c'è un errore nel nome della lavorazione (ad esempio nome già utilizzato) Dim nErrorMachiningName As Integer = 0 Friend m_IsModifiedName As Boolean = False ''' ''' Property that read and write to the machining's database the Name ''' Public Property NamePar As String Get Return m_Name End Get Set(value As String) If value = String.Empty Or value <> m_Name Then nErrorMachiningName = 0 m_Name = value ' Verifico se il nome è diverso da quello nel database e imposto l'apposito flag Dim DbName As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.NAME, DbName) m_IsModifiedName = If(value <> DbName, True, False) ' Verifico che il nuovo nome sia valido Dim sTempName As String = value EgtMdbGetMachiningNewName(sTempName) If m_IsModifiedName And Not value = sTempName Then nErrorMachiningName = 1 End If If Not GetValidationError("NamePar") Then m_delErrorOnMachining(True) m_delIsEnabledBtns(False, False, True) Else m_delErrorOnMachining(Not IsValid) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) End If NotifyPropertyChanged("NamePar") End If End Set End Property ''' ''' ObservableCollection che contiene le variabili per il combobox Tool ''' Private m_ToolList As ObservableCollection(Of String) Public ReadOnly Property ToolList As ObservableCollection(Of String) Get Select Case m_Type Case MCH_MY.DRILLING m_ToolList = New ObservableCollection(Of String) FindToolByType(MCH_TY.DRILL_STD, m_ToolList) FindToolByType(MCH_TY.DRILL_LONG, m_ToolList) FindToolByType(MCH_TY.MILL_STD, m_ToolList) Case MCH_MY.SAWING, MCH_MY.SAWROUGHING, MCH_MY.SAWFINISHING m_ToolList = New ObservableCollection(Of String) FindToolByType(MCH_TY.SAW_STD, m_ToolList) FindToolByType(MCH_TY.SAW_FLAT, m_ToolList) Case MCH_MY.MILLING m_ToolList = New ObservableCollection(Of String) FindToolByType(MCH_TY.SAW_STD, m_ToolList) FindToolByType(MCH_TY.SAW_FLAT, m_ToolList) FindToolByType(MCH_TY.MILL_STD, m_ToolList) FindToolByType(MCH_TY.MILL_NOTIP, m_ToolList) FindToolByType(MCH_TY.COMPO, m_ToolList) Case MCH_MY.POCKETING m_ToolList = New ObservableCollection(Of String) FindToolByType(MCH_TY.MILL_STD, m_ToolList) FindToolByType(MCH_TY.MILL_NOTIP, m_ToolList) Case MCH_MY.MORTISING m_ToolList = New ObservableCollection(Of String) FindToolByType(MCH_TY.MORTISE_STD, m_ToolList) Case MCH_MY.GENMACHINING m_ToolList = New ObservableCollection(Of String) FindToolByType(MCH_TY.DRILL_STD, m_ToolList) FindToolByType(MCH_TY.DRILL_LONG, m_ToolList) FindToolByType(MCH_TY.SAW_STD, m_ToolList) FindToolByType(MCH_TY.SAW_FLAT, m_ToolList) FindToolByType(MCH_TY.MILL_STD, m_ToolList) FindToolByType(MCH_TY.MILL_NOTIP, m_ToolList) FindToolByType(MCH_TY.COMPO, m_ToolList) Case MCH_MY.CHISELING m_ToolList = New ObservableCollection(Of String) FindToolByType(MCH_TY.CHISEL_STD, m_ToolList) Case Else m_ToolList = Nothing End Select Return m_ToolList End Get End Property ''' ''' Method that search all tools in Db of a specified type ''' Private Sub FindToolByType(ToolType As MCH_TY, ToolList As ObservableCollection(Of String)) Dim nType As Integer = 0 Dim ToolName As String = String.Empty If EgtTdbGetFirstTool(ToolType, ToolName, nType) Then If nType = ToolType Then m_ToolList.Add(ToolName) While EgtTdbGetNextTool(ToolType, ToolName, nType) If nType = ToolType Then m_ToolList.Add(ToolName) End While End If End Sub ' Variabile che indica quando questa variabile viene modificata dalla letttura dei parametri e non dall'utente Dim ReadTool As Boolean = False Private m_IsModifiedSelectedTool As Boolean = False Private m_SelectedTool As Integer ''' ''' Property that read and write to the Machining's database the Tool ''' Public Property SelectedTool As Integer Get Return m_SelectedTool End Get Set(value As Integer) If value <> m_SelectedTool Then m_SelectedTool = value If value <> -1 Then Dim DbSelectedTool As String = String.Empty EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_MP.TOOL, DbSelectedTool) m_IsModifiedSelectedTool = If(m_ToolList(value) <> DbSelectedTool, True, False) If Not ReadTool Then EgtTdbSetCurrTool(m_ToolList(value)) Dim dVal As Double = 0 EgtTdbGetCurrToolParam(MCH_TP.SPEED, dVal) Speed = DoubleToString(dVal, 4) EgtTdbGetCurrToolParam(MCH_TP.FEED, dVal) Feed = LenToString(dVal, 4) EgtTdbGetCurrToolParam(MCH_TP.STARTFEED, dVal) StartFeed = LenToString(dVal, 4) EgtTdbGetCurrToolParam(MCH_TP.ENDFEED, dVal) EndFeed = LenToString(dVal, 4) EgtTdbGetCurrToolParam(MCH_TP.TIPFEED, dVal) TipFeed = LenToString(dVal, 4) EgtTdbGetCurrToolParam(MCH_TP.LONOFFSET, dVal) OffSr = LenToString(dVal, 4) EgtTdbGetCurrToolParam(MCH_TP.RADOFFSET, dVal) OffSl = LenToString(dVal, 4) End If End If m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("SelectedTool") End If End Set End Property Private m_IsModifiedDepthStr As Boolean = False Private m_DepthStr As String ''' ''' Property that read and write to the Machining's database the Depth Str ''' Public Property DepthStr As String Get Return m_DepthStr End Get Set(value As String) If value = String.Empty Or value <> m_DepthStr Then m_DepthStr = value Dim DbDepthStr As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.DEPTH_STR, DbDepthStr) m_IsModifiedDepthStr = If(value <> DbDepthStr, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("DepthStr") End If End Set End Property Private m_Uuid As String ''' ''' Property that read and write to the tool's database the Uuid ''' Public ReadOnly Property Uuid As String Get Return m_Uuid End Get End Property Private m_IsModifiedUserNotes As Boolean = False Private m_UserNotes As String ''' ''' Property that read and write to the Machining's database the User Notes ''' Public Property UserNotes As String Get Return m_UserNotes End Get Set(value As String) If value = String.Empty Or value <> m_UserNotes Then m_UserNotes = value Dim DbUserNotes As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.USERNOTES, DbUserNotes) m_IsModifiedUserNotes = If(value <> DbUserNotes, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("UserNotes") End If End Set End Property Private m_IsModifiedInitAngs As Boolean = False Private m_InitAngs As String ''' ''' Property that read and write to the Machining's database the Initial Angles ''' Public Property InitAngs As String Get Return m_InitAngs End Get Set(value As String) If value = String.Empty Or value <> m_InitAngs Then m_InitAngs = value Dim OrigInitAngs As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.INITANGS, OrigInitAngs) m_IsModifiedInitAngs = If(value <> OrigInitAngs, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("InitAngs") End If End Set End Property Private m_IsModifiedBlockedAxis As Boolean = False Private m_BlockedAxis As String ''' ''' Property that read and write to the Machining's database the Initial Angles ''' Public Property BlockedAxis As String Get Return m_BlockedAxis End Get Set(value As String) If value = String.Empty Or value <> m_BlockedAxis Then m_BlockedAxis = value Dim OrigBlockedAxis As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.BLOCKEDAXIS, OrigBlockedAxis) m_IsModifiedBlockedAxis = If(value <> OrigBlockedAxis, True, False) m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewMachining), True) NotifyPropertyChanged("BlockedAxis") End If End Set End Property #End Region ' Machining Property #Region "Constructors" Sub New(Name As String, Type As MCH_MY) MyBase.New(Name) Me.m_Type = Type End Sub #End Region ' Constructors #Region "METHODS" Friend Sub ReadMachiningParam() EgtSetCurrentContext(IniFile.m_ProjectSceneContext) Dim dValue As Double = 0 Dim nValue As Integer = 0 Dim sValue As String = String.Empty ReadSelectedTool() EgtMdbGetCurrMachiningParam(MCH_MP.INVERT, Invert) EgtMdbGetCurrMachiningParam(MCH_MP.LEAVETAB, LeaveTab) EgtMdbGetCurrMachiningParam(MCH_MP.TOOLINVERT, InvertToolDir) EgtMdbGetCurrMachiningParam(MCH_MP.WORKSIDE, nValue) SelectedWorkSide = If(IsNothing(WorkSideList), nValue, IdNameStruct.IndFromId(nValue, WorkSideList)) EgtMdbGetCurrMachiningParam(MCH_MP.HEADSIDE, nValue) SelectedHeadSide = If(IsNothing(HeadSideList), nValue, IdNameStruct.IndFromId(nValue, HeadSideList)) EgtMdbGetCurrMachiningParam(MCH_MP.LEADINTYPE, nValue) SelectedLeadInType = nValue EgtMdbGetCurrMachiningParam(MCH_MP.EXTLINKTYPE, nValue) SelectedExtLinkType = nValue EgtMdbGetCurrMachiningParam(MCH_MP.LEADOUTTYPE, nValue) SelectedLeadOutType = If(IsNothing(LeadOutTypeList), nValue, IdNameStruct.IndFromId(nValue, LeadOutTypeList)) EgtMdbGetCurrMachiningParam(MCH_MP.CURVEUSE, nValue) SelectedCurveUse = nValue EgtMdbGetCurrMachiningParam(MCH_MP.STEPTYPE, nValue) SelectedStepType = nValue EgtMdbGetCurrMachiningParam(MCH_MP.SUBTYPE, nValue) SelectedSubType = If(IsNothing(SubTypeList), nValue, IdNameStruct.IndFromId(nValue, SubTypeList)) EgtMdbGetCurrMachiningParam(MCH_MP.LEADLINKTYPE, nValue) SelectedLeadLinkType = nValue EgtMdbGetCurrMachiningParam(MCH_MP.FACEUSE, nValue) SelectedFaceUseType = If(IsNothing(FaceUseTypeList), nValue, IdNameStruct.IndFromId(nValue, FaceUseTypeList)) EgtMdbGetCurrMachiningParam(MCH_MP.SOLCHOICETYPE, nValue) SelectedSolChoiceType = If(IsNothing(SolChoiceTypeList), nValue, IdNameStruct.IndFromId(nValue, SolChoiceTypeList)) EgtMdbGetCurrMachiningParam(MCH_MP.SPEED, dValue) Speed = DoubleToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.FEED, dValue) Feed = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.STARTFEED, dValue) StartFeed = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.ENDFEED, dValue) EndFeed = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.TIPFEED, dValue) TipFeed = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.OFFSR, dValue) OffSr = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.OFFSL, dValue) OffSl = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.SIDEANGLE, dValue) SideAngle = DoubleToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.APPROX, dValue) Approx = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.STARTPOS, dValue) StartPos = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.STARTSLOWLEN, dValue) StartSlowLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.ENDSLOWLEN, dValue) EndSlowLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.THROUADDLEN, dValue) ThrouAddLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.STEP_, dValue) StepPar = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.RETURNPOS, dValue) ReturnPos = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.OVERL, dValue) OverLap = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.TABLEN, dValue) TabLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.TABDIST, dValue) TabDist = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.TABHEIGHT, dValue) TabHeight = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.TABANGLE, dValue) TabAngle = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LITANG, dValue) LiTang = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LIPERP, dValue) LiPerp = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LIELEV, dValue) LiElev = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LICOMPLEN, dValue) LiCompLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LOTANG, dValue) LoTang = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LOPERP, dValue) LoPerp = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LOELEV, dValue) LoElev = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.LOCOMPLEN, dValue) LoCompLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.STARTADDLEN, dValue) StartAddLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.ENDADDLEN, dValue) EndAddLen = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.STEPEXTARC, dValue) StepExtArc = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.STEPINTARC, dValue) StepIntArc = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.SIDESTEP, dValue) SideStep = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.VERTFEED, dValue) VertFeed = LenToString(dValue, 4) EgtMdbGetCurrMachiningParam(MCH_MP.DEPTH_STR, DepthStr) EgtMdbGetCurrMachiningParam(MCH_MP.UUID, m_Uuid) EgtMdbGetCurrMachiningParam(MCH_MP.USERNOTES, UserNotes) EgtMdbGetCurrMachiningParam(MCH_MP.INITANGS, InitAngs) EgtMdbGetCurrMachiningParam(MCH_MP.BLOCKEDAXIS, BlockedAxis) End Sub Friend Sub ReadMachiningName() EgtMdbGetCurrMachiningParam(MCH_MP.NAME, NamePar) End Sub Private Sub ReadSelectedTool() ReadTool = True Dim sValue As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.TUUID, sValue) Dim sToolName As String = String.Empty EgtTdbGetToolFromUUID(sValue, sToolName) Dim sMachToolName As String = String.Empty EgtMdbGetCurrMachiningParam(MCH_MP.TOOL, sMachToolName) If sToolName <> sMachToolName Then EgtMdbSetCurrMachiningParam(MCH_MP.TOOL, sToolName) EgtMdbSaveCurrMachining() End If If IsNothing(m_ToolList) Then Dim i As Integer = ToolList.Count() End If Dim bFound As Boolean = False For i = 0 To m_ToolList.Count - 1 If m_ToolList(i) = sToolName Then bFound = True SelectedTool = i End If Next If Not bFound Then SelectedTool = -1 End If ReadTool = False End Sub Friend Sub WriteMachiningParam() EgtSetCurrentContext(IniFile.m_ProjectSceneContext) Dim nValue As Integer = 0 Dim dValue As Double = 0 EgtMdbSetCurrMachiningParam(MCH_MP.INVERT, Invert) EgtMdbSetCurrMachiningParam(MCH_MP.LEAVETAB, LeaveTab) EgtMdbSetCurrMachiningParam(MCH_MP.TOOLINVERT, InvertToolDir) EgtMdbSetCurrMachiningParam(MCH_MP.TYPE, Type) nValue = If(IsNothing(WorkSideList), m_SelectedWorkSide, IdNameStruct.IdFromInd(m_SelectedWorkSide, WorkSideList)) EgtMdbSetCurrMachiningParam(MCH_MP.WORKSIDE, nValue) nValue = If(IsNothing(HeadSideList), m_SelectedHeadSide, IdNameStruct.IdFromInd(m_SelectedHeadSide, HeadSideList)) EgtMdbSetCurrMachiningParam(MCH_MP.HEADSIDE, nValue) EgtMdbSetCurrMachiningParam(MCH_MP.LEADINTYPE, SelectedLeadInType) EgtMdbSetCurrMachiningParam(MCH_MP.EXTLINKTYPE, SelectedExtLinkType) nValue = If(IsNothing(LeadOutTypeList), m_SelectedLeadOutType, IdNameStruct.IdFromInd(m_SelectedLeadOutType, LeadOutTypeList)) EgtMdbSetCurrMachiningParam(MCH_MP.LEADOUTTYPE, nValue) EgtMdbSetCurrMachiningParam(MCH_MP.CURVEUSE, SelectedCurveUse) EgtMdbSetCurrMachiningParam(MCH_MP.STEPTYPE, SelectedStepType) nValue = If(IsNothing(SubTypeList), m_SelectedSubType, IdNameStruct.IdFromInd(m_SelectedSubType, SubTypeList)) EgtMdbSetCurrMachiningParam(MCH_MP.SUBTYPE, nValue) EgtMdbSetCurrMachiningParam(MCH_MP.LEADLINKTYPE, SelectedLeadLinkType) nValue = If(IsNothing(FaceUseTypeList), m_SelectedFaceUseType, IdNameStruct.IdFromInd(m_SelectedFaceUseType, FaceUseTypeList)) EgtMdbSetCurrMachiningParam(MCH_MP.FACEUSE, nValue) nValue = If(IsNothing(SolChoiceTypeList), m_SelectedSolChoiceType, IdNameStruct.IdFromInd(m_SelectedSolChoiceType, SolChoiceTypeList)) EgtMdbSetCurrMachiningParam(MCH_MP.SOLCHOICETYPE, nValue) StringToDouble(Speed, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.SPEED, dValue) StringToLen(Feed, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.FEED, dValue) StringToLen(StartFeed, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.STARTFEED, dValue) StringToLen(EndFeed, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.ENDFEED, dValue) StringToLen(TipFeed, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.TIPFEED, dValue) StringToLen(OffSr, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.OFFSR, dValue) StringToLen(OffSl, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.OFFSL, dValue) StringToDouble(SideAngle, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.SIDEANGLE, dValue) StringToLen(Approx, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.APPROX, dValue) StringToLen(StartPos, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.STARTPOS, dValue) StringToLen(StartSlowLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.STARTSLOWLEN, dValue) StringToLen(EndSlowLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.ENDSLOWLEN, dValue) StringToLen(ThrouAddLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.THROUADDLEN, dValue) StringToLen(StepPar, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.STEP_, dValue) StringToLen(ReturnPos, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.RETURNPOS, dValue) StringToLen(OverLap, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.OVERL, dValue) StringToLen(TabLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.TABLEN, dValue) StringToLen(TabDist, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.TABDIST, dValue) StringToLen(TabHeight, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.TABHEIGHT, dValue) StringToLen(TabAngle, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.TABANGLE, dValue) StringToLen(LiTang, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LITANG, dValue) StringToLen(LiPerp, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LIPERP, dValue) StringToLen(LiElev, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LIELEV, dValue) StringToLen(LiCompLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LICOMPLEN, dValue) StringToLen(LoTang, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LOTANG, dValue) StringToLen(LoPerp, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LOPERP, dValue) StringToLen(LoElev, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LOELEV, dValue) StringToLen(LoCompLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.LOCOMPLEN, dValue) StringToLen(StartAddLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.STARTADDLEN, dValue) StringToLen(EndAddLen, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.ENDADDLEN, dValue) StringToLen(StepExtArc, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.STEPEXTARC, dValue) StringToLen(StepIntArc, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.STEPINTARC, dValue) StringToLen(SideStep, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.SIDESTEP, dValue) StringToLen(VertFeed, dValue) EgtMdbSetCurrMachiningParam(MCH_MP.VERTFEED, dValue) If SelectedTool >= 0 Then EgtMdbSetCurrMachiningParam(MCH_MP.TOOL, m_ToolList(SelectedTool)) Else EgtMdbSetCurrMachiningParam(MCH_MP.TOOL, "") End If EgtMdbSetCurrMachiningParam(MCH_MP.DEPTH_STR, DepthStr) EgtMdbSetCurrMachiningParam(MCH_MP.USERNOTES, UserNotes) EgtMdbSetCurrMachiningParam(MCH_MP.INITANGS, InitAngs) EgtMdbSetCurrMachiningParam(MCH_MP.BLOCKEDAXIS, BlockedAxis) End Sub Public Sub WriteMachiningName() EgtMdbSetCurrMachiningParam(MCH_MP.NAME, NamePar) End Sub #End Region ' Methods #Region "Validation" Private m_NameError As String Public ReadOnly Property NameErrorMsg As String Get Return m_NameError End Get End Property Private m_SpeedError As String Public ReadOnly Property SpeedErrorMsg As String Get Return m_SpeedError End Get End Property Private Function GetValidationError(ByVal propertyName As String) As Boolean Dim bOk As Boolean = True Select Case propertyName Case "NamePar" bOk = Me.ValidateName() Case "Speed" bOk = Me.ValidateSpeed() End Select Return bOk End Function Private Function GetErrorString(propertyName As String) As String Select Case propertyName Case "NamePar" Return m_NameError Case "Speed" Return m_SpeedError End Select Return String.Empty End Function ''' ''' Returns true if this object has no validation errors. ''' Public ReadOnly Property IsValid() As Boolean Get For Each [property] As String In ValidatedProperties If Not String.IsNullOrEmpty(GetErrorString([property])) Then Return False End If Next [property] Return True End Get End Property Public ReadOnly Property IsModified() As Boolean Get Return m_IsModifiedInvert OrElse m_IsModifiedLeaveTab OrElse m_IsModifiedToolInvert OrElse m_IsModifiedSelectedWorkSide OrElse m_IsModifiedSelectedHeadSide OrElse m_IsModifiedSelectedLeadInType OrElse m_IsModifiedSelectedExtLinkType OrElse m_IsModifiedSelectedLeadOutType OrElse m_IsModifiedSelectedCurveUse OrElse m_IsModifiedSelectedStepType OrElse m_IsModifiedSelectedSubType OrElse m_IsModifiedSelectedLeadLinkType OrElse m_IsModifiedSelectedFaceUseType OrElse m_IsModifiedSelectedSolChoiceType OrElse m_IsModifiedSpeed OrElse m_IsModifiedFeed OrElse m_IsModifiedStartFeed OrElse m_IsModifiedEndFeed OrElse m_IsModifiedTipFeed OrElse m_IsModifiedOffSr OrElse m_IsModifiedOffSl OrElse m_IsModifiedSideAngle OrElse m_IsModifiedApprox OrElse m_IsModifiedStartPos OrElse m_IsModifiedStartSlowLen OrElse m_IsModifiedEndSlowLen OrElse m_IsModifiedThrouAddLen OrElse m_IsModifiedStepPar OrElse m_IsModifiedReturnPos OrElse m_IsModifiedTabLen OrElse m_IsModifiedTabDist OrElse m_IsModifiedTabHeight OrElse m_IsModifiedTabAngle OrElse m_IsModifiedLiTang OrElse m_IsModifiedLiPerp OrElse m_IsModifiedLiElev OrElse m_IsModifiedLiCompLen OrElse m_IsModifiedLoTang OrElse m_IsModifiedLoPerp OrElse m_IsModifiedLoElev OrElse m_IsModifiedLoCompLen OrElse m_IsModifiedStartAddLen OrElse m_IsModifiedEndAddLen OrElse m_IsModifiedStepExtArc OrElse m_IsModifiedStepIntArc OrElse m_IsModifiedSideStep OrElse m_IsModifiedVertFeed OrElse m_IsModifiedName OrElse m_IsModifiedSelectedTool OrElse m_IsModifiedDepthStr OrElse m_IsModifiedUserNotes OrElse m_IsModifiedOverLap OrElse m_IsModifiedInitAngs OrElse m_IsModifiedBlockedAxis End Get End Property Public Sub IsModifiedReset() m_IsModifiedInvert = False m_IsModifiedLeaveTab = False m_IsModifiedToolInvert = False m_IsModifiedSelectedWorkSide = False m_IsModifiedSelectedHeadSide = False m_IsModifiedSelectedLeadInType = False m_IsModifiedSelectedExtLinkType = False m_IsModifiedSelectedLeadOutType = False m_IsModifiedSelectedCurveUse = False m_IsModifiedSelectedStepType = False m_IsModifiedSelectedSubType = False m_IsModifiedSelectedLeadLinkType = False m_IsModifiedSelectedFaceUseType = False m_IsModifiedSelectedSolChoiceType = False m_IsModifiedSpeed = False m_IsModifiedFeed = False m_IsModifiedStartFeed = False m_IsModifiedEndFeed = False m_IsModifiedTipFeed = False m_IsModifiedOffSr = False m_IsModifiedOffSl = False m_IsModifiedSideAngle = False m_IsModifiedApprox = False m_IsModifiedStartPos = False m_IsModifiedStartSlowLen = False m_IsModifiedEndSlowLen = False m_IsModifiedThrouAddLen = False m_IsModifiedStepPar = False m_IsModifiedReturnPos = False m_IsModifiedTabLen = False m_IsModifiedTabDist = False m_IsModifiedTabHeight = False m_IsModifiedTabAngle = False m_IsModifiedLiTang = False m_IsModifiedLiPerp = False m_IsModifiedLiElev = False m_IsModifiedLiCompLen = False m_IsModifiedLoTang = False m_IsModifiedLoPerp = False m_IsModifiedLoElev = False m_IsModifiedLoCompLen = False m_IsModifiedStartAddLen = False m_IsModifiedEndAddLen = False m_IsModifiedStepExtArc = False m_IsModifiedStepIntArc = False m_IsModifiedSideStep = False m_IsModifiedVertFeed = False m_IsModifiedName = False m_IsModifiedSelectedTool = False m_IsModifiedDepthStr = False m_IsModifiedUserNotes = False m_IsModifiedOverLap = False m_IsModifiedInitAngs = False m_IsModifiedBlockedAxis = False End Sub Private Shared ReadOnly ValidatedProperties() As String = {"Speed", "NamePar"} Private Function ValidateName() As Boolean m_NameError = String.Empty Select Case nErrorMachiningName Case 1 m_NameError = EgtMsg(MSG_MACHININGSERRORS + 2) Case 2 m_NameError = EgtMsg(MSG_MACHININGSERRORS + 3) End Select NotifyPropertyChanged("NameErrorMsg") If String.IsNullOrEmpty(m_NameError) Then Return True Else Return False End If End Function Private Function ValidateSpeed() As Boolean m_SpeedError = String.Empty If SelectedTool >= 0 Then If Not IsNothing(m_Speed) And m_ToolList.Count >= SelectedTool + 1 Then Dim dSpeed As Double = 0 StringToDouble(m_Speed, dSpeed) Dim dMaxSpeed As Double = 0 EgtTdbSetCurrTool(m_ToolList(SelectedTool)) EgtTdbGetCurrToolParam(MCH_TP.MAXSPEED, dMaxSpeed) If Math.Abs(dSpeed) > dMaxSpeed + EPS_ZERO Then m_SpeedError = EgtMsg(MSG_TOOLSERRORS + 11) End If End If End If NotifyPropertyChanged("SpeedErrorMsg") If String.IsNullOrEmpty(m_SpeedError) Then Return True Else Return False End If End Function #End Region ' Validation End Class ''' ''' Class that represent a Converter that use machining type and param type, to set the visibility state of the param type. ''' Public Class MachiningParamVisibilityConverter Implements IValueConverter Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert Select Case CInt(value) Case MCH_MY.NONE Return Visibility.Hidden Case MCH_MY.DRILLING Return TMDbParamVisibility.Drilling(CInt(parameter)) Case MCH_MY.SAWING Return TMDbParamVisibility.Sawing(CInt(parameter)) Case MCH_MY.MILLING Return TMDbParamVisibility.Milling(CInt(parameter)) Case MCH_MY.POCKETING Return TMDbParamVisibility.Pocketing(CInt(parameter)) Case MCH_MY.MORTISING Return TMDbParamVisibility.Mortising(CInt(parameter)) Case MCH_MY.SAWROUGHING Return TMDbParamVisibility.Sawroughing(CInt(parameter)) Case MCH_MY.SAWFINISHING Return TMDbParamVisibility.Sawfinishing(CInt(parameter)) Case MCH_MY.GENMACHINING Return TMDbParamVisibility.GenMachining(CInt(parameter)) Case MCH_MY.CHISELING Return TMDbParamVisibility.Chiseling(CInt(parameter)) Case Else Return Visibility.Hidden End Select End Function Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack Throw New NotImplementedException End Function End Class Public Class ErrorVisibilityConverter Implements IValueConverter Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert If String.IsNullOrEmpty(CStr(value)) Then Return Visibility.Collapsed Else Return Visibility.Visible End If End Function Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack Throw New NotImplementedException End Function End Class