Files
omagoffice/MyMachGroupPanel/MachGroupPanelVM.vb
T
Emmanuele Sassi 4c679fbd48 OmagOFFICE :
- Migliorato AboutBox.
- Miglioramenti per compatibilità con nuova versione WPFLib5.
2017-11-25 16:55:39 +00:00

246 lines
11 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class MyMachGroupPanelVM
Inherits MachGroupPanelVM
#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.refSceneHostVM.MainScene.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")
' leggo nome attrezzaggio di default
Dim sDefaultSetUpName As String = String.Empty
Dim sCurrMachName As String = String.Empty
EgtGetCurrMachineName(sCurrMachName)
Dim sMachineIniPath As String = OmagOFFICEMap.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, sCurrMachName)
' Ricarico la macchina corrente
InitCurrentMachine(OmagOFFICEMap.refMachinePanelVM.sMachinesRoot, sCurrMachName,
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PROCUCTION_LINE),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_MILL), True)
' Aggiorno grezzo iniziale
EstCalc.UpdateRawPart()
' Imposto materiale corrente
EstCalc.SetMaterialName()
' Imposto flag tagli ridotti
EstCalc.SetReducedCut(CurrentMachine.bReducedCut)
' Imposto flag lavaggio
EstCalc.SetWashingFlag(CurrentMachine.bWashing)
Return True
End Function
Public Overrides Function OnPreSetCurrMachGroup() As Boolean
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
' Deseleziono tutto in Nesting e nel VeinMatching
OmagOFFICE.refNestingTabVM.DeselectAll(True)
' Deseleziono tutto in Nesting e nel VeinMatching
OmagOFFICE.refNestingTabVM.DeselectAll(True)
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), True)
' Imposto tab Disposizione
OmagOFFICEMap.refOptionPanelVM.SelItem = OptionPanelVM.Tabs.NESTING
' Aggiorno grezzo iniziale
EstCalc.UpdateRawPart()
' Aggiorno materiale corrente
CurrentMachine.SetCurrMatByName(EstCalc.GetMaterialName())
' Aggiorno flag tagli ridotti
CurrentMachine.bReducedCut = EstCalc.GetReducedCut()
' Aggiorno flag lavaggio
CurrentMachine.bWashing = EstCalc.GetWashingFlag()
' 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 bOkCurrSawing As Boolean = True
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()
Else
bOkCurrSawing = False
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 Or Not bOkCurrSawing 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
' Se non esiste il grezzo vado subito alla sua definizione
If EstCalc.GetRawId() = GDB_ID.NULL Then
OmagOFFICEMap.refOptionPanelVM.SelItem = OptionPanelVM.Tabs.RAWPART
End If
Return True
End Function
Public Overrides Function OnPreRemoveCurrMachGroup() As Boolean
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
' Parcheggio tutti i pezzi presenti nella lastra
Dim nPartId As Integer = EgtGetFirstPartInRawPart(GetRawId())
While nPartId <> GDB_ID.NULL
' Recupero identificativo del successivo
Dim nNextPartId As Integer = EgtGetNextPartInRawPart(nPartId)
' Metto in parcheggio
EstCalc.StoreOnePart(nPartId)
' Eventuale notifica al VeinMatching
VeinMatching.OnRemovePartFromRaw(nPartId)
' Passo al successivo
nPartId = nNextPartId
End While
' Elimino eventuale fotografia e contorno associati
Dim nPhoto As Integer = EstPhoto.GetPhoto()
EgtErase(nPhoto)
Dim nContour As Integer = EstPhoto.GetContour()
EgtErase(nContour)
' Elimino eventuale fotografia del VeinMatching associata
VeinMatching.RemoveUnusedPhotos()
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
#Region "ToolTip"
Public Overrides ReadOnly Property MachGroupToolTip As String
Get
Dim sSlabName As String = String.Empty
If Not EgtGetInfo(Id, INFO_SLABNAME, sSlabName) Then sSlabName = "---"
Dim sMaterial As String = String.Empty
If Not EgtGetInfo(Id, INFO_PROJMAT, sMaterial) Then sMaterial = "---"
Dim dSlabHeight As Double = 0
If Not EgtGetInfo(Id, INFO_SLABHEIGHT, dSlabHeight) Then dSlabHeight = 0
Dim sCurrSawing As String = String.Empty
If Not EgtGetInfo(m_nOpersGroupId, INFO_CURRSAWING, sCurrSawing) Then sCurrSawing = "---"
Return "Name: " & sSlabName & Environment.NewLine &
"Material: " & sMaterial & Environment.NewLine &
"Thickness: " & LenToString(dSlabHeight, 3) & Environment.NewLine &
"Sawing: " & sCurrSawing & Environment.NewLine &
"Machine: " & Machine
End Get
End Property
#End Region ' ToolTip
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