Преглед изворни кода

修复流程删除与视觉刷新逻辑,优化资源管理

- 删除流程时先查找相机流程集合,未找到时提示并终止,避免异常
- 删除流程前释放 ToolBlock 资源,防止内存泄漏
- 修正 SelectedRobot 属性变更逻辑,仅在值变化时执行后续操作
- 视觉显示前先清空 Record,避免残留视觉记录
- 增加对 TeamAAS_VP.Core.Cameras 的引用
孝锋 徐 пре 8 месеци
родитељ
комит
39d22c0a2e

+ 11 - 7
TeamAAS-VM/ViewModels/Product/ProductProcessManageViewModel.cs

@@ -18,6 +18,7 @@ using System.Windows;
 using TeamAAS_VP;
 using TeamAAS_VP;
 using TeamAAS_VP.Controls;
 using TeamAAS_VP.Controls;
 using TeamAAS_VP.Core;
 using TeamAAS_VP.Core;
+using TeamAAS_VP.Core.Cameras;
 using TeamAAS_VP.Events;
 using TeamAAS_VP.Events;
 using TeamAAS_VP.Interfaces;
 using TeamAAS_VP.Interfaces;
 using TeamAAS_VP.Models;
 using TeamAAS_VP.Models;
@@ -264,15 +265,18 @@ namespace TeamAAS_VP.ViewModels.Product
                     var procedureId = (SelectedItem as ProcedureModel).Id;
                     var procedureId = (SelectedItem as ProcedureModel).Id;
                     if (MessageBox.Show(Lang.是否移除流程.Replace("{0}", (SelectedItem as ProcedureModel).Name) , Lang.移除流程, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                     if (MessageBox.Show(Lang.是否移除流程.Replace("{0}", (SelectedItem as ProcedureModel).Name) , Lang.移除流程, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                     {
                     {
-                        var camera = SelectProduct.CameraProcedures.FirstOrDefault(a => a.Camera == (SelectedItem as ProcedureModel).CameraName);
-                        if (camera != null)
+                        ProcedureModel procedure = SelectedItem as ProcedureModel;
+                        var procedureList = SelectProduct.CameraProcedures.FirstOrDefault(c => c.Camera == procedure.CameraName); //获取指定相机的流程集合
+                        if (procedureList == null)
                         {
                         {
-                            if (((ProcedureModel)SelectedItem).ToolBlock!=null)
-                            {
-                                ((ProcedureModel)SelectedItem).ToolBlock.Dispose();
-                            }
-                            camera.RemoveProcedure(SelectedItem as ProcedureModel);
+                            _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = Lang.没有找到相机.Replace("{0}", procedure.CameraName), Duration = 1 });
+                            return;
+                        }
+                        if (((ProcedureModel)SelectedItem).ToolBlock != null)
+                        { 
+                           ((ProcedureModel)SelectedItem).ToolBlock.Dispose();
                         }
                         }
+                        procedureList.RemoveProcedure(procedure);
                     }
                     }
                 }
                 }
             }
             }

+ 1 - 1
TeamAAS-VM/ViewModels/Product/RobotPointParamsViewModel.cs

@@ -52,7 +52,7 @@ namespace TeamAAS_VP.ViewModels.Product
         {
         {
             get { return _SelectedRobot; }
             get { return _SelectedRobot; }
             set {
             set {
-                if (!SetProperty(ref _SelectedRobot, value))
+                if (SetProperty(ref _SelectedRobot, value))
                 {
                 {
                     try
                     try
                     {
                     {

+ 1 - 0
TeamAAS-VM/Views/Home/ShowVisionRender.xaml.cs

@@ -64,6 +64,7 @@ namespace TeamAAS_VP.Views.Home
                 {
                 {
                     if (((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag!=null && ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag.ToString() == render.CameraName)
                     if (((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag!=null && ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag.ToString() == render.CameraName)
                     {
                     {
+                        ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Record = null;
                         ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Image = render.Image;
                         ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Image = render.Image;
                         ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.Clear();
                         ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.Clear();
                         if (render.Graphic!=null)
                         if (render.Graphic!=null)