Imports System.ComponentModel
Imports System.IO
Imports System.Collections.ObjectModel
Imports System.Text.RegularExpressions
Imports EgtUILib
Public Class FamilyToolTreeViewItem
Inherits InheritableTreeViewItem
' Actions
Friend Shared m_delIsEnabledBtns As Action(Of Boolean, Boolean, Boolean)
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
' The function that I want to call When Parent item is selected in the tree
If EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
EgtNewFile()
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
End If
If value Then
m_delIsEnabledBtns(True, False, False)
End If
End If
NotifyPropertyChanged("IsSelected")
End If
End Set
End Property
Private m_ToolType As MCH_TF
'''
''' Property that determines the tool type of the family
'''
Public Property ToolType As MCH_TF
Get
Return m_ToolType
End Get
Set(value As MCH_TF)
m_ToolType = value
End Set
End Property
' Proprietà che permette di nascondere tutti i parametri utensile grazie al binding ed al converter
Public ReadOnly Property Type As Integer
Get
Return MCH_TY.NONE
End Get
End Property
Sub New(Name As String, ToolFamily As MCH_TF)
MyBase.New(Name)
Me.PictureString = "/Resources/TreeView/Folder.png"
Me.m_ToolType = ToolFamily
End Sub
End Class
Public Class ToolTreeViewItem
Inherits InheritableTreeViewItem
' Actions
Friend Shared m_delRemoveTool As Action(Of ToolTreeViewItem)
Friend Shared m_delErrorOnTool As Action(Of Boolean)
Friend Shared m_delIsEnabledBtns As Action(Of Boolean, Boolean, Boolean)
Friend Shared m_delGetSelectedTool As Func(Of ToolTreeViewItem)
#Region "Tool 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
' Variabile che indica se l'utensile è appena stato creato
Dim m_NewTool As Boolean = False
Public Property NewTool As Boolean
Get
Return m_NewTool
End Get
Set(value As Boolean)
m_NewTool = value
End Set
End Property
'''
''' Property that determines if the Tool 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)
EgtTdbSetCurrTool(Me.Name)
ReadToolParam()
IsModifiedReset()
NotifyPropertyChanged("Type")
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
Else
WriteToolParam()
If EgtTdbIsCurrToolModified() Or m_IsModifiedName Or Me.NewTool Then
Select Case MsgBox(EgtMsg(MSG_TOOLSERRORS), MsgBoxStyle.YesNo, EgtMsg(MSG_TOOLSERRORS + 1))
Case MsgBoxResult.Yes
m_NewTool = False
m_Name = m_Name.Trim()
WriteToolName()
EgtTdbSaveCurrTool()
Case MsgBoxResult.No
If m_NewTool Then
m_delRemoveTool(Me)
ElseIf m_IsModifiedName Then
Dim DbName As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.NAME, DbName)
NamePar = DbName
End If
End Select
End If
End If
' ricarico utensile per avere valore Active e ricaricarlo
EgtTdbSetCurrTool(Me.Name)
NotifyPropertyChanged("Active")
NotifyPropertyChanged("IsSelected")
End If
End Set
End Property
Private m_IsModifiedCorr As Boolean = False
Private m_Corr As String
'''
''' Property that read and write to the tool's database the Corrector
'''
Public Property Corr As String
Get
Return m_Corr
End Get
Set(value As String)
If value <> m_Corr Then
m_Corr = value
Dim DbCorr As Integer = 0
Dim nValue As Integer = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.CORR, DbCorr)
Int32.TryParse(value, nValue)
m_IsModifiedCorr = If(nValue <> DbCorr, True, False)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("Corr")
End If
End Set
End Property
Friend m_ExitList As New ObservableCollection(Of String)
Public ReadOnly Property ExitList As ObservableCollection(Of String)
Get
Return m_ExitList
End Get
End Property
Private m_IsModifiedSelectedExit As Boolean = False
Private m_SelectedExit As String
'''
''' Property that read and write to the tool's database the Exit
'''
Public Property SelectedExit As String
Get
Return m_SelectedExit
End Get
Set(value As String)
If value <> m_SelectedExit Then
m_SelectedExit = value
Dim DbExit As Integer = 0
Dim nValue As Integer = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.EXIT_, DbExit)
Int32.TryParse(value, nValue)
m_IsModifiedSelectedExit = If(nValue <> DbExit, True, False)
' se modificato disattivo l'utensile
If m_IsModifiedSelectedExit Then EgtTdbSetCurrToolParam(MCH_TP.ACTIVE, False)
If Not GetValidationError("SelectedExit") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
NotifyPropertyChanged("SelectedExit")
End If
End Set
End Property
Private m_Type As Integer
'''
''' Property that read and write to the tool's database the Type
'''
Public Property Type As Integer
Get
Return m_Type
End Get
Set(value As Integer)
If value <> m_Type Then
m_Type = value
End If
End Set
End Property
Private m_IsModifiedCoolant As Boolean = False
Private m_Coolant As String
'''
''' Property that read and write to the tool's database the Coolant
'''
Public Property Coolant As String
Get
Return m_Coolant
End Get
Set(value As String)
If value <> m_Coolant Then
m_Coolant = value
Dim DbCoolant As Integer = 0
Dim nValue As Integer = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.COOLANT, DbCoolant)
Int32.TryParse(value, nValue)
m_IsModifiedCoolant = If(nValue <> DbCoolant, True, False)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("Coolant")
End If
End Set
End Property
Private m_IsModifiedCornRad As Boolean = False
Private m_CornRad As String
'''
''' Property that read and write to the tool's database the Corner Radius
'''
Public Property CornRad As String
Get
Return m_CornRad
End Get
Set(value As String)
If value <> m_CornRad Then
m_CornRad = value
Dim DbCornRad As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.CORNRAD, DbCornRad)
StringToLen(value, dValue)
m_IsModifiedCornRad = Math.Abs(dValue - DbCornRad) > 10 * EPS_SMALL
If Not GetValidationError("CornRad") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
NotifyPropertyChanged("CornRad")
End If
End Set
End Property
Private m_IsModifiedDiam As Boolean = False
Private m_Diam As String
'''
''' Property that read and write to the tool's database the Diameter
'''
Public Property Diam As String
Get
Return m_Diam
End Get
Set(value As String)
If value <> m_Diam Then
m_Diam = value
Dim DbDiam As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.DIAM, DbDiam)
StringToLen(value, dValue)
m_IsModifiedDiam = Math.Abs(dValue - DbDiam) > 10 * EPS_SMALL
If Not GetValidationError("Diam") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
NotifyPropertyChanged("Diam")
End If
End Set
End Property
Private m_IsModifiedTotDiam As Boolean = False
Private m_TotDiam As String
'''
''' Property that read and write to the tool's database the Total Diameter
'''
Public Property TotDiam As String
Get
Return m_TotDiam
End Get
Set(value As String)
If value <> m_TotDiam Then
m_TotDiam = value
Dim DbTotDiam As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.TOTDIAM, DbTotDiam)
StringToLen(value, dValue)
m_IsModifiedTotDiam = Math.Abs(dValue - DbTotDiam) > 5 * EPS_SMALL
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
If Not GetValidationError("Diam") Or Not GetValidationError("TotDiam") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("TotDiam")
End If
End Set
End Property
Private m_IsModifiedFeed As Boolean = False
Private m_Feed As String
'''
''' Property that read and write to the tool'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
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.FEED, DbFeed)
StringToLen(value, dValue)
m_IsModifiedFeed = Math.Abs(dValue - DbFeed) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("Feed")
End If
End Set
End Property
Private m_IsModifiedEndFeed As Boolean = False
Private m_EndFeed As String
'''
''' Property that read and write to the tool'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
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.ENDFEED, DbEndFeed)
StringToLen(value, dValue)
m_IsModifiedEndFeed = Math.Abs(dValue - DbEndFeed) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("EndFeed")
End If
End Set
End Property
Private m_IsModifiedStartFeed As Boolean = False
Private m_StartFeed As String
'''
''' Property that read and write to the tool'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
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.STARTFEED, DbStartFeed)
StringToLen(value, dValue)
m_IsModifiedStartFeed = Math.Abs(dValue - DbStartFeed) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("StartFeed")
End If
End Set
End Property
Private m_IsModifiedTipFeed As Boolean = False
Private m_TipFeed As String
'''
''' Property that read and write to the tool'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
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.TIPFEED, DbTipFeed)
StringToLen(value, dValue)
m_IsModifiedTipFeed = Math.Abs(dValue - DbTipFeed) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("TipFeed")
' Se fresa e 0 non può lavorare di testa
If (Type And MCH_TF.MILL) <> 0 Then
If dValue > EPS_SMALL Then
Type = MCH_TY.MILL_STD
Else
Type = MCH_TY.MILL_NOTIP
End If
End If
End If
End Set
End Property
Private m_IsModifiedLen As Boolean = False
Private m_Len As String
'''
''' Property that read and write to the tool's database the Len
'''
Public Property Len As String
Get
Return m_Len
End Get
Set(value As String)
If value <> m_Len Then
m_Len = value
Dim DbLen As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.LEN, DbLen)
StringToLen(value, dValue)
m_IsModifiedLen = Math.Abs(dValue - DbLen) > 5 * EPS_SMALL
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
If Not GetValidationError("Len") Or Not GetValidationError("MaxMat") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("Len")
' Se lama
If (Type And MCH_TF.SAWBLADE) <> 0 Then
Dim CurrTotLen As Double = 0
If Not IsNothing(TotLen) Then
StringToLen(TotLen, CurrTotLen)
' se len e totlen coincidono tipo piatto
If (CurrTotLen - dValue) > 10 * EPS_SMALL Then
Type = MCH_TY.SAW_STD
Else
Type = MCH_TY.SAW_FLAT
End If
End If
End If
End If
End Set
End Property
Private m_IsModifiedTotLen As Boolean = False
Private m_TotLen As String
'''
''' Property that read and write to the tool's database the Total Len
'''
Public Property TotLen As String
Get
Return m_TotLen
End Get
Set(value As String)
If value <> m_TotLen Then
m_TotLen = value
Dim DbTotLen As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.TOTLEN, DbTotLen)
StringToLen(value, dValue)
m_IsModifiedTotLen = Math.Abs(dValue - DbTotLen) > 5 * EPS_SMALL
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
If Not GetValidationError("TotLen") Or Not GetValidationError("Len") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("TotLen")
' Se lama e len e totlen coincidono tipo piatto
If (Type And MCH_TF.SAWBLADE) <> 0 Then
If Not IsNothing(Len) Then
Dim CurrLen As Double = 0
StringToLen(Len, CurrLen)
If (dValue - CurrLen) > 10 * EPS_SMALL Then
Type = MCH_TY.SAW_STD
Else
Type = MCH_TY.SAW_FLAT
End If
End If
End If
End If
End Set
End Property
Private m_IsModifiedMaxMat As Boolean = False
Private m_MaxMat As String
'''
''' Property that read and write to the tool's database the Max Material
'''
Public Property MaxMat As String
Get
Return m_MaxMat
End Get
Set(value As String)
If value <> m_MaxMat Then
m_MaxMat = value
Dim DbMaxMat As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, DbMaxMat)
StringToLen(value, dValue)
m_IsModifiedMaxMat = Math.Abs(dValue - DbMaxMat) > 5 * EPS_SMALL
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
If Not GetValidationError("MaxMat") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("MaxMat")
End If
End Set
End Property
Private m_IsModifiedLonOffset As Boolean = False
Private m_LonOffset As String
'''
''' Property that read and write to the tool's database the Lon Offset
'''
Public Property LonOffset As String
Get
Return m_LonOffset
End Get
Set(value As String)
If value <> m_LonOffset Then
m_LonOffset = value
Dim DbLonOffset As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.LONOFFSET, DbLonOffset)
StringToLen(value, dValue)
m_IsModifiedLonOffset = Math.Abs(dValue - DbLonOffset) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("LonOffset")
End If
End Set
End Property
Private m_IsModifiedRadOffset As Boolean = False
Private m_RadOffset As String
'''
''' Property that read and write to the tool's database the Rad Offset
'''
Public Property RadOffset As String
Get
Return m_RadOffset
End Get
Set(value As String)
If value <> m_RadOffset Then
m_RadOffset = value
Dim DbRadOffset As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.RADOFFSET, DbRadOffset)
StringToLen(value, dValue)
m_IsModifiedRadOffset = Math.Abs(dValue - DbRadOffset) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("RadOffset")
End If
End Set
End Property
Private m_IsModifiedSpeed As Boolean = False
Private m_Speed As String
'''
''' Property that read and write to the tool'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
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.SPEED, DbSpeed)
StringToDouble(value, dValue)
m_IsModifiedSpeed = Math.Abs(dValue - DbSpeed) > 10 * EPS_ANG_SMALL
If Not GetValidationError("Speed") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("Speed")
End If
End Set
End Property
Private m_IsModifiedSideAng As Boolean = False
Private m_SideAng As String
'''
''' Property that read and write to the tool's database the Side Angle
'''
Public Property SideAng As String
Get
Return m_SideAng
End Get
Set(value As String)
If value <> m_SideAng Then
m_SideAng = value
Dim DbSideAng As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.SIDEANG, DbSideAng)
StringToDouble(value, dValue)
m_IsModifiedSideAng = Math.Abs(dValue - DbSideAng) > 10 * EPS_ANG_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
NotifyPropertyChanged("SideAng")
End If
End Set
End Property
Private m_IsModifiedMaxSpeed As Boolean = False
Private m_MaxSpeed As String
'''
''' Property that read and write to the tool's database the Max Speed
'''
Public Property MaxSpeed As String
Get
Return m_MaxSpeed
End Get
Set(value As String)
If value <> m_MaxSpeed Then
m_MaxSpeed = value
Dim DbMaxSpeed As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.MAXSPEED, DbMaxSpeed)
StringToLen(value, dValue)
m_IsModifiedMaxSpeed = Math.Abs(dValue - DbMaxSpeed) > 10 * EPS_ANG_SMALL
If Not GetValidationError("Speed") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("MaxSpeed")
End If
End Set
End Property
Private m_IsModifiedThick As Boolean = False
Private m_Thick As String
'''
''' Property that read and write to the tool's database the Thick
'''
Public Property Thick As String
Get
Return m_Thick
End Get
Set(value As String)
If value <> m_Thick Then
m_Thick = value
Dim DbThick As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.THICK, DbThick)
StringToLen(value, dValue)
m_IsModifiedThick = Math.Abs(dValue - DbThick) > 5 * EPS_SMALL
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
If Not GetValidationError("Thick") Or Not GetValidationError("CornRad") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("Thick")
End If
End Set
End Property
Private m_IsModifiedMaxAbsorption As Boolean = False
Private m_MaxAbsorption As String
'''
''' Property that read and write to the tool's database the Max Absorption
'''
Public Property MaxAbsorption As String
Get
Return m_MaxAbsorption
End Get
Set(value As String)
If value <> m_MaxAbsorption Then
m_MaxAbsorption = value
Dim DbMaxAbsorption As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.MAXABSORPTION, DbMaxAbsorption)
StringToLen(value, dValue)
m_IsModifiedMaxAbsorption = Math.Abs(dValue - DbMaxAbsorption) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("MaxAbsorption")
End If
End Set
End Property
Private m_IsModifiedMinFeed As Boolean = False
Private m_MinFeed As String
'''
''' Property that read and write to the tool's database the Min Feed
'''
Public Property MinFeed As String
Get
Return m_MinFeed
End Get
Set(value As String)
If value <> m_MinFeed Then
m_MinFeed = value
Dim DbMinFeed As Double = 0
Dim dValue As Double = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.MINFEED, DbMinFeed)
StringToLen(value, dValue)
m_IsModifiedMinFeed = Math.Abs(dValue - DbMinFeed) > 5 * EPS_SMALL
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("MinFeed")
End If
End Set
End Property
Private m_IsModifiedDraw As Boolean = False
Friend m_Draw As String
'''
''' Property that read and write to the tool's database the Draw
'''
Public Property Draw As String
Get
Return m_Draw
End Get
Set(value As String)
If value = String.Empty Or value <> m_Draw Then
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
m_Draw = value
Dim DbDraw As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.DRAW, DbDraw)
m_IsModifiedDraw = (value <> DbDraw)
NotifyPropertyChanged("Draw")
End If
End Set
End Property
Friend Shared m_HeadList As New List(Of HeadItem)
Public ReadOnly Property HeadList As List(Of HeadItem)
Get
Return m_HeadList
End Get
End Property
Private m_IsModifiedSelectedHead As Boolean = False
Private m_SelectedHead As HeadItem
'''
''' Property that read and write to the tool's database the Head
'''
Public Property SelectedHead As HeadItem
Get
Return m_SelectedHead
End Get
Set(value As HeadItem)
If value IsNot m_SelectedHead Then
m_SelectedHead = value
Dim DbHead As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.HEAD, DbHead)
m_IsModifiedSelectedHead = If(value.HName <> DbHead, True, False)
' se modificato disattivo l'utensile
If m_IsModifiedSelectedHead Then EgtTdbSetCurrToolParam(MCH_TP.ACTIVE, False)
If Not m_SuspendToolDrawUpdate Then
UpdateSceneToolDraw()
End If
If Not GetValidationError("SelectedHead") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("SelectedHead")
' verifico se le uscite sono cambiate
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
Dim nExitNum As Integer = EgtGetHeadExitCount(m_SelectedHead.HName)
' ricalcolo la lista uscite
If nExitNum > m_ExitList.Count Then
For ExitIndex = m_ExitList.Count To nExitNum - 1
m_ExitList.Add((ExitIndex + 1).ToString)
Next
ElseIf nExitNum < m_ExitList.Count Then
For Index = m_ExitList.Count - 1 To nExitNum Step -1
m_ExitList.RemoveAt(Index)
Next
End If
' verifico se l'uscita selezionata è nella lista
If Not m_ExitList.Contains(m_SelectedExit) AndAlso m_ExitList.Count > 0 Then
SelectedExit = m_ExitList(0)
End If
' ricalcolo la lista di posizioni valide
Dim nErr As Integer = 0
Dim bIsValid As Boolean = False
Dim TcPosIndex As Integer = 0
For OrigTcPosIndex = 0 To m_OrigTcPosList.Count - 1
Dim CurrTcPos As String = m_OrigTcPosList(OrigTcPosIndex)
bIsValid = False
EgtLuaSetGlobStringVar("STU.TCPOS", CurrTcPos)
EgtLuaSetGlobStringVar("STU.HEAD", m_SelectedHead.HName)
If Not EgtLuaCallFunction("STU.IsValidTcPosFromHead") Then nErr = 999
' Leggo variabili
EgtLuaGetGlobBoolVar("STU.ISVALID", bIsValid)
If Not EgtLuaGetGlobIntVar("STU.ERR", nErr) Then nErr = 999
If nErr = 0 AndAlso bIsValid Then
If m_TcPosList.Count - 1 >= TcPosIndex AndAlso m_TcPosList(TcPosIndex) = CurrTcPos Then
TcPosIndex += 1
Else
m_TcPosList.Insert(TcPosIndex, CurrTcPos)
TcPosIndex += 1
End If
Else
If m_TcPosList.Count - 1 >= TcPosIndex AndAlso m_TcPosList(TcPosIndex) = CurrTcPos Then
m_TcPosList.RemoveAt(TcPosIndex)
End If
End If
Next
NotifyPropertyChanged("ExitList")
NotifyPropertyChanged("TcPosList")
End If
End Set
End Property
' Variabile che indica se c'è un errore nel nome dell'utensile (ad esempio nome già utilizzato)
Dim nErrorToolName As Integer = 0
Friend m_IsModifiedName As Boolean = False
'''
''' Property that read and write to the tool'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
nErrorToolName = 0
m_Name = value
' Verifico se il nome è diverso da quello nel database e imposto l'apposito flag
Dim DbName As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.NAME, DbName)
m_IsModifiedName = If(value <> DbName, True, False)
' Verifico che il nuovo nome sia valido
Dim sTempName As String = value
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetToolNewName(sTempName)
If m_IsModifiedName And Not value = sTempName Then
nErrorToolName = 1
End If
If Not GetValidationError("NamePar") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged("NamePar")
End If
End Set
End Property
Private m_IsModifiedUserNotes As Boolean = False
Private m_UserNotes As String
'''
''' Property that read and write to the tool'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
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, DbUserNotes)
m_IsModifiedUserNotes = If(value <> DbUserNotes, True, False)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("UserNotes")
End If
End Set
End Property
Friend Shared m_OrigTcPosList As New List(Of String)
Public ReadOnly Property OrigTcPosList As List(Of String)
Get
Return m_OrigTcPosList
End Get
End Property
Friend m_TcPosList As New ObservableCollection(Of String)
Public ReadOnly Property TcPosList As ObservableCollection(Of String)
Get
Return m_TcPosList
End Get
End Property
Private m_IsModifiedSelectedTcPos As Boolean = False
Private m_SelectedTcPos As String
'''
''' Property that read and write to the tool's database the Tc Pos
'''
Public Property SelectedTcPos As String
Get
Return m_SelectedTcPos
End Get
Set(value As String)
If value = String.Empty Or value <> m_SelectedTcPos Then
m_SelectedTcPos = value
Dim DbTcPos As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, DbTcPos)
m_IsModifiedSelectedTcPos = If(value <> DbTcPos, True, False)
' se modificato disattivo l'utensile
If m_IsModifiedSelectedTcPos Then
Dim z = EgtTdbSetCurrToolParam(MCH_TP.ACTIVE, False)
NotifyPropertyChanged("Active")
End If
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
NotifyPropertyChanged("SelectedTcPos")
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
Public Property Active As Boolean
Get
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
' salvo utensile corrente precedente
Dim PreviousCurrentTool As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.NAME, PreviousCurrentTool)
Dim bChangeTool As Boolean = PreviousCurrentTool <> Me.Name
If bChangeTool Then EgtTdbSetCurrTool(Me.Name)
Dim bActive As Boolean = False
EgtTdbGetCurrToolParam(MCH_TP.ACTIVE, bActive)
' ripristino utensile corrente
If bChangeTool Then EgtTdbSetCurrTool(PreviousCurrentTool)
Return bActive
End Get
Set(value As Boolean)
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
' verifico se l'utensile selezionato è modificato
Dim SelTool As ToolTreeViewItem = m_delGetSelectedTool()
If Not IsNothing(SelTool) AndAlso SelTool.IsModified Then
' chiedo di salvare
If MessageBox.Show(String.Format(EgtMsg(6144), SelTool.Name), EgtMsg(6143), MessageBoxButton.YesNo, MessageBoxImage.Question) <> MessageBoxResult.Yes Then
Return
Else
SelTool.WriteToolParam()
SelTool.m_Name = SelTool.m_Name.Trim()
SelTool.WriteToolName()
EgtTdbSaveCurrTool()
SelTool.NewTool = False
SelTool.IsModifiedReset()
m_delIsEnabledBtns(SelTool.IsValid And Not SelTool.IsModified, SelTool.IsValid, True)
End If
End If
' salvo utensile corrente precedente
Dim PreviousCurrentTool As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.NAME, PreviousCurrentTool)
' se attivato, verifico che non sia in conflitto con altri utensili
If value Then
' verifico se c'è un utensile con la stessa posizione
If Not VerifyAllPositions() Then
MessageBox.Show(EgtMsg(6145), EgtMsg(6126), MessageBoxButton.OK, MessageBoxImage.Exclamation)
' ripristino utensile corrente
EgtTdbSetCurrTool(PreviousCurrentTool)
Return
End If
End If
' lo scrivo nel Db
EgtTdbSetCurrTool(Me.Name)
EgtTdbSetCurrToolParam(MCH_TP.ACTIVE, value)
EgtTdbSaveCurrTool()
NotifyPropertyChanged("Active")
' ripristino utensile corrente
EgtTdbSetCurrTool(PreviousCurrentTool)
End Set
End Property
#End Region ' Tool Property
' Definizione comandi
Private m_cmdOpenDrawFile As ICommand
Private m_cmdAutoDraw As ICommand
#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
m_SuspendToolDrawUpdate = True
Dim nValue As Integer = 0
Dim dValue As Double = 0
Dim sValue As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.CORR, nValue)
m_Corr = nValue.ToString()
NotifyPropertyChanged("Corr")
m_IsModifiedCorr = False
EgtTdbGetCurrToolParam(MCH_TP.TYPE, nValue)
m_Type = nValue
NotifyPropertyChanged("Type")
EgtTdbGetCurrToolParam(MCH_TP.COOLANT, nValue)
m_Coolant = nValue.ToString()
NotifyPropertyChanged("Coolant")
m_IsModifiedCoolant = False
EgtTdbGetCurrToolParam(MCH_TP.CORNRAD, dValue)
m_CornRad = LenToString(dValue, 4)
NotifyPropertyChanged("CornRad")
m_IsModifiedCornRad = False
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dValue)
m_Diam = LenToString(dValue, 4)
m_IsModifiedDiam = False
EgtTdbGetCurrToolParam(MCH_TP.TOTDIAM, dValue)
m_TotDiam = LenToString(dValue, 4)
m_IsModifiedTotDiam = False
ValidateProperty("TotDiam")
ValidateProperty("Diam")
EgtTdbGetCurrToolParam(MCH_TP.FEED, dValue)
m_Feed = LenToString(dValue, 4)
NotifyPropertyChanged("Feed")
m_IsModifiedFeed = False
EgtTdbGetCurrToolParam(MCH_TP.ENDFEED, dValue)
m_EndFeed = LenToString(dValue, 4)
NotifyPropertyChanged("EndFeed")
m_IsModifiedEndFeed = False
EgtTdbGetCurrToolParam(MCH_TP.STARTFEED, dValue)
m_StartFeed = LenToString(dValue, 4)
NotifyPropertyChanged("StartFeed")
m_IsModifiedStartFeed = False
EgtTdbGetCurrToolParam(MCH_TP.TIPFEED, dValue)
m_TipFeed = LenToString(dValue, 4)
NotifyPropertyChanged("TipFeed")
m_IsModifiedTipFeed = False
EgtTdbGetCurrToolParam(MCH_TP.LEN, dValue)
m_Len = LenToString(dValue, 4)
m_IsModifiedLen = False
EgtTdbGetCurrToolParam(MCH_TP.TOTLEN, dValue)
m_TotLen = LenToString(dValue, 4)
m_IsModifiedTotLen = False
EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dValue)
m_MaxMat = LenToString(dValue, 4)
m_IsModifiedMaxMat = False
ValidateProperty("TotLen")
ValidateProperty("Len")
ValidateProperty("MaxMat")
EgtTdbGetCurrToolParam(MCH_TP.LONOFFSET, dValue)
m_LonOffset = LenToString(dValue, 4)
NotifyPropertyChanged("LonOffset")
m_IsModifiedLonOffset = False
EgtTdbGetCurrToolParam(MCH_TP.RADOFFSET, dValue)
m_RadOffset = LenToString(dValue, 4)
NotifyPropertyChanged("RadOffset")
m_IsModifiedRadOffset = False
EgtTdbGetCurrToolParam(MCH_TP.SPEED, dValue)
m_Speed = DoubleToString(dValue, 4)
m_IsModifiedSpeed = False
EgtTdbGetCurrToolParam(MCH_TP.MAXSPEED, dValue)
m_MaxSpeed = DoubleToString(dValue, 4)
m_IsModifiedMaxSpeed = False
ValidateProperty("Speed")
NotifyPropertyChanged("MaxSpeed")
EgtTdbGetCurrToolParam(MCH_TP.SIDEANG, dValue)
m_SideAng = DoubleToString(dValue, 4)
NotifyPropertyChanged("SideAng")
m_IsModifiedSideAng = False
EgtTdbGetCurrToolParam(MCH_TP.THICK, dValue)
m_Thick = LenToString(dValue, 4)
m_IsModifiedThick = False
ValidateProperty("Thick")
EgtTdbGetCurrToolParam(MCH_TP.MAXABSORPTION, dValue)
m_MaxAbsorption = DoubleToString(dValue, 4)
NotifyPropertyChanged("MaxAbsorption")
m_IsModifiedMaxAbsorption = False
EgtTdbGetCurrToolParam(MCH_TP.MINFEED, dValue)
m_MinFeed = LenToString(dValue, 4)
NotifyPropertyChanged("MinFeed")
m_IsModifiedMinFeed = False
EgtTdbGetCurrToolParam(MCH_TP.DRAW, sValue)
m_Draw = sValue
m_IsModifiedDraw = False
ValidateProperty("Draw")
' leggo l'uscita prima della testa (senza validarla)
EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nValue)
m_SelectedExit = nValue.ToString()
m_IsModifiedSelectedExit = False
' leggo la testa e valido l'uscita
EgtTdbGetCurrToolParam(MCH_TP.HEAD, sValue)
For HeadIndex = 0 To m_HeadList.Count - 1
If sValue = m_HeadList(HeadIndex).HName Then
SelectedHead = m_HeadList(HeadIndex)
Exit For
End If
Next
ValidateProperty("SelectedHead")
ValidateProperty("SelectedExit")
EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, sValue)
m_UserNotes = sValue
NotifyPropertyChanged("UserNotes")
m_IsModifiedUserNotes = False
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sValue)
If m_TcPosList.Contains(sValue) Then
m_SelectedTcPos = sValue
m_IsModifiedSelectedTcPos = False
Else
m_SelectedTcPos = Nothing
EgtTdbSetCurrToolParam(MCH_TP.TCPOS, String.Empty)
End If
NotifyPropertyChanged("SelectedTcPos")
EgtTdbGetCurrToolParam(MCH_TP.UUID, sValue)
m_Uuid = sValue
' Ora che tutti i parametri sono aggiornati, aggiorno il disegno
m_SuspendToolDrawUpdate = False
UpdateSceneToolDraw()
End Sub
Friend Sub ReadToolName()
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.NAME, NamePar)
End Sub
Friend Sub WriteToolParam()
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
Dim nValue As Integer = 0
Dim dValue As Double = 0
Int32.TryParse(Corr, nValue)
EgtTdbSetCurrToolParam(MCH_TP.CORR, nValue)
Int32.TryParse(SelectedExit, nValue)
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, nValue)
EgtTdbSetCurrToolParam(MCH_TP.TYPE, Type)
Int32.TryParse(Coolant, nValue)
EgtTdbSetCurrToolParam(MCH_TP.COOLANT, nValue)
StringToLen(CornRad, dValue)
EgtTdbSetCurrToolParam(MCH_TP.CORNRAD, dValue)
StringToLen(Diam, dValue)
EgtTdbSetCurrToolParam(MCH_TP.DIAM, dValue)
StringToLen(TotDiam, dValue)
EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dValue)
StringToLen(Feed, dValue)
EgtTdbSetCurrToolParam(MCH_TP.FEED, dValue)
StringToLen(EndFeed, dValue)
EgtTdbSetCurrToolParam(MCH_TP.ENDFEED, dValue)
StringToLen(StartFeed, dValue)
EgtTdbSetCurrToolParam(MCH_TP.STARTFEED, dValue)
StringToLen(TipFeed, dValue)
EgtTdbSetCurrToolParam(MCH_TP.TIPFEED, dValue)
StringToLen(Len, dValue)
EgtTdbSetCurrToolParam(MCH_TP.LEN, dValue)
StringToLen(TotLen, dValue)
EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dValue)
StringToLen(MaxMat, dValue)
EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dValue)
StringToLen(LonOffset, dValue)
EgtTdbSetCurrToolParam(MCH_TP.LONOFFSET, dValue)
StringToLen(RadOffset, dValue)
EgtTdbSetCurrToolParam(MCH_TP.RADOFFSET, dValue)
StringToDouble(Speed, dValue)
EgtTdbSetCurrToolParam(MCH_TP.SPEED, dValue)
StringToDouble(SideAng, dValue)
EgtTdbSetCurrToolParam(MCH_TP.SIDEANG, dValue)
StringToDouble(MaxSpeed, dValue)
EgtTdbSetCurrToolParam(MCH_TP.MAXSPEED, dValue)
StringToLen(Thick, dValue)
EgtTdbSetCurrToolParam(MCH_TP.THICK, dValue)
StringToDouble(MaxAbsorption, dValue)
EgtTdbSetCurrToolParam(MCH_TP.MAXABSORPTION, dValue)
StringToLen(MinFeed, dValue)
EgtTdbSetCurrToolParam(MCH_TP.MINFEED, dValue)
EgtTdbSetCurrToolParam(MCH_TP.DRAW, Draw)
EgtTdbSetCurrToolParam(MCH_TP.HEAD, SelectedHead.HName)
EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, UserNotes)
If String.IsNullOrEmpty(SelectedTcPos) Then m_SelectedTcPos = String.Empty
EgtTdbSetCurrToolParam(MCH_TP.TCPOS, m_SelectedTcPos)
End Sub
Public Sub WriteToolName()
EgtTdbSetCurrToolParam(MCH_TP.NAME, NamePar)
End Sub
' funzione che verifica se c'è attivo un utensile sulla stessa posizione
Private Function VerifyAllPositions() As Boolean
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
' carico posizione, testa e uscita dell'utensile che si attiva
EgtTdbSetCurrTool(Me.Name)
Dim sCheckedTcPos As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sCheckedTcPos)
Dim sCheckedHead As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.HEAD, sCheckedHead)
Dim nCheckedExit As Integer = 0
EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nCheckedExit)
' verifico su tutti gli utensili disponibili
Dim ActiveToolsFamilies() As ToolsFamily = MachineModel.ReadActiveToolsFamilies()
For Each ToolsFamily In ActiveToolsFamilies
Dim nType As Integer = 0
Dim ToolName As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
If EgtTdbGetFirstTool(ToolsFamily.FamilyId, ToolName, nType) Then
If ToolName <> Me.Name Then
EgtTdbSetCurrTool(ToolName)
If Not VerifyPosition(sCheckedTcPos, sCheckedHead, nCheckedExit) Then Return False
End If
While EgtTdbGetNextTool(ToolsFamily.FamilyId, ToolName, nType)
If ToolName <> Me.Name Then
EgtTdbSetCurrTool(ToolName)
If Not VerifyPosition(sCheckedTcPos, sCheckedHead, nCheckedExit) Then Return False
End If
End While
End If
Next
Return True
End Function
Private Function VerifyPosition(sCheckedTcPos As String, sCheckedHead As String, nCheckedExit As Integer) As Boolean
' verifico se attivo
Dim DbActive As Boolean = False
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
If Not EgtTdbGetCurrToolParam(MCH_TP.ACTIVE, DbActive) Then DbActive = False
' se non è attivo non lo considero e restituisco vero
If Not DbActive Then Return True
' recupero posizione
Dim DbTcPos As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, DbTcPos)
' se la posizione è uguale controllo la testa
If sCheckedTcPos = DbTcPos Then
Dim DbHead As String = String.Empty
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.HEAD, DbHead)
' se la testa è uguale, controllo l'uscita
If sCheckedHead = DbHead Then
Dim DbExit As Integer = 0
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
EgtTdbGetCurrToolParam(MCH_TP.EXIT_, DbExit)
' se l'uscita è uguale la posizione è già occupata
If nCheckedExit = DbExit Then Return False
Else
' se la testa è diversa vuol dire che la posizione è già occupata
Return False
End If
End If
Return True
End Function
#End Region ' Methods
#Region "ToolSceneUpdate"
' Variabili che segnalano errori nel disegno dell'utensile
Dim m_nDrawingError As Integer = 0
Private Sub UpdateSceneToolDraw()
' Azzero errori
m_nDrawingError = 0
' Se nome disegno vuoto, assegno quello dell'automatico
If String.IsNullOrEmpty(m_Draw) Then m_Draw = m_Uuid & ".nge"
' Creo il disegno dell'utensile
CreateToolDraw()
EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
If m_nDrawingError <> 0 Then
If IsUUID(Path.GetFileNameWithoutExtension(m_Draw)) Then
EgtNewFile()
End If
End If
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
NotifyPropertyChanged("Draw")
If Not GetValidationError("Draw") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
End Sub
Private Function CreateToolDraw() As Boolean
' Calcolo parametri per disegno
Dim sHeadName As String = If(Not IsNothing(SelectedHead), SelectedHead.HName, "")
Dim nExit As Integer = 0 : If Not IsNothing(SelectedExit) Then StringToInt(SelectedExit, nExit)
Dim nType As Integer = Type
Dim dTotLen As Double = 0 : StringToLen(TotLen, dTotLen)
Dim dLen As Double = 0 : StringToLen(Len, dLen)
Dim dTotDiam As Double = 0 : StringToLen(TotDiam, dTotDiam)
Dim dDiam As Double = 0 : StringToLen(Diam, dDiam)
Dim dThick As Double = 0 : StringToLen(Thick, dThick)
Dim dMaxMat As Double = 0 : StringToLen(MaxMat, dMaxMat)
Dim dSideAng As Double = 0 : StringToDouble(SideAng, dSideAng)
Dim dCornRad As Double = 0 : StringToLen(CornRad, dCornRad)
Dim sDraw As String = Draw
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
' Salvo parametri originali dell'utensile corrente
Dim sHeadNameOri As String = "" : EgtTdbGetCurrToolParam(MCH_TP.HEAD, sHeadNameOri)
Dim nExitOri As Integer = 0 : EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nExitOri)
Dim nTypeOri As Integer = 0 : EgtTdbGetCurrToolParam(MCH_TP.TYPE, nTypeOri)
Dim dTotLenOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.TOTLEN, dTotLenOri)
Dim dLenOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.LEN, dLenOri)
Dim dTotDiamOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.TOTDIAM, dTotDiamOri)
Dim dDiamOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.DIAM, dDiamOri)
Dim dThickOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.THICK, dThickOri)
Dim dMaxMatOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dMaxMatOri)
Dim dSideAngOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.SIDEANG, dSideAngOri)
Dim dCornRadOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.CORNRAD, dCornRadOri)
Dim sDrawOri As String = "" : EgtTdbGetCurrToolParam(MCH_TP.DRAW, sDrawOri)
' Imposto parametri correnti all'utensile corrente
EgtTdbSetCurrToolParam(MCH_TP.HEAD, sHeadName)
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, nExit)
EgtTdbSetCurrToolParam(MCH_TP.TYPE, nType)
EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dTotLen)
EgtTdbSetCurrToolParam(MCH_TP.LEN, dLen)
EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dTotDiam)
EgtTdbSetCurrToolParam(MCH_TP.DIAM, dDiam)
EgtTdbSetCurrToolParam(MCH_TP.THICK, dThick)
EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dMaxMat)
EgtTdbSetCurrToolParam(MCH_TP.SIDEANG, dSideAng)
EgtTdbSetCurrToolParam(MCH_TP.CORNRAD, dCornRad)
EgtTdbSetCurrToolParam(MCH_TP.DRAW, sDraw)
' Creo il disegno
m_nDrawingError = EgtTdbCurrToolDraw(IniFile.m_ProjectSceneContext, IniFile.m_ToolsDbSceneContext)
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
' Ripristino i valori originali dell'utensile corrente
EgtTdbSetCurrToolParam(MCH_TP.HEAD, sHeadNameOri)
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, nExitOri)
EgtTdbSetCurrToolParam(MCH_TP.TYPE, nTypeOri)
EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dTotLenOri)
EgtTdbSetCurrToolParam(MCH_TP.LEN, dLenOri)
EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dTotDiamOri)
EgtTdbSetCurrToolParam(MCH_TP.DIAM, dDiamOri)
EgtTdbSetCurrToolParam(MCH_TP.THICK, dThickOri)
EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dMaxMatOri)
EgtTdbSetCurrToolParam(MCH_TP.SIDEANG, dSideAngOri)
EgtTdbSetCurrToolParam(MCH_TP.CORNRAD, dCornRadOri)
EgtTdbSetCurrToolParam(MCH_TP.DRAW, sDrawOri)
Return (m_nDrawingError = 0)
End Function
#End Region ' ToolSceneUpdate
#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 m_TotDiamError As String
Public ReadOnly Property TotDiamErrorMsg As String
Get
Return m_TotDiamError
End Get
End Property
Private m_DiamError As String
Public ReadOnly Property DiamErrorMsg As String
Get
Return m_DiamError
End Get
End Property
Private m_CornRadError As String
Public ReadOnly Property CornRadErrorMsg As String
Get
Return m_CornRadError
End Get
End Property
Private m_TotLenError As String
Public ReadOnly Property TotLenErrorMsg As String
Get
Return m_TotLenError
End Get
End Property
Private m_LenError As String
Public ReadOnly Property LenErrorMsg As String
Get
Return m_LenError
End Get
End Property
Private m_MaxMatError As String
Public ReadOnly Property MaxMatErrorMsg As String
Get
Return m_MaxMatError
End Get
End Property
Private m_ThickError As String
Public ReadOnly Property ThickErrorMsg As String
Get
Return m_ThickError
End Get
End Property
Private m_DrawError As String
Public ReadOnly Property DrawErrorMsg As String
Get
Return m_DrawError
End Get
End Property
Private m_SelectedHeadError As String
Public ReadOnly Property SelectedHeadErrorMsg As String
Get
Return m_SelectedHeadError
End Get
End Property
Private m_SelectedExitError As String
Public ReadOnly Property SelectedExitErrorMsg As String
Get
Return m_SelectedExitError
End Get
End Property
' Funzione che verifica se una proprietà è valida e attiva/disattiva di conseguenza lista e bottoni
Private Sub ValidateProperty(propertyName As String)
If Not GetValidationError(propertyName) Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
Else
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, True)
End If
NotifyPropertyChanged(propertyName)
End Sub
Private Function GetValidationError(propertyName As String) As Boolean
Dim bOk As Boolean = True
Select Case propertyName
Case "NamePar"
bOk = Me.ValidateName()
Case "Speed"
bOk = Me.ValidateSpeed()
Case "TotDiam"
bOk = Me.ValidateTotDiam()
Case "CornRad"
bOk = Me.ValidateCornRad()
Case "Diam"
bOk = Me.ValidateDiam()
Case "TotLen"
bOk = Me.ValidateTotLen()
Case "Len"
bOk = Me.ValidateLen()
Case "MaxMat"
bOk = Me.ValidateMaxMat()
Case "Thick"
bOk = Me.ValidateThick()
Case "Draw"
bOk = Me.ValidateDraw()
Case "SelectedHead"
bOk = Me.ValidateSelectedHead()
Case "SelectedExit"
bOk = Me.ValidateSelectedExit()
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
Case "TotDiam"
Return m_TotDiamError
Case "CornRad"
Return m_CornRadError
Case "Diam"
Return m_DiamError
Case "TotLen"
Return m_TotLenError
Case "Len"
Return m_LenError
Case "MaxMat"
Return m_MaxMatError
Case "Thick"
Return m_ThickError
Case "Draw"
Return m_DrawError
Case "SelectedHead"
Return m_SelectedHeadError
Case "SelectedExit"
Return m_SelectedExitError
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_IsModifiedCorr OrElse m_IsModifiedSelectedExit OrElse m_IsModifiedCornRad OrElse
m_IsModifiedDiam OrElse m_IsModifiedTotDiam OrElse m_IsModifiedFeed OrElse
m_IsModifiedEndFeed OrElse m_IsModifiedStartFeed OrElse m_IsModifiedTipFeed OrElse
m_IsModifiedLen OrElse m_IsModifiedTotLen OrElse m_IsModifiedMaxMat OrElse
m_IsModifiedLonOffset OrElse m_IsModifiedRadOffset OrElse m_IsModifiedSpeed OrElse
m_IsModifiedSideAng OrElse m_IsModifiedMaxSpeed OrElse m_IsModifiedThick OrElse
m_IsModifiedMaxAbsorption OrElse m_IsModifiedMinFeed OrElse m_IsModifiedDraw OrElse
m_IsModifiedSelectedHead OrElse m_IsModifiedName OrElse m_IsModifiedUserNotes OrElse
m_IsModifiedSelectedTcPos
End Get
End Property
Public Sub IsModifiedReset()
m_IsModifiedCorr = False
m_IsModifiedSelectedExit = False
m_IsModifiedCornRad = False
m_IsModifiedDiam = False
m_IsModifiedTotDiam = False
m_IsModifiedFeed = False
m_IsModifiedEndFeed = False
m_IsModifiedStartFeed = False
m_IsModifiedTipFeed = False
m_IsModifiedLen = False
m_IsModifiedTotLen = False
m_IsModifiedMaxMat = False
m_IsModifiedLonOffset = False
m_IsModifiedRadOffset = False
m_IsModifiedSpeed = False
m_IsModifiedSideAng = False
m_IsModifiedMaxSpeed = False
m_IsModifiedThick = False
m_IsModifiedMaxAbsorption = False
m_IsModifiedMinFeed = False
m_IsModifiedDraw = False
m_IsModifiedSelectedHead = False
m_IsModifiedName = False
m_IsModifiedUserNotes = False
m_IsModifiedSelectedTcPos = False
End Sub
Private Shared ReadOnly ValidatedProperties() As String = {"Draw", "TotDiam", "CornRad", "Diam", "TotLen", "Len", "MaxMat", "Thick", "Speed", "NamePar", "SelectedHead", "SelectedExit"}
Private Function ValidateName() As Boolean
m_NameError = String.Empty
Select Case nErrorToolName
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 Not IsNothing(m_Speed) And Not IsNothing(m_MaxSpeed) Then
Dim dSpeed As Double = 0
StringToDouble(m_Speed, dSpeed)
Dim dMaxSpeed As Double = 0
StringToDouble(m_MaxSpeed, dMaxSpeed)
If Math.Abs(dSpeed) > dMaxSpeed + EPS_ZERO Then
m_SpeedError = EgtMsg(MSG_TOOLSERRORS + 11)
End If
End If
NotifyPropertyChanged("SpeedErrorMsg")
If String.IsNullOrEmpty(m_SpeedError) Then
Return True
Else
Return False
End If
End Function
Private Function ValidateTotDiam() As Boolean
m_TotDiamError = String.Empty
If Not IsNothing(m_TotDiam) Then
Dim dTotDiam As Double = 0
StringToLen(m_TotDiam, dTotDiam)
If dTotDiam < EPS_SMALL Then
m_TotDiamError = EgtMsg(MSG_TOOLSERRORS + 20)
End If
End If
NotifyPropertyChanged("TotDiamErrorMsg")
If String.IsNullOrEmpty(m_TotDiamError) Then
Return True
Else
Return False
End If
End Function
Private Function ValidateCornRad() As Boolean
m_CornRadError = String.Empty
If Not IsNothing(m_CornRad) And Not IsNothing(m_Thick) Then
Dim dCornRad As Double = 0
StringToLen(m_CornRad, dCornRad)
Dim dThick As Double = 0
StringToLen(m_Thick, dThick)
If (m_Type = MCH_TY.SAW_FLAT Or m_Type = MCH_TY.SAW_STD) And dCornRad > 0.5 * dThick Then
m_CornRadError = EgtMsg(MSG_TOOLSERRORS + 42)
End If
End If
NotifyPropertyChanged("CornRadErrorMsg")
Return String.IsNullOrEmpty(m_CornRadError)
End Function
Private Function ValidateDiam() As Boolean
m_DiamError = String.Empty
If Not IsNothing(m_Diam) Then
Dim dDiam As Double = 0
StringToLen(m_Diam, dDiam)
If dDiam < -EPS_SMALL Then
m_DiamError = EgtMsg(MSG_TOOLSERRORS + 9)
End If
If Not IsNothing(m_TotDiam) Then
Dim dTotDiam As Double = 0
StringToLen(m_TotDiam, dTotDiam)
If dDiam > dTotDiam + EPS_SMALL Then
m_DiamError = EgtMsg(MSG_TOOLSERRORS + 18)
End If
End If
End If
NotifyPropertyChanged("DiamErrorMsg")
If String.IsNullOrEmpty(m_DiamError) Then
Return True
Else
Return False
End If
End Function
Private Function ValidateTotLen() As Boolean
m_TotLenError = String.Empty
If Not IsNothing(m_TotLen) Then
Dim dTotLen As Double = 0
StringToLen(m_TotLen, dTotLen)
If dTotLen < EPS_SMALL Then
m_TotLenError = EgtMsg(MSG_TOOLSERRORS + 15)
End If
End If
NotifyPropertyChanged("TotLenErrorMsg")
If String.IsNullOrEmpty(m_TotLenError) Then
Return True
Else
Return False
End If
End Function
Private Function ValidateLen() As Boolean
m_LenError = String.Empty
If Not IsNothing(m_Len) Then
Dim dLen As Double = 0
StringToLen(m_Len, dLen)
If dLen < EPS_SMALL Then
m_LenError = EgtMsg(MSG_TOOLSERRORS + 10)
End If
If Not IsNothing(m_TotLen) Then
Dim dTotLen As Double = 0
StringToLen(m_TotLen, dTotLen)
If dLen > dTotLen + EPS_SMALL Then
m_LenError = EgtMsg(MSG_TOOLSERRORS + 13)
End If
End If
End If
NotifyPropertyChanged("LenErrorMsg")
If String.IsNullOrEmpty(m_LenError) Then
Return True
Else
Return False
End If
End Function
Private Function ValidateMaxMat() As Boolean
m_MaxMatError = String.Empty
If Not IsNothing( m_MaxMat) Then
Dim dMaxMat As Double = 0
StringToLen(m_MaxMat, dMaxMat)
' Non ammesso valore negativo
If dMaxMat < EPS_SMALL Then
m_MaxMatError = EgtMsg(MSG_TOOLSERRORS + 6)
End If
' Per lame
If ( Type And MCH_TF.SAWBLADE) <> 0 Then
If Not IsNothing(m_Diam) Then
Dim dDiam As Double = 0
StringToLen(m_Diam, dDiam)
If dMaxMat > ( 0.35 * dDiam) + EPS_SMALL Then
m_MaxMatError = EgtMsg(MSG_TOOLSERRORS + 17)
End If
End If
' Per getto d'acqua
ElseIf ( Type And MCH_TF.WATERJET) <> 0 Then
' Non devo fare controlli
' Per tutti gli altri
Else
If Not IsNothing(m_Len) Then
Dim dLen As Double = 0
StringToLen(m_Len, dLen)
If dMaxMat > dLen + EPS_SMALL Then
m_MaxMatError = EgtMsg(MSG_TOOLSERRORS + 7)
End If
End If
End If
End If
NotifyPropertyChanged( "MaxMatErrorMsg")
Return String.IsNullOrEmpty( m_MaxMatError)
End Function
Private Function ValidateThick() As Boolean
m_ThickError = String.Empty
If Not IsNothing(m_Thick) Then
Dim dThick As Double = 0
StringToLen(m_Thick, dThick)
If (m_Type = MCH_TY.SAW_FLAT Or m_Type = MCH_TY.SAW_STD Or m_Type = MCH_TY.MORTISE_STD) And dThick < EPS_SMALL Then
m_ThickError = EgtMsg(MSG_TOOLSERRORS + 8)
End If
End If
NotifyPropertyChanged("ThickErrorMsg")
If String.IsNullOrEmpty(m_ThickError) Then
Return True
Else
Return False
End If
End Function
Private Function ValidateDraw() As Boolean
m_DrawError = String.Empty
If m_nDrawingError = 12 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 21) ' Lunghezza troppo piccola con il portautensile
ElseIf m_nDrawingError = 13 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 31) ' Lo Spessore deve essere differente da 0
ElseIf m_nDrawingError = 14 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 32) ' L'Angolo di Lato deve essere minore di 90°
ElseIf m_nDrawingError = 15 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 33) ' L'Angolo di Lato deve essere maggiore di -90°
ElseIf m_nDrawingError = 16 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 35) ' Raggio Corner ha un valore troppo grande
ElseIf m_nDrawingError = 17 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 36) ' Lo Spessore ha un valore troppo piccolo rispetto al Raggio Corne
ElseIf m_nDrawingError = 18 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 37) ' Il diametro risultante supera il Diametro Totale
ElseIf m_nDrawingError = 19 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 38) ' Il diametro risultante è minore di 0
ElseIf m_nDrawingError = 20 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 39) ' Il diametro stelo risultante è minore o uguale a 0
ElseIf m_nDrawingError = 21 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 40) ' Il Massimo Materiale deve essere più grande del Raggio Corner
ElseIf m_nDrawingError = 22 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 34) ' La Lunghezza Totale deve essere maggiore di Lunghezza + Spessore
ElseIf m_nDrawingError = 997 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 3) ' Il file non esiste o non è Nge
ElseIf m_nDrawingError = 998 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 4) ' Non esiste il ToolMaker per questo tipo di utensile
ElseIf m_nDrawingError <> 0 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 5) ' Impossibile creare l'utensile con questi parametri
End If
NotifyPropertyChanged("DrawErrorMsg")
Return String.IsNullOrEmpty(m_DrawError)
End Function
Private Function ValidateSelectedHead() As Boolean
m_SelectedHeadError = String.Empty
If IsNothing(m_SelectedHead) Then
m_SelectedHeadError = EgtMsg(MSG_TOOLSERRORS + 27)
Else
If Not IsNothing(m_HeadList) Then
If Not m_HeadList.Contains(m_SelectedHead) Then
m_SelectedHeadError = EgtMsg(MSG_TOOLSERRORS + 27)
End If
End If
End If
NotifyPropertyChanged("SelectedHeadErrorMsg")
If String.IsNullOrEmpty(m_SelectedHeadError) Then
Return True
Else
Return False
End If
End Function
Private Function ValidateSelectedExit() As Boolean
m_SelectedExitError = String.Empty
If IsNothing(m_SelectedExit) Then
m_SelectedExitError = EgtMsg(MSG_TOOLSERRORS + 28)
Else
If Not IsNothing(m_ExitList) Then
If Not m_ExitList.Contains(m_SelectedExit) Then
m_SelectedExitError = EgtMsg(MSG_TOOLSERRORS + 28)
End If
End If
End If
NotifyPropertyChanged("SelectedExitErrorMsg")
If String.IsNullOrEmpty(m_SelectedExitError) Then
Return True
Else
Return False
End If
End Function
#End Region ' Validation
#Region "COMMANDS"
#Region "OpenDrawFileCommand"
'''
''' Returns a command that create a new tool.
'''
Public ReadOnly Property OpenDrawFileCommand As ICommand
Get
If m_cmdOpenDrawFile Is Nothing Then
m_cmdOpenDrawFile = New Command(AddressOf OpenDrawFile)
End If
Return m_cmdOpenDrawFile
End Get
End Property
'''
''' Creata the new tool. This method is invoked by the NewCommand.
'''
Public Sub OpenDrawFile(ByVal param As Object)
Dim OpenFileDialog As New EgtWPFLib5.EgtOpenFileDialog
OpenFileDialog.Title = "Open draw file"
OpenFileDialog.Filter = "*.nge"
OpenFileDialog.FileNameFilter = AddressOf FilterFileName
OpenFileDialog.Directory = IniFile.m_sCurrMachToolsDirPath
OpenFileDialog.FileName = m_Draw
If OpenFileDialog.EgtShowDialog <> True Then
Return
End If
Draw = Path.GetFileName(OpenFileDialog.FileName)
UpdateSceneToolDraw()
End Sub
Private Function FilterFileName(sPath As String) As Boolean
Dim FileName As String = Path.GetFileNameWithoutExtension(sPath)
If Not IsUUID(FileName) Then
Return True
End If
Return False
End Function
#End Region ' OpenDrawFileCommand
#Region "AutoDrawCommand"
'''
''' Returns a command that create a new tool.
'''
Public ReadOnly Property AutoDrawCommand As ICommand
Get
If m_cmdAutoDraw Is Nothing Then
m_cmdAutoDraw = New Command(AddressOf AutoDraw)
End If
Return m_cmdAutoDraw
End Get
End Property
'''
''' Creata the new tool. This method is invoked by the NewCommand.
'''
Public Sub AutoDraw(ByVal param As Object)
Draw = m_Uuid & ".nge"
UpdateSceneToolDraw()
End Sub
#End Region ' AutoDrawCommand
#End Region ' Commands
End Class
Public Class HeadItem
Private m_HName As String
Public ReadOnly Property HName As String
Get
Return m_HName
End Get
End Property
Private m_HText As String
Public ReadOnly Property HText As String
Get
Return m_HText
End Get
End Property
Sub New(sHName As String, sHText As String)
m_HName = sHName
m_HText = sHText
End Sub
End Class
'''
''' Class that represent a Converter that use tool type and param type, to set the visibility state of the param type.
'''
Public Class ToolParamVisibilityConverter
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_TY.NONE
Return Visibility.Hidden
Case MCH_TY.DRILL_STD
Return TMDbParamVisibility.Drill_Std(CInt(parameter))
Case MCH_TY.DRILL_LONG
Return TMDbParamVisibility.Drill_Long(CInt(parameter))
Case MCH_TY.SAW_STD
Return TMDbParamVisibility.Saw_Std(CInt(parameter))
Case MCH_TY.SAW_FLAT
Return TMDbParamVisibility.Saw_Flat(CInt(parameter))
Case MCH_TY.MILL_STD
Return TMDbParamVisibility.Mill_Std(CInt(parameter))
Case MCH_TY.MILL_NOTIP
Return TMDbParamVisibility.Mill_NoTip(CInt(parameter))
Case MCH_TY.MORTISE_STD
Return TMDbParamVisibility.Mortise_Std(CInt(parameter))
Case MCH_TY.CHISEL_STD
Return TMDbParamVisibility.Chisel_Std(CInt(parameter))
Case MCH_TY.COMPO
Return TMDbParamVisibility.Compo(CInt(parameter))
Case MCH_TY.WATERJET
Return TMDbParamVisibility.WaterJet(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
'''
''' Class that represent a Converter that convert UUID to ***** in Draw param
'''
Public Class ToolDrawUUIDConverter
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 Not IsNothing(value) Then
If IsUUID(Path.GetFileNameWithoutExtension(value.ToString)) Then
Return ToolDrawUUIDName
Else
Return value.ToString
End If
Else
Return Nothing
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
Return value.ToString
End Function
End Class
'''
''' Class that represent a Converter that use the selected item of ToolsTreeView, to set the visibility state of the error message.
'''
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