自分だけのカスタムツールを作ってQuickBuildで使いたい

ちょっと凝った処理を複数のツールで構成した場合など、ToolBlockにまとめれば再利用可能な部品にはなります。
ただ、その一連の処理に必要な設定は、ToolBlockの中に入って、ここのツールのエディットコントロールで行わなければなりません。
作者以外には、使い方もわかりにくく、せっかく作った素晴らしいアルゴリズムもこのままではうまく活用できません。

そんなときVisionProのQuickBuildには「ユーザーツール」を追加する手段が用意されています。
この記事では、サンプルコードで提供されているSimpleToolというカスタムツールをQuickBuildから利用するための設定方法を紹介します。
SimpleToolは、C:\Program Files\Cognex\VisionPro\samples\Programming\UserTools\SimpleTool にあります。C#版とVB.NET版の両方ありますのでお好みのほうを使ってください。

用意するもの

16x16サイズのアイコン
QuickBuildのツールボックスやQuickBuildのジョブエディタに表示されるアイコンです。気合をいれて格好いいものを作りましょう
デフォルトテンプレートファイル
カスタムツールをQuickBuildに配置した時のデフォルト値になるファイルです。作ったカスタムツールを使って作成します。拡張子が「vtt」ジョブファイルです
カスタムツールそのもののDLL
これがなければ始まりません

QuickBuildへの登録方法

  1. C:\Program Files\Cognex\VisionPro\bin にすべてのDLLとアイコンファイルをコピー
  2. C:\Program Files\Cognex\VisionPro\bin\Templates\Tools にvttファイルをコピー

この例では

  • SimpleTool.icoを%VPRO_ROOT%\binにコピーします
  • SimpleUserToolVB.dllを%VPRO_ROOT%\binにコピーします
  • SimpleTool.vttを%VPRO_ROOT%\bin\Templates\Toolsにコピーします

SimpleTool.icoアイコンファイルはサンプルプロジェクトにおまけのアイコンが用意されているのでそれを使います。
SimpleUserToolVB.dllは、プロジェクトをReleaseモードでビルドして、SimpleUserTool\bin\Release\SimpleUserToolVB.dllを使います。
サンプルのおまけのSimpleTool.vttファイルは壊れているようなので、別途作ります。
VisualStudioでSimpleUserToolプロジェクトをビルドして実行すると下記のテスト用プログラムが起動します。

何も設定せずに、名前を付けて保存で、SimpleTool.vppと保存して、あとで拡張子をvttに変更してください。

QuickBuildで使ってみましょう

ツールボックスに増えています

挿入してみると

ターミナルが何もないです。入力にImputImage、出力にOutputImageを追加します

ターミナルがある状態をデフォルトにしたいので、ここで再度vttファイルを保存します。SimpleToolをダブルクリックしてエディットコントロールを開きます。

ツールバーの「名前を付けて保存」から%VPRO_ROOT%\bin\Templates\ToolsのSimpleTool.vttファイルを上書きします。

SimpleToolのInputImageターミナルに画像を接続して実行してみましょう

実際のユーザーツールの作り方は?

オンラインマニュアルの「ユーザーズガイド」→「プログラミング」→「ツール」→「ウォークスルー」→「独自のビジョンツールの記述」とサンプルコードのSimpleToolとCogColorConversionToolを参考にしてください。サンプルコード内のコメントも参考にしてください。

まとめ

簡単なツールならばここで紹介した方法で作ることができます。複雑なツールの場合は、ドキュメント化されていない部分もそれなりにあるので、結構難しいと思います。
また、VisionProの基底クラスから派生させているため、VisionProのバージョンが変わると、それに合わせて最低でもリビルドする必要があります。基底クラスの振る舞いが追加されたり、変わった場合にはそれにも対応する必要があります。

いろいろ大変そうなことを書きましたが、このような独自ツールを作ることができれば大きな協商力になるはずです。