流程图连接图效果图
细节部分
思路
PMA1匹配液管底部,设置圆心为管体中心,主要是为了找到中心坐标
卡尺1卡到大部分页面的位置,然后用卡尺卡的线制造一根基准线线CogCreateLineTool1,再用这个基准线制作一个距离衡量线CogDistanceSegmentLineTool1
卡尺2卡页面高度信息,脚本用foreach遍历所有匹配得到的液面信息
CogDistanceSegmentLineTool1中的Segment是每个待测线段,需要在代码中赋值
代码部分
添加程序集
//1.code
CogGraphicCollection gc = new CogGraphicCollection();
CogPMAlignTool pma = mToolBlock.Tools["CogPMAlignTool1"] as CogPMAlignTool; //获取pma
CogCaliperTool c = mToolBlock.Tools["CogCaliperTool2"] as CogCaliperTool; //获取卡尺 c是卡尺变量
CogDistanceSegmentLineTool dis = mToolBlock.Tools["CogDistanceSegmentLineTool1"] as CogDistanceSegmentLineTool; //获取距离计算工具
gc.Clear();
//遍历pma的结果
foreach( CogPMAlignResult item in pma.Results)
{
c.Region.CenterX = item.GetPose().TranslationX;
c.Region.CenterY = item.GetPose().TranslationY;
c.Run(); //运行卡尺
//创建一个线段用于标注找到的结果
CogLineSegment s = new CogLineSegment();//创建一个线段
s.StartX = c.Results.Edges[0].PositionX;
s.StartY = c.Results.Edges[0].PositionY;
s.EndX = c.Results.Edges[0].PositionX + 20;
s.EndY = c.Results.Edges[0].PositionY;
s.Color = CogColorConstants.Red;
s.LineWidthInScreenPixels = 5;
gc.Add(s);
//计算每一个液位的高度 与 基准线的差值
CogGraphicLabel label = new CogGraphicLabel();
dis.Segment = s;
dis.Run();//运行工具
if( dis.Distance >15 )
{ //NG
label.SetXYText( s.StartX, s.StartY, "NG");
label.Color = CogColorConstants.Red;
}
else //OK
{
label.SetXYText( s.StartX, s.StartY, "OK");
label.Color = CogColorConstants.Green;
}
gc.Add(label);
}
mToolBlock.AddGraphicToRunRecord(g, lastRecord, "CogIPOneImageTool1.OutputImage", "");