using Bro.Common.Helper;
|
using Bro.UI.Model.Winform;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
|
namespace Bro.M071.Process.UI
|
{
|
[MenuNode("M071_PatchInsertMeasurement", "批量生成检测项", 4, "M071Node", true)]
|
public partial class M071_PatchInsertMeasurement : MenuFrmBase
|
{
|
public M071_PatchInsertMeasurement()
|
{
|
InitializeComponent();
|
}
|
|
M071Config Config => Process?.IConfig as M071Config;
|
M071Process Process_M071 => Process as M071Process;
|
|
public override void OnProcessUpdated()
|
{
|
base.OnProcessUpdated();
|
|
if (Config == null)
|
return;
|
|
this.Invoke(new Action(() =>
|
{
|
UIHelper.SetCombo(cboMeasureType, Config.MeasureTypeCollection, "Code", "Code");
|
UIHelper.SetCombo(cboStartKey, new List<string>(Config.KeyNameCollection), "", "");
|
UIHelper.SetCombo(cboEndKey, new List<string>(Config.KeyNameCollection), "", "");
|
}));
|
}
|
|
private async void btnInsertMeasurement_Click(object sender, EventArgs e)
|
{
|
btnInsertMeasurement.Enabled = false;
|
btnInsertMeasurement.Text = "生成中。。。";
|
|
MeasureType measureType = cboMeasureType.SelectedItem as MeasureType;
|
string startKey = cboStartKey.Text;
|
string endKey = cboEndKey.Text;
|
|
await PatchInsertMeasurement(measureType, startKey, endKey).ContinueWith(t =>
|
{
|
MessageBox.Show(t.Result);
|
});
|
|
btnInsertMeasurement.Enabled = true;
|
btnInsertMeasurement.Text = "生成检测项";
|
}
|
|
private async Task<string> PatchInsertMeasurement(MeasureType measureType, string startKey, string endKey)
|
{
|
return await Task.Run(() =>
|
{
|
int startIndex = Config.KeyNameCollection.IndexOf(startKey);
|
int endIndex = Config.KeyNameCollection.IndexOf(endKey);
|
|
KeyLocation startRect = Config.KeyLocationCollection.FirstOrDefault(u => u.Key == startKey);
|
if (startRect == null)
|
{
|
return $"未配置{(startRect == null ? startKey : "")}的显示位置";
|
}
|
|
if (startIndex > endIndex)
|
{
|
return "起始键不能小于结束键";
|
}
|
|
RectangleF curKeyRect = new RectangleF((float)startRect.KeyPosition.X, (float)startRect.KeyPosition.Y, startRect.KeySize.Width, startRect.KeySize.Height);
|
KeyLocation curKey = null;
|
|
switch (measureType.Code)
|
{
|
case "Slant":
|
{
|
for (int i = startIndex; i <= endIndex; i++)
|
{
|
curKey = Config.KeyLocationCollection.FirstOrDefault(u => u.Key == Config.KeyNameCollection[i]);
|
if (curKey == null)
|
{
|
curKey = Config.KeyLocationCollection.FirstOrDefault(u => u.IsDefault);
|
}
|
|
int lableX = (int)((curKeyRect.X + curKeyRect.X + curKey.KeySize.Width - measureType.DisplayRect.Width) / 2.0);
|
int lable_Up_Y = (int)(startRect.KeyPosition.Y + (startRect.KeySize.Height - measureType.DisplayRect.Height) / 2.0);
|
|
MeasurementUnit mUnitUp = new MeasurementUnit();
|
mUnitUp.MeasureType = measureType.Code;
|
mUnitUp.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i], KeyResultId = "All" });
|
mUnitUp.DisplayLocation = new Rectangle(lableX, lable_Up_Y, measureType.DisplayRect.Width, measureType.DisplayRect.Height);
|
Config.MeasurementUnitCollection.Add(mUnitUp);
|
|
curKeyRect.Offset(curKey.KeySize.Width + curKey.IntervalSize.Width, 0);
|
}
|
}
|
break;
|
case "Alignment":
|
{
|
for (int i = startIndex; i < endIndex; i++)
|
{
|
curKey = Config.KeyLocationCollection.FirstOrDefault(u => u.Key == Config.KeyNameCollection[i]);
|
if (curKey == null)
|
{
|
curKey = Config.KeyLocationCollection.FirstOrDefault(u => u.IsDefault);
|
}
|
|
int lableX = (int)((curKeyRect.X + curKey.KeySize.Width + curKeyRect.X + curKey.KeySize.Width + curKey.IntervalSize.Width - measureType.DisplayRect.Width) / 2.0);
|
int lable_Up_Y = (int)startRect.KeyPosition.Y + 4;
|
int lable_Down_y = (int)(startRect.KeyPosition.Y + startRect.KeySize.Height - 4 - measureType.DisplayRect.Height);
|
|
MeasurementUnit mUnitUp = new MeasurementUnit();
|
mUnitUp.MeasureType = measureType.Code;
|
mUnitUp.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i], KeyResultId = "Z2" });
|
mUnitUp.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i + 1], KeyResultId = "Z1" });
|
mUnitUp.DisplayLocation = new Rectangle(lableX, lable_Up_Y, measureType.DisplayRect.Width, measureType.DisplayRect.Height);
|
Config.MeasurementUnitCollection.Add(mUnitUp);
|
|
MeasurementUnit mUnitDown = new MeasurementUnit();
|
mUnitDown.MeasureType = measureType.Code;
|
mUnitDown.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i], KeyResultId = "Z4" });
|
mUnitDown.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i + 1], KeyResultId = "Z3" });
|
mUnitDown.DisplayLocation = new Rectangle(lableX, lable_Down_y, measureType.DisplayRect.Width, measureType.DisplayRect.Height);
|
Config.MeasurementUnitCollection.Add(mUnitDown);
|
|
curKeyRect.Offset(curKey.KeySize.Width + curKey.IntervalSize.Width, 0);
|
}
|
}
|
break;
|
case "RowAlignment":
|
{
|
int start_X = (int)(startRect.KeyPosition.X + startRect.KeySize.Width / 3.0);
|
int end_X = (int)((startRect.KeySize.Width + startRect.IntervalSize.Width) * (endIndex - startIndex) + startRect.KeyPosition.X + startRect.KeySize.Width * 2.0 / 3.0);
|
|
int lable_Up_Y = (int)startRect.KeyPosition.Y - 6;
|
int lable_Down_Y = (int)(startRect.KeyPosition.Y + startRect.KeySize.Height - 6);
|
|
MeasurementUnit mUnitUp = new MeasurementUnit();
|
mUnitUp.MeasureType = measureType.Code;
|
for (int i = startIndex; i < endIndex; i++)
|
{
|
mUnitUp.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i], KeyResultId = "Z2" });
|
mUnitUp.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i + 1], KeyResultId = "Z1" });
|
}
|
|
mUnitUp.DisplayLocation = new Rectangle(start_X, lable_Up_Y, end_X - start_X, 12);
|
Config.MeasurementUnitCollection.Add(mUnitUp);
|
|
MeasurementUnit mUnitDown = new MeasurementUnit();
|
mUnitDown.MeasureType = measureType.Code;
|
for (int i = startIndex; i < endIndex; i++)
|
{
|
mUnitDown.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i], KeyResultId = "Z4" });
|
mUnitDown.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i + 1], KeyResultId = "Z3" });
|
}
|
|
mUnitDown.DisplayLocation = new Rectangle(start_X, lable_Down_Y, end_X - start_X, 12);
|
Config.MeasurementUnitCollection.Add(mUnitDown);
|
}
|
break;
|
case "Blind":
|
case "Blind1":
|
{
|
for (int i = startIndex; i <= endIndex; i++)
|
{
|
curKey = Config.KeyLocationCollection.FirstOrDefault(u => u.Key == Config.KeyNameCollection[i]);
|
if (curKey == null)
|
{
|
curKey = Config.KeyLocationCollection.FirstOrDefault(u => u.IsDefault);
|
}
|
int lableX = (int)((curKeyRect.X + curKeyRect.X + curKey.KeySize.Width - measureType.DisplayRect.Width) / 2.0);
|
//int lable_Up_Y = (int)(startRect.KeyPosition.Y + (startRect.KeySize.Height - measureType.DisplayRect.Height) / 2.0);
|
int lable_Up_Y = (int)(startRect.KeyPosition.Y + startRect.KeySize.Height - (measureType.DisplayRect.Height ));
|
|
MeasurementUnit mUnitUp = new MeasurementUnit();
|
mUnitUp.MeasureType = measureType.Code;
|
mUnitUp.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i], KeyResultId = "B1" });
|
mUnitUp.KeyUnitCollection.Add(new KeyUnitBind() { Key = Config.KeyNameCollection[i], KeyResultId = "B2" });
|
mUnitUp.DisplayLocation = new Rectangle(lableX, lable_Up_Y, measureType.DisplayRect.Width, measureType.DisplayRect.Height);
|
Config.MeasurementUnitCollection.Add(mUnitUp);
|
|
curKeyRect.Offset(curKey.KeySize.Width + curKey.IntervalSize.Width, 0);
|
}
|
}
|
|
break;
|
}
|
|
return "已批量生成检测项,请到配置界面查看和保存";
|
});
|
}
|
}
|
}
|