Files
omagoffice/MachGroupPanel/MachGroupPanelVM.vb
T
Emmanuele Sassi 130e41ba9a OmagOFFICE 1.8f1 :
- Aggiunta gestione pannello macchina.
- Aggiunti Db utensili e lavorazioni.
- Aggiunte opzioni macchina.
- Aggiunto menù recenti su apri progetto.
- Aggiunte verifiche compatibilità tra Db utensili, Db lavorazioni, attrezzaggio, lavorazioni correnti, materiale e spessore.
- Migliorie varie.
2017-06-06 08:08:46 +00:00

193 lines
8.3 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class MachGroupPanelVM
Inherits EgtWPFLib5.EgtMachGroupPanelVM
#Region "CONSTRUCTOR"
Sub New()
MyBase.New()
' Recupero la macchina di default
Dim sDefaultMachine As String = String.Empty
GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine)
' Creo riferimento a questa classe in OmagOFFICEMap
OmagOFFICEMap.SetRefMachGroupPanelVM(Me)
InitMachGroupPanel(True, OmagOFFICEMap.refMachinePanelVM.MachineList.ToList(),
sDefaultMachine, BASE_MACH_GROUP & "1")
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Overrides Sub AddMachGroup()
If NewMachGroup() Then
' creo oggetto gruppo creato
Dim nNewMachGroupID As Integer = EgtGetCurrMachGroup()
Dim sNewMachGroupName As String = String.Empty
Dim sNewMachGroupMachineName As String = String.Empty
EgtGetMachGroupName(EgtGetCurrMachGroup(), sNewMachGroupName)
EgtGetMachGroupMachineName(nNewMachGroupID, sNewMachGroupMachineName)
Dim MyMachGroup As MyMachGroup = New MyMachGroup(EgtGetCurrMachGroup, sNewMachGroupName, sNewMachGroupMachineName, EgtGetFirstNameInGroup(EgtGetCurrMachGroup(), "Opers"))
' lo aggiungo alla lista
MachGroupList.Add(MyMachGroup)
' e lo seleziono
SelectedMachGroup = MyMachGroup
EgtZoom(ZM.ALL)
End If
End Sub
Public Overrides Sub LoadMachGroupList()
' Carico i gruppi di lavorazione nella lista
Dim nId = EgtGetFirstMachGroup()
While nId <> GDB_ID.NULL
Dim sName As String = String.Empty
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
MachGroupList.Add(New MyMachGroup(nId, sName, sMachine, EgtGetFirstNameInGroup(nId, "Opers")))
nId = EgtGetNextMachGroup(nId)
End While
End Sub
Public Overrides Function OnPreNewMachGroup() As Boolean
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostV.OmagOFFICEScene.GetCtx())
Return True
End Function
' NB: Anche se ho già aggiunto il nuovo gruppo di lavorazione, non l'ho ancora reso corrente (viene fatto dopo), quindi
' non posso usare CurrentMachine perchè è ancora impostata quella precedente!!!
Public Overrides Function OnPostNewMachGroup() As Boolean
' !!! GESTIRE MACCHINE CON DUE TAVOLE !!!
EgtSetTable("MainTab")
' Aggiorno grezzo iniziale
EstCalc.UpdateRawPart()
' leggo nome attrezzaggio di default
Dim sDefaultSetUpName As String = String.Empty
Dim sCurrMachName As String = String.Empty
EgtGetCurrMachineName(sCurrMachName)
Dim sMachineIniPath As String = OmagOFFICE.refMainWindowVM.MainWindowM.sMachinesRoot & "\" & sCurrMachName & "\" & sCurrMachName & ".ini"
EgtUILib.GetPrivateProfileString(S_SETUP, K_DEFAULT, "", sDefaultSetUpName, sMachineIniPath)
' se è attiva l'opzione, rendo corrente l'attrezzaggio di default
If Not String.IsNullOrEmpty(sDefaultSetUpName) Then
If Not EgtImportSetup(sDefaultSetUpName) Then
EgtOutLog("Error loading default setup " & sDefaultSetUpName)
MessageBox.Show(EgtMsg(MSG_SETUPERRORS + 9) & " " & sDefaultSetUpName, MessageBoxButton.OK, MessageBoxImage.Exclamation)
End If
End If
' Salvo macchina del gruppo come nuovo default
WriteMainPrivateProfileString(S_MACH, K_CURRMACH, DefaultMachine)
Return True
End Function
Public Overrides Function OnPreSetCurrMachGroup() As Boolean
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostV.OmagOFFICEScene.GetCtx())
Return True
End Function
Public Overrides Function OnPostSetCurrMachGroup() As Boolean
' Imposto vista solo tavola
EgtSetMachineLook(MCH_LOOK.TAB)
' Ricarico la macchina corrente
InitCurrentMachine(OmagOFFICEMap.refMachinePanelVM.sMachinesRoot, SelectedMachGroup.Machine,
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PROCUCTION_LINE),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_MILL))
' Imposto tab Disposizione
OmagOFFICEMap.refOptionPanelVM.SelItem = OptionPanelVM.Tabs.NESTING
' Aggiorno grezzo iniziale
EstCalc.UpdateRawPart()
' Aggiorno materiale corrente
CurrentMachine.SetCurrMatByName(EstCalc.GetMaterialName())
' Verifico compatibilità lavorazioni, setup, materiale e spessore grezzo
If Not SetUpUtility.IsValidToolHeadExitInSetUp() Then
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = Brushes.Red
Else
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = OmagOFFICEDictionary.Button_Static_Background
End If
' Verifico che gli utensili delle lavorazioni correnti siano attrezzati (necessario perchè potrei aver cambiato gli utensili delle lavorazioni)
' e che le lavorazioni correnti siano compatibili con materiale e spessore
' Lama
Dim bOkSetUp As Boolean = True
Dim bOkMatThick As Boolean = True
Dim sTUUID As String = String.Empty
If Not String.IsNullOrWhiteSpace(CurrentMachine.sCurrSawing) Then
EgtMdbSetCurrMachining(CurrentMachine.sCurrSawing)
EgtMdbGetCurrMachiningParam(MCH_MP.TUUID, sTUUID)
bOkSetUp = bOkSetUp And SetUpUtility.IsToolInSetUp(sTUUID)
bOkMatThick = bOkMatThick And CurrMachWindowVM.VerifyMatThickCompatibility()
End If
' Fresa
If Not String.IsNullOrWhiteSpace(CurrentMachine.sCurrMilling) Then
EgtMdbSetCurrMachining(CurrentMachine.sCurrMilling)
sTUUID = String.Empty
EgtMdbGetCurrMachiningParam(MCH_MP.TUUID, sTUUID)
bOkSetUp = bOkSetUp And SetUpUtility.IsToolInSetUp(sTUUID)
bOkMatThick = bOkMatThick And CurrMachWindowVM.VerifyMatThickCompatibility()
End If
' Foretto
If Not String.IsNullOrWhiteSpace(CurrentMachine.sCurrDrilling) Then
EgtMdbSetCurrMachining(CurrentMachine.sCurrDrilling)
sTUUID = String.Empty
EgtMdbGetCurrMachiningParam(MCH_MP.TUUID, sTUUID)
bOkSetUp = bOkSetUp And SetUpUtility.IsToolInSetUp(sTUUID)
bOkMatThick = bOkMatThick And CurrMachWindowVM.VerifyMatThickCompatibility()
End If
If Not bOkSetUp Then
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = Brushes.Red
Else
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = New BrushConverter().ConvertFrom("#FFDDDDDD")
End If
If Not bOkMatThick Then
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = Brushes.Red
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = Brushes.Red
Else
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = OmagOFFICEDictionary.TabControl_Header_Background
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = New BrushConverter().ConvertFrom("#FFDDDDDD")
End If
Return True
End Function
Public Overrides Function OnPreRemoveCurrMachGroup() As Boolean
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostV.OmagOFFICEScene.GetCtx())
' Seleziono tutti i pezzi in tavola
Dim nPartId As Integer = EgtGetFirstPartInRawPart(GetRawId())
While nPartId <> GDB_ID.NULL
' Recupero identificativo del successivo
Dim nNextPartId As Integer = EgtGetNextPartInRawPart(nPartId)
' Metto in parcheggio
StoreOnePart(nPartId)
' Eventuale notifica al VeinMatching
VeinMatching.OnRemovePartFromRaw(nPartId)
' Passo al successivo
nPartId = nNextPartId
End While
Return True
End Function
#End Region ' METHODS
End Class
Public Class MyMachGroup
Inherits MachGroup
Private m_nOpersGroupId As Integer = 0
Public ReadOnly Property nOpersGroupId As Integer
Get
Return m_nOpersGroupId
End Get
End Property
Sub New(nId As Integer, sName As String, sMachine As String, nOpersGroupId As Integer)
MyBase.New(nId, sName, sMachine)
m_nOpersGroupId = nOpersGroupId
End Sub
End Class