123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476 |
- using PaintDotNet;
- using PaintDotNet.Base.SettingModel;
- using PaintDotNet.Camera;
- using StageController;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Metis.AutoAnalysis
- {
- public partial class SampleStageManageDialog : PdnBaseForm
- {
- SampleStageControl _sampleStage;
- Dictionary<string, SampleStageModel> _stageSettingList;
- SampleStageModel _stageSettingNow;
- bool _updateMesureRange = false;
- MeasureRangeControl _measureRange = new MeasureRangeControl();
- LoadingStageModel _loadingStageModel;
- SampleStageModel StageSettingNow
- {
- set
- {
- _stageSettingNow = value;
- if (_stageSettingNow == null)
- {
- textBox1.Text = "";
- textBox2.Text = "";
- textBox3.Text = "";
- _measureRange.Reset();
- }
- else
- {
- textBox1.Text = _stageSettingNow.Diameter + "";
- textBox2.Text = _stageSettingNow.Width + "";
- textBox3.Text = _stageSettingNow.Height + "";
- _updateMesureRange = true;
- }
- }
- }
- public SampleStageManageDialog()
- {
- _loadingStageModel = Startup.instance.loadingStageModel;
- InitializeComponent();
- InitSmapleStageControl();
- panel10.Controls.Add(_measureRange); _measureRange.Dock = DockStyle.Fill;
- panel8.SizeChanged += (s, e) =>
- {
- if (_stageSettingNow != null)
- UpdateSmapleStageControl();
- };
- _measureRange.ChangeEvent += MeasureRange_ChangeEvent;
- }
- private void MeasureHorRange(int offset)
- {
- if (_stageSettingNow == null)
- return;
- var value = _stageSettingNow.Width;
- var r = float.TryParse(textBox2.Text, out value);
- value += offset;
- if (value <= 0)
- value = 1;
- textBox2.Text = value.ToString();
- _stageSettingNow.Width = value;
- _updateMesureRange = true;
- }
- private void MeasureVerRange(int offset)
- {
- if (_stageSettingNow == null)
- return;
- var value = _stageSettingNow.Height;
- var r = float.TryParse(textBox3.Text, out value);
- value += offset;
- if (value <= 0)
- value = 1;
- textBox3.Text = value.ToString();
- _stageSettingNow.Height = value;
- _updateMesureRange = true;
- }
- private void MeasureRange_ChangeEvent(object sender, EventArgs e)
- {
- switch (_measureRange.MovingMothed)
- {
- case MeasureRangeControl.MovingMethodEnum.Hor_Plus:
- MeasureHorRange(1);
- break;
- case MeasureRangeControl.MovingMethodEnum.Hor_Minus:
- MeasureHorRange(-1);
- break;
- case MeasureRangeControl.MovingMethodEnum.Ver_Plus:
- MeasureVerRange(1);
- break;
- case MeasureRangeControl.MovingMethodEnum.Ver_Minus:
- MeasureVerRange(-1);
- break;
- default:
- break;
- }
- }
- #region Load Close
- private void SampleStageManageDialog_Load(object sender, EventArgs e)
- {
- _stageSettingList = SampleStageManager.GetAll();
- InitSampleButtonList();
- CameraManager.FrameCallback += CallbackDraw;
- InitStage();
- InitializeText();
- }
- private void SampleStageManageDialog_FormClosing(object sender, FormClosingEventArgs e)
- {
- CameraManager.FrameCallback -= CallbackDraw;
- }
- void InitializeText()
- {
- this.Text = PdnResources.GetString("AutoAnalysis.StageManage");
- groupBox1.Text = PdnResources.GetString("AutoAnalysis.StageManage");
- groupBox3.Text = PdnResources.GetString("AutoAnalysis.WorkpointMark");
- groupBox4.Text = PdnResources.GetString("AutoAnalysis.DetectRangeMark");
- groupBox2.Text = PdnResources.GetString("AutoAnalysis.SameOperate");
- groupBox5.Text = PdnResources.GetString("AutoAnalysis.DetectSketch");
- label1.Text = PdnResources.GetString("AutoAnalysis.WorkRadius");
- label2.Text = PdnResources.GetString("AutoAnalysis.WorkRange");
- btnAdd.Text = PdnResources.GetString("AutoAnalysis.Button.New");
- btnEdit.Text = PdnResources.GetString("AutoAnalysis.Button.Edit");
- btnDelete.Text = PdnResources.GetString("AutoAnalysis.Button.Delete");
- button1.Text = PdnResources.GetString("AutoAnalysis.Button.LoadStageConfig");
- button2.Text = PdnResources.GetString("AutoAnalysis.Button.ToWorkpoint");
- button3.Text = PdnResources.GetString("AutoAnalysis.Button.ResetStage");
- button4.Text = PdnResources.GetString("AutoAnalysis.Button.ExportStageConfig");
- button5.Text = PdnResources.GetString("AutoAnalysis.Button.Preview");
- button6.Text = PdnResources.GetString("AutoAnalysis.Button.Save");
- }
- #endregion
- #region Sample Select Button
- Button _last;
- /// <summary>
- /// 初始化样本按钮列表
- /// </summary>
- void InitSampleButtonList()
- {
- foreach (var s in _stageSettingList.Keys)
- {
- Append(s);
- }
- }
- /// <summary>
- /// 添加新按钮控件
- /// </summary>
- private void Append(string s)
- {
- var button = new Button();
- button.Text = s;
- button.Name = s;
- button.Tag = _stageSettingList[s];
- button.MouseDown += Button_MouseDown;
- panel9.Controls.Add(button);
- button.Dock = DockStyle.Top;
- }
- /// <summary>
- /// 选择样品
- /// </summary>
- private void Button_MouseDown(object sender, MouseEventArgs e)
- {
- if (_last != null) _last.FlatStyle = FlatStyle.Standard;
- _last = sender as Button;
- StageSettingNow = _last.Tag as SampleStageModel;
- _last.FlatStyle = FlatStyle.Flat;
- UpdateSmapleStageControl();
- }
- #endregion
- #region SampleStage
- void InitSmapleStageControl()
- {
- _sampleStage = new SampleStageControl();
- panel8.Controls.Add(_sampleStage);
- }
- private void UpdateSmapleStageControl()
- {
- _sampleStage.Visible = true;
- _sampleStage.Update(_stageSettingNow);
- }
- #endregion
- private void MeasureRange_Paint(object sender, PaintEventArgs e)
- {
- }
- private void btnAdd_Click(object sender, EventArgs e)
- {
- var f = new AddSampleStageDialog(_stageSettingList);
- f.CallBack += (s) =>
- {
- _stageSettingList.Add(s, new SampleStageModel());
- Append(s);
- };
- f.ShowDialog();
- }
- private void btnEdit_Click(object sender, EventArgs e)
- {
- if (_last == null)
- return;
- var f = new ModifySampleStageDialog(_stageSettingList, _last.Text);
- f.CallBack += (s) =>
- {
- _last.Text = s;
- };
- f.ShowDialog();
- }
- /// <summary>
- /// 保存
- /// </summary>
- private void button6_Click(object sender, EventArgs e)
- {
- SampleStageManager.Save(_last.Name, _last.Text, _last.Tag as SampleStageModel);
- MessageBox.Show("保存配置成功");
- }
- /// <summary>
- /// 删除
- /// </summary>
- private void btnDelete_Click(object sender, EventArgs e)
- {
- if (_last == null)
- return;
- var name = _last.Text;
- _stageSettingList.Remove(name);
- Button b = null;
- foreach (var c in panel9.Controls)
- {
- if ((c as Button).Text == name)
- b = c as Button;
- }
- panel9.Controls.Remove(b);
- SampleStageManager.Delete(_last.Name);
- _last = null;
- _sampleStage.Visible = false;
- StageSettingNow = null;
- }
- /// <summary>
- /// 定时器
- /// </summary>
- private void timer1_Tick(object sender, EventArgs e)
- {
- btnEdit.Enabled = _last != null;
- btnDelete.Enabled = _last != null;
- button1.Enabled = _last != null;
- button2.Enabled = _last != null && m_stage.IsOpen && !m_stage.IsMoving;
- button3.Enabled = m_stage.IsOpen && !m_stage.IsMoving;
- button4.Enabled = _last != null;
- button5.Enabled = _camera == null ? false : _camera.IsOpen();
- button6.Enabled = _last != null;
- groupBox4.Enabled = _last != null;
- if (_updateMesureRange)
- {
- _updateMesureRange = false;
- _measureRange.InitGrid(_stageSettingNow);
- }
- }
- /// <summary>
- /// 导出按钮
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button4_Click(object sender, EventArgs e)
- {
- try
- {
- var d = new SaveFileDialog();
- d.Filter = "坐标文件(*.xml)|*.xml";
- var r = d.ShowDialog();
- if (r == DialogResult.OK)
- {
- var f = d.FileName;
- (_last.Tag as SampleStageModel).Save(f);
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- /// <summary>
- /// 载入坐标文件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button1_Click(object sender, EventArgs e)
- {
- var d = new OpenFileDialog();
- d.Filter = "坐标文件(*.xml)|*.xml";
- var r = d.ShowDialog();
- if (r != DialogResult.OK) return;
- var f = d.FileName;
- try
- {
- var set = SampleStageModel.Load(f);
- //范围校验
- bool outrange = false;
- var tripx = int.Parse(_loadingStageModel.TripX) / 1000;
- var tripy = int.Parse(_loadingStageModel.TripY) / 1000;
- //Min value check
- var value = set.WorkPoits.Min((p) => p.X) - Math.Max(set.Width, set.Diameter) / 2;
- outrange |= value < 0;
- value = set.WorkPoits.Min((p) => p.Y) - Math.Max(set.Height, set.Diameter) / 2;
- outrange |= value < 0;
- //max value check
- value = set.WorkPoits.Max((p) => p.X) + Math.Max(set.Width, set.Diameter) / 2;
- outrange |= value > tripx;
- value = set.WorkPoits.Max((p) => p.Y) + Math.Max(set.Height, set.Diameter) / 2;
- outrange |= value > tripy;
- if (outrange)
- {
- MessageBox.Show("测量范围超出样品台行程", "载入失败");
- return;
- }
- StageSettingNow = set;
- _last.Tag = _stageSettingNow;
- UpdateSmapleStageControl();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- #region stage
- /// <summary>
- /// 移动到工位
- /// </summary>
- private void button2_Click(object sender, EventArgs e)
- {
- try
- {
- ToWorkPoint(_sampleStage.SelectIndex);
- }
- catch { }
- }
- private void ToWorkPoint(int i)
- {
- var x = _stageSettingNow.WorkPoits[i].X * 1000;
- var y = _stageSettingNow.WorkPoits[i].Y * 1000;
- m_stage.To(x, y);
- }
- private void button3_Click(object sender, EventArgs e)
- {
- var dialog = TransferProgressDialog.CreatDialog("平台复位", "复位中...", null, "Stop");
- m_stage.ResetStage(
- () =>
- {
- this.Invoke(new Action(dialog.Close));
- });
- dialog.ShowDialog();
- }
- public void InitStage()
- {
- m_stage = AxisController.GetInstance();
- if (!m_stage.IsOpen)
- {
- // MessageBox.Show(PdnResources.GetString("Message.AxisController.NotConnected"));
- //grpWorkOperate.Enabled = false;
- return;
- }
- m_stage.SetWorkspeedXY();
- }
- #endregion
- #region Preview
- private ICamera _camera => CameraManager.CurrentCamera;
- /// <summary>
- /// 显示相机
- /// </summary>
- private void button5_Click(object sender, EventArgs e)
- {
- PreviewPure.StartPreiew(button5);
- }
- private Bitmap _imgNow;
- private AxisController m_stage;
- private void CallbackDraw(Bitmap obj)
- {
- CorrectPalette(ref obj);
- PreviewPure.ShowPrieview(obj);
- _imgNow = (Bitmap)obj.Clone();
- }
- private void CorrectPalette(ref Bitmap bitmap)
- {
- if (bitmap.PixelFormat == PixelFormat.Format8bppIndexed)
- {
- ColorPalette palette = bitmap.Palette;
- for (int i = 0; i < 256; i++)
- {
- palette.Entries[i] = Color.FromArgb(i, i, i);
- }
- bitmap.Palette = palette;
- }
- }
- #endregion
- private void textBox1_TextChanged(object sender, EventArgs e)
- {
- if (_stageSettingNow == null) return;
- var value = _stageSettingNow.Diameter;
- var r = float.TryParse(textBox1.Text, out value);
- if (!r) textBox1.Text = value.ToString();
- _stageSettingNow.Diameter = value;
- _updateMesureRange = true;
- }
- private void textBox2_TextChanged(object sender, EventArgs e)
- {
- if (_stageSettingNow == null) return;
- var value = _stageSettingNow.Width;
- var r = float.TryParse(textBox2.Text, out value);
- if (!r) textBox2.Text = value.ToString();
- _stageSettingNow.Width = value;
- _updateMesureRange = true;
- }
- private void textBox3_TextChanged(object sender, EventArgs e)
- {
- if (_stageSettingNow == null) return;
- var value = _stageSettingNow.Height;
- var r = float.TryParse(textBox3.Text, out value);
- if (!r) textBox3.Text = value.ToString();
- _stageSettingNow.Height = value;
- _updateMesureRange = true;
- }
- }
- }
|