using Aurora.Api; using Aurora.View; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Input; using System.Windows.Forms; using VisionCommon; using System.IO; using System.Collections.Generic; using System.Linq; using System; namespace MilUI { public class VisionImageTestLogViewModel : NotifyPropertyChangedBase { private readonly Logger _Logger = new Logger(typeof(VisionImageTestLogViewModel).Name); private FovInfo _FovInfo; private eVisionTestType _VisionTestType; private PatternInfo _PatternInfo; private VisionImageTesterBase _VisionImageTester; public bool IsShape = false; private ObservableCollection _PatternTestResults = new ObservableCollection(); public ObservableCollection PatternTestResults { get => _PatternTestResults; set => SetProperty(ref _PatternTestResults, value); } public VisionImageTestLogViewModel(FovInfo fovInfo, eVisionTestType visionTestType, PatternInfo patternInfo = null) { _FovInfo = fovInfo; _VisionTestType = visionTestType; if (patternInfo != null) { _PatternInfo = patternInfo; } _VisionImageTester = VisionImageTesterManagerBase.GetVisionImageTester(_FovInfo); CheckPatternType(); } private void CheckPatternType() { if(_PatternInfo.PatternType == ePatternType.ShapeModelFinder) { IsShape = true; } } public void ClearPatternResults() { PatternTestResults.Clear(); } public void AddPatternResult(PatternResult patternResult) { System.Windows.Application.Current.Dispatcher.Invoke(() => { var paths = _VisionImageTester.ImagePaths; if (patternResult.Status == eFoundStatus.FoundOK) { foreach (var baseResult in patternResult.Results) { var result = new PatternTestResult(); //result.Path = paths[PatternTestResults.Count()]; result.PatternStatus = patternResult.Status.ToString(); result.IX = baseResult.ImagePosition.X; result.IY = baseResult.ImagePosition.Y; result.SX = baseResult.MaterialPosition.X; result.SY = baseResult.MaterialPosition.Y; result.Angle = baseResult.Angle.Degree; result.TackTime = patternResult.TactTimeInMilliSec; switch (_PatternInfo.PatternType) { case ePatternType.ImageModelFinder: result.Score = (baseResult as ModelFinderResult).Score; break; case ePatternType.ShapeModelFinder: result.Score = (baseResult as ShapeModelFinderResult).Score; result.Height = (baseResult as ShapeModelFinderResult).Height; result.Width = (baseResult as ShapeModelFinderResult).Width; result.Radius = (baseResult as ShapeModelFinderResult).Radius; break; case ePatternType.PatternMatching: result.Score = (baseResult as PatternMatchingResult).Score; break; } PatternTestResults.Add(result); } } else { var result = new PatternTestResult(); //result.Path = paths[PatternTestResults.Count()]; result.PatternStatus = patternResult.Status.ToString(); PatternTestResults.Add(result); } }); } } }