尺寸测量功能界面

This commit is contained in:
2025-03-16 17:32:09 +08:00
parent 0ac00af0ad
commit 25cd61c5cb
63 changed files with 12697 additions and 36 deletions

View File

@ -12,6 +12,9 @@ using System.Xml.Linq;
using AntdUI;
using DH.Commons.Enums;
using DH.Devices.Vision;
using XKRS.CanFly;
using static AntdUI.Table;
using static DH.Commons.Enums.EnumHelper;
namespace DHSoftware.Views
{
@ -20,7 +23,7 @@ namespace DHSoftware.Views
Window window;
public DetectControl(Window _window)
{
window= _window;
window = _window;
InitializeComponent();
//初始化表格列头
InitTableColumns();
@ -48,6 +51,10 @@ namespace DHSoftware.Views
btnLableDelete.Click += BtnLableDelete_Click;
lableTable.CellButtonClick += LableTable_CellButtonClick;
btnSizeAdd.Click += BtnSizeAdd_Click;
btnSizeDel.Click += BtnSizeDelete_Click;
SizeTable.CellButtonClick += SizeTable_CellButtonClick;
}
private void LableTable_CellButtonClick(object sender, TableButtonEventArgs e)
@ -84,6 +91,75 @@ namespace DHSoftware.Views
}
}
private void SizeTable_CellButtonClick(object sender, TableButtonEventArgs e)
{
var buttontext = e.Btn.Text;
if (e.Record is SizeTreatParam sizeTreat)
{
SizeParamLable = sizeTreat;
switch (buttontext)
{
//暂不支持进入整行编辑,只支持指定单元格编辑,推荐使用弹窗或抽屉编辑整行数据
case "编辑":
var form = new SizeLabelEdit(window, SizeParamLable) { Size = new Size(500, 300) };
AntdUI.Drawer.open(new AntdUI.Drawer.Config(window, form)
{
OnLoad = () =>
{
AntdUI.Message.info(window, "进入编辑", autoClose: 1);
},
OnClose = () =>
{
AntdUI.Message.info(window, "结束编辑", autoClose: 1);
}
});
break;
case "删除":
var result = Modal.open(window, "删除警告!", "确认要删除选择的数据吗?", TType.Warn);
if (result == DialogResult.OK)
SizeLableList.Remove(sizeTreat);
break;
case "进行测量":
var sizeType = ((int)SizeParamLable.PreType).ToString();
// 根据测量类型打开不同的窗口
switch (sizeType)
{
case "1":
case "2":
case "3":
case "4":
case "5":
FrmMain3 frmMain3 = new FrmMain3(sizeType);
frmMain3.ShowDialog();
if (!string.IsNullOrEmpty(frmMain3.inputtext))
{
sizeTreat.ResultShow = frmMain3.inputtext;
}
if (!string.IsNullOrEmpty(frmMain3.outtext))
{
sizeTreat.OutResultShow = frmMain3.outtext;
}
break;
default:
MessageBox.Show("未定义的测量类型!");
break;
}
//使用clone可以防止table中的image被修改
//Preview.open(new Preview.Config(window, (Image)SizeParamLable.CellImages[0].Image.Clone()));
break;
}
}
}
private void BtnLableDelete_Click(object? sender, EventArgs e)
{
if (DetectionLableList.Count == 0 || !DetectionLableList.Any(x => x.Selected))
@ -111,7 +187,7 @@ namespace DHSoftware.Views
private void BtnLableAdd_Click(object? sender, EventArgs e)
{
DetectionLable detectionLable = new DetectionLable()
DetectionLable detectionLable = new DetectionLable()
{
CellLinks = new CellLink[] {
new CellButton(Guid.NewGuid().ToString(),"编辑",TTypeMini.Primary),
@ -129,15 +205,65 @@ namespace DHSoftware.Views
}
}
private void BtnSizeDelete_Click(object? sender, EventArgs e)
{
if (SizeLableList.Count == 0 || !SizeLableList.Any(x => x.Selected))
{
AntdUI.Message.warn(window, "请选择要删除的行!", autoClose: 3);
return;
}
var result = Modal.open(window, "删除警告!", "确认要删除选择的数据吗?", TType.Warn);
if (result == DialogResult.OK)
{
// 使用反转for循环删除主列表中选中的项
for (int i = SizeLableList.Count - 1; i >= 0; i--)
{
// 删除选中的主列表项
if (SizeLableList[i].Selected)
{
SizeLableList.RemoveAt(i);
}
}
// 提示删除完成
AntdUI.Message.success(window, "删除成功!", autoClose: 3);
}
}
private void BtnSizeAdd_Click(object? sender, EventArgs e)
{
SizeTreatParam SizeParamLable = new SizeTreatParam()
{
//CellBadge = new CellBadge(SizeEnum.Circle.GetEnumDescription()),
CellLinks = new CellLink[] {
new CellButton(Guid.NewGuid().ToString(),"编辑",TTypeMini.Primary),
new CellButton(Guid.NewGuid().ToString(),"删除",TTypeMini.Error),
new CellButton(Guid.NewGuid().ToString(),"进行测量",TTypeMini.Primary)
}
};
var form = new SizeLabelEdit(window, SizeParamLable) { Size = new Size(450, 500) };
AntdUI.Modal.open(new AntdUI.Modal.Config(window, "", form, TType.None)
{
BtnHeight = 0,
});
if (form.submit)
{
SizeLableList.Add(SizeParamLable);
}
}
private void BtnPic_Click(object? sender, EventArgs e)
{
}
List<RelatedCamera> relatedCameras = new List<RelatedCamera>();
private void BtnCorrelatedCamera_Click(object? sender, EventArgs e)
{
var form = new CorrelatedCameraEdit(window, relatedCameras) { Size = new Size(500, 400) };
@ -179,8 +305,8 @@ namespace DHSoftware.Views
control.BringToFront();
}
}
}
}
}
}
private bool Control_CloseChanged(object sender, EventArgs e)
{
@ -272,6 +398,7 @@ namespace DHSoftware.Views
{
PreTreatParam preParam = new PreTreatParam()
{
CellLinks = new CellLink[] {
new CellButton(Guid.NewGuid().ToString(),"编辑",TTypeMini.Primary),
new CellButton(Guid.NewGuid().ToString(),"删除",TTypeMini.Error),
@ -317,7 +444,7 @@ namespace DHSoftware.Views
if (result == DialogResult.OK)
PreTreatList.Remove(PreTreat);
break;
}
}
}
@ -325,15 +452,15 @@ namespace DHSoftware.Views
private void PreTable_CellClick(object sender, TableClickEventArgs e)
{
}
private void BtnPreDelete_Click(object? sender, EventArgs e)
{
if (PreTreatList.Count == 0 || !PreTreatList.Any(x => x.Selected))
{
AntdUI.Message.warn(window, "请选择要删除的行!", autoClose: 3);
return;
AntdUI.Message.warn(window, "请选择要删除的行!", autoClose: 3);
return;
}
var result = Modal.open(window, "删除警告!", "确认要删除选择的数据吗?", TType.Warn);
@ -376,9 +503,11 @@ namespace DHSoftware.Views
AntList<PreTreatParam> PreTreatList;
AntList<PreTreatParam> PreOutTreatList;
AntList<DetectionLable> DetectionLableList;
AntList<SizeTreatParam> SizeLableList;
PreTreatParam curPreTreat;
PreTreatParam curPreOutTreat;
DetectionLable curDetectionLable;
SizeTreatParam SizeParamLable;
private void InitData()
{
PreTreatList = new AntList<PreTreatParam>();
@ -389,17 +518,20 @@ namespace DHSoftware.Views
PreOutTable.Binding(PreOutTreatList);
foreach (var item in MLModelTypes)
{
stDetectType.Items.Add(item.Key);
}
DetectionLableList =new AntList<DetectionLable>();
DetectionLableList = new AntList<DetectionLable>();
lableTable.Binding(DetectionLableList);
SizeLableList = new AntList<SizeTreatParam>();
SizeTable.Binding(SizeLableList);
}
private void InitTableColumns()
@ -429,6 +561,17 @@ namespace DHSoftware.Views
new Column("ResultState", "结果", ColumnAlign.Center),
new Column("CellLinks", "操作", ColumnAlign.Center)
};
SizeTable.Columns = new ColumnCollection() {
new ColumnCheck("Selected"){Fixed = true},
new ColumnSwitch("IsEnable", "是否启用", ColumnAlign.Center),
new Column("PreName", "测量名称",ColumnAlign.Center),
new Column("PreType", "测量类型", ColumnAlign.Center),
new Column("PrePix", "阈值", ColumnAlign.Center),
new Column("ResultShow", "输入参数", ColumnAlign.Center),
new Column("OutResultShow", "输出参数", ColumnAlign.Center),
new Column("CellLinks", "操作", ColumnAlign.Center)
};
}
private void btnPath_Click(object? sender, EventArgs e)
@ -446,18 +589,24 @@ namespace DHSoftware.Views
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
iptPath.Text = filePath;
}
}
}
List<KeyValuePair<string, int>> MLModelTypes = GetFilteredEnumDescriptionsAndValues<MLModelType>();
List<KeyValuePair<string, int>> SizeEnum = GetFilteredEnumDescriptionsAndValues<SizeEnum>();
private void tabPage2_Click(object sender, EventArgs e)
{
}
public static List<KeyValuePair<string, int>> GetFilteredEnumDescriptionsAndValues<T>() where T : Enum
{