1. 第一个工具
2.第二个工具
3.第3个工具
4.第四个工具
5.第5个工具
脚本
using System;
using System.Collections;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Cognex.VisionPro;
using Cognex.VisionPro.ToolBlock;
using Cognex.VisionPro3D;
using Cognex.VisionPro.ImageProcessing;
using Cognex.VisionPro.Blob;
public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase {
private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;
//创建图形集合
CogGraphicCollection gc = new CogGraphicCollection();
//创建label工具字段
CogGraphicLabel label;
//创建blob工具字段
CogBlobTool blob;
CogBlobTool blob2;
CogBlobTool blob3;
//创建CogCopyRegionTool工具字段
CogCopyRegionTool copy;
public override bool GroupRun(ref string message, ref CogToolResultConstants result){
//运行前清空集合
gc.Clear();
//blob映射
blob = mToolBlock.Tools["CogBlobTool1"] as CogBlobTool;
blob2 = mToolBlock.Tools["CogBlobTool2"] as CogBlobTool;
blob3 = mToolBlock.Tools["CogBlobTool3"] as CogBlobTool;
//copy映射
copy = mToolBlock.Tools["CogCopyRegionTool1"] as CogCopyRegionTool;
//自动运行工具
foreach(ICogTool tool in mToolBlock.Tools)
mToolBlock.RunTool(tool, ref message, ref result);
//逻辑代码
//遍历Blob工具的结果
for(int i = 0;i < blob3.Results.GetBlobs().Count;i++){
//创建一个区域
CogCircle cir = new CogCircle();
//每个齿轮中心点坐标
cir.CenterX = blob3.Results.GetBlobs()[i].CenterOfMassX;
cir.CenterY = blob3.Results.GetBlobs()[i].CenterOfMassY;
//求半径,圆的半径
double h = blob3.Results.GetBlobs()[i].GetMeasure(CogBlobMeasureConstants.BoundingBoxExtremaAngleHeight);
//遮盖区域的半径
cir.Radius = h / 2*1.5;
//将区域信息付给copy工具
copy.Region = cir;
//运行copy
copy.Run();
//blob2运行之前的count
int a = blob2.Results.GetBlobs().Count;
//运行blob2
blob2.Run();
//label空间
label = new CogGraphicLabel();
//label坐标和文本信息 文本信息由运行后的Count 减去 运行之前的Count
label.SetXYText(blob3.Results.GetBlobs()[i].CenterOfMassX, blob3.Results.GetBlobs()[i].CenterOfMassY, "齿数" + (blob2.Results.GetBlobs().Count-a));
//label颜色
label.Color = CogColorConstants.Purple;
//label字体
label.Font = new Font("微软雅黑", 8);
//添加到集合
gc.Add(label);
}
return false;
}
public override void ModifyCurrentRunRecord(Cognex.VisionPro.ICogRecord currentRecord){
}
public override void ModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord){
foreach(CogGraphicLabel item in gc){
mToolBlock.AddGraphicToRunRecord(item,lastRecord,"CogSobelEdgeTool1.InputImage","");
}
}
public override void Initialize(Cognex.VisionPro.ToolGroup.CogToolGroup host){
base.Initialize(host);
this.mToolBlock = ((Cognex.VisionPro.ToolBlock.CogToolBlock)(host));
}
}