1171 lines
56 KiB
C#
1171 lines
56 KiB
C#
using Aurora;
|
|
using Aurora.Api;
|
|
using Aurora.Util.HislogPlus;
|
|
using CoreUnit.Control.UserControl.Canvas;
|
|
using CoreUnit.Scanner.UserControl.ScannerCanvas;
|
|
using Cysharp.Text;
|
|
using ILSOS_KS.Sequences;
|
|
using NPOI.Util;
|
|
using OpenCvSharp;
|
|
using OpenCvSharp.WpfExtensions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Configuration;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Timers;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Xml.Linq;
|
|
using VisionCommon;
|
|
using WeldingCommon;
|
|
using WeldingCommon.Recipes;
|
|
using WpfAnimatedGif;
|
|
|
|
namespace ILSOS_KS.Views.PopUP
|
|
{
|
|
public class PopupWindowViewModel : INotifyPropertyChanged
|
|
{
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
private void OnPropertyChanged(string name) =>
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
|
|
|
private BitmapSource _ImageLeftTop;
|
|
public BitmapSource ImageLeftTop
|
|
{
|
|
get => _ImageLeftTop;
|
|
set { _ImageLeftTop = value; OnPropertyChanged(nameof(ImageLeftTop)); }
|
|
}
|
|
|
|
private BitmapSource _ImageLeftBottom;
|
|
public BitmapSource ImageLeftBottom
|
|
{
|
|
get => _ImageLeftBottom;
|
|
set { _ImageLeftBottom = value; OnPropertyChanged(nameof(ImageLeftBottom)); }
|
|
}
|
|
|
|
private BitmapSource _ImageRightTop;
|
|
public BitmapSource ImageRightTop
|
|
{
|
|
get => _ImageRightTop;
|
|
set { _ImageRightTop = value; OnPropertyChanged(nameof(ImageRightTop)); }
|
|
}
|
|
|
|
private BitmapSource _ImageRightBottom;
|
|
public BitmapSource ImageRightBottom
|
|
{
|
|
get => _ImageRightBottom;
|
|
set { _ImageRightBottom = value; OnPropertyChanged(nameof(ImageRightBottom)); }
|
|
}
|
|
|
|
private double _Progressbar;
|
|
public double Progressbar
|
|
{
|
|
get => _Progressbar;
|
|
set
|
|
{
|
|
if (_Progressbar != value)
|
|
{
|
|
_Progressbar = value;
|
|
OnPropertyChanged(nameof(Progressbar));
|
|
}
|
|
}
|
|
}
|
|
|
|
private Visibility _progressBarVisibility = Visibility.Collapsed;
|
|
public Visibility ProgressBarVisibility
|
|
{
|
|
get => _progressBarVisibility;
|
|
set
|
|
{
|
|
if (_progressBarVisibility != value)
|
|
{
|
|
_progressBarVisibility = value;
|
|
OnPropertyChanged(nameof(ProgressBarVisibility));
|
|
}
|
|
}
|
|
}
|
|
|
|
private string _StepLBAD;
|
|
public string StepLBAD
|
|
{
|
|
get => _StepLBAD;
|
|
set
|
|
{
|
|
_StepLBAD = value;
|
|
OnPropertyChanged(nameof(StepLBAD));
|
|
|
|
if (value.Trim().Equals("OK", StringComparison.OrdinalIgnoreCase)) { StepLBADNO = Brushes.Green; }
|
|
else { StepLBADNO = Brushes.Red; }
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private Brush _StepLBADNO = Brushes.Black;
|
|
public Brush StepLBADNO
|
|
{
|
|
get => _StepLBADNO;
|
|
set { _StepLBADNO = value; OnPropertyChanged(nameof(StepLBADNO)); }
|
|
}
|
|
|
|
private string _StepWELDING;
|
|
public string StepWELDING
|
|
{
|
|
get => _StepWELDING;
|
|
set
|
|
{
|
|
_StepWELDING = value;
|
|
OnPropertyChanged(nameof(StepWELDING));
|
|
|
|
if (value.Trim().Equals("OK", StringComparison.OrdinalIgnoreCase)) { StepWELDINGNO = Brushes.Green; }
|
|
else { StepWELDINGNO = Brushes.Red; }
|
|
}
|
|
}
|
|
|
|
private Brush _StepWELDINGNO = Brushes.Black;
|
|
public Brush StepWELDINGNO
|
|
{
|
|
get => _StepWELDINGNO;
|
|
set { _StepWELDINGNO = value; OnPropertyChanged(nameof(StepWELDINGNO)); }
|
|
}
|
|
|
|
private BitmapImage _LoadingGifSource;
|
|
public BitmapImage LoadingGifSource
|
|
{
|
|
get => _LoadingGifSource;
|
|
set { _LoadingGifSource = value; OnPropertyChanged(nameof(LoadingGifSource)); }
|
|
}
|
|
|
|
private bool _IsLoadingLeftTop = true;
|
|
public bool IsLoadingLeftTop
|
|
{
|
|
get => _IsLoadingLeftTop;
|
|
set { _IsLoadingLeftTop = value; OnPropertyChanged(nameof(IsLoadingLeftTop)); }
|
|
}
|
|
|
|
private bool _IsLoadingRightTop = true;
|
|
public bool IsLoadingRightTop
|
|
{
|
|
get => _IsLoadingRightTop;
|
|
set { _IsLoadingRightTop = value; OnPropertyChanged(nameof(IsLoadingRightTop)); }
|
|
}
|
|
|
|
private bool _IsLoadingLeftBottom = true;
|
|
public bool IsLoadingLeftBottom
|
|
{
|
|
get => _IsLoadingLeftBottom;
|
|
set { _IsLoadingLeftBottom = value; OnPropertyChanged(nameof(IsLoadingLeftBottom)); }
|
|
}
|
|
|
|
private bool _IsLoadingRightBottom = true;
|
|
public bool IsLoadingRightBottom
|
|
{
|
|
get => _IsLoadingRightBottom;
|
|
set { _IsLoadingRightBottom = value; OnPropertyChanged(nameof(IsLoadingRightBottom)); }
|
|
}
|
|
|
|
|
|
public KS_Step Step1 { get; set; }
|
|
public KS_Step Step2 { get; set; }
|
|
|
|
public PopupWindowViewModel()
|
|
{
|
|
|
|
//// 이벤트 구독
|
|
//ImageProcessor.Instance.ProgressChanged += progress =>
|
|
//{
|
|
// Progressbar = progress * 100; // 0~100
|
|
//};
|
|
|
|
//ImageProcessor.Instance.ProgressBarVisibilityChanged += visible =>
|
|
//{
|
|
// ProgressBarVisibility = visible ? Visibility.Visible : Visibility.Collapsed;
|
|
//};
|
|
|
|
|
|
|
|
var uri = new Uri("pack://application:,,,/ILSOS_KS;component/Assets/loading.gif", UriKind.Absolute);
|
|
BitmapImage bitmapImage = new BitmapImage(uri);
|
|
LoadingGifSource = bitmapImage;
|
|
|
|
Step1 = new KS_Step(6, 3); // Ring 6개, Spiral 3개
|
|
Step2 = new KS_Step(6, 3);
|
|
}
|
|
|
|
public Mat CropRectResize(Mat src, OpenCvSharp.Rect roi, double scale = 1.0)
|
|
{
|
|
if (roi.X < 0 || roi.Y < 0 || roi.X + roi.Width > src.Width || roi.Y + roi.Height > src.Height)
|
|
throw new ArgumentException("ROI가 이미지 범위를 벗어났습니다.");
|
|
|
|
Mat cropped = new Mat(src, roi).Clone();
|
|
|
|
if (scale == 1.0)
|
|
return cropped;
|
|
|
|
// 리사이즈할 크기 계산
|
|
int newWidth = (int)(cropped.Width * scale);
|
|
int newHeight = (int)(cropped.Height * scale);
|
|
|
|
Mat resized = new Mat();
|
|
Cv2.Resize(cropped, resized, new OpenCvSharp.Size(newWidth, newHeight), 0, 0, InterpolationFlags.Linear);
|
|
|
|
return resized;
|
|
}
|
|
|
|
public static BitmapSource MemoryStreamToBitmapSource(MemoryStream ms)
|
|
{
|
|
if (ms == null || ms.Length == 0) return null;
|
|
|
|
BitmapImage bitmap = new BitmapImage();
|
|
bitmap.BeginInit();
|
|
bitmap.CacheOption = BitmapCacheOption.OnLoad; // 스트림 닫아도 유지
|
|
bitmap.StreamSource = ms;
|
|
bitmap.EndInit();
|
|
bitmap.Freeze(); // 다른 쓰레드에서도 안전하게 사용 가능
|
|
|
|
return bitmap;
|
|
}
|
|
|
|
public Mat CropMat(Mat src, OpenCvSharp.Rect roi)
|
|
{
|
|
if (roi.X < 0 || roi.Y < 0 ||
|
|
roi.X + roi.Width > src.Width ||
|
|
roi.Y + roi.Height > src.Height)
|
|
{
|
|
throw new ArgumentException("ROI가 이미지 범위를 벗어났습니다.");
|
|
}
|
|
|
|
// roi 영역을 복사해서 새 Mat 반환
|
|
return new Mat(src, roi).Clone();
|
|
}
|
|
|
|
public void SetImages1(Mat LeftTop, OpenCvSharp.Rect roi)
|
|
{
|
|
IsLoadingLeftTop = true; // 1) 로딩 GIF 켜기
|
|
|
|
Task.Run(() =>
|
|
{
|
|
BitmapSource bmp = null;
|
|
string fullPath = null;
|
|
|
|
if (LeftTop != null && !LeftTop.Empty())
|
|
{
|
|
var cropped = CropMat(LeftTop, roi);
|
|
bmp = cropped.ToBitmapSource();
|
|
bmp.Freeze();
|
|
|
|
fullPath = System.IO.Path.Combine(
|
|
ConfigurationManager.AppSettings.Get("DATA_PATH"),
|
|
"_vision", "RealTimeScout",
|
|
$"Page1_{DateTime.Now:yyyy_MM_dd}/out/{DateTime.Now:HHmmss}.jpg"
|
|
);
|
|
|
|
//ImageProcessor.Instance.SaveImageFile(LeftTop, fullPath, 100);
|
|
}
|
|
|
|
// 2) UI 스레드에서 업데이트
|
|
Application.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
|
|
|
|
if (bmp != null)
|
|
{
|
|
ImageLeftTop = new WriteableBitmap(bmp);
|
|
}
|
|
|
|
IsLoadingLeftTop = false; // 3) 로딩 GIF 끄기
|
|
});
|
|
});
|
|
}
|
|
|
|
public void SetImages2(Mat RightTop, OpenCvSharp.Rect roi)
|
|
{
|
|
IsLoadingRightTop = true; // 1) 로딩 GIF 켜기
|
|
|
|
Task.Run(() =>
|
|
{
|
|
BitmapSource bmp = null;
|
|
string fullPath = null;
|
|
|
|
if (RightTop != null && !RightTop.Empty())
|
|
{
|
|
var cropped = CropMat(RightTop, roi);
|
|
bmp = cropped.ToBitmapSource();
|
|
bmp.Freeze();
|
|
|
|
fullPath = System.IO.Path.Combine(
|
|
ConfigurationManager.AppSettings.Get("DATA_PATH"),
|
|
"_vision", "RealTimeScout",
|
|
$"Page2_{DateTime.Now:yyyy_MM_dd}/out/{DateTime.Now:HHmmss}.jpg"
|
|
);
|
|
|
|
//ImageProcessor.Instance.SaveImageFile(RightTop, fullPath, 100);
|
|
}
|
|
|
|
// 2) UI 스레드에서 업데이트
|
|
Application.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
|
|
|
|
if (bmp != null)
|
|
{
|
|
ImageRightTop = new WriteableBitmap(bmp);
|
|
}
|
|
|
|
IsLoadingRightTop = false; // 3) 로딩 GIF 끄기
|
|
});
|
|
});
|
|
}
|
|
|
|
public void SetImages3(Mat LeftBottom, OpenCvSharp.Rect roi)
|
|
{
|
|
IsLoadingLeftBottom = true; // 1) 로딩 GIF 켜기
|
|
|
|
Task.Run(() =>
|
|
{
|
|
BitmapSource bmp = null;
|
|
string fullPath = null;
|
|
|
|
if (LeftBottom != null && !LeftBottom.Empty())
|
|
{
|
|
var cropped = CropMat(LeftBottom, roi);
|
|
bmp = cropped.ToBitmapSource();
|
|
bmp.Freeze();
|
|
|
|
fullPath = System.IO.Path.Combine(
|
|
ConfigurationManager.AppSettings.Get("DATA_PATH"),
|
|
"_vision", "RealTimeScout",
|
|
$"Page3_{DateTime.Now:yyyy_MM_dd}/out/{DateTime.Now:HHmmss}.jpg"
|
|
);
|
|
|
|
//ImageProcessor.Instance.SaveImageFile(LeftBottom, fullPath, 100);
|
|
}
|
|
|
|
// 2) UI 스레드에서 업데이트
|
|
Application.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
|
|
|
|
if (bmp != null)
|
|
{
|
|
ImageLeftBottom = new WriteableBitmap(bmp);
|
|
}
|
|
|
|
IsLoadingLeftBottom = false; // 3) 로딩 GIF 끄기
|
|
});
|
|
});
|
|
}
|
|
|
|
public void SetImages4(Mat RightBottom, OpenCvSharp.Rect roi)
|
|
{
|
|
IsLoadingRightBottom = true; // 1) 로딩 GIF 켜기
|
|
|
|
Task.Run(() =>
|
|
{
|
|
BitmapSource bmp = null;
|
|
string fullPath = null;
|
|
|
|
if (RightBottom != null && !RightBottom.Empty())
|
|
{
|
|
var cropped = CropMat(RightBottom, roi);
|
|
bmp = cropped.ToBitmapSource();
|
|
bmp.Freeze();
|
|
|
|
fullPath = System.IO.Path.Combine(
|
|
ConfigurationManager.AppSettings.Get("DATA_PATH"),
|
|
"_vision", "RealTimeScout",
|
|
$"Page3_{DateTime.Now:yyyy_MM_dd}/out/{DateTime.Now:HHmmss}.jpg"
|
|
);
|
|
|
|
//ImageProcessor.Instance.SaveImageFile(RightBottom, fullPath, 100);
|
|
}
|
|
|
|
// 2) UI 스레드에서 업데이트
|
|
Application.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
|
|
|
|
if (bmp != null)
|
|
{
|
|
ImageRightBottom = new WriteableBitmap(bmp);
|
|
}
|
|
|
|
IsLoadingRightBottom = false; // 3) 로딩 GIF 끄기
|
|
});
|
|
});
|
|
}
|
|
|
|
private void StepSet1(List<int> Step)
|
|
{
|
|
|
|
// String.Format("{0:F2}", num / 100.0);
|
|
//
|
|
Step1.Ring1.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring1.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring1.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead1] / 100.0);
|
|
Step1.Ring1.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead2] / 100.0);
|
|
Step1.Ring1.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead3] / 100.0);
|
|
Step1.Ring1.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead4] / 100.0);
|
|
Step1.Ring1.Value = Step[(int)EWeldingStepRing.Ring1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring2.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring2.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring2.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead1] / 100.0);
|
|
Step1.Ring2.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead2] / 100.0);
|
|
Step1.Ring2.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead3] / 100.0);
|
|
Step1.Ring2.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead4] / 100.0);
|
|
Step1.Ring2.Value = Step[(int)EWeldingStepRing.Ring2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring3.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring3.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring3.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead1] / 100.0);
|
|
Step1.Ring3.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead2] / 100.0);
|
|
Step1.Ring3.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead3] / 100.0);
|
|
Step1.Ring3.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead4] / 100.0);
|
|
Step1.Ring3.Value = Step[(int)EWeldingStepRing.Ring3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring4.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring4.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring4.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead1] / 100.0);
|
|
Step1.Ring4.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead2] / 100.0);
|
|
Step1.Ring4.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead3] / 100.0);
|
|
Step1.Ring4.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead4] / 100.0);
|
|
Step1.Ring4.Value = Step[(int)EWeldingStepRing.Ring4_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring5.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring5.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring5.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead1] / 100.0);
|
|
Step1.Ring5.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead2] / 100.0);
|
|
Step1.Ring5.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead3] / 100.0);
|
|
Step1.Ring5.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead4] / 100.0);
|
|
Step1.Ring5.Value = Step[(int)EWeldingStepRing.Ring5_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring6.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring6.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring6.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead1] / 100.0);
|
|
Step1.Ring6.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead2] / 100.0);
|
|
Step1.Ring6.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead3] / 100.0);
|
|
Step1.Ring6.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead4] / 100.0);
|
|
Step1.Ring6.Value = Step[(int)EWeldingStepRing.Ring6_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
}
|
|
|
|
|
|
private void StepSet2(List<int> Step)
|
|
{
|
|
//
|
|
Step1.Spiral1.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalLowerLimit] / 100.0);
|
|
Step1.Spiral1.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalUpperLimit] / 100.0);
|
|
Step1.Spiral1.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalResult] / 100.0);
|
|
Step1.Spiral1.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalLowerLimit] / 100.0);
|
|
Step1.Spiral1.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalUpperLimit] / 100.0);
|
|
Step1.Spiral1.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalResult] / 100.0);
|
|
Step1.Spiral1.Value = Step[(int)EWeldingStepSpiral.Spiral1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Spiral2.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalLowerLimit] / 100.0);
|
|
Step1.Spiral2.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalUpperLimit] / 100.0);
|
|
Step1.Spiral2.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalResult] / 100.0);
|
|
Step1.Spiral2.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalLowerLimit] / 100.0);
|
|
Step1.Spiral2.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalUpperLimit] / 100.0);
|
|
Step1.Spiral2.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalResult] / 100.0);
|
|
Step1.Spiral2.Value = Step[(int)EWeldingStepSpiral.Spiral2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Spiral3.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalLowerLimit] / 100.0);
|
|
Step1.Spiral3.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalUpperLimit] / 100.0);
|
|
Step1.Spiral3.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalResult] / 100.0);
|
|
Step1.Spiral3.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalLowerLimit] / 100.0);
|
|
Step1.Spiral3.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalUpperLimit] / 100.0);
|
|
Step1.Spiral3.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalResult] / 100.0);
|
|
Step1.Spiral3.Value = Step[(int)EWeldingStepSpiral.Spiral3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
}
|
|
|
|
private void StepSet3(List<int> Step)
|
|
{
|
|
//
|
|
Step2.Ring1.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring1.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthUpperLimit] / 100.0);
|
|
Step2.Ring1.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead1] / 100.0);
|
|
Step2.Ring1.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead2] / 100.0);
|
|
Step2.Ring1.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead3] / 100.0);
|
|
Step2.Ring1.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead4] / 100.0);
|
|
Step2.Ring1.Value = Step[(int)EWeldingStepRing.Ring1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring2.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring2.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthUpperLimit] / 100.0);
|
|
Step2.Ring2.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead1] / 100.0);
|
|
Step2.Ring2.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead2] / 100.0);
|
|
Step2.Ring2.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead3] / 100.0);
|
|
Step2.Ring2.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead4] / 100.0);
|
|
Step2.Ring2.Value = Step[(int)EWeldingStepRing.Ring2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring3.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring3.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthUpperLimit] / 100.0);
|
|
Step2.Ring3.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead1] / 100.0);
|
|
Step2.Ring3.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead2] / 100.0);
|
|
Step2.Ring3.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead3] / 100.0);
|
|
Step2.Ring3.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead4] / 100.0);
|
|
Step2.Ring3.Value = Step[(int)EWeldingStepRing.Ring3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring4.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring4.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthUpperLimit] / 100.0);
|
|
Step2.Ring4.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead1] / 100.0);
|
|
Step2.Ring4.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead2] / 100.0);
|
|
Step2.Ring4.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead3] / 100.0);
|
|
Step2.Ring4.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead4] / 100.0);
|
|
Step2.Ring4.Value = Step[(int)EWeldingStepRing.Ring4_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring5.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring5.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthUpperLimit] / 100.0);
|
|
Step2.Ring5.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead1] / 100.0);
|
|
Step2.Ring5.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead2] / 100.0);
|
|
Step2.Ring5.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead3] / 100.0);
|
|
Step2.Ring5.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead4] / 100.0);
|
|
Step2.Ring5.Value = Step[(int)EWeldingStepRing.Ring5_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring6.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring6.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthUpperLimit] / 100.0);
|
|
Step2.Ring6.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead1] / 100.0);
|
|
Step2.Ring6.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead2] / 100.0);
|
|
Step2.Ring6.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead3] / 100.0);
|
|
Step2.Ring6.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead4] / 100.0);
|
|
Step2.Ring6.Value = Step[(int)EWeldingStepRing.Ring6_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
|
|
}
|
|
|
|
private void StepSet4(List<int> Step)
|
|
{
|
|
//
|
|
Step2.Spiral1.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalLowerLimit] / 100.0);
|
|
Step2.Spiral1.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalUpperLimit] / 100.0);
|
|
Step2.Spiral1.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalResult] / 100.0);
|
|
Step2.Spiral1.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalLowerLimit] / 100.0);
|
|
Step2.Spiral1.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalUpperLimit] / 100.0);
|
|
Step2.Spiral1.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalResult] / 100.0);
|
|
Step2.Spiral1.Value = Step[(int)EWeldingStepSpiral.Spiral1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Spiral2.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalLowerLimit] / 100.0);
|
|
Step2.Spiral2.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalUpperLimit] / 100.0);
|
|
Step2.Spiral2.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalResult] / 100.0);
|
|
Step2.Spiral2.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalLowerLimit] / 100.0);
|
|
Step2.Spiral2.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalUpperLimit] / 100.0);
|
|
Step2.Spiral2.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalResult] / 100.0);
|
|
Step2.Spiral2.Value = Step[(int)EWeldingStepSpiral.Spiral2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Spiral3.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalLowerLimit] / 100.0);
|
|
Step2.Spiral3.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalUpperLimit] / 100.0);
|
|
Step2.Spiral3.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalResult] / 100.0);
|
|
Step2.Spiral3.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalLowerLimit] / 100.0);
|
|
Step2.Spiral3.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalUpperLimit] / 100.0);
|
|
Step2.Spiral3.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalResult] / 100.0);
|
|
Step2.Spiral3.Value = Step[(int)EWeldingStepSpiral.Spiral3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
}
|
|
|
|
|
|
public static int ToIntThousand(double value)
|
|
{
|
|
decimal decValue = (decimal)value;
|
|
return (int)Math.Round(decValue * 100m, MidpointRounding.AwayFromZero); // 100m 2자리, 1000m 3자리
|
|
}
|
|
|
|
public List<int> toIntList(List<double> step)
|
|
{
|
|
List<int> resultList = new List<int>();
|
|
foreach (double info in step)
|
|
{
|
|
resultList.Add(ToIntThousand(info));
|
|
}
|
|
|
|
return resultList;
|
|
}
|
|
|
|
public void SetParameters1(List<double> step)
|
|
{
|
|
AsyncLog.I($"[INFO]SetParameters1: " + string.Join(", ", step));
|
|
|
|
StepSet1(toIntList(step));
|
|
}
|
|
|
|
public void SetParameters2(List<double> step)
|
|
{
|
|
AsyncLog.I($"[INFO]SetParameters2: " + string.Join(", ", step));
|
|
|
|
StepSet2(toIntList(step));
|
|
}
|
|
|
|
public void SetParameters3(List<double> step)
|
|
{
|
|
AsyncLog.I($"[INFO]SetParameters3: " + string.Join(", ", step));
|
|
|
|
StepSet3(toIntList(step));
|
|
}
|
|
|
|
public void SetParameters4(List<double> step)
|
|
{
|
|
AsyncLog.I($"[INFO]SetParameters4: " + string.Join(", ", step));
|
|
|
|
StepSet4(toIntList(step));
|
|
}
|
|
|
|
public void DisposeImages()
|
|
{
|
|
Application.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
// BitmapSource 참조 해제
|
|
ImageLeftTop = null;
|
|
ImageLeftBottom = null;
|
|
|
|
// GC 수집 강제 호출 (선택적)
|
|
GC.Collect();
|
|
GC.WaitForPendingFinalizers();
|
|
});
|
|
}
|
|
}
|
|
|
|
public class RelayCommand : ICommand
|
|
{
|
|
private readonly Action _execute;
|
|
private readonly Func<bool> _canExecute;
|
|
|
|
public RelayCommand(Action execute, Func<bool> canExecute = null)
|
|
{
|
|
_execute = execute;
|
|
_canExecute = canExecute;
|
|
}
|
|
|
|
public bool CanExecute(object parameter) => _canExecute?.Invoke() ?? true;
|
|
public void Execute(object parameter) => _execute();
|
|
public event EventHandler CanExecuteChanged;
|
|
}
|
|
|
|
public class RelayCommand<T> : ICommand
|
|
{
|
|
private readonly Action<T> _execute;
|
|
private readonly Func<T, bool> _canExecute;
|
|
|
|
public RelayCommand(Action<T> execute, Func<T, bool> canExecute = null)
|
|
{
|
|
_execute = execute;
|
|
_canExecute = canExecute;
|
|
}
|
|
|
|
public bool CanExecute(object parameter)
|
|
{
|
|
if (parameter == null && typeof(T).IsValueType) return false;
|
|
return _canExecute?.Invoke((T)parameter) ?? true;
|
|
}
|
|
|
|
public void Execute(object parameter) => _execute((T)parameter);
|
|
public event EventHandler CanExecuteChanged;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public enum EWeldingStepRing
|
|
{
|
|
Ring1_BeadWidthLowerLimit, // Ring #1 bead 폭 하한
|
|
Ring1_BeadWidthUpperLimit, // Ring #1 bead 폭 상한
|
|
//Ring1_BeadWidthResult,
|
|
//Ring1_BeadMIN,
|
|
//Ring1_BeadMAX,
|
|
Ring1_Bead1,
|
|
Ring1_Bead2,
|
|
Ring1_Bead3,
|
|
Ring1_Bead4,
|
|
Ring1_BeadWidthOK_NG, // Ring #1 (0 = OK, 1 = NG)
|
|
Ring2_BeadWidthLowerLimit, // Ring #2 bead 폭 하한
|
|
Ring2_BeadWidthUpperLimit, // Ring #2 bead 폭 상한
|
|
//Ring2_BeadWidthResult,
|
|
//Ring2_BeadMIN,
|
|
//Ring2_BeadMAX,
|
|
Ring2_Bead1,
|
|
Ring2_Bead2,
|
|
Ring2_Bead3,
|
|
Ring2_Bead4,
|
|
Ring2_BeadWidthOK_NG, // Ring #2 (0 = OK, 1 = NG)
|
|
Ring3_BeadWidthLowerLimit, // Ring #3 bead 폭 하한
|
|
Ring3_BeadWidthUpperLimit, // Ring #3 bead 폭 상한
|
|
//Ring3_BeadWidthResult,
|
|
//Ring3_BeadMIN,
|
|
//Ring3_BeadMAX,
|
|
Ring3_Bead1,
|
|
Ring3_Bead2,
|
|
Ring3_Bead3,
|
|
Ring3_Bead4,
|
|
Ring3_BeadWidthOK_NG, // Ring #3 (0 = OK, 1 = NG)
|
|
Ring4_BeadWidthLowerLimit, // Ring #4 bead 폭 하한
|
|
Ring4_BeadWidthUpperLimit, // Ring #4 bead 폭 상한
|
|
//Ring4_BeadWidthResult,
|
|
//Ring4_BeadMIN,
|
|
//Ring4_BeadMAX,
|
|
Ring4_Bead1,
|
|
Ring4_Bead2,
|
|
Ring4_Bead3,
|
|
Ring4_Bead4,
|
|
Ring4_BeadWidthOK_NG, // Ring #4 (0 = OK, 1 = NG)
|
|
Ring5_BeadWidthLowerLimit, // Ring #5 bead 폭 하한
|
|
Ring5_BeadWidthUpperLimit, // Ring #5 bead 폭 상한
|
|
//Ring5_BeadWidthResult,
|
|
//Ring5_BeadMIN,
|
|
//Ring5_BeadMAX,
|
|
Ring5_Bead1,
|
|
Ring5_Bead2,
|
|
Ring5_Bead3,
|
|
Ring5_Bead4,
|
|
Ring5_BeadWidthOK_NG, // Ring #5 (0 = OK, 1 = NG)
|
|
Ring6_BeadWidthLowerLimit, // Ring #6 bead 폭 하한
|
|
Ring6_BeadWidthUpperLimit, // Ring #6 bead 폭 상한
|
|
//Ring6_BeadWidthResult,
|
|
//Ring6_BeadMIN,
|
|
//Ring6_BeadMAX,
|
|
Ring6_Bead1,
|
|
Ring6_Bead2,
|
|
Ring6_Bead3,
|
|
Ring6_Bead4,
|
|
Ring6_BeadWidthOK_NG, // Ring #6 (0 = OK, 1 = NG)
|
|
}
|
|
|
|
public enum EWeldingStepSpiral
|
|
{
|
|
Spiral1_HorizontalLowerLimit, // Spiral #1 _ 가로 하한
|
|
Spiral1_HorizontalUpperLimit, // Spiral #1 _ 가로 상한
|
|
Spiral1_HorizontalResult,
|
|
Spiral1_VerticalLowerLimit, // Spiral #1 _ 세로 하한
|
|
Spiral1_VerticalUpperLimit, // Spiral #1 _ 세로 상한
|
|
Spiral1_VerticalResult,
|
|
Spiral1_BeadWidthOK_NG, // Spiral #1 _ bead 폭 OK/NG
|
|
Spiral2_HorizontalLowerLimit, // Spiral #2 _ 가로 하한
|
|
Spiral2_HorizontalUpperLimit, // Spiral #2 _ 가로 상한
|
|
Spiral2_HorizontalResult,
|
|
Spiral2_VerticalLowerLimit, // Spiral #2 _ 세로 하한
|
|
Spiral2_VerticalUpperLimit, // Spiral #2 _ 세로 상한
|
|
Spiral2_VerticalResult,
|
|
Spiral2_BeadWidthOK_NG, // Spiral #2 _ bead 폭 OK/NG
|
|
Spiral3_HorizontalLowerLimit, // Spiral #3 _ 가로 하한
|
|
Spiral3_HorizontalUpperLimit, // Spiral #3 _ 가로 상한
|
|
Spiral3_HorizontalResult,
|
|
Spiral3_VerticalLowerLimit, // Spiral #3 _ 세로 하한
|
|
Spiral3_VerticalUpperLimit, // Spiral #3 _ 세로 상한
|
|
Spiral3_VerticalResult,
|
|
Spiral3_BeadWidthOK_NG, // Spiral #3 _ bead 폭 OK/NG
|
|
}
|
|
|
|
#region Base Class
|
|
// INotifyPropertyChanged 구현
|
|
public class NotifyPropertyChangedEntity : INotifyPropertyChanged
|
|
{
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
protected void OnPropertyChanged(string propertyName)
|
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Models
|
|
// 링 정보
|
|
public class KS_Ring : NotifyPropertyChangedEntity
|
|
{
|
|
private string _lowerLimit;
|
|
public string LowerLimit
|
|
{
|
|
get => _lowerLimit;
|
|
set { _lowerLimit = value; OnPropertyChanged(nameof(LowerLimit)); }
|
|
}
|
|
|
|
private string _upperLimit;
|
|
public string UpperLimit
|
|
{
|
|
get => _upperLimit;
|
|
set { _upperLimit = value; OnPropertyChanged(nameof(UpperLimit)); }
|
|
}
|
|
|
|
//private string _result;
|
|
//public string Result
|
|
//{
|
|
// get => _result;
|
|
// set { _result = value; OnPropertyChanged(nameof(Result)); }
|
|
//}
|
|
|
|
public string BeadSize1 { get => _beadSize1; set { _beadSize1 = value; OnPropertyChanged(nameof(BeadSize1)); } }
|
|
private string _beadSize1;
|
|
|
|
public string BeadSize2 { get => _beadSize2; set { _beadSize2 = value; OnPropertyChanged(nameof(BeadSize2)); } }
|
|
private string _beadSize2;
|
|
|
|
public string BeadSize3 { get => _beadSize3; set { _beadSize3 = value; OnPropertyChanged(nameof(BeadSize3)); } }
|
|
private string _beadSize3;
|
|
|
|
public string BeadSize4 { get => _beadSize4; set { _beadSize4 = value; OnPropertyChanged(nameof(BeadSize4)); } }
|
|
private string _beadSize4;
|
|
|
|
private string _value;
|
|
public string Value
|
|
{
|
|
get => _value;
|
|
set { _value = value; OnPropertyChanged(nameof(Value)); }
|
|
}
|
|
|
|
public List<string> ToStringList()
|
|
{
|
|
return new List<string> { LowerLimit, UpperLimit, BeadSize1, BeadSize2, BeadSize3, BeadSize4, Value };
|
|
}
|
|
}
|
|
|
|
// 스파이럴 정보
|
|
public class KS_Spiral : NotifyPropertyChangedEntity
|
|
{
|
|
private string _horizontalLowerLimit;
|
|
public string HorizontalLowerLimit
|
|
{
|
|
get => _horizontalLowerLimit;
|
|
set { _horizontalLowerLimit = value; OnPropertyChanged(nameof(HorizontalLowerLimit)); }
|
|
}
|
|
|
|
private string _horizontalUpperLimit;
|
|
public string HorizontalUpperLimit
|
|
{
|
|
get => _horizontalUpperLimit;
|
|
set { _horizontalUpperLimit = value; OnPropertyChanged(nameof(HorizontalUpperLimit)); }
|
|
}
|
|
|
|
private string _horizontalResult;
|
|
public string HorizontalResult
|
|
{
|
|
get => _horizontalResult;
|
|
set { _horizontalResult = value; OnPropertyChanged(nameof(HorizontalResult)); }
|
|
}
|
|
|
|
private string _verticalLowerLimit;
|
|
public string VerticalLowerLimit
|
|
{
|
|
get => _verticalLowerLimit;
|
|
set { _verticalLowerLimit = value; OnPropertyChanged(nameof(VerticalLowerLimit)); }
|
|
}
|
|
|
|
private string _verticalUpperLimit;
|
|
public string VerticalUpperLimit
|
|
{
|
|
get => _verticalUpperLimit;
|
|
set { _verticalUpperLimit = value; OnPropertyChanged(nameof(VerticalUpperLimit)); }
|
|
}
|
|
|
|
private string _verticalResult;
|
|
public string VerticalResult
|
|
{
|
|
get => _verticalResult;
|
|
set { _verticalResult = value; OnPropertyChanged(nameof(VerticalResult)); }
|
|
}
|
|
|
|
private string _value;
|
|
public string Value
|
|
{
|
|
get => _value;
|
|
set { _value = value; OnPropertyChanged(nameof(Value)); }
|
|
}
|
|
|
|
public List<string> ToStringList()
|
|
{
|
|
return new List<string> {
|
|
HorizontalLowerLimit, HorizontalUpperLimit, HorizontalResult,
|
|
VerticalLowerLimit, VerticalUpperLimit, VerticalResult,
|
|
Value
|
|
};
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
public class KS_Step
|
|
{
|
|
public KS_Ring[] Rings { get; private set; }
|
|
public KS_Spiral[] Spirals { get; private set; }
|
|
|
|
public KS_Step(int ringCount, int spiralCount)
|
|
{
|
|
Rings = Enumerable.Range(0, ringCount).Select(_ => new KS_Ring()).ToArray();
|
|
Spirals = Enumerable.Range(0, spiralCount).Select(_ => new KS_Spiral()).ToArray();
|
|
}
|
|
|
|
// 명시적으로 접근할 수 있도록 편의 프로퍼티 제공
|
|
public KS_Ring Ring1 => Rings[0];
|
|
public KS_Ring Ring2 => Rings[1];
|
|
public KS_Ring Ring3 => Rings[2];
|
|
public KS_Ring Ring4 => Rings[3];
|
|
public KS_Ring Ring5 => Rings[4];
|
|
public KS_Ring Ring6 => Rings[5];
|
|
|
|
public KS_Spiral Spiral1 => Spirals[0];
|
|
public KS_Spiral Spiral2 => Spirals[1];
|
|
public KS_Spiral Spiral3 => Spirals[2];
|
|
|
|
public List<string> ToStringList()
|
|
{
|
|
var list = new List<string>();
|
|
foreach (var ring in Rings) list.AddRange(ring.ToStringList());
|
|
foreach (var spiral in Spirals) list.AddRange(spiral.ToStringList());
|
|
return list;
|
|
}
|
|
}
|
|
|
|
public class KS_WeldingInfo
|
|
{
|
|
public KS_Step Step1 { get; set; }
|
|
public KS_Step Step2 { get; set; }
|
|
public int Line_LaserPower1 { get; set; } = 0;
|
|
public int Line_LaserPower2 { get; set; } = 0;
|
|
public int Line_MarkSpeed { get; set; } = 0;
|
|
|
|
public int Arc_LaserPower1 { get; set; } = 0;
|
|
public int Arc_LaserPower2 { get; set; } = 0;
|
|
public int Arc_MarkSpeed { get; set; } = 0;
|
|
|
|
public int Spline_LaserPower1 { get; set; } = 0;
|
|
public int Spline_LaserPower2 { get; set; } = 0;
|
|
public int Spline_MarkSpeed { get; set; } = 0;
|
|
|
|
public string StepLBAD { get; set; } = "";
|
|
public string StepWELDING { get; set; } = "";
|
|
|
|
public KS_WeldingInfo()
|
|
{
|
|
Step1 = new KS_Step(6, 3); // Ring 6개, Spiral 3개
|
|
Step2 = new KS_Step(6, 3);
|
|
}
|
|
|
|
public static int ToIntThousand(double value)
|
|
{
|
|
decimal decValue = (decimal)value;
|
|
return (int)Math.Round(decValue * 100m, MidpointRounding.AwayFromZero); // 100m 2자리, 1000m 3자리
|
|
}
|
|
|
|
public List<int> toIntList(List<double> step)
|
|
{
|
|
List<int> resultList = new List<int>();
|
|
foreach (double info in step)
|
|
{
|
|
resultList.Add(ToIntThousand(info));
|
|
}
|
|
|
|
return resultList;
|
|
}
|
|
|
|
private void StepSet1(List<int> Step)
|
|
{
|
|
|
|
// String.Format("{0:F2}", num / 100.0);
|
|
//
|
|
Step1.Ring1.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring1.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring1.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead1] / 100.0);
|
|
Step1.Ring1.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead2] / 100.0);
|
|
Step1.Ring1.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead3] / 100.0);
|
|
Step1.Ring1.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead4] / 100.0);
|
|
Step1.Ring1.Value = Step[(int)EWeldingStepRing.Ring1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring2.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring2.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring2.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead1] / 100.0);
|
|
Step1.Ring2.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead2] / 100.0);
|
|
Step1.Ring2.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead3] / 100.0);
|
|
Step1.Ring2.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead4] / 100.0);
|
|
Step1.Ring2.Value = Step[(int)EWeldingStepRing.Ring2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring3.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring3.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring3.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead1] / 100.0);
|
|
Step1.Ring3.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead2] / 100.0);
|
|
Step1.Ring3.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead3] / 100.0);
|
|
Step1.Ring3.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead4] / 100.0);
|
|
Step1.Ring3.Value = Step[(int)EWeldingStepRing.Ring3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring4.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring4.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring4.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead1] / 100.0);
|
|
Step1.Ring4.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead2] / 100.0);
|
|
Step1.Ring4.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead3] / 100.0);
|
|
Step1.Ring4.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead4] / 100.0);
|
|
Step1.Ring4.Value = Step[(int)EWeldingStepRing.Ring4_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring5.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring5.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring5.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead1] / 100.0);
|
|
Step1.Ring5.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead2] / 100.0);
|
|
Step1.Ring5.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead3] / 100.0);
|
|
Step1.Ring5.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead4] / 100.0);
|
|
Step1.Ring5.Value = Step[(int)EWeldingStepRing.Ring5_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Ring6.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthLowerLimit] / 100.0);
|
|
Step1.Ring6.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring6.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead1] / 100.0);
|
|
Step1.Ring6.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead2] / 100.0);
|
|
Step1.Ring6.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead3] / 100.0);
|
|
Step1.Ring6.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead4] / 100.0);
|
|
Step1.Ring6.Value = Step[(int)EWeldingStepRing.Ring6_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
}
|
|
|
|
|
|
private void StepSet2(List<int> Step)
|
|
{
|
|
//
|
|
Step1.Spiral1.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalLowerLimit] / 100.0);
|
|
Step1.Spiral1.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalUpperLimit] / 100.0);
|
|
Step1.Spiral1.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalResult] / 100.0);
|
|
Step1.Spiral1.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalLowerLimit] / 100.0);
|
|
Step1.Spiral1.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalUpperLimit] / 100.0);
|
|
Step1.Spiral1.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalResult] / 100.0);
|
|
Step1.Spiral1.Value = Step[(int)EWeldingStepSpiral.Spiral1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Spiral2.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalLowerLimit] / 100.0);
|
|
Step1.Spiral2.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalUpperLimit] / 100.0);
|
|
Step1.Spiral2.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalResult] / 100.0);
|
|
Step1.Spiral2.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalLowerLimit] / 100.0);
|
|
Step1.Spiral2.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalUpperLimit] / 100.0);
|
|
Step1.Spiral2.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalResult] / 100.0);
|
|
Step1.Spiral2.Value = Step[(int)EWeldingStepSpiral.Spiral2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step1.Spiral3.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalLowerLimit] / 100.0);
|
|
Step1.Spiral3.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalUpperLimit] / 100.0);
|
|
Step1.Spiral3.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalResult] / 100.0);
|
|
Step1.Spiral3.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalLowerLimit] / 100.0);
|
|
Step1.Spiral3.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalUpperLimit] / 100.0);
|
|
Step1.Spiral3.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalResult] / 100.0);
|
|
Step1.Spiral3.Value = Step[(int)EWeldingStepSpiral.Spiral3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
}
|
|
|
|
private void StepSet3(List<int> Step)
|
|
{
|
|
//
|
|
Step2.Ring1.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring1.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring1.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead1] / 100.0);
|
|
Step1.Ring1.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead2] / 100.0);
|
|
Step1.Ring1.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead3] / 100.0);
|
|
Step1.Ring1.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring1_Bead4] / 100.0);
|
|
Step2.Ring1.Value = Step[(int)EWeldingStepRing.Ring1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring2.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring2.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring2.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead1] / 100.0);
|
|
Step1.Ring2.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead2] / 100.0);
|
|
Step1.Ring2.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead3] / 100.0);
|
|
Step1.Ring2.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring2_Bead4] / 100.0);
|
|
Step2.Ring2.Value = Step[(int)EWeldingStepRing.Ring2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring3.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring3.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring3.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead1] / 100.0);
|
|
Step1.Ring3.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead2] / 100.0);
|
|
Step1.Ring3.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead3] / 100.0);
|
|
Step1.Ring3.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring3_Bead4] / 100.0);
|
|
Step2.Ring3.Value = Step[(int)EWeldingStepRing.Ring3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring4.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring4.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring4.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead1] / 100.0);
|
|
Step1.Ring4.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead2] / 100.0);
|
|
Step1.Ring4.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead3] / 100.0);
|
|
Step1.Ring4.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring4_Bead4] / 100.0);
|
|
Step2.Ring4.Value = Step[(int)EWeldingStepRing.Ring4_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring5.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring5.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring5.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead1] / 100.0);
|
|
Step1.Ring5.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead2] / 100.0);
|
|
Step1.Ring5.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead3] / 100.0);
|
|
Step1.Ring5.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring5_Bead4] / 100.0);
|
|
Step2.Ring5.Value = Step[(int)EWeldingStepRing.Ring5_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Ring6.LowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthLowerLimit] / 100.0);
|
|
Step2.Ring6.UpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_BeadWidthUpperLimit] / 100.0);
|
|
Step1.Ring6.BeadSize1 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead1] / 100.0);
|
|
Step1.Ring6.BeadSize2 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead2] / 100.0);
|
|
Step1.Ring6.BeadSize3 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead3] / 100.0);
|
|
Step1.Ring6.BeadSize4 = String.Format("{0:F2}", Step[(int)EWeldingStepRing.Ring6_Bead4] / 100.0);
|
|
Step2.Ring6.Value = Step[(int)EWeldingStepRing.Ring6_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
|
|
}
|
|
|
|
private void StepSet4(List<int> Step)
|
|
{
|
|
//
|
|
Step2.Spiral1.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalLowerLimit] / 100.0);
|
|
Step2.Spiral1.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalUpperLimit] / 100.0);
|
|
Step2.Spiral1.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_HorizontalResult] / 100.0);
|
|
Step2.Spiral1.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalLowerLimit] / 100.0);
|
|
Step2.Spiral1.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalUpperLimit] / 100.0);
|
|
Step2.Spiral1.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral1_VerticalResult] / 100.0);
|
|
Step2.Spiral1.Value = Step[(int)EWeldingStepSpiral.Spiral1_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Spiral2.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalLowerLimit] / 100.0);
|
|
Step2.Spiral2.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalUpperLimit] / 100.0);
|
|
Step2.Spiral2.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_HorizontalResult] / 100.0);
|
|
Step2.Spiral2.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalLowerLimit] / 100.0);
|
|
Step2.Spiral2.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalUpperLimit] / 100.0);
|
|
Step2.Spiral2.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral2_VerticalResult] / 100.0);
|
|
Step2.Spiral2.Value = Step[(int)EWeldingStepSpiral.Spiral2_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
//
|
|
Step2.Spiral3.HorizontalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalLowerLimit] / 100.0);
|
|
Step2.Spiral3.HorizontalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalUpperLimit] / 100.0);
|
|
Step2.Spiral3.HorizontalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_HorizontalResult] / 100.0);
|
|
Step2.Spiral3.VerticalLowerLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalLowerLimit] / 100.0);
|
|
Step2.Spiral3.VerticalUpperLimit = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalUpperLimit] / 100.0);
|
|
Step2.Spiral3.VerticalResult = String.Format("{0:F2}", Step[(int)EWeldingStepSpiral.Spiral3_VerticalResult] / 100.0);
|
|
Step2.Spiral3.Value = Step[(int)EWeldingStepSpiral.Spiral3_BeadWidthOK_NG] == 100 ? "OK" : "NG";
|
|
|
|
}
|
|
|
|
public List<string> MakeData(List<double> data1, List<double> data2, List<double> data3, List<double> data4, List<short> recipe, string LBAD, string WELDING)
|
|
{
|
|
StepSet1(toIntList(data1));
|
|
StepSet2(toIntList(data1));
|
|
StepSet3(toIntList(data1));
|
|
StepSet4(toIntList(data1));
|
|
// Line -> LaserPower1, LaserPower2, MarkSpeed, Arc -> LaserPower1, LaserPower2, MarkSpeed , spline -> LaserPower1, LaserPower2, MarkSpeed
|
|
|
|
Line_LaserPower1 = recipe[0];
|
|
Line_LaserPower2 = recipe[0];
|
|
Line_MarkSpeed = recipe[0];
|
|
|
|
Arc_LaserPower1 = recipe[0];
|
|
Arc_LaserPower2 = recipe[0];
|
|
Arc_MarkSpeed = recipe[0];
|
|
|
|
Spline_LaserPower1 = recipe[0];
|
|
Spline_LaserPower2 = recipe[0];
|
|
Spline_MarkSpeed = recipe[0];
|
|
|
|
StepLBAD = LBAD;
|
|
StepWELDING = WELDING;
|
|
|
|
var list = new List<string>();
|
|
|
|
// Step1, Step2 값
|
|
list.AddRange(Step1.ToStringList());
|
|
list.AddRange(Step2.ToStringList());
|
|
|
|
// WeldingInfo 자체 값
|
|
list.AddRange(new[]
|
|
{
|
|
Line_LaserPower1.ToString(),
|
|
Line_LaserPower2.ToString(),
|
|
Line_MarkSpeed.ToString(),
|
|
Arc_LaserPower1.ToString(),
|
|
Arc_LaserPower2.ToString(),
|
|
Arc_MarkSpeed.ToString(),
|
|
Spline_LaserPower1.ToString(),
|
|
Spline_LaserPower2.ToString(),
|
|
Spline_MarkSpeed.ToString(),
|
|
StepLBAD,
|
|
StepWELDING
|
|
});
|
|
|
|
return list;
|
|
}
|
|
} |