tool block 脚本分为两个部分
1:命名空间:系统命名空间,Vision Pro工具中DLL
注意:其他第三方dll不支持,因为vp没有打包
2:类:
分为两个部分
1:定义类中公共变量
2:钩子函数,都是自动执行的,你没有写过执行代码
3:钩子函数:
initialize 入口函数,只要job加载都执行;
grouprun 核心函数 ,只要job或者tool block函数执行
1:获取tb中工具,修改工具参数值
2:设置新工具参数
ModifyLastRunRecord:产生最后运行记录执行
1:处理结果
2:给tb工具
理解:我的视觉流程执行完毕后,但还没有销毁
ModifyCurrentRunRecord: 相当于TB窗口的loader事件
#region namespace imports 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; #endregion public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase { #region Private Member Variables private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock; #endregion #region 核心函数,处理主要功能 public override bool GroupRun(ref string message, ref CogToolResultConstants result) { //调试的时候会打开这个注释,运行(在调试之前) // #if DEBUG // if (System.Diagnostics.Debugger.IsAttached) System.Diagnostics.Debugger.Break(); // #endif foreach(ICogTool tool in mToolBlock.Tools) mToolBlock.RunTool(tool, ref message, ref result); return false; } #endregion #region 窗口loader事件函数 public override void ModifyCurrentRunRecord(Cognex.VisionPro.ICogRecord currentRecord) { } #endregion #region 产生最后运行记录 public override void ModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord) { //没执行一次tb,都会执行一次这个函数 //可以给tb添加新工具,处理tb的运行结果 } #endregion #region 初始化函数 //入口函数 public override void Initialize(Cognex.VisionPro.ToolGroup.CogToolGroup host) { //触发tb的上层工具 base.Initialize(host); //获取当前高级脚本的toolblaock this.mToolBlock = ((Cognex.VisionPro.ToolBlock.CogToolBlock)(host)); } #endregion }