89 lines
3.9 KiB
C#
89 lines
3.9 KiB
C#
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<PatternTestResult> _PatternTestResults = new ObservableCollection<PatternTestResult>();
|
|
public ObservableCollection<PatternTestResult> 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);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|