2026-06-05 13:44:39 +09:00

146 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisionCommon;
namespace VisionSequence.Setup {
/// <summary>
/// 비전 반복도 로그
/// </summary>
public class VisionRepeatLog : ICloneable {
/// <summary>
/// 걸린 시간
/// </summary>
public string Time { get; set; }
/// <summary>
/// 반복 Step
/// </summary>
public int Step { get; set; }
/// <summary>
/// 이미지 X 위치
/// </summary>
public double ImagePosX { get; set; }
/// <summary>
/// 이미지 Y위치
/// </summary>
public double ImagePosY { get; set; }
/// <summary>
/// 자재 X 위치
/// </summary>
public double StaticPosX { get; set; }
/// <summary>
/// 자재 Y위치
/// </summary>
public double StaticPosY { get; set; }
/// <summary>
/// 패턴 각도
/// </summary>
public double Angle { get; set; }
/// <summary>
/// 가로 길이(Shape)
/// </summary>
public double Width { get; set; }
/// <summary>
/// 세로 길이(Shape)
/// </summary>
public double Height { get; set; }
/// <summary>
/// 반지름 길이(Shape)
/// </summary>
public double Radius { get; set; }
public object Clone() {
return new VisionRepeatLog() {
Time = this.Time,
Step = this.Step,
ImagePosX = this.ImagePosX,
ImagePosY = this.ImagePosY,
StaticPosX = this.StaticPosX,
StaticPosY = this.StaticPosY,
Angle = this.Angle,
Width = this.Width,
Height = this.Height,
Radius = this.Radius
};
}
public VisionRepeatLog() { }
/// <summary>
/// 생성자 (for Shape)
/// </summary>
/// <param name="step">반복 Step</param>
/// <param name="imagePosX">이미지 X 위치</param>
/// <param name="imagePosY">이미지 Y 위치</param>
/// <param name="staticPosX">자재 X 위치</param>
/// <param name="staticPosY">자재 Y 위치</param>
/// <param name="angle">패턴 각도</param>
/// <param name="width">가로 길이</param>
/// <param name="height">세로 길이</param>
/// <param name="radius">반지름 길이</param>
public VisionRepeatLog(int step, double imagePosX, double imagePosY, double staticPosX, double staticPosY, double angle, double width, double height, double radius) {
Step = step;
ImagePosX = imagePosX;
ImagePosY = imagePosY;
StaticPosX = staticPosX;
StaticPosY = staticPosY;
Angle = angle;
Width = width;
Height = height;
Radius = radius;
}
/// <summary>
/// 생성자 (for not Shape)
/// </summary>
/// <param name="step">반복 Step</param>
/// <param name="imagePosX">이미지 X 위치</param>
/// <param name="imagePosY">이미지 Y 위치</param>
/// <param name="staticPosX">자재 X 위치</param>
/// <param name="staticPosY">자재 Y 위치</param>
/// <param name="angle">패턴 각도</param>
public VisionRepeatLog(int step, double imagePosX, double imagePosY, double staticPosX, double staticPosY, double angle) {
Step = step;
ImagePosX = imagePosX;
ImagePosY = imagePosY;
StaticPosX = staticPosX;
StaticPosY = staticPosY;
Angle = angle;
Width = 0;
Height = 0;
Radius = 0;
}
}
/// <summary>
/// 비전 반복도 결과 항목 매니저
/// </summary>
public class VisionRepeatResultItemManager : ItemManagerBase {
private static readonly object _Lock = new object();
/// <summary>
/// 비전 반복도 결과 항목을 Get 한다.
/// </summary>
/// <param name="subSysInfo"></param>
/// <param name="log"></param>
/// <returns>비전 반복도 결과 항목</returns>
public static VisionRepeatLog GetVisionRepeatLog(SubSysInfo subSysInfo, VisionRepeatLog log) {
lock (_Lock) {
return new VisionRepeatLog() {
Time = GetTimeStamp(subSysInfo, log),
Step = log.Step,
ImagePosX = log.ImagePosX,
ImagePosY = log.ImagePosY,
StaticPosX = log.StaticPosX,
StaticPosY = log.StaticPosY,
Angle = log.Angle,
Width = log.Width,
Height = log.Height,
Radius = log.Radius
};
}
}
}
}