Visionpro添加脚本标签

#region namespace imports
using System;
using System.Collections;
using System.Collections.Generic;
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;
#endregion

public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase
{
#region Private Member Variables
private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;
private List listLabel = new List();
#endregion

///
/// Called when the parent tool is run.
/// Add code here to customize or replace the normal run behavior.
///
/// Sets the Message in the tool’s RunStatus.
/// Sets the Result in the tool’s RunStatus
/// True if the tool should run normally,
/// False if GroupRun customizes run behavior
public override bool GroupRun

<think>我们参考提供的引用内容,特别是引用[2]中的示例,它展示了如何在VisionPro的ToolBlock脚本中通过ModifyLastRunRecord方法添加图形标签(CogGraphicLabel)来实现标签显示功能。以下将详细说明实现步骤和关键代码。</think>### VisionPro实现标签显示的脚本方法 在VisionPro中,可以通过脚本功能在工具运行结果中添加自定义标签。以下是实现标签显示的核心方法和步骤: #### 1. 核心实现方法 在ToolBlock的脚本中重写`ModifyLastRunRecord`方法,这是添加运行时标签的最佳位置: ```csharp public override void ModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord) { // 创建标签对象 CogGraphicLabel label = new CogGraphicLabel(); // 设置标签内容(示例显示卡尺极性) string labelStr = $"当前状态: {yourVariable}"; label.SetXYText(xPosition, yPosition, labelStr); // 设置坐标和文本 // 自定义标签样式 label.Font = new Font("Arial", 14); label.Color = CogColorConstants.Green; // 添加到运行记录(关键步骤) mToolBlock.AddGraphicToRunRecord( label, lastRecord, "DisplayLayer", // 指定显示图层 "ScriptGraphics" // 标识为脚本图形 ); } ``` #### 2. 关键参数说明 - **SetXYText()**:设置标签位置(单位:像素) - `xPosition`:水平坐标(通常0-图像宽度) - `yPosition`:垂直坐标(通常0-图像高度) - **AddGraphicToRunRecord()**:核心添加方法 - 参数3:图层名称(需与Display控件图层一致) - 参数4:固定写`"ScriptGraphics"`标识脚本来源 #### 3. 动态数据绑定 可通过变量动态更新标签内容: ```csharp // 获取工具结果值 double measurement = (double)mToolBlock.Outputs["MeasurementResult"].Value; // 格式化显示 labelStr = $"尺寸: {measurement:F2} mm"; ``` #### 4. 位置控制技巧 ```csharp // 自动定位到图像右上角 CogImage8Grey image = (CogImage8Grey)lastRecord.SubRecords["OutputImage"].Content; double rightMargin = image.Width * 0.95; double topMargin = image.Height * 0.05; label.SetXYText(rightMargin, topMargin, labelStr); ``` #### 5. 注意事项 1. **执行顺序**:必须在`GroupRun`方法后执行才能获取有效数据[^3] 2. **图层管理**:确保Display控件有同名图层"DisplayLayer" 3. **清除机制**:脚本图形会在每次运行时自动清除,无需手动清理 4. **异常处理**:访问工具输出时需添加try-catch块[^3] ```csharp try { var value = mToolBlock.Outputs["Result"].Value; } catch(CogException ex) { labelStr = "获取数据失败"; } ``` #### 应用示例 在检测工具后显示结果标签: ```csharp // 在ModifyLastRunRecord中添加: if ((bool)mToolBlock.Outputs["PassFail"].Value) { label.Color = CogColorConstants.Green; labelStr = "✓ 检测通过"; } else { label.Color = CogColorConstants.Red; labelStr = "✗ 缺陷发现"; } ``` > **最佳实践**:建议在ToolBlock的脚本编辑器中直接编写上述代码,通过F6编译后即可在运行时显示动态标签[^2]。如需跨工具块显示,需在父级Block的`OuterBlock`脚本中实现[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值