346 lines
10 KiB
VB.net
346 lines
10 KiB
VB.net
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class MachiningTabVM
|
|
Inherits VMBase
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
Enum MachiningModeOpt As Integer
|
|
SPLIT
|
|
MOVERAWPART
|
|
End Enum
|
|
|
|
Private m_MachiningMode As MachiningModeOpt
|
|
Public Property MachiningMode As MachiningModeOpt
|
|
Get
|
|
Return m_MachiningMode
|
|
End Get
|
|
Set(value As MachiningModeOpt)
|
|
m_MachiningMode = value
|
|
NotifyPropertyChanged("MachiningModeControl")
|
|
End Set
|
|
End Property
|
|
|
|
' Tipo movimento dei grezzi (manuale o con testa ventosa)
|
|
Private m_bByHand As Boolean = True
|
|
Public ReadOnly Property ByHand As Boolean
|
|
Get
|
|
Return m_bByHand
|
|
End Get
|
|
End Property
|
|
|
|
' Flag di sola visualizzazione/modifica
|
|
Private m_bIsShow As Boolean = False
|
|
Public Property IsShow As Boolean
|
|
Get
|
|
Return m_bIsShow
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_bIsShow = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SplitModeV As SplitModeV
|
|
Private m_MoveRawModeV As MoveRawModeV
|
|
Public ReadOnly Property MachiningModeControl As ContentControl
|
|
Get
|
|
If m_MachiningMode = MachiningModeOpt.SPLIT Then
|
|
Return m_SplitModeV
|
|
Else
|
|
Return m_MoveRawModeV
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Private m_PrevIsEnabled As Boolean
|
|
Public Property PrevIsEnabled As Boolean
|
|
Get
|
|
Return m_PrevIsEnabled
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_PrevIsEnabled = value
|
|
NotifyPropertyChanged("PrevIsEnabled")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_NextIsEnabled As Boolean
|
|
Public Property NextIsEnabled As Boolean
|
|
Get
|
|
Return m_NextIsEnabled
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_NextIsEnabled = value
|
|
NotifyPropertyChanged("NextIsEnabled")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_ModifyIsEnabled As Boolean
|
|
Public Property ModifyIsEnabled As Boolean
|
|
Get
|
|
Return m_ModifyIsEnabled
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_ModifyIsEnabled = value
|
|
NotifyPropertyChanged("ModifyIsEnabled")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_AutoIsEnabled As Boolean
|
|
Public Property AutoIsEnabled As Boolean
|
|
Get
|
|
Return m_AutoIsEnabled
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_AutoIsEnabled = value
|
|
NotifyPropertyChanged("AutoIsEnabled")
|
|
End Set
|
|
End Property
|
|
|
|
Private m_AutoVisibility As Visibility
|
|
Public Property AutoVisibility As Visibility
|
|
Get
|
|
Return m_AutoVisibility
|
|
End Get
|
|
Set(value As Visibility)
|
|
m_AutoVisibility = value
|
|
NotifyPropertyChanged("AutoVisibility")
|
|
End Set
|
|
End Property
|
|
|
|
' Definizione comandi
|
|
Private m_cmdPrev As ICommand
|
|
Private m_cmdNext As ICommand
|
|
Private m_cmdModify As ICommand
|
|
Private m_cmdAuto As ICommand
|
|
|
|
#Region "Messages"
|
|
|
|
Public ReadOnly Property ModifyMsg As String
|
|
Get
|
|
Return EgtMsg(MSG_SPLITPAGEUC + 17)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property AutoMsg As String
|
|
Get
|
|
Return EgtMsg(MSG_SPLITPAGEUC + 18)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' Messages
|
|
|
|
#End Region ' FIELDS & PROPERTIES
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
' Creo riferimento a questa classe in OmagOFFICEMap
|
|
OmagOFFICEMap.SetRefMachiningTabVM(Me)
|
|
' Creo pagina per modo Split
|
|
m_SplitModeV = New SplitModeV
|
|
m_SplitModeV.DataContext = New SplitModeVM
|
|
' Creo pagina per modo MoveRaw
|
|
m_MoveRawModeV = New MoveRawModeV
|
|
m_MoveRawModeV.DataContext = New MoveRawModeVM
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTOR
|
|
|
|
#Region "METHODS"
|
|
|
|
Friend Function InitMachining() As Boolean
|
|
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
|
|
' Disabilito Machine Panel (utensili, lavoraz...)
|
|
OmagOFFICEMap.refMachinePanelVM.MachPanel_IsEnabled = False
|
|
' Inizio in modalità Split
|
|
MachiningMode = MachiningModeOpt.SPLIT
|
|
' Leggo tipo movimento grezzi
|
|
m_bByHand = (EgtGetHeadId(VACUUM_HEAD) = GDB_ID.NULL Or
|
|
Not OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.AUTO_MANIP) Or
|
|
(GetMainPrivateProfileInt(S_RAWMOVE, K_PERPENDICULAR, 0) <> 0))
|
|
' Se movimento con ventosa, verifico se lama troppo grande
|
|
If Not m_bByHand And Not CurrentMachine.IsVacuumMovePossible() Then
|
|
m_bByHand = True
|
|
' Lama troppo grande per utilizzo ventosa
|
|
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_SPLITPAGEUC + 11), MSG_TYPE.WARNING)
|
|
End If
|
|
' Carico eventuale manipolatore pezzi
|
|
EgtDisableModified()
|
|
LoadVacuumCups()
|
|
EgtEnableModified()
|
|
' Se nessuna modifica, entro in modalità visualizzazione
|
|
If EstCalc.GetOrderMachiningFlag() Then
|
|
' Imposto flag di visualizzazione
|
|
m_bIsShow = True
|
|
' altrimenti riparto da capo
|
|
Else
|
|
' Cancello tutto
|
|
EraseMachinings(GDB_ID.NULL)
|
|
' Reinserisco tutte le lavorazioni
|
|
AddMachinings(GDB_ID.NULL)
|
|
' Imposto flag di modifica
|
|
m_bIsShow = False
|
|
End If
|
|
' Inizializzo pagina Split
|
|
OmagOFFICEMap.refSplitModeVM.InitSplitRaw()
|
|
' Aggiorno possibilità di uscire
|
|
ManageExit()
|
|
Return True
|
|
End Function
|
|
|
|
Friend Function ExitMachining() As Boolean
|
|
' Cancello eventuale manipolatore pezzi
|
|
EgtDisableModified()
|
|
RemoveVacuumCups()
|
|
EgtEnableModified()
|
|
' Esco da pagina Split
|
|
OmagOFFICEMap.refSplitModeVM.ExitSplitRaw()
|
|
' Riabilito Machine Panel (utensili, lavoraz...)
|
|
OmagOFFICEMap.refMachinePanelVM.MachPanel_IsEnabled = True
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub ManageExit()
|
|
Dim bEnab As Boolean = (m_MachiningMode = MachiningModeOpt.SPLIT)
|
|
OmagOFFICEMap.refOptionPanelVM.RawTabIsEnabled = bEnab
|
|
OmagOFFICEMap.refOptionPanelVM.NestTabIsEnabled = bEnab
|
|
OmagOFFICEMap.refOptionPanelVM.SimulTabIsEnabled = bEnab
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "PrevCommand"
|
|
|
|
Public ReadOnly Property PrevCommand As ICommand
|
|
Get
|
|
If m_cmdPrev Is Nothing Then
|
|
m_cmdPrev = New Command(AddressOf Prev)
|
|
End If
|
|
Return m_cmdPrev
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Prev(ByVal param As Object)
|
|
Dim bOk As Boolean = True
|
|
' Dichiaro solo visualizzazione
|
|
m_bIsShow = True
|
|
If m_MachiningMode = MachiningModeOpt.SPLIT Then
|
|
OmagOFFICEMap.refSplitModeVM.ExitSplitRaw(False)
|
|
Else
|
|
' verifico collisione dei pezzi in fase di scarico
|
|
bOk = OmagOFFICEMap.refMoveRawModeVM.ExitMoveRaw()
|
|
End If
|
|
' se trovata interferenza tra grezzi (dopo movimentazione) esco
|
|
If Not bOk Then Return
|
|
' Torno alla fase precedente
|
|
EgtSetCurrPhase(EgtGetCurrPhase() - 1)
|
|
' Si va sempre in Split
|
|
MachiningMode = MachiningModeOpt.SPLIT
|
|
AutoVisibility = Visibility.Visible
|
|
OmagOFFICEMap.refSplitModeVM.InitSplitRaw()
|
|
' Aggiorno possibilità di uscire
|
|
ManageExit()
|
|
End Sub
|
|
|
|
#End Region ' PrevCommand
|
|
|
|
#Region "NextCommand"
|
|
|
|
Public ReadOnly Property NextCommand As ICommand
|
|
Get
|
|
If m_cmdNext Is Nothing Then
|
|
m_cmdNext = New Command(AddressOf NextCmd)
|
|
End If
|
|
Return m_cmdNext
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub NextCmd(ByVal param As Object)
|
|
Dim bOk As Boolean = True
|
|
If m_MachiningMode = MachiningModeOpt.SPLIT Then
|
|
OmagOFFICEMap.refSplitModeVM.ExitSplitRaw(False)
|
|
MachiningMode = MachiningModeOpt.MOVERAWPART
|
|
AutoVisibility = Visibility.Hidden
|
|
bOk = OmagOFFICEMap.refMoveRawModeVM.InitMoveRaw()
|
|
Else
|
|
' se verificata una interferenza allora esco
|
|
bOk = OmagOFFICEMap.refMoveRawModeVM.ExitMoveRaw()
|
|
If Not bOk Then Return
|
|
MachiningMode = MachiningModeOpt.SPLIT
|
|
AutoVisibility = Visibility.Visible
|
|
OmagOFFICEMap.refSplitModeVM.InitSplitRaw()
|
|
End If
|
|
' Se non ci sono interferenze tra i grezzi -> aggiorno possibilità di uscire
|
|
If bOk Then ManageExit()
|
|
End Sub
|
|
|
|
#End Region ' NextCommand
|
|
|
|
#Region "ModifyCommand"
|
|
|
|
Public ReadOnly Property ModifyCommand As ICommand
|
|
Get
|
|
If m_cmdModify Is Nothing Then
|
|
m_cmdModify = New Command(AddressOf Modify)
|
|
End If
|
|
Return m_cmdModify
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Modify(ByVal param As Object)
|
|
m_bIsShow = False
|
|
If m_MachiningMode = MachiningModeOpt.SPLIT Then
|
|
OmagOFFICEMap.refSplitModeVM.ChangeToModify()
|
|
Else
|
|
OmagOFFICEMap.refMoveRawModeVM.ChangeToModify()
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' ModifyCommand
|
|
|
|
#Region "AutoCommand"
|
|
|
|
Public ReadOnly Property AutoCommand As ICommand
|
|
Get
|
|
If m_cmdAuto Is Nothing Then
|
|
m_cmdAuto = New Command(AddressOf Auto)
|
|
End If
|
|
Return m_cmdAuto
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Auto(ByVal param As Object)
|
|
If m_MachiningMode = MachiningModeOpt.SPLIT Then
|
|
OmagOFFICEMap.refSplitModeVM.ExecAuto()
|
|
' Ricarico pagina Split
|
|
OmagOFFICEMap.refSplitModeVM.InitSplitRaw()
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' AutoCommand
|
|
|
|
#End Region ' COMMANDS
|
|
|
|
#Region "EVENTS"
|
|
|
|
Friend Sub OnMouseDownScene(sender As Object, e As Windows.Forms.MouseEventArgs)
|
|
If m_MachiningMode = MachiningModeOpt.MOVERAWPART Then
|
|
OmagOFFICEMap.refMoveRawModeVM.OnMouseDownScene(sender, e)
|
|
ElseIf m_MachiningMode = MachiningModeOpt.SPLIT Then
|
|
OmagOFFICEMap.refSplitModeVM.OnMouseDownScene(sender, e)
|
|
End If
|
|
End Sub
|
|
|
|
Friend Sub OnMouseDownScene_DoubleClick(sender As Object, e As Windows.Forms.MouseEventArgs)
|
|
If m_MachiningMode = MachiningModeOpt.SPLIT Then
|
|
OmagOFFICEMap.refSplitModeVM.OnMouseDownScene_DoubleClick(sender, e)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' EVENTS
|
|
|
|
End Class
|