using Bro.Common.Base; using Bro.Common.Helper; using Bro.Common.UI; using Newtonsoft.Json; using System.Collections.Generic; using System.ComponentModel; using System.Drawing.Design; namespace Bro.Common.Calibration { [Device("CalibrationStatic9Point", "静态9点标定", EnumHelper.DeviceAttributeType.OperationConfig)] public class CalibrationStatic9PointConfigCollection : OperationConfigBase { [Category("标定配置")] [Description("标定配置集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List Configs { get; set; } = new List(); } public class CalibrationStatic9PointConfig : OperationConfigBase, IComplexDisplay { [Category("相机配置")] [Description("是否相机实时取图")] public bool IsUseRealTimeImage { get; set; } = true; [Category("相机配置")] [Description("相机操作配置")] [TypeConverter(typeof(ComplexObjectConvert))] [Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))] public CameraOprerationConfigBase CameraOpConfig { get; set; } = new CameraOprerationConfigBase(); [Category("标定配置")] [Description("XY坐标是否颠倒")] public bool IsInvert { get; set; } = false; [Category("标定配置")] [Description("标定X方向间隔")] public int IntervalX { get; set; } [Category("标定配置")] [Description("标定Y方向间隔")] public int IntervalY { get; set; } [Category("标定配置")] [Description("可忽略的像素差值,取像点的坐标差值必须大于该值才被采用")] public int IgnorePixel { get; set; } = 20; [Category("ROI配置")] [Description("标定点的ROI范围集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List ROIList { get; set; } = new List(); [Category("ROI配置")] [Description("ROI默认半径")] public float ROI_Radius { get; set; } = 50.0f; [Category("ROI配置")] [Description("是否启动ROI过滤")] public bool IsEnableROIFilter { get; set; } = true; [Category("UI显示配置")] [Description("是否显示备注说明")] public bool IsShowRemark { get; set; } = true; public string GetDisplayText() { return JsonConvert.SerializeObject(this); } } public class PLCSetting : IComplexDisplay { [Category("地址设置")] [Description("X坐标PLC读取地址,例如5012")] public int XAddress { get; set; } [Category("地址设置")] [Description("Y坐标PLC读取地址,例如5012")] public int YAddress { get; set; } [Category("地址设置")] [Description("是否实时读取PLC地址")] public bool IsRealTimeDataFromPLC { get; set; } = true; [Category("运动设置")] [Description("运动坐标X")] public int LocationX { get; set; } [Category("运动设置")] [Description("运动坐标Y")] public int LocationY { get; set; } public string GetDisplayText() { return string.Format("X:{0};Y:{1}", LocationX, LocationY); } } }