794 lines
27 KiB
VB.net
794 lines
27 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
|
|
Public Class PositionGroup
|
|
|
|
' Lista delle posizioni
|
|
Private m_PositionList As New ObservableCollection(Of Position)
|
|
Public Property PositionList As ObservableCollection(Of Position)
|
|
Get
|
|
Return m_PositionList
|
|
End Get
|
|
Set(value As ObservableCollection(Of Position))
|
|
m_PositionList = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New()
|
|
End Sub
|
|
|
|
Sub New(PositionList As ObservableCollection(Of Position))
|
|
m_PositionList = PositionList
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class Position
|
|
|
|
Private Const INVALIDPOS As String = ""
|
|
|
|
Private m_TcPos As String
|
|
Public Property TcPos As String
|
|
Get
|
|
Return m_TcPos
|
|
End Get
|
|
Set(value As String)
|
|
m_TcPos = value
|
|
End Set
|
|
End Property
|
|
|
|
Friend m_IsModifiedHead As Boolean = False
|
|
Friend m_IsAppliedHead As Boolean = True
|
|
Private m_OrigHead As String = Nothing
|
|
Friend Property OrigHead As String
|
|
Get
|
|
Return m_OrigHead
|
|
End Get
|
|
Set(value As String)
|
|
m_OrigHead = value
|
|
m_IsAppliedHead = True
|
|
End Set
|
|
End Property
|
|
Private m_Head As String
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Head
|
|
''' </summary>
|
|
Friend Property Head As String
|
|
Get
|
|
Return m_Head
|
|
End Get
|
|
Set(value As String)
|
|
If value = String.Empty Or value <> m_Head Then
|
|
m_Head = value
|
|
If Not IsNothing(m_Head) And Not IsNothing(m_OrigHead) Then
|
|
m_IsAppliedHead = (m_Head = m_OrigHead)
|
|
Else
|
|
m_IsAppliedHead = IsNothing(m_Head) And IsNothing(m_OrigHead)
|
|
End If
|
|
m_IsModifiedHead = True
|
|
End If
|
|
End Set
|
|
End Property
|
|
Friend Sub SetHead(value As String)
|
|
If value = String.Empty Or value <> m_Head Then
|
|
m_Head = value
|
|
m_IsModifiedHead = False
|
|
End If
|
|
End Sub
|
|
|
|
' Lista delle uscite con relativi utensili associati
|
|
Private m_ExitToolAssociationList As New ObservableCollection(Of ExitToolAssociation)
|
|
Public Property ExitToolAssociationList As ObservableCollection(Of ExitToolAssociation)
|
|
Get
|
|
Return m_ExitToolAssociationList
|
|
End Get
|
|
Set(value As ObservableCollection(Of ExitToolAssociation))
|
|
m_ExitToolAssociationList = value
|
|
End Set
|
|
End Property
|
|
|
|
#Region "METHODS"
|
|
|
|
Friend Sub SetIsValidPosFromTool(TUuid As String)
|
|
EgtLuaSetGlobStringVar("STU.TUUID", TUuid)
|
|
EgtLuaSetGlobStringVar("STU.TCPOS", m_TcPos)
|
|
EgtLuaCallFunction("STU.GetValidHeadExitForPos")
|
|
' Leggo variabili
|
|
Dim sHead As String = String.Empty
|
|
EgtLuaGetGlobStringVar("STU.HEAD", sHead)
|
|
Dim nExit As Integer = 0
|
|
EgtLuaGetGlobIntVar("STU.EXIT", nExit)
|
|
Dim nErr As Integer = 999
|
|
EgtLuaGetGlobIntVar("STU.ERR", nErr)
|
|
If nErr <> 0 Then
|
|
' disattivo tutte le uscite tranne quelle attrezzate
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = False
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
Dim sToolName As String = String.Empty
|
|
EgtTdbGetToolFromUUID(TUuid, sToolName)
|
|
EgtOutLog("Error in setup! Tool:" & sToolName & " TcPos: " & m_TcPos)
|
|
Return
|
|
End If
|
|
' verifico se la posizione è libera o c'è un utensile attrezzato
|
|
Dim PosIsOccupied As Boolean = False
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
PosIsOccupied = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
' se la posizione non è valida, disattivo tutte le uscite tranne quelle attrezzate
|
|
If sHead = INVALIDPOS Then
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = False
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
' altrimenti, se la posizione nell'attrezzaggio è vuota
|
|
ElseIf Not PosIsOccupied Then
|
|
' se l'uscita restituita esiste
|
|
If ExitToolAssociationList.Count >= nExit Then
|
|
' disattivo tutte le uscite tranne quella restituita
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitIndex + 1 = nExit Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = True
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
' altrimenti lascio attiva solo la prima uscita
|
|
Else
|
|
ExitToolAssociationList(0).IsEnabledPos = True
|
|
For ExitIndex = 1 To ExitToolAssociationList.Count - 1
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
Next
|
|
End If
|
|
' altrimenti, se le teste coincidono
|
|
ElseIf sHead = Head Then
|
|
' se l'uscita restituita è libera la attivo e disattivo tutte le altre non occupate
|
|
If Not ExitToolAssociationList(nExit - 1).IsOccupied Then
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitIndex = nExit - 1 Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = True
|
|
ElseIf ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = False
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
' altrimenti le disattivo tutte tranne quelle occupate
|
|
Else
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
If ExitIndex = nExit - 1 Then
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = True
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = False
|
|
End If
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
End If
|
|
' se le teste non coincidono
|
|
Else
|
|
EgtLuaSetGlobStringVar("STU.HEAD1", sHead)
|
|
EgtLuaSetGlobStringVar("STU.HEAD2", Head)
|
|
EgtLuaCallFunction("STU.IsCompatibleHeads")
|
|
' Leggo variabili
|
|
Dim bIsValid As Boolean = False
|
|
EgtLuaGetGlobBoolVar("STU.ISVALID", bIsValid)
|
|
nErr = 999
|
|
EgtLuaGetGlobIntVar("STU.ERR", nErr)
|
|
If nErr <> 0 Then
|
|
' disattivo tutte le uscite tranne quelle attrezzate
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = False
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
Dim sToolName As String = String.Empty
|
|
EgtTdbGetToolFromUUID(TUuid, sToolName)
|
|
EgtOutLog("Error in setup! Tool:" & sToolName & " TcPos: " & m_TcPos)
|
|
Return
|
|
End If
|
|
' se le teste sono compatibili
|
|
If bIsValid Then
|
|
' se l'uscita restituita è libera la attivo e disattivo tutte le altre non occupate
|
|
If nExit < ExitToolAssociationList.Count - 1 AndAlso Not ExitToolAssociationList(nExit - 1).IsOccupied Then
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitIndex = nExit - 1 Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = True
|
|
ElseIf ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = False
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
' altrimenti le disattivo tutte tranne quelle occupate
|
|
Else
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
If ExitIndex = nExit - 1 Then
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = True
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = False
|
|
End If
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
End If
|
|
' se le teste non sono compatibili
|
|
Else
|
|
' disabilito tutte le uscite
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Friend Sub SetNotValidPos()
|
|
' le disattivo tutte tranne quelle occupate
|
|
For ExitIndex = 0 To ExitToolAssociationList.Count - 1
|
|
If ExitToolAssociationList(ExitIndex).IsOccupied Then
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = True
|
|
ExitToolAssociationList(ExitIndex).IsValidPos = Nothing
|
|
Else
|
|
ExitToolAssociationList(ExitIndex).IsEnabledPos = False
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
#End Region ' Methods
|
|
|
|
Sub New(TcPos As String, Head As String, ExitNum As Integer)
|
|
Me.TcPos = TcPos
|
|
Me.SetHead(Head)
|
|
For ExitIndex = 1 To ExitNum
|
|
ExitToolAssociationList.Add(New ExitToolAssociation(ExitIndex.ToString, Me))
|
|
Next
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class ExitToolAssociation
|
|
Inherits VMBase
|
|
|
|
' Riferimento alla lista utensili
|
|
Friend Shared sh_ToolsList As ObservableCollection(Of FamilyToolItem)
|
|
' riferimento alla lista posizioni
|
|
Friend Shared sh_PositionGroupList As ObservableCollection(Of PositionGroup)
|
|
' Actions
|
|
Friend Shared m_delIsModifiedSetUp As Action
|
|
|
|
' Riferimento alla posizione di questa uscita
|
|
Private m_MyPos As Position
|
|
|
|
Private m_IsOccupied As Boolean
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Exit
|
|
''' </summary>
|
|
Public Property IsOccupied As Boolean
|
|
Get
|
|
Return m_IsOccupied
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_IsOccupied Then
|
|
m_IsOccupied = value
|
|
NotifyPropertyChanged("IsOccupied")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_IsEnabledPos As Boolean
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Exit
|
|
''' </summary>
|
|
Public Property IsEnabledPos As Boolean
|
|
Get
|
|
Return m_IsEnabledPos
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_IsEnabledPos Then
|
|
m_IsEnabledPos = value
|
|
NotifyPropertyChanged("IsEnabledPos")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_IsValidPos As Boolean?
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Exit
|
|
''' </summary>
|
|
Public Property IsValidPos As Boolean?
|
|
Get
|
|
Return m_IsValidPos
|
|
End Get
|
|
Set(value As Boolean?)
|
|
m_IsValidPos = value
|
|
NotifyPropertyChanged("ExitBtnBackgroundCol")
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property ExitBtnBackgroundCol As SolidColorBrush
|
|
Get
|
|
If IsNothing(m_IsValidPos) Then
|
|
Return New SolidColorBrush(Color.FromArgb(255, 221, 221, 221))
|
|
ElseIf m_IsValidPos Then
|
|
If m_IsOccupied Then
|
|
Return EgaltechYellow
|
|
Else
|
|
Return EgaltechGreen
|
|
End If
|
|
Else
|
|
Return New SolidColorBrush(Color.FromArgb(255, 221, 221, 221))
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Private m_Exit As String
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Exit
|
|
''' </summary>
|
|
Public Property ExitPar As String
|
|
Get
|
|
Return m_Exit
|
|
End Get
|
|
Set(value As String)
|
|
If value <> m_Exit Then
|
|
m_Exit = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend m_IsModifiedTool As Boolean = False
|
|
Friend m_IsAppliedTool As Boolean = True
|
|
Private m_OrigTool As ToolItem = Nothing
|
|
Friend Property OrigTool As ToolItem
|
|
Get
|
|
Return m_OrigTool
|
|
End Get
|
|
Set(value As ToolItem)
|
|
m_OrigTool = value
|
|
m_IsAppliedTool = True
|
|
End Set
|
|
End Property
|
|
Private m_Tool As ToolItem
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Uuid
|
|
''' </summary>
|
|
Public Property Tool As ToolItem
|
|
Get
|
|
Return m_Tool
|
|
End Get
|
|
Set(value As ToolItem)
|
|
m_Tool = value
|
|
If Not IsNothing(m_Tool) And Not IsNothing(m_OrigTool) Then
|
|
m_IsAppliedTool = (m_Tool.Uuid = m_OrigTool.Uuid)
|
|
Else
|
|
m_IsAppliedTool = IsNothing(m_Tool) And IsNothing(m_OrigTool)
|
|
End If
|
|
m_IsModifiedTool = True
|
|
NotifyPropertyChanged("Tool")
|
|
m_delIsModifiedSetUp()
|
|
End Set
|
|
End Property
|
|
Friend Sub SetTool(ToolItem As ToolItem)
|
|
m_Tool = ToolItem
|
|
If Not IsNothing(m_Tool) And Not IsNothing(m_OrigTool) Then
|
|
m_IsAppliedTool = (m_Tool.Uuid = m_OrigTool.Uuid)
|
|
Else
|
|
m_IsAppliedTool = IsNothing(m_Tool) And IsNothing(m_OrigTool)
|
|
End If
|
|
m_IsModifiedTool = False
|
|
NotifyPropertyChanged("Tool")
|
|
End Sub
|
|
|
|
#Region "Messages"
|
|
|
|
Public ReadOnly Property ToolTipMsg As String
|
|
Get
|
|
If IsNothing(m_Tool) Then Return ""
|
|
EgtTdbSetCurrTool(m_Tool.Name)
|
|
Dim dValue As Double = 0
|
|
Dim nType As Integer
|
|
EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType)
|
|
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dValue)
|
|
Dim sDiam As String = LenToString(dValue, 4)
|
|
EgtTdbGetCurrToolParam(MCH_TP.LEN, dValue)
|
|
Dim sLen As String = LenToString(dValue, 4)
|
|
EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dValue)
|
|
Dim MaxMat As String = LenToString(dValue, 4)
|
|
Return (EgtMsg(MSG_TOOLSDBPAGE + 53) & ": " & ConvertToolTypeToString(nType) & Environment.NewLine &
|
|
EgtMsg(MSG_TOOLSDBPAGE + 56) & ": " & sDiam & Environment.NewLine &
|
|
EgtMsg(MSG_TOOLSDBPAGE + 62) & ": " & sLen & Environment.NewLine &
|
|
EgtMsg(MSG_TOOLSDBPAGE + 64) & ": " & MaxMat)
|
|
End Get
|
|
End Property
|
|
|
|
Private Function ConvertToolTypeToString(ToolType As Integer) As String
|
|
Select Case ToolType
|
|
Case MCH_TY.DRILL_STD
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 1)
|
|
Case MCH_TY.DRILL_LONG
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 6)
|
|
Case MCH_TY.SAW_STD
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 2)
|
|
Case MCH_TY.SAW_FLAT
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 7)
|
|
Case MCH_TY.MILL_STD
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 3)
|
|
Case MCH_TY.MILL_NOTIP
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 8)
|
|
Case MCH_TY.MORTISE_STD
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 4)
|
|
Case MCH_TY.COMPO
|
|
Return EgtMsg(MSG_TOOLSDBPAGE + 5)
|
|
Case Else
|
|
Return String.Empty
|
|
End Select
|
|
End Function
|
|
|
|
#End Region ' Messages
|
|
|
|
' Definizione comandi
|
|
Private m_cmdSetUpTool As ICommand
|
|
|
|
#Region "CONSTRUCTORS"
|
|
|
|
Sub New(ExitPar As String, MyPos As Position)
|
|
Me.ExitPar = ExitPar
|
|
m_MyPos = MyPos
|
|
End Sub
|
|
|
|
#End Region ' Constructors
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "SetUpToolCommand"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do Exec.
|
|
''' </summary>
|
|
Public ReadOnly Property SetUpToolCommand As ICommand
|
|
Get
|
|
If m_cmdSetUpTool Is Nothing Then
|
|
m_cmdSetUpTool = New Command(AddressOf SetUpTool)
|
|
End If
|
|
Return m_cmdSetUpTool
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the Exec. This method is invoked by the ExecCommand.
|
|
''' </summary>
|
|
Public Sub SetUpTool(param As Object)
|
|
If m_IsOccupied Then
|
|
' se quello selezionato nella lista non è un utensile esco
|
|
If Not TypeOf param Is ToolItem Then
|
|
m_IsOccupied = False
|
|
NotifyPropertyChanged("IsOccupied")
|
|
Return
|
|
End If
|
|
Dim SelTool As ToolItem = DirectCast(param, ToolItem)
|
|
' verifico se devo cambiare la testa
|
|
EgtLuaSetGlobStringVar("STU.TUUID", SelTool.Uuid)
|
|
EgtLuaSetGlobStringVar("STU.TCPOS", m_MyPos.TcPos)
|
|
EgtLuaCallFunction("STU.GetValidHeadExitForPos")
|
|
' Leggo variabili
|
|
Dim sHead As String = String.Empty
|
|
EgtLuaGetGlobStringVar("STU.HEAD", sHead)
|
|
Dim nExit As Integer = 0
|
|
EgtLuaGetGlobIntVar("STU.EXIT", nExit)
|
|
Dim nErr As Integer = 999
|
|
EgtLuaGetGlobIntVar("STU.ERR", nErr)
|
|
If nErr <> 0 Then
|
|
Dim sToolName As String = String.Empty
|
|
EgtTdbGetToolFromUUID(SelTool.Uuid, sToolName)
|
|
EgtOutLog("Error in setup! Tool:" & sToolName & " TcPos: " & m_MyPos.TcPos)
|
|
m_IsOccupied = False
|
|
NotifyPropertyChanged("IsOccupied")
|
|
Return
|
|
End If
|
|
' se la testa restituita non coincide con quella della posizione
|
|
If m_MyPos.Head <> sHead Then
|
|
' aggiorno testa ed uscite
|
|
m_MyPos.Head = sHead
|
|
For ExitIndex = m_MyPos.ExitToolAssociationList.Count + 1 To EgtGetHeadExitCount(sHead)
|
|
m_MyPos.ExitToolAssociationList.Add(New ExitToolAssociation(ExitIndex.ToString, m_MyPos))
|
|
Next
|
|
For ExitIndex = m_MyPos.ExitToolAssociationList.Count - 1 To EgtGetHeadExitCount(sHead) Step -1
|
|
m_MyPos.ExitToolAssociationList.RemoveAt(ExitIndex)
|
|
Next
|
|
End If
|
|
' lo aggiungo alla posizione di attrezzaggio
|
|
Tool = SelTool
|
|
IsOccupied = True
|
|
' e lo tolgo dalla lista
|
|
For Index = 0 To sh_ToolsList.Count - 1
|
|
If (SelTool.Type And sh_ToolsList(Index).Type) > 0 Then
|
|
sh_ToolsList(Index).Items.Remove(SelTool)
|
|
Exit For
|
|
End If
|
|
Next
|
|
NotifyPropertyChanged("ToolTipMsg")
|
|
Else
|
|
' lo rimetto nella lista utensili
|
|
For Index = 0 To sh_ToolsList.Count - 1
|
|
If (Tool.Type And sh_ToolsList(Index).Type) > 0 Then
|
|
' creo una copia della lista di utensili della famiglia
|
|
Dim TempList As New List(Of String)
|
|
Dim ToolIndex As Integer
|
|
For ToolIndex = 0 To sh_ToolsList(Index).Items.Count - 1
|
|
TempList.Add(sh_ToolsList(Index).Items(ToolIndex).Name)
|
|
Next
|
|
' aggiungo l'utensile da inserire
|
|
TempList.Add(Tool.Name)
|
|
' riordino la lista
|
|
TempList.Sort()
|
|
' ricavo l'indice dell'utensile inserito
|
|
ToolIndex = TempList.IndexOf(Tool.Name)
|
|
' lo inserisco nel posto giusto
|
|
sh_ToolsList(Index).Items.Insert(ToolIndex, Tool)
|
|
' espando la famiglia in cui l'ho messo
|
|
sh_ToolsList(Index).IsExpanded = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
' abilito e disabilito tutte le uscite in base all'utensile selezionato
|
|
For GroupIndex = 0 To sh_PositionGroupList.Count - 1
|
|
For PosIndex = 0 To sh_PositionGroupList(GroupIndex).PositionList.Count - 1
|
|
sh_PositionGroupList(GroupIndex).PositionList(PosIndex).SetIsValidPosFromTool(Tool.Uuid)
|
|
Next
|
|
Next
|
|
|
|
' seleziono utensile rimesso in lista
|
|
m_Tool.IsSelected = True
|
|
Tool.NotifyPropertyChanged("IsSelected")
|
|
' e lo tolgo dalla posizione di attrezzaggio
|
|
Tool = Nothing
|
|
IsOccupied = False
|
|
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' SetUpToolCommand
|
|
|
|
#End Region ' Commands
|
|
|
|
End Class
|
|
|
|
Public Class FamilyToolItem
|
|
Inherits InheritableTreeViewItem
|
|
|
|
' riferimento alla lista posizioni
|
|
Friend Shared m_PositionGroupList As ObservableCollection(Of PositionGroup)
|
|
|
|
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
|
|
' disabilito tutte le uscite tranne quelle occupate
|
|
For GroupIndex = 0 To m_PositionGroupList.Count - 1
|
|
For PosIndex = 0 To m_PositionGroupList(GroupIndex).PositionList.Count - 1
|
|
m_PositionGroupList(GroupIndex).PositionList(PosIndex).SetNotValidPos()
|
|
Next
|
|
Next
|
|
End If
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property FamilyColor As SolidColorBrush
|
|
Get
|
|
If m_HaveToolsInCurrMachGroup Then
|
|
Return Brushes.Red
|
|
Else
|
|
Return Brushes.Transparent
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Private m_HaveToolsInCurrMachGroup As Boolean
|
|
Friend ReadOnly Property HaveToolsInCurrMachGroup As Boolean
|
|
Get
|
|
Return m_HaveToolsInCurrMachGroup
|
|
End Get
|
|
End Property
|
|
|
|
Private m_Type As MCH_TF
|
|
''' <summary>
|
|
''' Property that determines the tool type of the family
|
|
''' </summary>
|
|
Public ReadOnly Property Type As MCH_TF
|
|
Get
|
|
Return m_Type
|
|
End Get
|
|
End Property
|
|
|
|
Sub New(Name As String, Type As MCH_TF)
|
|
MyBase.New(Name)
|
|
Me.PictureString = "/Resources/TreeView/Folder.png"
|
|
m_Type = Type
|
|
' Aggiungo il gestore d'evento di modifica lista degli item per poter mettere e togliere il pallino che indica se ci sono utensili da attrezzare
|
|
AddHandler Items.CollectionChanged, AddressOf ManageObservableCollection
|
|
End Sub
|
|
|
|
Private Sub ManageObservableCollection(sender As Object, e As System.Collections.Specialized.NotifyCollectionChangedEventArgs)
|
|
m_HaveToolsInCurrMachGroup = False
|
|
For Index = 0 To Items.Count - 1
|
|
Dim ToolItem As ToolItem = DirectCast(Items(Index), ToolItem)
|
|
If ToolItem.m_IsInCurrMachGroup Then
|
|
m_HaveToolsInCurrMachGroup = True
|
|
End If
|
|
Next
|
|
NotifyPropertyChanged("FamilyColor")
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class ToolItem
|
|
Inherits InheritableTreeViewItem
|
|
|
|
' riferimento alla lista posizioni
|
|
Friend Shared m_PositionGroupList As ObservableCollection(Of PositionGroup)
|
|
|
|
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
|
|
' abilito e disabilito tutte le uscite in base all'utensile selezionato
|
|
For GroupIndex = 0 To m_PositionGroupList.Count - 1
|
|
For PosIndex = 0 To m_PositionGroupList(GroupIndex).PositionList.Count - 1
|
|
m_PositionGroupList(GroupIndex).PositionList(PosIndex).SetIsValidPosFromTool(Uuid)
|
|
Next
|
|
Next
|
|
End If
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property ToolColor As SolidColorBrush
|
|
Get
|
|
If m_IsInCurrMachGroup Then
|
|
Return Brushes.Red
|
|
Else
|
|
Return Brushes.Transparent
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Friend m_IsInCurrMachGroup As Boolean
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Exit
|
|
''' </summary>
|
|
Public Property IsInCurrMachGroup As Boolean
|
|
Get
|
|
Return m_IsInCurrMachGroup
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value <> m_IsInCurrMachGroup Then
|
|
m_IsInCurrMachGroup = value
|
|
'NotifyPropertyChanged("IsInCurrMachGroup")
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Exit As String
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Exit
|
|
''' </summary>
|
|
Friend Property ExitPar As String
|
|
Get
|
|
Return m_Exit
|
|
End Get
|
|
Set(value As String)
|
|
If value <> m_Exit Then
|
|
m_Exit = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Type As MCH_TY
|
|
''' <summary>
|
|
''' Property that determines the tool type of the family
|
|
''' </summary>
|
|
Public ReadOnly Property Type As MCH_TY
|
|
Get
|
|
Return m_Type
|
|
End Get
|
|
End Property
|
|
|
|
Private m_Head As String
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Head
|
|
''' </summary>
|
|
Friend Property Head As String
|
|
Get
|
|
Return m_Head
|
|
End Get
|
|
Set(value As String)
|
|
If value = String.Empty Or value <> m_Head Then
|
|
m_Head = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_TcPos As String
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Tc Pos
|
|
''' </summary>
|
|
Friend Property TcPos As String
|
|
Get
|
|
Return m_TcPos
|
|
End Get
|
|
Set(value As String)
|
|
If value = String.Empty Or value <> m_TcPos Then
|
|
m_TcPos = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_Uuid As String
|
|
''' <summary>
|
|
''' Property that read and write to the tool's database the Uuid
|
|
''' </summary>
|
|
Friend ReadOnly Property Uuid As String
|
|
Get
|
|
Return m_Uuid
|
|
End Get
|
|
End Property
|
|
|
|
#Region "Messages"
|
|
|
|
Public ReadOnly Property ToolTipMsg As String
|
|
Get
|
|
Return (EgtMsg(MSG_TOOLSDBPAGE + 75) & ": " & m_Name & Environment.NewLine &
|
|
EgtMsg(MSG_TOOLSDBPAGE + 78) & ": " & m_TcPos & Environment.NewLine &
|
|
EgtMsg(MSG_TOOLSDBPAGE + 74) & ": " & m_Head & "." & m_Exit)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' Messages
|
|
|
|
Sub New(Name As String, ExitPar As String, Type As Integer, Head As String, TcPos As String, Uuid As String, IsInCurrMachGroup As Boolean)
|
|
MyBase.New(Name)
|
|
m_Exit = ExitPar
|
|
m_Type = DirectCast(Type, MCH_TY)
|
|
m_Head = Head
|
|
m_TcPos = TcPos
|
|
m_Uuid = Uuid
|
|
m_IsInCurrMachGroup = IsInCurrMachGroup
|
|
End Sub
|
|
|
|
End Class
|