diff --git a/Constants/ConstMsg.vb b/Constants/ConstMsg.vb index 55cd1d1..b962750 100644 --- a/Constants/ConstMsg.vb +++ b/Constants/ConstMsg.vb @@ -9,31 +9,11 @@ Public Const MSG_DRAWPANEL As Integer = MSG_EGTCAM5 + 200 Public Const MSG_GRIDVIEWPANEL As Integer = MSG_EGTCAM5 + 250 Public Const MSG_SIMULATION As Integer = MSG_EGTCAM5 + 300 + Public Const MSG_OPERATION As Integer = MSG_EGTCAM5 + 400 Public Const MSG_TOOLSDBPAGE As Integer = MSG_EGTCAM5 + 1000 Public Const MSG_TOOLSERRORS As Integer = MSG_EGTCAM5 + 1100 Public Const MSG_MACHININGSDBPAGE As Integer = MSG_EGTCAM5 + 1200 Public Const MSG_MACHININGSERRORS As Integer = MSG_EGTCAM5 + 1320 Public Const MSG_MISSINGKEYWD As Integer = 10100 - 'Public Const MSG_CADCUTPAGEUC As Integer = MSG_OMAGCUT + 300 - 'Public Const MSG_NESTPAGEUC As Integer = MSG_OMAGCUT + 330 - 'Public Const MSG_SPLITPAGEUC As Integer = MSG_OMAGCUT + 340 - 'Public Const MSG_MOVERAWPAGEUC As Integer = MSG_OMAGCUT + 360 - 'Public Const MSG_DRAWPAGEUC As Integer = MSG_OMAGCUT + 380 - 'Public Const MSG_COMPONENTPAGEUC As Integer = MSG_OMAGCUT + 400 - 'Public Const MSG_IMPORTPAGEUC As Integer = MSG_OMAGCUT + 450 - 'Public Const MSG_OPENPAGEUC As Integer = MSG_OMAGCUT + 490 - 'Public Const MSG_RAWPARTPAGEUC As Integer = MSG_OMAGCUT + 500 - 'Public Const MSG_CHOOSEMACHININGPAGEUC As Integer = MSG_OMAGCUT + 535 - 'Public Const MSG_SIMULATIONPAGEUC As Integer = MSG_OMAGCUT + 550 - 'Public Const MSG_FRAMECUTPAGEUC As Integer = MSG_OMAGCUT + 600 - 'Public Const MSG_MACHINEPAGEUC As Integer = MSG_OMAGCUT + 700 - 'Public Const MSG_TOOLSDBPAGEUC As Integer = MSG_OMAGCUT + 720 - 'Public Const MSG_MACHININGSDBPAGEUC As Integer = MSG_OMAGCUT + 760 - 'Public Const MSG_COMBOBOXPARAM As Integer = MSG_OMAGCUT + 800 - 'Public Const MSG_ALARMSPAGEUC As Integer = MSG_OMAGCUT + 900 - 'Public Const MSG_MACHINECNPAGEUC As Integer = MSG_OMAGCUT + 930 - 'Public Const MSG_OPTIONSPAGEUC As Integer = MSG_OMAGCUT + 950 - 'Public Const MSG_EGTMSGBOX As Integer = MSG_OMAGCUT + 1100 - 'Public Const MSG_CSVPAGEUC As Integer = MSG_OMAGCUT + 1200 End Module diff --git a/EgtCAM5.vbproj b/EgtCAM5.vbproj index 97caa1a..5c3baa3 100644 --- a/EgtCAM5.vbproj +++ b/EgtCAM5.vbproj @@ -129,6 +129,7 @@ + DbPanelView.xaml @@ -142,7 +143,6 @@ MachiningsDbView.xaml - diff --git a/MachiningsDbWindow/MachiningTreeView2.vb b/MachiningsDbWindow/MachiningTreeView2.vb new file mode 100644 index 0000000..7490796 --- /dev/null +++ b/MachiningsDbWindow/MachiningTreeView2.vb @@ -0,0 +1,1813 @@ +Imports System.Collections.ObjectModel +Imports System.ComponentModel +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 ParentItem + + ''' + ''' 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 + 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 ChildItem + Implements IDataErrorInfo + +#Region "Machining Property" + + Private m_ErrorOnMachining As Boolean + Public Property ErrorOnMachining As Boolean + Get + Return m_ErrorOnMachining + End Get + Set(value As Boolean) + If IsValid Then + m_ErrorOnMachining = False + Application.Msn.NotifyColleagues(Application.ERRORONMACHINING, Nothing) + Else + m_ErrorOnMachining = True + Application.Msn.NotifyColleagues(Application.ERRORONMACHINING, Me) + End If + End Set + End 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") + Else + WriteMachiningParam() + If EgtMdbIsCurrMachiningModified() Or m_IsModifiedName Or Me.NewMachining Then + Select Case MsgBox(EgtMsg(MSG_MACHININGSERRORS + 30), MsgBoxStyle.YesNo, EgtMsg(MSG_MACHININGSERRORS + 31)) + Case MsgBoxResult.Yes + m_NewMachining = False + m_Name = m_Name.Trim() + WriteMachiningName() + EgtMdbSaveCurrMachining() + 'EgtMdbSave() + Case MsgBoxResult.No + If m_NewMachining Then + Application.Msn.NotifyColleagues(Application.REMOVEMACHINING, 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) + 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) + NotifyPropertyChanged("LeaveTab") + 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 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))}) + Public ReadOnly Property WorkSideList As ObservableCollection(Of IdNameStruct) + Get + 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 IdNameStruct.SearchFromId(m_SelectedWorkSide, WorkSideList) + End Get + Set(value As Integer) + If value <> m_SelectedWorkSide Then + If Not IsNothing(WorkSideList) Then + m_SelectedWorkSide = IdNameStruct.SearchToId(value, WorkSideList) + Dim DbWorkSide As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.WORKSIDE, DbWorkSide) + m_IsModifiedSelectedWorkSide = If(value <> DbWorkSide, True, False) + 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 IdNameStruct.SearchFromId(m_SelectedHeadSide, HeadSideList) + End Get + Set(value As Integer) + If value <> m_SelectedHeadSide Then + If Not IsNothing(HeadSideList) Then + m_SelectedHeadSide = IdNameStruct.SearchToId(value, HeadSideList) + Dim DbHeadSide As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.HEADSIDE, DbHeadSide) + m_IsModifiedSelectedHeadSide = If(value <> DbHeadSide, True, False) + 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 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.SearchFromId(m_SelectedLeadInType, LeadInTypeList) + End Get + Set(value As Integer) + If value <> m_SelectedLeadInType Then + If Not IsNothing(LeadInTypeList) Then + m_SelectedLeadInType = IdNameStruct.SearchToId(value, LeadInTypeList) + Dim DbLeadInType As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.LEADINTYPE, DbLeadInType) + m_IsModifiedSelectedLeadInType = If(value <> DbLeadInType, True, False) + 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.SearchFromId(m_SelectedExtLinkType, ExtLinkTypeList) + End Get + Set(value As Integer) + If value <> m_SelectedExtLinkType Then + If Not IsNothing(ExtLinkTypeList) Then + m_SelectedExtLinkType = IdNameStruct.SearchToId(value, ExtLinkTypeList) + Dim DbExtLinkType As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.EXTLINKTYPE, DbExtLinkType) + m_IsModifiedSelectedExtLinkType = If(value <> DbExtLinkType, True, False) + 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.EXT, EgtMsg(MSG_MACHININGSDBPAGE + 123))}) + 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 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 IdNameStruct.SearchFromId(m_SelectedLeadOutType, LeadOutTypeList) + End Get + Set(value As Integer) + If value <> m_SelectedLeadOutType Then + If Not IsNothing(LeadOutTypeList) Then + m_SelectedLeadOutType = IdNameStruct.SearchToId(value, LeadOutTypeList) + Dim DbLeadOutType As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.LEADOUTTYPE, DbLeadOutType) + m_IsModifiedSelectedLeadOutType = If(value <> DbLeadOutType, True, False) + NotifyPropertyChanged("SelectedLeadOutType") + End If + End If + End Set + End Property + + 'ObservableCollection che contiene le variabili per il combobox CurveUse + Private m_CurveUseList As 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))}) + Public ReadOnly Property CurveUseList As ObservableCollection(Of IdNameStruct) + Get + 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.SearchFromId(m_SelectedCurveUse, CurveUseList) + End Get + Set(value As Integer) + If value <> m_SelectedCurveUse Then + If Not IsNothing(CurveUseList) Then + m_SelectedCurveUse = IdNameStruct.SearchToId(value, CurveUseList) + Dim DbCurveUse As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.CURVEUSE, DbCurveUse) + m_IsModifiedSelectedCurveUse = If(value <> DbCurveUse, True, False) + 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.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.SearchFromId(m_SelectedStepType, StepTypeList) + End Get + Set(value As Integer) + If value <> m_SelectedStepType Then + If Not IsNothing(StepTypeList) Then + m_SelectedStepType = IdNameStruct.SearchToId(value, StepTypeList) + Dim DbStepType As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.CURVEUSE, DbStepType) + m_IsModifiedSelectedStepType = If(value <> DbStepType, True, False) + 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.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.DRILLING + m_SubTypeList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(0, "Prova 1"), New IdNameStruct(1, "Prova 2")}) + 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 IdNameStruct.SearchFromId(m_SelectedSubType, SubTypeList) + End Get + Set(value As Integer) + If value <> m_SelectedSubType Then + If Not IsNothing(SubTypeList) Then + m_SelectedSubType = IdNameStruct.SearchToId(value, SubTypeList) + Dim DbSubType As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.SUBTYPE, DbSubType) + m_IsModifiedSelectedSubType = If(value <> DbSubType, True, False) + 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.SearchFromId(m_SelectedLeadLinkType, LeadLinkTypeList) + End Get + Set(value As Integer) + If value <> m_SelectedLeadLinkType Then + If Not IsNothing(LeadLinkTypeList) Then + m_SelectedLeadLinkType = IdNameStruct.SearchToId(value, LeadLinkTypeList) + Dim DbLeadLinkType As Integer = 0 + EgtMdbGetCurrMachiningParam(MCH_MP.LEADLINKTYPE, DbLeadLinkType) + m_IsModifiedSelectedLeadLinkType = If(value <> DbLeadLinkType, True, False) + NotifyPropertyChanged("SelectedLeadLinkType") + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + NotifyPropertyChanged("ReturnPos") + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 bErrorMachiningName As Boolean = False + 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 + bErrorMachiningName = False + 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 + bErrorMachiningName = 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 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 ToolList.Add(ToolName) + While EgtTdbGetNextTool(ToolType, ToolName, nType) + If nType = ToolType Then ToolList.Add(ToolName) + End While + End If + End Sub + + 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(ToolList(value) <> DbSelectedTool, True, False) + End If + NotifyPropertyChanged("SelectedTool") + NotifyPropertyChanged("Speed") + NotifyPropertyChanged("Feed") + NotifyPropertyChanged("StartFeed") + NotifyPropertyChanged("EndFeed") + NotifyPropertyChanged("TipFeed") + NotifyPropertyChanged("OffSr") + NotifyPropertyChanged("OffSl") + 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_IsModifiedVertFeed = If(value <> DbDepthStr, True, False) + NotifyPropertyChanged("DepthStr") + End If + End Set + 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) + NotifyPropertyChanged("UserNotes") + End If + End Set + End Property + + Private m_IsModifiedOverLapStr As Boolean = False + Private m_OverLapStr As String + ''' + ''' Property that read and write to the Machining's database the Over Lap Str + ''' + Public Property OverLapStr As String + Get + Return m_OverLapStr + End Get + Set(value As String) + If value = String.Empty Or value <> m_OverLapStr Then + m_OverLapStr = value + Dim DbOverLapStr As String = String.Empty + EgtMdbGetCurrMachiningParam(MCH_MP.OVERLAP_STR, DbOverLapStr) + m_IsModifiedOverLapStr = If(value <> DbOverLapStr, True, False) + NotifyPropertyChanged("OverLapStr") + End If + End Set + End Property + + Private m_IsModifiedOffsetStr As Boolean = False + Private m_OffsetStr As String + ''' + ''' Property that read and write to the Machining's database the Offset Str + ''' + Public Property OffsetStr As String + Get + Return m_OffsetStr + End Get + Set(value As String) + If value = String.Empty Or value <> m_OffsetStr Then + m_OffsetStr = value + Dim DbOffsetStr As String = String.Empty + EgtMdbGetCurrMachiningParam(MCH_MP.OFFSET_STR, DbOffsetStr) + m_IsModifiedOffsetStr = If(value <> DbOffsetStr, True, False) + NotifyPropertyChanged("OffsetStr") + 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 + EgtMdbGetCurrMachiningParam(MCH_MP.INVERT, Invert) + EgtMdbGetCurrMachiningParam(MCH_MP.LEAVETAB, LeaveTab) + EgtMdbGetCurrMachiningParam(MCH_MP.WORKSIDE, nValue) + SelectedWorkSide = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.HEADSIDE, nValue) + SelectedHeadSide = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.LEADINTYPE, nValue) + SelectedLeadInType = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.EXTLINKTYPE, nValue) + SelectedExtLinkType = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.LEADOUTTYPE, nValue) + SelectedLeadOutType = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.CURVEUSE, nValue) + SelectedCurveUse = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.STEPTYPE, nValue) + SelectedStepType = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.SUBTYPE, nValue) + SelectedSubType = nValue + EgtMdbGetCurrMachiningParam(MCH_MP.LEADLINKTYPE, nValue) + SelectedLeadLinkType = nValue + 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.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.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 + Dim bFound As Boolean = False + For i = 0 To ToolList.Count - 1 + If ToolList(i) = sToolName Then + bFound = True + SelectedTool = i + End If + Next + If Not bFound Then + SelectedTool = -1 + End If + EgtMdbGetCurrMachiningParam(MCH_MP.USERNOTES, UserNotes) + EgtMdbGetCurrMachiningParam(MCH_MP.OVERLAP_STR, OverLapStr) + EgtMdbGetCurrMachiningParam(MCH_MP.OFFSET_STR, OffsetStr) + End Sub + + Friend Sub WriteMachiningParam() + EgtSetCurrentContext(IniFile.m_ProjectSceneContext) + Dim dValue As Double = 0 + EgtMdbSetCurrMachiningParam(MCH_MP.INVERT, Invert) + EgtMdbSetCurrMachiningParam(MCH_MP.LEAVETAB, LeaveTab) + EgtMdbSetCurrMachiningParam(MCH_MP.TYPE, Type) + EgtMdbSetCurrMachiningParam(MCH_MP.WORKSIDE, SelectedWorkSide) + EgtMdbSetCurrMachiningParam(MCH_MP.HEADSIDE, SelectedHeadSide) + EgtMdbSetCurrMachiningParam(MCH_MP.LEADINTYPE, SelectedLeadInType) + EgtMdbSetCurrMachiningParam(MCH_MP.EXTLINKTYPE, SelectedExtLinkType) + EgtMdbSetCurrMachiningParam(MCH_MP.LEADOUTTYPE, SelectedLeadOutType) + EgtMdbSetCurrMachiningParam(MCH_MP.CURVEUSE, SelectedCurveUse) + EgtMdbSetCurrMachiningParam(MCH_MP.STEPTYPE, SelectedStepType) + EgtMdbSetCurrMachiningParam(MCH_MP.SUBTYPE, SelectedSubType) + EgtMdbSetCurrMachiningParam(MCH_MP.LEADLINKTYPE, SelectedLeadLinkType) + 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(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) + EgtMdbSetCurrMachiningParam(MCH_MP.TOOL, ToolList(SelectedTool)) + EgtMdbSetCurrMachiningParam(MCH_MP.DEPTH_STR, DepthStr) + EgtMdbSetCurrMachiningParam(MCH_MP.USERNOTES, UserNotes) + EgtMdbSetCurrMachiningParam(MCH_MP.OVERLAP_STR, OverLapStr) + EgtMdbSetCurrMachiningParam(MCH_MP.OFFSET_STR, OffsetStr) + End Sub + + Public Sub WriteMachiningName() + EgtMdbSetCurrMachiningParam(MCH_MP.NAME, NamePar) + End Sub + +#End Region ' Methods + +#Region "IDataErrorInfo Members" + + Private ReadOnly Property IDataErrorInfo_Error() As String Implements IDataErrorInfo.Error + Get + Return Nothing + End Get + End Property + + Public ReadOnly Property IDataErrorInfo_Item(ByVal propertyName As String) As String Implements IDataErrorInfo.Item + Get + ErrorOnMachining = True + Return Me.GetValidationError(propertyName) + End Get + End Property + +#End Region ' IDataErrorInfo Members + +#Region "Validation" + + ''' + ''' Returns true if this object has no validation errors. + ''' + Public ReadOnly Property IsValid() As Boolean + Get + For Each [property] As String In ValidatedProperties + If GetValidationError([property]) IsNot Nothing 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_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_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_IsModifiedOverLapStr OrElse m_IsModifiedOffsetStr + End Get + End Property + + Public Sub IsModifiedReset() + m_IsModifiedInvert = False + m_IsModifiedLeaveTab = 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_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_IsModifiedOverLapStr = False + m_IsModifiedOffsetStr = False + End Sub + + Private Shared ReadOnly ValidatedProperties() As String = {"Speed", "NamePar"} + + Private Function GetValidationError(ByVal propertyName As String) As String + If Array.IndexOf(ValidatedProperties, propertyName) < 0 Then + Return Nothing + End If + + Dim [error] As String = Nothing + + Select Case propertyName + Case "Speed" + [error] = Me.ValidateSpeed() + Case "NamePar" + [error] = Me.ValidateName() + + Case Else + 'Debug.Fail("Unexpected property being validated on Tool: " & propertyName) + End Select + Return [error] + End Function + + Private Function ValidateSpeed() As String + If SelectedTool >= 0 Then + If Not IsNothing(m_Speed) Then + Dim dSpeed As Double = 0 + StringToDouble(m_Speed, dSpeed) + Dim dMaxSpeed As Double = 0 + EgtTdbSetCurrTool(ToolList(SelectedTool)) + EgtTdbGetCurrToolParam(MCH_TP.MAXSPEED, dMaxSpeed) + If Math.Abs(dSpeed) > dMaxSpeed + EPS_ZERO Then + Return EgtMsg(MSG_TOOLSERRORS + 11) + End If + End If + End If + Return Nothing + End Function + + Private Function ValidateName() As String + If bErrorMachiningName Then + Return EgtMsg(MSG_MACHININGSERRORS + 2) + End If + Return Nothing + 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 SharedFieldsClass.Drilling(CInt(parameter)) + Case MCH_MY.SAWING + Return SharedFieldsClass.Sawing(CInt(parameter)) + Case MCH_MY.MILLING + Return SharedFieldsClass.Milling(CInt(parameter)) + Case MCH_MY.POCKETING + Return SharedFieldsClass.Pocketing(CInt(parameter)) + Case MCH_MY.MORTISING + Return SharedFieldsClass.Mortising(CInt(parameter)) + Case MCH_MY.SAWROUGHING + Return SharedFieldsClass.Sawroughing(CInt(parameter)) + Case MCH_MY.SAWFINISHING + Return SharedFieldsClass.Sawfinishing(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 \ No newline at end of file diff --git a/MachiningsDbWindow/MachiningsDbView.xaml b/MachiningsDbWindow/MachiningsDbView.xaml index 58561fc..0aa244a 100644 --- a/MachiningsDbWindow/MachiningsDbView.xaml +++ b/MachiningsDbWindow/MachiningsDbView.xaml @@ -2,13 +2,17 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" + xmlns:interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:local="clr-namespace:EgtCAM5" xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5" Title="{Binding Title}" Icon="/Resources/EgtCAM5.ico" TitleBarBrush="{StaticResource EgaltechBlue1}" BorderBrush="{StaticResource EgaltechBlue1}" WindowStyle="None" ResizeMode="NoResize" TitleBarHeight="30" IsMovable="False" IsResizable="False" - IsMinimizable="False" WindowStartupLocation="CenterScreen" ShowInTaskbar="False"> + IsMinimizable="False" WindowStartupLocation="CenterScreen" ShowInTaskbar="False" + CloseCommand="{Binding CloseMachiningsDbCommand,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" + CloseCommandParameter="{Binding Path=SelectedItem, ElementName=MachiningsTreeView}"> + @@ -1460,6 +1464,19 @@ + + + + + + + @@ -1514,15 +1531,16 @@ ConverterParameter={StaticResource Speed}}"/> - + UpdateSourceTrigger=PropertyChanged}"/> diff --git a/MachiningsDbWindow/MachiningsDbViewModel.vb b/MachiningsDbWindow/MachiningsDbViewModel.vb index a98160b..2805f6d 100644 --- a/MachiningsDbWindow/MachiningsDbViewModel.vb +++ b/MachiningsDbWindow/MachiningsDbViewModel.vb @@ -30,6 +30,7 @@ Namespace EgtCAM5 Private m_cmdNew As ICommand Private m_cmdSave As ICommand Private m_cmdRemove As ICommand + Private m_cmdCloseMachiningsDb As ICommand #Region "MESSAGES" @@ -494,8 +495,11 @@ Namespace EgtCAM5 MachiningFamily.Items.Add(NewMachiningItem) EgtMdbSaveCurrMachining() NewMachiningItem.NewMachining = True + ' Reimposto ll lavorazione vecchia nel Db per deselezionarla e fare le verifiche correttamente + EgtMdbSetCurrMachining(MachiningCopied.Name) + MachiningCopied.IsSelected = False + MachiningCopied.NotifyPropertyChanged("IsSelected") NewMachiningItem.IsSelected = True - NewMachiningItem.NotifyPropertyChanged("IsSelected") Exit For End If Next @@ -514,7 +518,8 @@ Namespace EgtCAM5 ' Verifico se sia selezionata una lavorazione ElseIf TypeOf param Is MachiningTreeViewItem Then ' Verifico che i parametri della lavorazione siano validi - Return DirectCast(param, MachiningTreeViewItem).IsValid + Dim SelectedMachining As MachiningTreeViewItem = DirectCast(param, MachiningTreeViewItem) + Return SelectedMachining.IsValid And Not SelectedMachining.IsModified Else Return False End If @@ -540,8 +545,14 @@ Namespace EgtCAM5 ''' Saves the current machining. This method is invoked by the SaveCommand. ''' Public Sub Save(ByVal param As Object) + Dim CurrMachining As MachiningTreeViewItem = DirectCast(param, MachiningTreeViewItem) + CurrMachining.WriteMachiningParam() + CurrMachining.m_Name = CurrMachining.m_Name.Trim() + CurrMachining.WriteMachiningName() EgtMdbSaveCurrMachining() - EgtMdbSave() + 'EgtMdbSave() + CurrMachining.NewMachining = False + CurrMachining.IsModifiedReset() End Sub ''' @@ -550,8 +561,9 @@ Namespace EgtCAM5 Private Function CanSave(ByVal param As Object) As Boolean ' Verifico che sia selezionata una lavorazione If TypeOf param Is MachiningTreeViewItem Then + Dim Machining As MachiningTreeViewItem = DirectCast(param, MachiningTreeViewItem) ' Verifico che i parametri della lavorazione siano validi - Return DirectCast(param, MachiningTreeViewItem).IsValid And EgtMdbIsCurrMachiningModified() + Return (Machining.IsValid And (Machining.IsModified Or Machining.NewMachining)) Else Return False End If @@ -609,6 +621,63 @@ Namespace EgtCAM5 #End Region ' RemoveCommand +#Region "CloseMachiningsDbCommand" + + ''' + ''' Returns a command that remove the current selected machining. + ''' + Public ReadOnly Property CloseMachiningsDbCommand() As ICommand + Get + If m_cmdCloseMachiningsDb Is Nothing Then + m_cmdCloseMachiningsDb = New RelayCommand(AddressOf CloseMachiningsDb) + End If + Return m_cmdCloseMachiningsDb + End Get + End Property + + ''' + ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand. + ''' + Public Sub CloseMachiningsDb(param As Object) + ' Verifico se sia selezionata una famiglia + If TypeOf param Is FamilyMachiningTreeViewItem Then + Return + ' Verifico se sia selezionata una lavorazione + ElseIf TypeOf param Is MachiningTreeViewItem Then + Dim CurrMachining As MachiningTreeViewItem = DirectCast(param, MachiningTreeViewItem) + If CurrMachining.IsValid Then + CurrMachining.WriteMachiningParam() + If EgtMdbIsCurrMachiningModified() Or CurrMachining.m_IsModifiedName Or CurrMachining.NewMachining Then + Select Case MsgBox(EgtMsg(MSG_MACHININGSERRORS + 30), MsgBoxStyle.YesNo, EgtMsg(MSG_MACHININGSERRORS + 31)) + Case MsgBoxResult.Yes + CurrMachining.NewMachining = False + CurrMachining.m_Name = CurrMachining.m_Name.Trim() + CurrMachining.WriteMachiningName() + EgtMdbSaveCurrMachining() + Case MsgBoxResult.No + If CurrMachining.NewMachining Then + Application.Msn.NotifyColleagues(Application.REMOVEMACHINING, Me) + ElseIf CurrMachining.m_IsModifiedName Then + Dim DbName As String = String.Empty + EgtMdbGetCurrMachiningParam(MCH_MP.NAME, DbName) + CurrMachining.NamePar = DbName + End If + End Select + End If + EgtMdbSave() + For Each Window In Application.Current.Windows + If TypeOf Window Is MachiningsDbView Then + Dim MachiningsDbWindow As MachiningsDbView = DirectCast(Window, MachiningsDbView) + MachiningsDbWindow.Close() + End If + Next + End If + End If + + End Sub + +#End Region ' CloseMachiningDbCommand + End Class End Namespace \ No newline at end of file diff --git a/ProjectPage/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderView.xaml b/ProjectPage/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderView.xaml index b96ad48..73b05f2 100644 --- a/ProjectPage/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderView.xaml +++ b/ProjectPage/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderView.xaml @@ -17,7 +17,7 @@ - + - + m_ParametersIsExpanded Then m_ParametersIsExpanded = value - OnPropertyChanged("ParametersIsExpanded") + If value Then + If m_CurrExpandedExpander = MachiningOptionPanelExpander.OPERATIONLIST Then + ListIsExpanded = False + ElseIf m_CurrExpandedExpander = MachiningOptionPanelExpander.SIMULATION Then + m_CurrExpandedExpander = MachiningOptionPanelExpander.OPERATIONPARAMETERS + Application.Msn.NotifyColleagues(Application.SIMULATIONEXPANDER_SET_ISEXPANDED, False) + End If + ParametersExpanderName = m_SelectedOperation.Name + m_CurrExpandedExpander = MachiningOptionPanelExpander.OPERATIONPARAMETERS + Else + If m_CurrExpandedExpander = MachiningOptionPanelExpander.OPERATIONLIST Then + ListIsExpanded = True + End If + ParametersExpanderName = String.Empty + End If + OnPropertyChanged("ParametersIsExpanded") End If End Set End Property + Private m_ParametersExpanderName As String + Public Property ParametersExpanderName As String + Get + If String.IsNullOrEmpty(m_ParametersExpanderName) Then + Return EgtMsg(MSG_OPERATION + 2) + Else + Return m_ParametersExpanderName + End If + End Get + Set(value As String) + If value <> m_ParametersExpanderName Then + m_ParametersExpanderName = value + End If + OnPropertyChanged("ParametersExpanderName") + End Set + End Property + Private m_IsEnabledOperationList As Boolean = True Public Property IsEnabledOperationList As Boolean Get @@ -377,9 +422,13 @@ Namespace EgtCAM5 NewMachining = bValue End Sub) Application.Msn.Register(Application.SIMULATIONEXPANDER_GET_ISEXPANDED, Sub(bValue As Boolean) - ListIsExpanded = Not bValue + If m_CurrExpandedExpander = MachiningOptionPanelExpander.SIMULATION Then + ListIsExpanded = True + End If If bValue Then + ListIsExpanded = False ParametersIsExpanded = False + m_CurrExpandedExpander = MachiningOptionPanelExpander.SIMULATION End If End Sub) End Sub diff --git a/ProjectPage/OptionPanel/MachiningOptionPanel/SimulationExpander/SimulationExpanderViewModel.vb b/ProjectPage/OptionPanel/MachiningOptionPanel/SimulationExpander/SimulationExpanderViewModel.vb index 28c25cd..7773e53 100644 --- a/ProjectPage/OptionPanel/MachiningOptionPanel/SimulationExpander/SimulationExpanderViewModel.vb +++ b/ProjectPage/OptionPanel/MachiningOptionPanel/SimulationExpander/SimulationExpanderViewModel.vb @@ -290,7 +290,7 @@ Namespace EgtCAM5 Public ReadOnly Property StepCommand As ICommand Get If m_cmdStep Is Nothing Then - m_cmdStep = New RelayCommand(AddressOf StepCmd, AddressOf CanStep) + m_cmdStep = New RelayCommand(AddressOf StepCmd) End If Return m_cmdStep End Get @@ -319,13 +319,6 @@ Namespace EgtCAM5 End If End Sub - ''' - ''' Returns true if the selected treeviewitem is valid for new tool creation. - ''' - Private Function CanStep(ByVal param As Object) As Boolean - Return True - End Function - #End Region ' StepCommand #Region "PlayPauseCommand" @@ -336,7 +329,7 @@ Namespace EgtCAM5 Public ReadOnly Property PlayPauseCommand As ICommand Get If m_cmdPlayPause Is Nothing Then - m_cmdPlayPause = New RelayCommand(AddressOf PlayPause, AddressOf CanPlayPause) + m_cmdPlayPause = New RelayCommand(AddressOf PlayPause) End If Return m_cmdPlayPause End Get @@ -373,12 +366,6 @@ Namespace EgtCAM5 End If End Sub - ''' - ''' Returns true if the selected treeviewitem is valid for new tool creation. - ''' - Private Function CanPlayPause(ByVal param As Object) As Boolean - Return True - End Function #End Region ' PlayPauseCommand @@ -390,7 +377,7 @@ Namespace EgtCAM5 Public ReadOnly Property StopCommand As ICommand Get If m_cmdStop Is Nothing Then - m_cmdStop = New RelayCommand(AddressOf StopCmd, AddressOf CanStop) + m_cmdStop = New RelayCommand(AddressOf StopCmd) End If Return m_cmdStop End Get @@ -416,12 +403,6 @@ Namespace EgtCAM5 m_nStatus = SIM_ST.ST_STOP End Sub - ''' - ''' Returns true if the selected treeviewitem is valid for new tool creation. - ''' - Private Function CanStop(ByVal param As Object) As Boolean - Return True - End Function #End Region ' StopCommand diff --git a/ToolsDbWindow/ToolTreeView2.vb b/ToolsDbWindow/ToolTreeView2.vb index 5182593..5ac6c1a 100644 --- a/ToolsDbWindow/ToolTreeView2.vb +++ b/ToolsDbWindow/ToolTreeView2.vb @@ -58,6 +58,8 @@ Public Class ToolTreeViewItem Inherits InheritableTreeViewItem Implements IDataErrorInfo +#Region "Machining Property" + ' Variabile che indica quando non lanciare l'update del disegno utensile ' (utile per evitare di rifare il disegno più volte quando vengono caricati i parametri alla selezione di un utensile) Private m_SuspendToolDrawUpdate As Boolean = False @@ -89,6 +91,9 @@ Public Class ToolTreeViewItem End Set End Property + ''' + ''' Property that determines if the Tool is selected or not + ''' Public Overrides Property IsSelected As Boolean Get Return m_IsSelected @@ -132,11 +137,6 @@ Public Class ToolTreeViewItem End Set End Property - Sub New(Name As String) - MyBase.New(Name) - Me.PictureString = "/Resources/TreeView/Folder.png" - End Sub - Private m_IsModifiedCorr As Boolean = False Private m_Corr As Integer ''' @@ -232,7 +232,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.CORNRAD, DbCornRad) StringToLen(value, dValue) - m_IsModifiedCornRad = If(dValue <> DbCornRad, True, False) + m_IsModifiedCornRad = Math.Abs(dValue - DbCornRad) > 10 * EPS_ANG_SMALL NotifyPropertyChanged("CornRad") End If End Set @@ -255,7 +255,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.DIAM, DbDiam) StringToLen(value, dValue) - m_IsModifiedDiam = If(dValue <> DbDiam, True, False) + m_IsModifiedDiam = Math.Abs(dValue - DbDiam) > 10 * EPS_ANG_SMALL If Not m_SuspendToolDrawUpdate Then UpdateSceneToolDraw(DrawUpdateSource.DIAM) End If @@ -281,7 +281,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.TOTDIAM, DbTotDiam) StringToLen(value, dValue) - m_IsModifiedTotDiam = If(dValue <> DbTotDiam, True, False) + m_IsModifiedTotDiam = Math.Abs(dValue - DbTotDiam) > 10 * EPS_SMALL NotifyPropertyChanged("TotDiam") End If End Set @@ -304,7 +304,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.FEED, DbFeed) StringToLen(value, dValue) - m_IsModifiedFeed = If(dValue <> DbFeed, True, False) + m_IsModifiedFeed = Math.Abs(dValue - DbFeed) > 10 * EPS_SMALL NotifyPropertyChanged("Feed") End If End Set @@ -327,7 +327,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.ENDFEED, DbEndFeed) StringToLen(value, dValue) - m_IsModifiedEndFeed = If(dValue <> DbEndFeed, True, False) + m_IsModifiedEndFeed = Math.Abs(dValue - DbEndFeed) > 10 * EPS_SMALL NotifyPropertyChanged("EndFeed") End If End Set @@ -350,7 +350,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.STARTFEED, DbStartFeed) StringToLen(value, dValue) - m_IsModifiedStartFeed = If(dValue <> DbStartFeed, True, False) + m_IsModifiedStartFeed = Math.Abs(dValue - DbStartFeed) > 10 * EPS_SMALL NotifyPropertyChanged("StartFeed") End If End Set @@ -373,7 +373,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.TIPFEED, DbTipFeed) StringToLen(value, dValue) - m_IsModifiedTipFeed = If(dValue <> DbTipFeed, True, False) + m_IsModifiedTipFeed = Math.Abs(dValue - DbTipFeed) > 10 * EPS_SMALL NotifyPropertyChanged("TipFeed") End If End Set @@ -396,7 +396,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.LEN, DbLen) StringToLen(value, dValue) - m_IsModifiedLen = If(dValue <> DbLen, True, False) + m_IsModifiedLen = Math.Abs(dValue - DbLen) > 10 * EPS_SMALL If Not m_SuspendToolDrawUpdate Then UpdateSceneToolDraw(DrawUpdateSource.LEN) End If @@ -422,7 +422,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.TOTLEN, DbTotLen) StringToLen(value, dValue) - m_IsModifiedTotLen = If(dValue <> DbTotLen, True, False) + m_IsModifiedTotLen = Math.Abs(dValue - DbTotLen) > 10 * EPS_SMALL If Not m_SuspendToolDrawUpdate Then UpdateSceneToolDraw(DrawUpdateSource.TOTLEN) End If @@ -448,7 +448,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, DbMaxMat) StringToLen(value, dValue) - m_IsModifiedMaxMat = If(dValue <> DbMaxMat, True, False) + m_IsModifiedMaxMat = Math.Abs(dValue - DbMaxMat) > 10 * EPS_SMALL If Not m_SuspendToolDrawUpdate Then UpdateSceneToolDraw(DrawUpdateSource.MAXMAT) End If @@ -474,7 +474,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.LONOFFSET, DbLonOffset) StringToLen(value, dValue) - m_IsModifiedLonOffset = If(dValue <> DbLonOffset, True, False) + m_IsModifiedLonOffset = Math.Abs(dValue - DbLonOffset) > 10 * EPS_SMALL NotifyPropertyChanged("LonOffset") End If End Set @@ -497,7 +497,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.RADOFFSET, DbRadOffset) StringToLen(value, dValue) - m_IsModifiedRadOffset = If(dValue <> DbRadOffset, True, False) + m_IsModifiedRadOffset = Math.Abs(dValue - DbRadOffset) > 10 * EPS_SMALL NotifyPropertyChanged("RadOffset") End If End Set @@ -519,8 +519,8 @@ Public Class ToolTreeViewItem Dim dValue As Double = 0 EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.SPEED, DbSpeed) - StringToLen(value, dValue) - m_IsModifiedSpeed = If(dValue <> DbSpeed, True, False) + StringToDouble(value, dValue) + m_IsModifiedSpeed = Math.Abs(dValue - DbSpeed) > 10 * EPS_ANG_SMALL NotifyPropertyChanged("Speed") NotifyPropertyChanged("MaxSpeed") End If @@ -544,7 +544,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.SIDEANG, DbSideAng) StringToLen(value, dValue) - m_IsModifiedSideAng = If(dValue <> DbSideAng, True, False) + m_IsModifiedSideAng = Math.Abs(dValue - DbSideAng) > 10 * EPS_ANG_SMALL NotifyPropertyChanged("SideAng") End If End Set @@ -567,7 +567,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.MAXSPEED, DbMaxSpeed) StringToLen(value, dValue) - m_IsModifiedMaxSpeed = If(dValue <> DbMaxSpeed, True, False) + m_IsModifiedMaxSpeed = Math.Abs(dValue - DbMaxSpeed) > 10 * EPS_ANG_SMALL NotifyPropertyChanged("Speed") NotifyPropertyChanged("MaxSpeed") End If @@ -591,7 +591,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.THICK, DbThick) StringToLen(value, dValue) - m_IsModifiedThick = If(dValue <> DbThick, True, False) + m_IsModifiedThick = Math.Abs(dValue - DbThick) > 10 * EPS_SMALL If Not m_SuspendToolDrawUpdate Then UpdateSceneToolDraw(DrawUpdateSource.THICK) End If @@ -617,7 +617,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.MAXABSORPTION, DbMaxAbsorption) StringToLen(value, dValue) - m_IsModifiedMaxAbsorption = If(dValue <> DbMaxAbsorption, True, False) + m_IsModifiedMaxAbsorption = Math.Abs(dValue - DbMaxAbsorption) > 10 * EPS_SMALL NotifyPropertyChanged("MaxAbsorption") End If End Set @@ -640,7 +640,7 @@ Public Class ToolTreeViewItem EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtTdbGetCurrToolParam(MCH_TP.MINFEED, DbMinFeed) StringToLen(value, dValue) - m_IsModifiedMinFeed = If(dValue <> DbMinFeed, True, False) + m_IsModifiedMinFeed = Math.Abs(dValue - DbMinFeed) > 10 * EPS_SMALL NotifyPropertyChanged("MinFeed") End If End Set @@ -699,7 +699,7 @@ Public Class ToolTreeViewItem ' Variabile che indica se c'è un errore nel nome dell'utensile (ad esempio nome già utilizzato) Dim bErrorToolName As Boolean = False - Private m_IsModifiedName As Boolean = False + Friend m_IsModifiedName As Boolean = False ''' ''' Property that read and write to the tool's database the Name ''' @@ -780,6 +780,18 @@ Public Class ToolTreeViewItem End Get End Property +#End Region ' Machining Property + +#Region "Constructors" + + Sub New(Name As String) + MyBase.New(Name) + End Sub + +#End Region ' Constructors + +#Region "METHODS" + Friend Sub ReadToolParam() EgtSetCurrentContext(IniFile.m_ProjectSceneContext) ' sospendo l'aggiornamento del disegno per evitare di rifarlo al cambio di ogni parametro inerente @@ -907,6 +919,8 @@ Public Class ToolTreeViewItem EgtTdbSetCurrToolParam(MCH_TP.NAME, NamePar) End Sub +#End Region ' Methods + #Region "ToolSceneUpdate" ' Enum che indica le proprietà di disegno dell'utensile @@ -1185,7 +1199,6 @@ Public Class ToolTreeViewItem m_IsModifiedTcPos = False End Sub - Private Shared ReadOnly ValidatedProperties() As String = {"Draw", "MaxMat", "Thick", "Diam", "Len", "TotLen", "Speed", "NamePar"} Private Function GetValidationError(ByVal propertyName As String) As String @@ -1366,7 +1379,6 @@ Public Class ToolTreeViewItem If Math.Abs(dSpeed) > dMaxSpeed + EPS_ZERO Then Return EgtMsg(MSG_TOOLSERRORS + 11) End If - End If Return Nothing End Function diff --git a/ToolsDbWindow/ToolsDbView.xaml b/ToolsDbWindow/ToolsDbView.xaml index 7acaf8f..2d2e8b1 100644 --- a/ToolsDbWindow/ToolsDbView.xaml +++ b/ToolsDbWindow/ToolsDbView.xaml @@ -8,7 +8,9 @@ TitleBarBrush="{StaticResource EgaltechBlue1}" BorderBrush="{StaticResource EgaltechBlue1}" WindowStyle="None" ResizeMode="NoResize" TitleBarHeight="30" IsResizable="False" - IsMinimizable="False" WindowStartupLocation="CenterScreen" ShowInTaskbar="False"> + IsMinimizable="False" WindowStartupLocation="CenterScreen" ShowInTaskbar="False" + CloseCommand="{Binding CloseToolsDbCommand,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" + CloseCommandParameter="{Binding Path=SelectedItem, ElementName=ToolsTreeView}"> diff --git a/ToolsDbWindow/ToolsDbViewModel.vb b/ToolsDbWindow/ToolsDbViewModel.vb index 549618d..7de4865 100644 --- a/ToolsDbWindow/ToolsDbViewModel.vb +++ b/ToolsDbWindow/ToolsDbViewModel.vb @@ -57,6 +57,7 @@ Namespace EgtCAM5 Private m_cmdNew As ICommand Private m_cmdSave As ICommand Private m_cmdRemove As ICommand + Private m_cmdCloseToolsDb As ICommand #Region "MESSAGES" @@ -391,7 +392,6 @@ Namespace EgtCAM5 ToolCopied.IsSelected = False ToolCopied.NotifyPropertyChanged("IsSelected") NewToolItem.IsSelected = True - 'NewToolItem.NotifyPropertyChanged("IsSelected") Exit For End If Next @@ -540,6 +540,63 @@ Namespace EgtCAM5 #End Region ' RemoveCommand +#Region "CloseToolDbCommand" + + ''' + ''' Returns a command that remove the current selected machining. + ''' + Public ReadOnly Property CloseToolsDbCommand() As ICommand + Get + If m_cmdCloseToolsDb Is Nothing Then + m_cmdCloseToolsDb = New RelayCommand(AddressOf CloseToolsDb) + End If + Return m_cmdCloseToolsDb + End Get + End Property + + ''' + ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand. + ''' + Public Sub CloseToolsDb(param As Object) + ' Verifico se sia selezionata una famiglia + If TypeOf param Is FamilyToolTreeViewItem Then + Return + ' Verifico se sia selezionata una lavorazione + ElseIf TypeOf param Is ToolTreeViewItem Then + Dim CurrTool As ToolTreeViewItem = DirectCast(param, ToolTreeViewItem) + If CurrTool.IsValid Then + CurrTool.WriteToolParam() + If EgtTdbIsCurrToolModified() Or CurrTool.m_IsModifiedName Or CurrTool.NewTool Then + Select Case MsgBox(EgtMsg(MSG_TOOLSERRORS), MsgBoxStyle.YesNo, EgtMsg(MSG_TOOLSERRORS + 1)) + Case MsgBoxResult.Yes + CurrTool.NewTool = False + CurrTool.m_Name = CurrTool.m_Name.Trim() + CurrTool.WriteToolName() + EgtTdbSaveCurrTool() + Case MsgBoxResult.No + If CurrTool.NewTool Then + Application.Msn.NotifyColleagues(Application.REMOVETOOL, Me) + ElseIf CurrTool.m_IsModifiedName Then + Dim DbName As String = String.Empty + EgtTdbGetCurrToolParam(MCH_TP.NAME, DbName) + CurrTool.NamePar = DbName + End If + End Select + End If + EgtTdbSave() + For Each Window In Application.Current.Windows + If TypeOf Window Is ToolsDbView Then + Dim ToolsDbWindow As ToolsDbView = DirectCast(Window, ToolsDbView) + ToolsDbWindow.Close() + End If + Next + End If + End If + + End Sub + +#End Region ' CloseToolsDbCommand + End Class End Namespace \ No newline at end of file