private ToolResult ApplyMetrology(HMetrologyModel hMetrology, int index, string measureName) { HiPerfTimer timer = new HiPerfTimer(); timer.Start(); try { //window.DisplayImage(image); hMetrology.ApplyMetrologyModel(Image); ///获取直线的中心坐标 ///lineresult 为获取到的直线起点与终点坐标 double lineCenterRow, lineCenterCol, angle; HTuple lineResult = hMetrology.GetMetrologyObjectResult(new HTuple("all"), new HTuple("all"), new HTuple("result_type"), new HTuple("all_param")); lineCenterRow = (lineResult[0].D + lineResult[2]).D / 2; lineCenterCol = (lineResult[1].D + lineResult[3]).D / 2; //获取直线测量矩形 angle = HMisc.LineOrientation(lineResult[0].D, lineResult[1].D, lineResult[2].D, lineResult[3].D); angle = TransAngle.HuToAngle(angle); hMetrology.ClearMetrologyObject(new HTuple(index)); Window.DisplaySingleLine(info.ToolName, lineResult[0].D, lineResult[1].D, lineResult[2].D, lineResult[3].D, true, "blue"); if (info.IsShowFindRegion) { Window.DisplayRectangle2(info.ToolName, info.Rectangle2Row, info.Rectangle2Col, info.Rectangle2Angle, info.Rectangle2Length1, info.Rectangle2Length2, true); } return(new ToolResult() { ResultName = measureName, ImageX = lineCenterCol, ImageY = lineCenterRow, ImageAngle = angle, GetResultTime = DateTime.Now, ElapsedTime = timer.Duration, IsSuccess = true }); } catch (Exception e) { WriteErrorLog("VisionTool", e.ToString()); return(new ToolResult() { ResultName = measureName, Errormessage = e.ToString(), GetResultTime = DateTime.Now, IsSuccess = false }); } }