From 404dc17b240f9aeb4533efea5d0965ebd70c7c6a Mon Sep 17 00:00:00 2001 From: Demetrio Cassarino Date: Fri, 29 May 2026 15:53:24 +0200 Subject: [PATCH] EgtBEAMWALL 3.1.5.2: .aggiunto controlli su rimvuovi pezzo da assemblato -aggiunto controllo su rotazione in verifica con rotazione -aggiunto controllo riabilita pulsanti machgroup in resetsupervisor -aggiunto controlli su aggiungi pezzo in assemblato -cambio versione --- EgtBEAMWALL.Core/My Project/AssemblyInfo.vb | 4 ++-- EgtBEAMWALL.DataLayer/Properties/AssemblyInfo.cs | 4 ++-- .../BTLPartManager/BTLPartManagerVM.vb | 14 +++++++++----- EgtBEAMWALL.Optimizer/BTLViewModel/BTLPartVM.vb | 12 +++++++++--- .../ExecProcessManager/MyExecProcessManager.vb | 4 +++- .../MachGroupPanel/MyMachGroupPanelVM.vb | 8 ++++---- .../MachGroupPanel/MyMachGroupVM.vb | 5 +++++ EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb | 2 +- EgtBEAMWALL.Optimizer/My Project/AssemblyInfo.vb | 4 ++-- .../PartParametersWnd/PartParametersWndV.xaml.vb | 1 + .../ProdManager/ProdManagerVM.vb | 15 ++++++++++----- EgtBEAMWALL.Optimizer/Project/ProjectVM.vb | 4 ++-- EgtBEAMWALL.Supervisor/My Project/AssemblyInfo.vb | 4 ++-- .../SupervisorManager/SupervisorManagerVM.vb | 2 +- 14 files changed, 53 insertions(+), 30 deletions(-) diff --git a/EgtBEAMWALL.Core/My Project/AssemblyInfo.vb b/EgtBEAMWALL.Core/My Project/AssemblyInfo.vb index 31f41472..a7df1fac 100644 --- a/EgtBEAMWALL.Core/My Project/AssemblyInfo.vb +++ b/EgtBEAMWALL.Core/My Project/AssemblyInfo.vb @@ -38,5 +38,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/EgtBEAMWALL.DataLayer/Properties/AssemblyInfo.cs b/EgtBEAMWALL.DataLayer/Properties/AssemblyInfo.cs index 0b2c9fdb..3f080980 100644 --- a/EgtBEAMWALL.DataLayer/Properties/AssemblyInfo.cs +++ b/EgtBEAMWALL.DataLayer/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.1.5.2")] -[assembly: AssemblyFileVersion("3.1.5.2")] +[assembly: AssemblyVersion("3.1.5.3")] +[assembly: AssemblyFileVersion("3.1.5.3")] diff --git a/EgtBEAMWALL.Optimizer/BTLPartManager/BTLPartManagerVM.vb b/EgtBEAMWALL.Optimizer/BTLPartManager/BTLPartManagerVM.vb index 2d44f3f3..a428e4a2 100644 --- a/EgtBEAMWALL.Optimizer/BTLPartManager/BTLPartManagerVM.vb +++ b/EgtBEAMWALL.Optimizer/BTLPartManager/BTLPartManagerVM.vb @@ -274,14 +274,18 @@ Public Class BTLPartManagerVM Private Sub RemoveScenePart(BTLPartToDelete As BTLPartVM) ' Rimuovo pezzo dalla scena - Dim IdAsseBase As Integer = Map.refProdManagerVM.ListProjAsseBase(BTLPartToDelete.nPROJ) - If IdAsseBase < 0 Then Return + Dim IdAsseBase As Integer = 0 + Dim DeletePartId As Integer = 0 + If Not Map.refProdManagerVM.ListProjAsseBase.TryGetValue(BTLPartToDelete.nPROJ, IdAsseBase) Then + Return + End If ' Setto il nuovo contesto EgtSetCurrentContext(Map.refSceneShowBuldingVM.SceneShowBulding.GetCtx()) If EgtBeamGetBuildingIsOn(IdAsseBase) Then EgtBeamShowBuilding(IdAsseBase, False) - Dim DeletePartId As Integer = Map.refSceneShowBuldingVM.MapInfo(BTLPartToDelete.nPartId) - EgtErase(DeletePartId) - Map.refSceneShowBuldingVM.MapInfo.Remove(BTLPartToDelete.nPartId) + If Map.refSceneShowBuldingVM.MapInfo.TryGetValue(BTLPartToDelete.nPartId, DeletePartId) Then + EgtErase(DeletePartId) + Map.refSceneShowBuldingVM.MapInfo.Remove(BTLPartToDelete.nPartId) + End If EgtBeamShowBuilding(IdAsseBase, True) EgtZoom(ZM.ALL) ' Ritorno al contesto corrente diff --git a/EgtBEAMWALL.Optimizer/BTLViewModel/BTLPartVM.vb b/EgtBEAMWALL.Optimizer/BTLViewModel/BTLPartVM.vb index cfc2ce66..7209b7f6 100644 --- a/EgtBEAMWALL.Optimizer/BTLViewModel/BTLPartVM.vb +++ b/EgtBEAMWALL.Optimizer/BTLViewModel/BTLPartVM.vb @@ -187,7 +187,9 @@ Public Class BTLPartVM Get Dim nOrigGroupId As Integer = nPartId If EgtGetCurrentContext() = Map.refSceneShowBuldingVM.SceneShowBulding.GetCtx() Then - nOrigGroupId = Map.refSceneShowBuldingVM.MapInfo(nPartId) + If Not Map.refSceneShowBuldingVM.MapInfo.TryGetValue(nPartId, nOrigGroupId) Then + EgtOutLog(nPartId & " non presente") + End If End If If EgtBeamGetBuildingIsOn() AndAlso Map.refShowBeamPanelVM.bShowAll Then nOrigGroupId = GetOrigFrameGroup(nPartId) @@ -248,7 +250,9 @@ Public Class BTLPartVM Get Dim nOrigGroupId As Integer = nPartId If EgtGetCurrentContext() = Map.refSceneShowBuldingVM.SceneShowBulding.GetCtx() Then - nOrigGroupId = Map.refSceneShowBuldingVM.MapInfo(nPartId) + If Not Map.refSceneShowBuldingVM.MapInfo.TryGetValue(nPartId, nOrigGroupId) Then + EgtOutLog(nPartId & " non presente") + End If End If If EgtBeamGetBuildingIsOn() AndAlso Map.refShowBeamPanelVM.bShowAll Then nOrigGroupId = GetOrigFrameGroup(nPartId) @@ -309,7 +313,9 @@ Public Class BTLPartVM Get Dim nOrigGroupId As Integer = nPartId If EgtGetCurrentContext() = Map.refSceneShowBuldingVM.SceneShowBulding.GetCtx() Then - nOrigGroupId = Map.refSceneShowBuldingVM.MapInfo(nPartId) + If Not Map.refSceneShowBuldingVM.MapInfo.TryGetValue(nPartId, nOrigGroupId) Then + EgtOutLog(nPartId & " non presente") + End If End If If EgtBeamGetBuildingIsOn() AndAlso Map.refShowBeamPanelVM.bShowAll Then nOrigGroupId = GetOrigFrameGroup(nPartId) diff --git a/EgtBEAMWALL.Optimizer/ExecProcessManager/MyExecProcessManager.vb b/EgtBEAMWALL.Optimizer/ExecProcessManager/MyExecProcessManager.vb index ff40f63e..c4111b8c 100644 --- a/EgtBEAMWALL.Optimizer/ExecProcessManager/MyExecProcessManager.vb +++ b/EgtBEAMWALL.Optimizer/ExecProcessManager/MyExecProcessManager.vb @@ -101,7 +101,9 @@ Module MyExecProcessManager End If If nPreRotate > 0 Then Dim dAng As Integer = nPreRotate * 90 - PartItem.ForwardRotation(True, True, dAng, False) + Application.Current.Dispatcher.BeginInvoke(Sub() + PartItem.ForwardRotation(True, True, dAng, False) + End Sub) End If Dim prefix As String = "INFONGEPART_" diff --git a/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupPanelVM.vb b/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupPanelVM.vb index 9eae0e00..dc0bd4ce 100644 --- a/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupPanelVM.vb +++ b/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupPanelVM.vb @@ -160,11 +160,11 @@ Public Class MyMachGroupPanelVM Dim Beam As PartVM = BeamMachGroup.PartVMList.FirstOrDefault(Function(x) x.nPartId = nDuploId) EgtSetCurrMachGroup(BeamMachGroup.Id) Beam.DeletePart() + ' reset necessario per poter ottenere nMachGroupId corretto + EgtResetCurrMachGroup() + ' aggiorno dati utilizzo barra + BeamMachGroup.UpdateUsage() End If - ' reset necessario per poter ottenere nMachGroupId corretto - EgtResetCurrMachGroup() - ' aggiorno dati utilizzo barra - BeamMachGroup.UpdateUsage() Next ' aggiorno quantita' in prod Dim BTLPart As BTLPartVM = CALCPanelVM.GetBTLPartVMFromBTLPartId(nPartId) diff --git a/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupVM.vb b/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupVM.vb index 651173f3..51e08c2f 100644 --- a/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupVM.vb +++ b/EgtBEAMWALL.Optimizer/MachGroupPanel/MyMachGroupVM.vb @@ -803,6 +803,10 @@ Public Class MyMachGroupVM End If Part.nProduction_State = ItemState.ND Part.NotifyPropertyChanged(NameOf(Part.Background)) + Part.NotifyPropertyChanged(NameOf(Part.ButtonIsEnabled)) + For Each Feature As BTLFeatureVM In Part.FeatureVMList + Feature.NotifyPropertyChanged(NameOf(Feature.IsEnabled)) + Next If bDuploToUpdate Then Dim Duplo As PartVM = CALCPanelVM.GetPartVMFromPartId(Part.nPartId) Duplo.ResetCalcTotalPart() @@ -818,6 +822,7 @@ Public Class MyMachGroupVM End If NotifyPropertyChanged(NameOf(IsReadOnly)) NotifyPropertyChanged(NameOf(Background)) + NotifyPropertyChanged(NameOf(ButtonIsEnabled)) End Sub Private Sub RefreshPartList_Tick() diff --git a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb index ac3a2e57..43c9e925 100644 --- a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb +++ b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb @@ -269,7 +269,7 @@ Public Class MainWindowVM ' recupero secondo parametro Dim sProdId As String = Environment.GetCommandLineArgs(2) If Not Integer.TryParse(sProdId, nProdId) OrElse nProdId <= 0 Then Return False - nPage = Pages.MACHINING + nPage = Pages.OPTIMIZERPAGE Return True Case 2 ' apri pagina specifica senza progetto specifico ' recupero secondo parametro diff --git a/EgtBEAMWALL.Optimizer/My Project/AssemblyInfo.vb b/EgtBEAMWALL.Optimizer/My Project/AssemblyInfo.vb index d80e9ab8..0373d2d4 100644 --- a/EgtBEAMWALL.Optimizer/My Project/AssemblyInfo.vb +++ b/EgtBEAMWALL.Optimizer/My Project/AssemblyInfo.vb @@ -67,5 +67,5 @@ Imports System.Windows ' Revision ' - - + + diff --git a/EgtBEAMWALL.Optimizer/PartParametersWnd/PartParametersWndV.xaml.vb b/EgtBEAMWALL.Optimizer/PartParametersWnd/PartParametersWndV.xaml.vb index 9fcd8af8..e0c3959e 100644 --- a/EgtBEAMWALL.Optimizer/PartParametersWnd/PartParametersWndV.xaml.vb +++ b/EgtBEAMWALL.Optimizer/PartParametersWnd/PartParametersWndV.xaml.vb @@ -14,4 +14,5 @@ Private Sub CloseWindow(bDialogResult As Boolean) Handles m_PartParametersWndVM.m_CloseWindow Me.DialogResult = bDialogResult End Sub + End Class diff --git a/EgtBEAMWALL.Optimizer/ProdManager/ProdManagerVM.vb b/EgtBEAMWALL.Optimizer/ProdManager/ProdManagerVM.vb index 99f58b22..f2450648 100644 --- a/EgtBEAMWALL.Optimizer/ProdManager/ProdManagerVM.vb +++ b/EgtBEAMWALL.Optimizer/ProdManager/ProdManagerVM.vb @@ -1319,7 +1319,7 @@ Public Class ProdManagerVM End Sub Public Sub OpenProjectFromSupervisor(ProjIdToOpen As Integer) - If Not IsNothing(ProjectManagerVM.CurrProd) Then + If (Not IsNothing(ProjectManagerVM.CurrProd) AndAlso ProjIdToOpen <> ProjectManagerVM.CurrProd.nProdId) OrElse Map.refMainMenuVM.SelPage <> Pages.OPTIMIZERPAGE Then m_nProjIdToOpen = ProjIdToOpen m_bOpenProj = True End If @@ -1357,7 +1357,9 @@ Public Class ProdManagerVM While nPartLayerId <> GDB_ID.NULL Dim nNewId As Integer = EgtCopyEx(Map.refSceneHostVM.MainScene.GetCtx(), nPartLayerId, Map.refSceneShowBuldingVM.SceneShowBulding.GetCtx(), nRef) ' Salvo le info dei pezzi per associarli in modo corretto - Map.refSceneShowBuldingVM.MapInfo.Add(nPartLayerId, nNewId) + If nNewId > 0 AndAlso Not Map.refSceneShowBuldingVM.MapInfo.ContainsKey(nPartLayerId) Then + Map.refSceneShowBuldingVM.MapInfo.Add(nPartLayerId, nNewId) + End If nPartLayerId = EgtGetNextPart(nPartLayerId) End While @@ -1370,14 +1372,17 @@ Public Class ProdManagerVM While nIdF <> GDB_ID.NULL Dim Sou As Integer = 0 EgtGetInfo(nIdF, "!SOU", Sou) - EgtSetInfo(nIdF, "!SOU", Map.refSceneShowBuldingVM.MapInfo(Sou)) + If EgtGetInfo(nIdF, "!SOU", Sou) AndAlso Map.refSceneShowBuldingVM.MapInfo.ContainsKey(Sou) Then + EgtSetInfo(nIdF, "!SOU", Map.refSceneShowBuldingVM.MapInfo(Sou)) + End If nIdF = EgtGetNext(nIdF) End While Map.refProjectVM.BTLStructureVM.ShowBuilding(nListAsseBase(IdAsseBase), True) If IdAsseBase > 0 Then EgtSetStatus(nListAsseBase(IdAsseBase), GDB_ST.OFF) Dim nProj As Integer = 0 - EgtGetInfo(nListAsseBase(IdAsseBase), PROJ, nProj) - m_nListProjAsseBase.Add(nProj, nListAsseBase(IdAsseBase)) + If EgtGetInfo(nListAsseBase(IdAsseBase), PROJ, nProj) AndAlso Not m_nListProjAsseBase.ContainsKey(nProj) Then + m_nListProjAsseBase.Add(nProj, nListAsseBase(IdAsseBase)) + End If Next EgtZoom(ZM.ALL) diff --git a/EgtBEAMWALL.Optimizer/Project/ProjectVM.vb b/EgtBEAMWALL.Optimizer/Project/ProjectVM.vb index b97c0dcf..957d544a 100644 --- a/EgtBEAMWALL.Optimizer/Project/ProjectVM.vb +++ b/EgtBEAMWALL.Optimizer/Project/ProjectVM.vb @@ -554,8 +554,8 @@ Public Class ProjectVM ''' Funzione che permette di eliminare un pezzo modificato e reinserirlo nell'assemblato ''' Friend Sub UpdatePart(nPartId As Integer) - Dim IdAsseBase As Integer = Map.refProdManagerVM.ListProjAsseBase(Map.refProjectVM.BTLStructureVM.SelBTLPart.nPROJ) - If IdAsseBase < 0 Then Return + Dim IdAsseBase As Integer = 0 + If Not Map.refProdManagerVM.ListProjAsseBase.TryGetValue(Map.refProjectVM.BTLStructureVM.SelBTLPart.nPROJ, IdAsseBase) Then Return Dim IdPart As Integer = 0 Dim NewId As Integer = 0 ' Setto il nuovo contesto diff --git a/EgtBEAMWALL.Supervisor/My Project/AssemblyInfo.vb b/EgtBEAMWALL.Supervisor/My Project/AssemblyInfo.vb index e84fd6a4..0863e09e 100644 --- a/EgtBEAMWALL.Supervisor/My Project/AssemblyInfo.vb +++ b/EgtBEAMWALL.Supervisor/My Project/AssemblyInfo.vb @@ -70,5 +70,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb b/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb index a7f83283..c654d1dc 100644 --- a/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb +++ b/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb @@ -356,7 +356,7 @@ Public Class SupervisorManagerVM Else Dim sOptimizerPath As String = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory) & "\" & sOptimizerName & ".exe" Try - Process.Start(sOptimizerPath, "2 " & Pages.OPTIMIZERPAGE) + Process.Start(sOptimizerPath, "1 " & CurrProd.nProdId) Catch ex As Exception EgtOutLog("Error: impossible starting optimizer from path " & sOptimizerPath) End Try