using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using HalconDotNet; namespace HalconTools { public partial class frmJobManager : Form { public SerializeFileTool> sft = new SerializeFileTool>(); public List jobs = new List(); public HImage MainImage = null; public frmJobManager() { InitializeComponent(); } private void btnAddJob_Click(object sender, EventArgs e) { Job job = new Job(); job.name = txtJobName.Text; job.tools = new List(); JobTool jobTool = new JobTool(); jobTool.type = ToolType.FindLine; job.tools.Add(jobTool); jobs.Add(job); string path = Application.StartupPath + "\\JobConfige"; if (!Directory.Exists(path)) Directory.CreateDirectory(path); path += "\\JobConfige.xml"; sft.SetConfig(path, jobs); InitData(); } private void InitData() { cmbTools.Items.Clear(); cmbToolType.Items.Clear(); cmbJobName.Items.Clear(); for (int i = 0; i < 4; i++) { cmbToolType.Items.Add((ToolType)i); } jobs = sft.GetConfig(Application.StartupPath + "\\JobConfige\\JobConfige.xml"); for (int i = 0; i < jobs.Count; i++) { cmbJobName.Items.Add(jobs[i].name); } for (int i = 0; i < jobs[0].tools.Count; i++) { cmbTools.Items.Add(i); } cmbJobName.SelectedIndex = 0; cmbTools.SelectedIndex = 0; cmbToolType.SelectedIndex = (int)jobs[0].tools[0].type; } private void InitData(int jobNo,int toolNo) { cmbTools.Items.Clear(); cmbToolType.Items.Clear(); cmbJobName.Items.Clear(); for (int i = 0; i < 4; i++) { cmbToolType.Items.Add((ToolType)i); } jobs = sft.GetConfig(Application.StartupPath + "\\JobConfige\\JobConfige.xml"); for (int i = 0; i < jobs.Count; i++) { cmbJobName.Items.Add(jobs[i].name); } for (int i = 0; i < jobs[0].tools.Count; i++) { cmbTools.Items.Add(i); } cmbJobName.SelectedIndex = jobNo; cmbTools.SelectedIndex = toolNo; cmbToolType.SelectedIndex = (int)jobs[jobNo].tools[toolNo].type; } private void frmJobManager_Load(object sender, EventArgs e) { InitData(); } private void cmbTools_SelectedIndexChanged(object sender, EventArgs e) { int JobNo = cmbJobName.SelectedIndex; int ToolNo = cmbTools.SelectedIndex; cmbToolType .SelectedIndex =(int)jobs[JobNo].tools[ToolNo].type ; } private void cmbJobName_SelectedIndexChanged(object sender, EventArgs e) { int JobNo = cmbJobName.SelectedIndex; cmbTools.Items.Clear(); for (int i = 0; i < jobs[JobNo].tools.Count; i++) { cmbTools.Items.Add(i); } cmbTools.SelectedIndex = 0; cmbToolType.SelectedIndex = (int)jobs[JobNo].tools[0].type; } private void btnParaModify_Click(object sender, EventArgs e) { int JobNo = cmbJobName.SelectedIndex; int ToolNo = cmbTools.SelectedIndex; JobTool tmpTool = new JobTool(); tmpTool.type = (ToolType)cmbToolType.SelectedIndex; tmpTool.fitCircleParam = jobs[JobNo].tools[ToolNo].fitCircleParam; tmpTool.fitLineParam = jobs[JobNo].tools[ToolNo].fitLineParam; tmpTool.matchingParam = jobs[JobNo].tools[ToolNo].matchingParam; tmpTool.modelPath = jobs[JobNo].tools[ToolNo].modelPath; tmpTool.screwParam = jobs[JobNo].tools[ToolNo].screwParam; switch (tmpTool.type) { case ToolType.FindLine: if (MainImage == null) return; frmFitCircleAndLine frmfit = new frmFitCircleAndLine(tmpTool, MainImage); frmfit.ShowDialog(); tmpTool.fitCircleParam = null; tmpTool.fitLineParam = null; tmpTool.matchingParam = null; tmpTool.modelPath = null; tmpTool.fitLineParam = frmfit.LineParam; tmpTool.screwParam = null; break; case ToolType.FindCircle: if (MainImage == null) return; frmFitCircleAndLine frmfit1 = new frmFitCircleAndLine(tmpTool, MainImage); frmfit1.ShowDialog(); tmpTool.fitCircleParam = null; tmpTool.fitLineParam = null; tmpTool.matchingParam = null; tmpTool.modelPath = null; tmpTool.fitCircleParam = frmfit1.CircleParam; tmpTool.screwParam = null; break; case ToolType.Matching: break; case ToolType.Screw : if (MainImage == null) return; frmScrewAssistant frmScrew = new frmScrewAssistant(tmpTool, MainImage); frmScrew.ShowDialog(); tmpTool.fitCircleParam = null; tmpTool.fitLineParam = null; tmpTool.matchingParam = null; tmpTool.modelPath = null; tmpTool.fitCircleParam = null; tmpTool.screwParam = frmScrew.mScrewPara; break; } jobs[JobNo].tools[ToolNo] = tmpTool; } private void btnSaveJobs_Click(object sender, EventArgs e) { sft.SetConfig(Application.StartupPath + "\\JobConfige\\JobConfige.xml", jobs); } private void btnAddTool_Click(object sender, EventArgs e) { JobTool tool = new JobTool(); tool.type = ToolType.FindLine; int JobNo = cmbJobName.SelectedIndex; jobs[JobNo].tools.Add(tool); sft.SetConfig(Application.StartupPath + "\\JobConfige\\JobConfige.xml", jobs); InitData(JobNo, jobs[JobNo].tools.Count - 1); } private void btnDelTool_Click(object sender, EventArgs e) { int JobNo = cmbJobName.SelectedIndex; int ToolNo = cmbTools.SelectedIndex; jobs[JobNo].tools.RemoveAt(ToolNo); sft.SetConfig(Application.StartupPath + "\\JobConfige\\JobConfige.xml", jobs); InitData(); } private void btnLoadImage_Click(object sender, EventArgs e) { OpenFileDialog imagePath = new OpenFileDialog(); imagePath.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf"; if (imagePath.ShowDialog() == DialogResult.OK) { MainImage = new HImage(imagePath.FileName); HTuple imageWidth = null, imageHeight = null; HOperatorSet.GetImageSize(MainImage, out imageWidth, out imageHeight); HOperatorSet.SetPart(hWindowControl1.HalconWindow, 0, 0, imageHeight - 1, imageWidth - 1); HOperatorSet.DispObj(MainImage, hWindowControl1.HalconWindow); } } } }