Kyungshin-Welder/AuroraVision/MilUI/VisionImageTest/VisionImageTestLogViewModel.cs
2026-01-26 14:51:28 +09:00

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);
}
});
}
}
}