| | |
| | | using System.IO; |
| | | using Bro.Common; |
| | | using Bro.Common.Util; |
| | | using System.Configuration; |
| | | |
| | | namespace P066.Data |
| | | { |
| | |
| | | { |
| | | InitializeComponent(); |
| | | //ConfigHelper.Save(@"D:\P066-Data\P066XML\1.xml", runparam); |
| | | runparam = ConfigHelper.Load<P066RunParam>(@"E:\P066.Data\P066XML\Jin_Mid.xml"); |
| | | |
| | | |
| | | } |
| | | var configuraPath = Environment.CurrentDirectory+ "\\Config\\Jin_Mid.xml"; |
| | | runparam = ConfigHelper.Load<P066RunParam>(configuraPath); |
| | | } |
| | | |
| | | private void btnLoadData1_Click(object sender, EventArgs e) |
| | | { |
| | |
| | | { |
| | | |
| | | var fileinfos1 = directoryInfo1.GetFiles(); |
| | | |
| | | var fileinfos2 = directoryInfo2.GetFiles(); |
| | | var listSum = new List<ResultData>(); |
| | | var JudgeListSum = new List<ResultData>(); |
| | |
| | | GuaNum=GuaNum+1; |
| | | filenameDir = "复检中框刮白"; |
| | | filename = "复检中框刮白" + GuaNum; |
| | | judgeList = GetBkLocation(judgeList); |
| | | judgeList = GetWhiteLocation(judgeList); |
| | | //给镜头区分位置及角度 |
| | | list = GetBkLocation(list); |
| | | } |
| | |
| | | { |
| | | list2[ii].ex = list2[ii].Height * 0.0042; |
| | | } |
| | | var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y); |
| | | list2[ii].R = distance; |
| | | //var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y); |
| | | //list2[ii].R = distance; |
| | | } |
| | | #endregion |
| | | for (int i = 0; i < list1.Count; i++) |
| | |
| | | { |
| | | list1[i].ex = list1[i].Height * 0.0042; |
| | | } |
| | | var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y); |
| | | list1[i].R = distance1; |
| | | //var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y); |
| | | //list1[i].R = distance1; |
| | | |
| | | #endregion |
| | | for (int j = 0; j < list2.Count; j++) |
| | | { |
| | | if (list1[i].JudgmentResult != list2[j].JudgmentResult) |
| | | { |
| | | list1[i].JudgmentResult = "NG"; |
| | | list2[j].JudgmentResult = "NG"; |
| | | |
| | | } |
| | | if (list1[i].PostTreatmentResults.Length<list2[j].PostTreatmentResults.Length) |
| | | { |
| | | list1[i].PostTreatmentResults = list2[j].PostTreatmentResults; |
| | | } |
| | | else |
| | | { |
| | | list2[j].PostTreatmentResults = list1[i].PostTreatmentResults; |
| | | } |
| | | |
| | | var distance = GetDistance(list1[i].X, list1[i].Y, list2[j].X, list2[j].Y); |
| | | if (distance < 20) |
| | | { |
| | | itemToRemove.Add(list2[j]); |
| | | //if (list1[i].PostTreatmentResults=="") |
| | | //{ |
| | | // list1[i].PostTreatmentResults = list2[j].PostTreatmentResults; |
| | | //} |
| | | //else |
| | | //{ |
| | | // list2[j].PostTreatmentResults = list1[i].PostTreatmentResults; |
| | | //} |
| | | |
| | | if (list1[i].ex>list2[j].ex) |
| | | { |
| | | itemToRemove.Add(list2[j]); |
| | | } |
| | | else |
| | | { |
| | | itemToRemove.Add(list1[i]); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (int i = 0; i < itemToRemove.Count; i++) |
| | | { |
| | | list2.Remove(itemToRemove[i]); |
| | | } |
| | | |
| | | dataList.AddRange(list1); |
| | | dataList.AddRange(list2); |
| | | for (int i = 0; i < itemToRemove.Count; i++) |
| | | { |
| | | dataList.Remove(itemToRemove[i]); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | var list1 = dataList1.FindAll(a => a.TimeTip == item && !a.Result); |
| | | var list2 = dataList2.FindAll(a => a.TimeTip == item && !a.Result); |
| | | var itemToRemove1 = new List<ResultData>(); |
| | | var itemToRemove2 = new List<ResultData>(); |
| | | #region//计算表格2最大尺寸 |
| | | for (int ii = 0; ii < list2.Count; ii++) |
| | | { |
| | |
| | | { |
| | | list2[ii].ex = list2[ii].Height * 0.0042; |
| | | } |
| | | var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y); |
| | | list2[ii].R = distance; |
| | | //var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y); |
| | | //list2[ii].R = distance; |
| | | } |
| | | #endregion |
| | | for (int i = 0; i < list1.Count; i++) |
| | |
| | | { |
| | | list1[i].ex = list1[i].Height * 0.0042; |
| | | } |
| | | var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y); |
| | | list1[i].R = distance1; |
| | | //var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y); |
| | | //list1[i].R = distance1; |
| | | |
| | | #endregion |
| | | for (int j = 0; j < list2.Count; j++) |
| | | { |
| | | if (list1[i].JudgmentResult != list2[j].JudgmentResult) |
| | | { |
| | | list1[i].JudgmentResult = "NG"; |
| | | list2[j].JudgmentResult = "NG"; |
| | | |
| | | } |
| | | if (list1[i].PostTreatmentResults.Length < list2[j].PostTreatmentResults.Length) |
| | | { |
| | | list1[i].PostTreatmentResults = list2[j].PostTreatmentResults; |
| | | } |
| | | else |
| | | { |
| | | list2[j].PostTreatmentResults = list1[i].PostTreatmentResults; |
| | | } |
| | | |
| | | |
| | | var distance = GetDistance(list1[i].X, list1[i].Y, list2[j].X, list2[j].Y); |
| | | if (distance < 20) |
| | | { |
| | | itemToRemove1.Add(list2[j]); |
| | | if (list1[i].JudgmentResult!=list2[j].JudgmentResult) |
| | | |
| | | |
| | | if (list1[i].ex > list2[j].ex) |
| | | { |
| | | list1[i].JudgmentResult = "NG"; |
| | | list2[j].JudgmentResult = "NG"; |
| | | itemToRemove2.Add(list2[j]); |
| | | } |
| | | else |
| | | { |
| | | itemToRemove1.Add(list1[i]); |
| | | } |
| | | //if (list1[i].JudgmentResult!=list2[j].JudgmentResult) |
| | | //{ |
| | | // list1[i].JudgmentResult = "NG"; |
| | | // list2[j].JudgmentResult = "NG"; |
| | | //} |
| | | //if (list1[i].PostTreatmentResults == "") |
| | | //{ |
| | | // list1[i].PostTreatmentResults = list2[j].PostTreatmentResults; |
| | |
| | | } |
| | | } |
| | | |
| | | for (int i = 0; i < itemToRemove2.Count; i++) |
| | | { |
| | | list2.Remove(itemToRemove2[i]); |
| | | } |
| | | for (int i = 0; i < itemToRemove1.Count; i++) |
| | | { |
| | | list2.Remove(itemToRemove1[i]); |
| | | list1.Remove(itemToRemove1[i]); |
| | | } |
| | | |
| | | dataList11.AddRange(list1); |
| | | dataList22.AddRange(list2); |
| | | } |
| | |
| | | //} |
| | | |
| | | string defectType = ""; |
| | | string judgmentresult = ""; |
| | | for (int i = 1; i < allLines.Length; i++) |
| | | { |
| | | |
| | |
| | | if (data[3]== "刮白") |
| | | { |
| | | defectType = "刮白"; |
| | | judgmentresult =data[1]; |
| | | Ptr = "刮白"; |
| | | } |
| | | else |
| | | { |
| | | defectType = "白点"; |
| | | judgmentresult = data[1]; |
| | | } |
| | | |
| | | if (data[6] == "-") |
| | |
| | | { |
| | | TimeTip = data[0].Split('-')[0], |
| | | ImageFileName = data[0], |
| | | JudgmentResult = judgmentresult, |
| | | JudgmentResult = data[1], |
| | | Result = data[3] == "OK", |
| | | Probability = Convert.ToDouble(data[4]), |
| | | Uncertainty = Convert.ToDouble(data[5]), |
| | |
| | | var listLensnumber1 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1); |
| | | for (int k = 0; k < listLensnumber1.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | |
| | | listLensnumber1[k].angle = lenAngle; |
| | | |
| | | var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y); |
| | | listLensnumber1[k].R = distance; |
| | | if (distance <= runparam.MidLens1R1) |
| | | { |
| | | listLensnumber1[k].location = "镜头"; |
| | |
| | | var listLensnumber2 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2); |
| | | for (int k = 0; k < listLensnumber2.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber2[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y); |
| | | listLensnumber2[k].R = distance; |
| | | if (distance <= runparam.MidLens2R1) |
| | | { |
| | | listLensnumber2[k].location = "镜头"; |
| | |
| | | var listLensnumber3 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3); |
| | | for (int k = 0; k < listLensnumber3.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber3[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y); |
| | | listLensnumber3[k].R = distance; |
| | | if (distance <= runparam.MidLens3R1) |
| | | { |
| | | listLensnumber3[k].location = "镜头"; |
| | |
| | | var listLensnumber4 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4); |
| | | for (int k = 0; k < listLensnumber4.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber4[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y); |
| | | listLensnumber4[k].R = distance; |
| | | if (distance <= runparam.MidLens4R1) |
| | | { |
| | | listLensnumber4[k].location = "镜头"; |
| | |
| | | } |
| | | return list; |
| | | } |
| | | //获取中框角度和位置 |
| | | private List<ResultData> GetWhiteLocation(List<ResultData> list) |
| | | { |
| | | var group = list.GroupBy(a => a.TimeTip); |
| | | foreach (var item in group) |
| | | { |
| | | //计算镜头1缺陷位置及角度 |
| | | var listLensnumber1 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1); |
| | | for (int k = 0; k < listLensnumber1.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber1[k].angle = lenAngle; |
| | | |
| | | var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y); |
| | | listLensnumber1[k].R = distance; |
| | | if (distance <= runparam.MidLens1R1) |
| | | { |
| | | listLensnumber1[k].location = "镜头"; |
| | | } |
| | | else if (runparam.MidLens1R1 < distance && distance <= runparam.MidLens1R2) |
| | | { |
| | | listLensnumber1[k].location = "斜面"; |
| | | } |
| | | else if(runparam.MidLens1R2 < distance && distance <= runparam.BkLens1R1) |
| | | { |
| | | listLensnumber1[k].location = "平面可视区"; |
| | | } |
| | | else |
| | | { |
| | | listLensnumber1[k].location = "平面非可视区"; |
| | | } |
| | | |
| | | } |
| | | //计算镜头2位置及角度 |
| | | var listLensnumber2 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2); |
| | | for (int k = 0; k < listLensnumber2.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber2[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y); |
| | | listLensnumber2[k].R = distance; |
| | | if (distance <= runparam.MidLens2R1) |
| | | { |
| | | listLensnumber2[k].location = "镜头"; |
| | | } |
| | | else if (runparam.MidLens2R1 < distance && distance <= runparam.MidLens2R2) |
| | | { |
| | | listLensnumber2[k].location = "斜面"; |
| | | } |
| | | else if (runparam.MidLens2R2 < distance && distance <= runparam.BkLens2R1) |
| | | { |
| | | listLensnumber2[k].location = "平面可视区"; |
| | | } |
| | | else |
| | | { |
| | | listLensnumber2[k].location = "平面非可视区"; |
| | | } |
| | | } |
| | | //计算镜头3位置及角度 |
| | | var listLensnumber3 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3); |
| | | for (int k = 0; k < listLensnumber3.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber3[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y); |
| | | listLensnumber3[k].R = distance; |
| | | if (distance <= runparam.MidLens3R1) |
| | | { |
| | | listLensnumber3[k].location = "镜头"; |
| | | } |
| | | else if (runparam.MidLens3R1 < distance && distance <= runparam.MidLens3R2) |
| | | { |
| | | listLensnumber3[k].location = "斜面"; |
| | | } |
| | | else if (runparam.MidLens3R2 < distance && distance <= runparam.BkLens3R1) |
| | | { |
| | | listLensnumber3[k].location = "平面可视区"; |
| | | } |
| | | else |
| | | { |
| | | listLensnumber3[k].location = "平面非可视区"; |
| | | } |
| | | } |
| | | //计算镜头4位置及角度 |
| | | var listLensnumber4 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4); |
| | | for (int k = 0; k < listLensnumber4.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y,1050); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber4[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y); |
| | | listLensnumber4[k].R = distance; |
| | | if (distance <= runparam.MidLens4R1) |
| | | { |
| | | listLensnumber4[k].location = "镜头"; |
| | | } |
| | | else if (runparam.MidLens4R1 < distance && distance <= runparam.MidLens4R2) |
| | | { |
| | | listLensnumber4[k].location = "斜面"; |
| | | } |
| | | else if (runparam.MidLens4R2 < distance && distance <= runparam.BkLens4R1) |
| | | { |
| | | listLensnumber4[k].location = "平面可视区"; |
| | | |
| | | } |
| | | else |
| | | { |
| | | listLensnumber4[k].location = "平面非可视区"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | return list; |
| | | } |
| | | //获取背板角度和位置 |
| | | private List<ResultData> GetBkLocation(List<ResultData> list) |
| | | { |
| | |
| | | var listLensnumber1 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1); |
| | | for (int k = 0; k < listLensnumber1.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y,1350); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber1[k].angle = lenAngle; |
| | | |
| | | var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y); |
| | | var distance = GetDistance(1350, 1350, listLensnumber1[k].X, listLensnumber1[k].Y); |
| | | listLensnumber1[k].R = distance; |
| | | if (distance <= runparam.BkLens1R1) |
| | | { |
| | | listLensnumber1[k].location = "可视区"; |
| | |
| | | var listLensnumber2 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2); |
| | | for (int k = 0; k < listLensnumber2.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y,1350); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber2[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y); |
| | | var distance = GetDistance(1350, 1350, listLensnumber2[k].X, listLensnumber2[k].Y); |
| | | listLensnumber2[k].R = distance; |
| | | if (distance <= runparam.BkLens2R1) |
| | | { |
| | | listLensnumber2[k].location = "可视区"; |
| | |
| | | var listLensnumber3 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3); |
| | | for (int k = 0; k < listLensnumber3.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y,1350); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber3[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y); |
| | | var distance = GetDistance(1350, 1350, listLensnumber3[k].X, listLensnumber3[k].Y); |
| | | listLensnumber3[k].R = distance; |
| | | if (distance <= runparam.BkLens3R1) |
| | | { |
| | | listLensnumber3[k].location = "可视区"; |
| | |
| | | var listLensnumber4 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4); |
| | | for (int k = 0; k < listLensnumber4.Count; k++) |
| | | { |
| | | var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y); |
| | | var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y,1350); |
| | | if (lenAngle < 0) |
| | | { |
| | | lenAngle = 360 + lenAngle; |
| | | } |
| | | listLensnumber4[k].angle = lenAngle; |
| | | var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y); |
| | | var distance = GetDistance(1350, 1350, listLensnumber4[k].X, listLensnumber4[k].Y); |
| | | listLensnumber4[k].R = distance; |
| | | if (distance <= runparam.BkLens4R1) |
| | | { |
| | | listLensnumber4[k].location = "可视区"; |
| | |
| | | { |
| | | return Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2)); |
| | | } |
| | | private double GetAngle(double x1, double y1) |
| | | private double GetAngle(double x1, double y1,double size) |
| | | { |
| | | return Math.Atan2((y1 - 1050), (x1 - 1050)) * (180 / Math.PI); |
| | | return Math.Atan2((y1 - size), (x1 - size)) * (180 / Math.PI); |
| | | } |
| | | |
| | | } |