(57)【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体であって、前記命令が、コンピュータにロードされて、マシンビジョン検査システムにおいてパートプログラムを編集する場合にマシンビジョンパートプログラム動作セットをコピーアンドペーストするための方法を前記コンピュータが実行することを可能とするように構成され、前記マシンビジョン検査システムが、撮像部と、前記撮像部の視野に１つ以上のワークピースを保持するためのステージと、制御部と、編集部と、ディスプレイと、グラフィカルユーザインタフェース（ＧＵＩ）と、学習モードであって、パートプログラムを生成するために、前記マシンビジョン検査システムの動作を制御するユーザ入力を受信すると共に、前記制御された動作に対応して関連付けられたパートプログラム命令を記録するように動作可能に構成された学習モードと、を含み、前記実行される方法が、
前記編集部に関連付けられたコピーコマンド及びペーストコマンドを提供することと、
前記ＧＵＩの編集インタフェース部を提供することであって、前記編集インタフェース部が、基礎にあるパートプログラム命令の編集可能パートプログラム表現を表示するように動作可能であり、前記パートプログラム表現が命令表現を含むことと、
前記編集インタフェース部に、基礎にあるパートプログラムのパートプログラム表現を表示することと、
前記表示されたパートプログラム表現内のコピー位置で少なくとも第１の命令表現を選択して、基礎にある選択した命令コピーセットに関連付けられた選択した命令表現コピーセットを定義することと、
前記表示されたパートプログラム表現において、前記選択した命令表現セットをペーストするペースト位置を定義するように前記編集インタフェース部を動作させることであって、前記ペースト位置が、前記基礎にあるパートプログラム内の命令ペースト位置に関連付けられている、ことと、
前記選択した命令表現コピーセット又は前記選択した命令コピーセットの少なくとも一方を対象とするコピーセット修正動作を実行するように前記編集部を動作させることであって、前記コピーセット修正動作が、以下のａ）からｃ）のうち少なくとも１つを含む動作によって修正済みの選択した命令表現コピーセットを形成することを含む、ａ）ペースト位置動作コンテキストと不適合である前記選択した命令表現コピーセットの要素及び関連付けを修正すること、ｂ）ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを前記選択した命令表現コピーセットに追加すること、又は、ｃ）以下のｃ１）及びｃ２）の少なくとも一方を含む動作によって形成された修正済みの選択した命令コピーセットに基づいて、前記修正済みの選択した命令表現コピーセットを形成すること、ｃ１）前記命令ペースト位置動作コンテキストと不適合である前記選択した命令コピーセットの要素及び関連付けを修正すること、もしくはｃ２）前記命令ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを前記選択した命令コピーセットに追加することと、
前記修正済みの選択した命令表現コピーセットを、前記表示されたパートプログラム表現内の前記ペースト位置にペーストすることを含むペースト動作を実行するように前記編集部を動作させることと、
を含む、コンピュータ読み取り可能媒体。
【請求項２】
前記ＧＵＩが、前記表示されたパートプログラム表現内の位置の近くに表示される編集コンテキストステータスインジケータを備え、
前記方法が更に、新たにペーストされた修正済みの選択した命令表現コピーセットが、前記コピー位置からコピーされたにもかかわらず、新たに生成されたか又は挿入された新しい命令のものと同様の編集コンテキストステータスに対応することを示すように前記ＧＵＩの前記編集コンテキストステータスインジケータを自動的に動作させることを含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項３】
前記編集コンテキストステータスインジケータが、前記表示されたパートプログラム表現内でのその位置に対応した編集コンテキストステータスに応じて色が変わる命令ポインタを備える、請求項２に記載のコンピュータ読み取り可能媒体。
【請求項４】
前記コピーコマンドが、前記選択した命令表現コピーセットに含まれる少なくとも１つの親ノードを自動的に展開して、前記選択した命令表現コピーセットに含まれるその子ノードの全てを表示する動作を含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項５】
前記選択した命令表現コピーセットに含まれる前記表示された子ノードが、ａ）コピーコマンドＧＵＩ要素が前記ＧＵＩの上に重ねられた場合、又はｂ）前記コピーコマンドが実行された場合、の少なくとも一方の間に前記コピー位置に表示される、請求項４に記載のコンピュータ読み取り可能媒体。
【請求項６】
前記コピーセット修正動作を実行するように前記編集部を動作させることが、前記コピーコマンドを実行することを含む、請求項４に記載のコンピュータ読み取り可能媒体。
【請求項７】
前記修正済みの選択した命令表現コピーセットを前記ペースト位置にペーストすることが、前記ペーストした修正済みの選択した命令表現コピーセットに含まれる少なくとも１つの親ノードを自動的に展開して前記修正済みの選択した命令表現コピーセットに含まれるその子ノードの全てを表示する動作を含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項８】
前記修正済みの選択した命令表現コピーセットを前記ペースト位置にペーストすることが、前記ペーストコマンドを実行することを含む、請求項７に記載のコンピュータ読み取り可能媒体。
【請求項９】
前記コピーセット修正動作の少なくともいくつかが、前記コピーコマンドの実行に応答して自動的に行われる、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項１０】
前記コピーセット修正動作が、ａ）前記選択した命令表現コピーセットに対応する代理データ、又はｂ）前記選択した命令表現コピーセットといずれかの対応する代理データとの関連付け、の少なくとも一方を除去することを含む、請求項９に記載のコンピュータ読み取り可能媒体。
【請求項１１】
前記コピーセット修正動作が、前記対応する代理データ及び／又はその関連付けを除去した後に、前記選択した命令コピーセット又は前記選択した命令表現コピーセットの少なくとも一方のコピーをクリップボードに移動させることを含む、請求項１０に記載のコンピュータ読み取り可能媒体。
【請求項１２】
前記選択した命令表現コピーセット又は前記関連付けられた基礎にある選択した命令コピーセットの少なくとも一方がプログラムノードを備える、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項１３】
ｃ１）前記選択した命令コピーセットの要素及び関連付けを修正するステップ、及び／又はａ）前記選択した命令表現コピーセットの要素及び関連付けを修正するステップが、基礎にある命令コード及び／又は表示された命令表現におけるそのような要素に関連付けられた、機能の名前、トレランスの名前、ワーク座標系の名前、測定ポイントバッファの名前、又は表示された変数の名前を変更することを含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項１４】
前記変更が、自動的な変更であるか、又は自動的に表示されるユーザに対する変更プロンプトを含む、請求項１３に記載のコンピュータ読み取り可能媒体。
【請求項１５】
ｃ１）前記選択した命令コピーセットの要素及び関連付けを修正するステップ、及び／又はａ）前記選択した命令表現コピーセットの要素及び関連付けを修正するステップが、そのような要素に関連付けられた一意のノード識別子を変更することを含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項１６】
前記選択した命令表現コピーセットがステップアンドリピートループ内にペーストされた場合、ｃ１）前記選択した命令コピーセットの要素及び関連付けを修正するステップ、及び／又はａ）前記選択した命令表現コピーセットの要素及び関連付けを修正するステップが、基礎にある命令コード及び／又は表示された命令表現におけるそのような要素に関連付けられた、機能の名前、トレランスの名前、ワーク座標系の名前、測定ポイントバッファの名前、又は表示された変数の名前を変更することを含み、前記変更することが、前記ステップアンドリピートループの動作コンテキストに一致する要素又はフォーマットを変更又は追加することを更に含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項１７】
ステップｃ１）及び／又はステップａ）が、表示された要素の名前を、指数カッコを含むように変更することを含み、このカッコが、前記ステップアンドリピートループの前記動作コンテキストにおける、様々な配列位置又はループ繰り返し指数を保持するために用いられるフォーマット要素である、請求項１６に記載のコンピュータ読み取り可能媒体。
【請求項１８】
前記変更が、自動的な変更であるか、又は自動的に表示されるユーザに対する変更プロンプトを含む、請求項１７に記載のコンピュータ読み取り可能媒体。
【請求項１９】
前記選択した命令表現コピーセットが、ステップアンドリピートループからコピーされ、ステップアンドリピートループの外側にペーストされた場合、ｃ１）前記選択した命令コピーセットの要素及び関連付けを修正するステップ、及び／又はａ）前記選択した命令表現コピーセットの要素及び関連付けを修正するステップが、基礎にある命令コード及び／又は表示された命令表現におけるそのような要素に関連付けられた、機能の名前、トレランスの名前、ワーク座標系の名前、測定ポイントバッファの名前、又は表示された変数の名前、又は前記ステップアンドリピートループの前記動作コンテキストに特定的なフォーマットを変更又は除去することを含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項２０】
ステップｃ１）及び／又はステップａ）が、表示された要素の名前を、指数カッコを削除するように変更することを更に含み、このカッコが、前記ステップアンドリピートループの前記動作コンテキストにおける様々な配列位置又はループ繰り返し指数を保持するために用いられるフォーマット要素である、請求項１９に記載のコンピュータ読み取り可能媒体。
【請求項２１】
ｃ１）前記選択した命令コピーセットの要素及び関連付けを修正するステップ、及び／又はａ）前記選択した命令表現コピーセットの要素及び関連付けを修正するステップが、そのような要素を排除することを含む、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項２２】
前記編集部が、前記修正済みの選択した命令コピーセットを前記基礎にあるパートプログラム内の前記命令ペースト位置にペーストすることを含むペースト動作を実行するように構成されている、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項２３】
前記編集部が、前記コピーコマンドを実行するように前記ＧＵＩを動作させるように構成され、前記コピーコマンドが前記選択した命令表現コピーセット及び／又は前記関連付けられた基礎にある選択した命令コピーセットを対象とする、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項２４】
前記コピーセット修正動作の少なくともいくつかが、前記ペーストコマンドの実行に応答して自動的に行われる、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項２５】
前記コピーセット修正動作が、ａ）前記選択した命令表現コピーセットと対応する代理データ記憶アドレスもしくは位置との間の関連付け、又はｂ）機能の名前、トレランスの名前、ワーク座標系の名前、測定ポイントバッファの名前、もしくは表示された変数の名前、の少なくとも一方を追加又は変更することを含む、請求項２４に記載のコンピュータ読み取り可能媒体。
【請求項２６】
前記コピーセット修正動作が、前記選択した命令コピーセット又は前記選択した命令表現コピーの少なくとも一方のコピーを、クリップボードから前記ペースト又は命令ペースト位置に移動させることを含む、請求項２４に記載のコンピュータ読み取り可能媒体。
【請求項２７】
前記コピーコマンド及び／又はペーストコマンドが前記ＧＵＩに表示可能であり、前記コマンドが、前記対応する動作を活性化して、前記選択した命令表現コピーセット及び／又は前記関連付けられた基礎にある選択した命令コピーセットを対象とする前記コピーセット修正動作を提供するように、ユーザによって選択可能及び／又は実行可能である、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項２８】
前記編集インタフェース部が、前記選択した命令表現コピーセット及び／又は前記関連付けられた基礎にある選択した命令コピーセット及び／又はそれらを修正したものを対象として、前記コピーコマンドを選択及び／又は実行するように動作可能であり、その際に、前記ＧＵＩの前記編集インタフェース部において前記表現コピーセット及び／又は前記関連付けられた基礎にある選択した命令コピーセットを選択し、前記選択した命令表現コピーセット及び／又は前記関連付けられた基礎にある選択した命令コピーセットに対応する前記コピーコマンドを少なくとも含むメニューを表示するように前記ＧＵＩを動作させ、前記表示されたメニューにおいて前記コピーコマンドを選択する、請求項１に記載のコ
ンピュータ読み取り可能媒体。
【請求項２９】
前記編集インタフェース部が、前記選択した命令表現コピーセット及び／又は前記関連付けられた基礎にある選択した命令コピーセット及び／又はそれらを修正したものを対象として、前記ペーストコマンドを選択及び／又は実行するように動作可能であり、その際に、カーソル又は前記ＧＵＩの他の編集位置インジケータを前記パートプログラム表現内の前記ペースト位置に位置決めし、前記選択した命令表現コピーセット及び／又は前記関連付けられた基礎にある選択した命令コピーセット又はそれらを修正したものに対応する前記ペーストコマンドを少なくとも含むメニューを前記クリップボード上に表示するように前記ＧＵＩを動作させ、前記表示されたメニューにおいて前記ペーストコマンドを選択する、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項３０】
前記基礎にあるパートプログラム命令がマークアップ言語で書かれている、請求項１に記載のコンピュータ読み取り可能媒体。
【請求項３１】
マシンビジョン検査システムにおいてパートプログラムを編集する場合にマシンビジョンパートプログラム動作セットをコピーアンドペーストするための方法であって、前記マシンビジョン検査システムが、撮像部と、前記撮像部の視野に１つ以上のワークピースを保持するためのステージと、制御部と、編集部と、ディスプレイと、グラフィカルユーザインタフェース（ＧＵＩ）と、学習モードであって、パートプログラムを生成するために、前記マシンビジョン検査システムの動作を制御するユーザ入力を受信すると共に、前記制御された動作に対応して関連付けられたパートプログラム命令を記録するように動作可能に構成された、学習モードと、を含み、前記実行方法が、
表示されたパートプログラム表現内のコピー位置で少なくとも第１の命令表現を選択して、基礎にある選択した命令コピーセットに関連付けられた選択した命令表現コピーセットを定義することと、
前記選択した命令表現コピーセット又は前記基礎にある選択した命令コピーセットの少なくとも一方のコピーを生成するコピー動作を開始するように前記ＧＵＩを動作させることと、
コピー動作を自動的に実行して、前記選択した命令表現コピーセット又は前記選択した命令コピーセットの少なくとも一方を対象とするコピーセット修正動作の第１のサブセットを実行し、これによって、前記選択した命令表現コピーセット及び／又は前記基礎にある選択した命令コピーセットの部分的に修正したものを生成することであって、前記コピーセット修正動作の前記第１のサブセットが、前記コピー位置での第１の動作コンテキストに特定的な要素を対象とし、ａ）関連付けられた代理データ及び／又はその前記コピーセット（複数のコピーセット）との関連付けを排除すること、又はｂ）新しいか又は変更した一意のノード識別子を提供すること、の少なくとも一方を含む、ことと、
前記表示されたパートプログラム表現において、前記選択した命令表現コピーセットをペーストするペースト位置を定義することであって、前記ペースト位置が、前記基礎にあるパートプログラム内の命令ペースト位置に関連付けられている、ことと、
前記選択した命令表現コピーセット又は前記基礎にある選択した命令コピーセットの前記部分的に修正したものの少なくとも一方を対象とするペースト動作を開始するように、前記ＧＵＩを動作させることと、
ペースト動作を自動的に実行して、前記選択した命令表現コピーセット又は前記選択した命令コピーセットの少なくとも一方の前記部分的に修正したものを対象とする前記コピーセット修正動作の第２のサブセットを実行し、これによって、完全に修正済みの選択した命令表現コピーセット及び／又は完全に修正済みの選択した命令コピーセットを生成することであって、前記コピーセット修正動作の前記第２のサブセットが、前記ペースト位置での第２の動作コンテキストに特定的な要素を対象とし、以下のａ）からｃ）のうち少なくとも１つを含む、ａ）前記ペースト位置動作コンテキストと不適合である前記選択した命令表現コピーセットの要素及び関連付けを修正すること、ｂ）前記ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを前記選択した命令表現コピーセットに追加すること、又はｃ）以下のｃ１）又はｃ２）の少なくとも一方を含む動作によって形成された修正済みの選択した命令コピーセットに基づいて、前記修正済みの選択した命令表現コピーセットを形成すること、ｃ１）前記命令ペースト位置動作コンテキストと不適合である前記選択した命令コピーセットの要素及び関連付けを修正すること、もしくはｃ２）前記命令ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを前記選択した命令コピーセットに追加することと、
を含む、方法。
【請求項３２】
前記コピー動作を開始するように前記ＧＵＩを動作させることが、前記選択した命令表現コピーセットを対象とするコピーコマンドウィジェットを活性化することを含み、前記ペースト動作を開始するように前記ＧＵＩを動作させることが、前記ペースト位置を対象とするペーストコマンドウィジェットを活性化することを含む、請求項３１に記載の方法。
【請求項３３】
前記コピーセット修正動作の前記第１のサブセットから得られた前記選択した命令表現コピーセット又は前記基礎にある選択した命令コピーセットの前記部分的に修正したものが、クリップボード上に記憶され、前記コピーセット修正動作の前記第２のサブセットによって前記クリップボードから自動的に検索される、請求項３１に記載の方法。
【請求項３４】
前記ペースト動作を自動的に実行するステップが、前記完全に修正済みの選択した命令表現コピーセットを前記パートプログラム表現内の前記ペースト位置にペーストすること、及び／又は前記完全に修正済みの選択した命令コピーセットを前記基礎にあるパートプログラム内の前記命令ペースト位置にペーストすることを更に含む、請求項３１に記載の方法。
【請求項３５】
前記ＧＵＩが、前記表示されたパートプログラム表現内の位置の近くに表示される編集コンテキストステータスインジケータを備え、
前記方法が更に、前記ペーストされた完全に修正済みの選択した命令表現コピーセットが、前記コピー位置からコピーされたにもかかわらず、新たに生成されたか又は挿入された新しい命令のものと同様の編集コンテキストステータスに対応することを示すように前記ＧＵＩの前記編集コンテキストステータスインジケータを自動的に動作させることを含む、請求項３１に記載の方法。
【請求項３６】
前記コピー動作が、前記選択した命令表現コピーセットに含まれる少なくとも１つの親ノードを自動的に展開して、前記選択した命令表現コピーセットに含まれるその子ノードの全てを表示することを含む、請求項３１に記載の方法。
【請求項３７】
前記選択した命令表現コピーセットに含まれる前記ノードが前記ＧＵＩにおいて強調表示される、請求項３６に記載の方法。
【請求項３８】
前記選択した命令表現コピーセット内の全てのノードは、コピーコマンドウィジェットが選択されているか又は重ねられているが前記コピーコマンドウィジェットが実行される前に表示される、請求項３６に記載の方法。
【請求項３９】
前記ペースト動作が、前記ペーストされた完全に修正済みの選択した命令表現コピーセットに含まれる少なくとも１つの親ノードを自動的に展開して、前記完全に修正済みの選択した命令表現コピーセットに含まれるその子ノードの全てを表示することを含む、請求項３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マシンビジョン検査システム、及び、そのようなシステムにおいてパートプログラムを生成及び編集するためのコンピュータ読み取り可能媒体において具現化されたシステム、ＧＵＩ、及び方法であって、基礎にある「コンピュータ言語」命令の簡略化表現及び／又はそれらが対応する基礎にある命令を生成して「非プログラマ」のユーザによるパートプログラムの生成を支援するために使用可能である、スマートなコピーアンドペースト（ｃｏｐｙ  ａｎｄ  ｐａｓｔｅ）機能を含むものに関する。
【背景技術】
【０００２】
精密マシンビジョン検査システム（又は、簡略化して「ビジョンシステム」と呼ぶ）は、検査対象物体の精密な寸法測定値を得ると共に、他の様々な物体の特徴を検査するために用いることができる。そのようなシステムは、コンピュータ、カメラ及び光学系、検査対象のワークピースの要素をカメラによって走査するために多方向に移動可能な精密ワークステージを含み得る。市販されている例示的な従来技術のシステムの１つが、イリノイ州オーロラにあるＭｉｔｕｔｏｙｏ  Ａｍｅｒｉｃａ  Ｃｏｒｐｏｒａｔｉｏｎ（ＭＡＣ）から入手可能なＱＵＩＣＫ  ＶＩＳＩＯＮ（登録商標）シリーズのＰＣベースのビジョンシステム及びＱＶＰＡＫ（登録商標）ソフトウェアである。ＱＵＩＣＫ  ＶＩＳＩＯＮ（登録商標）シリーズのビジョンシステム及びＱＶＰＡＫ（登録商標）ソフトウェアの機能及び動作については、概ね、例えば２００３年１月に公表されたＱＶＰＡＫ  ３Ｄ  ＣＮＣ画像測定機ユーザガイド、及び１９９６年９月に公表されたＱＶＰＡＫ  ３Ｄ  ＣＮＣ画像測定機動作ガイドに記載されている。これらは各々、援用により全体が本願にも含まれるものとする。例えばこのシリーズの製品は、顕微鏡型の光学系を用いてワークピースの画像を様々な倍率で提供することができ、必要に応じてステージを動かすことで単一のビデオ画像の範囲を超えてワークピースの表面を横断することができる。通常、そのようなシステムの所望の倍率、測定分解能、及び物理サイズ限界が与えられた場合、単一のビデオ画像に含まれるのは、観察又は検査対象のワークピースの一部のみである。
【０００３】
マシンビジョン検査システムは、自動化ビデオ検査を利用するのが一般的である。米国特許第６，５４２，１８０号（１８０号特許）は、そのような自動化ビデオ検査の様々な態様を教示し、援用によりその全体が本願にも含まれるものとする。１８０号特許に教示されるように、自動化ビデオ検査計測用の計器は一般に、特定のワークピース形状ごとにユーザが自動検査イベントシーケンスを定義することができるプログラミング機能を有する。これは、例えばテキストベースのプログラミングによって、又はグラフィカルユーザインタフェース（ＧＵＩ）の支援のもとでユーザが実行する検査動作シーケンスに対応したマシン制御命令シーケンスを記憶することにより検査イベントシーケンスを漸進的に「学習する」記録モードによって、又はこれら双方の方法の組み合わせによって、実施することができる。そのような記録モードは、「学習モード」又は「訓練モード」と呼ばれることが多い。いったん「学習モード」で検査イベントシーケンスを定義したら、そのようなシーケンスを用いて、「実行モード」の間にワークピースの画像を自動的に取得する（更に解析又は検査する）ことができる。
【０００４】
具体的な検査イベントシーケンスを含むマシン制御命令（すなわち、どのように各画像を取得するか、及び取得した各画像をどのように解析／検査するか）は、一般に、特定のワークピース形状に固有の「パートプログラム」又は「ワークピースプログラム」として記憶される。例えばパートプログラムは、どのようにワークピースに対してカメラを位置決めするか、どのような照明レベル、倍率を用いるか等、どのように各画像を取得するかを定義する。更にパートプログラムは、例えばエッジ／境界検出ビデオツール等の１つ以上のビデオツールを用いることで、取得した画像をどのように解析／検査するかを定義する。
【０００５】
比較的技術力の低いユーザによるプログラミングを容易にするため、ビデオツール（又は、簡略化して「ツール」と呼ぶ）及び他のＧＵＩ機能を、検査及び／又は他のマシン制御動作を達成するようにセットアップすることができる。ビデオツールのセットアップパラメータ及び動作を学習モード中に記録して、様々なビデオツールによって実行される測定／解析動作を組み込んだ自動検査プログラムすなわち「パートプログラム」を生成することができる。ビデオツールは、例えばエッジ／境界検出ツール、自動焦点ツール、形状又はパターンマッチングツール、寸法測定ツール等を含み得る。他のＧＵＩ機能は、データ解析、ステップアンドリピートループプログラミング等に関連したダイアログボックスを含み得る。これらは例えば、米国特許第８，２７１，８９５号（８９５号特許）に開示されている。これは援用により本願にも含まれるものとする。例えばそのようなツール及びＧＵＩ機能は、上述のＱＵＩＣＫ  ＶＩＳＩＯＮ（登録商標）シリーズのビジョンシステム及び関連するＱＶＰＡＫ（登録商標）ソフトウェア等、多種多様な市販のマシンビジョン検査システムにおいて日常的に用いられている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
比較的技術力の低いユーザによるパートプログラムの編集は難しいことがある。特に、現在、技術力の低いユーザが「動作コンテキスト対応（ｏｐｅｒａｔｉｎｇ  ｃｏｎｔｅｘｔ−ｅｎａｂｌｅｄ）」のコピーアンドペースト動作を実行する便利な方法は存在しない。すなわち、パートプログラム内のある位置で動作コンテキスト及び／又は編集コンテキストとの適合性を提供するように構成された命令をコピーするには、そのパートプログラム内の別の位置のペースト位置で動作コンテキスト及び／又は編集コンテキストとの適合性を提供可能とする前に修正を行う必要があることを考慮に入れた、プログラムを編集するのに有用であるマシンビジョンシステム又は他の自動化検査システムにおけるパートプログラムのためのコピーアンドペースト動作は存在しない。例えば、ステップアンドリピートループの内部から外部への、又はその逆の命令のコピーアンドペーストは、技術力の低いユーザにとって特に難しいことがある。
【０００７】
本発明は、コンピュータ読み取り可能媒体において具現化されるようなシステム、ＧＵＩ、及び方法であって、精密マシンビジョン検査システムにおけるパートプログラムのためのコピーアンドペースト編集コマンド用の直観的で柔軟かつロバストな動作及び／又はコマンドの生成及び使用を可能とするものを提供することを対象とする。
【課題を解決するための手段】
【０００８】
この「発明の概要」は、以下で「発明を実施するための形態」において更に記載するいくつかの概念を簡略化した形態で紹介するために提示する。この「発明の概要」は、特許請求の範囲の重要な特徴を識別することを意図しておらず、特許請求の範囲の決定に役立てるために用いることも意図していない。
【０００９】
様々な実施形態において、パートプログラムを生成するための学習モードと、以前に生成したパートプログラムを実行するための実行モードと、において動作可能なマシンビジョン検査システムが提供される。システムは、撮像部と、この撮像部の視野に１つ以上のワークピースを保持するためのステージと、制御部と、グラフィカルユーザインタフェース（ＧＵＩ）と、を含む。システムは更に、学習モードにおいてパートプログラム命令を編集するように動作可能である編集部を含み、この編集部はＧＵＩに表示可能な編集インタフェース部を含む。
【００１０】
システムは更に、コピーアンドペーストマネージャ部を含む。これは、学習モードでパートプログラムにおけるコピー動作及びペースト動作を生成し、定義するように動作可能であるように構成されたハードウェア及び／又はソフトウェアで実施することができる。いくつかの実施形態においては、コピーアンドペーストコマンドを用いて、コピーされる要素の実質的な複製である１組の要素を、パートプログラム内の新しい位置にペーストすることができる。本明細書において用いる場合、実質的な複製という言葉は、検査命令又はそれらの表現のあらゆる詳細の逐語的な又は正確な複製を必ずしも意味するわけではないが、いくつかの実施形態ではこれが当てはまる場合がある。これは、少なくとも、反復される動作ブロックの不可欠な又は基本的な動作を複製する命令の機能の複製を意味する。
【００１１】
コピーされる要素は、マークアップ言語（例えばＨＴＭＬ、ＸＭＬ、又はそれらの派生物）で書かれた機械実行可能コード命令、及び／又はそれに関連付けられた（例えば編集部において）ＧＵＩに表示される編集可能な命令表現を含むことができる。本明細書において用いる場合、コピーされる要素という言葉は一般に、記載又は文脈によって特に指示されない限り、これらの関連付けられた態様の双方を包含し得る。本明細書で言及する他のタイプの命令及び命令表現についても同様であるが、様々な実施形態において、いくつかの動作コンテキスト確立動作、及び／又はユーザインタフェースウィンドウ同期動作、及び／又はコード及び表現の関連付けをサポートするために、一意の識別子（例えばノード識別子）を割り当てて用いることができる。一実施形態において、このような関連付け及び機能は、２０１１年１１月１５日に出願され、米国出願公報第２０１３／０１２３９４５  Ａ１号として公開された「Ｍａｃｈｉｎｅ  Ｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｐｒｏｇｒａｍ  Ｅｄｉｔｉｎｇ  Ｅｎｖｉｒｏｎｍｅｎｔ  Ｉｎｃｌｕｄｉｎｇ  Ｒｅａｌ  Ｔｉｍｅ  Ｃｏｎｔｅｘｔ  Ｇｅｎｅｒａｔｉｏｎ  Ｆｅａｔｕｒｅｓ」と題する同時係属及び同時譲渡の（ｃｏ−ａｓｓｉｇｎｅｄ）米国特許出願第１３／２９７，２３２号（２３２号出願）、並びに、２０１２年１１月１３日に出願され、米国出願公報第２０１３／０１２５０４４  Ａ１号として公開された「Ｍａｃｈｉｎｅ  Ｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｐｒｏｇｒａｍ  Ｅｄｉｔｉｎｇ  Ｅｎｖｉｒｏｎｍｅｎｔ  Ｉｎｃｌｕｄｉｎｇ  Ｓｙｎｃｈｒｏｎｉｚｅｄ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｆｅａｔｕｒｅｓ」と題する同時係属及び同時譲渡の米国特許出願第１３／６７６，０６１号（０６１号出願）に記載されたように実施することができる。これらは各々、援用により全体が本願にも含まれるものとする。
【００１２】
いくつかの実施形態においては、パートプログラム表現及び／又はコピーされる要素（例えば命令表現及び／又はコード命令）は、１つ以上の子ノードを有する１つ以上の親ノードを含むツリー構造等に配置することができる。コピーされる要素を含むＧＵＩ上の命令表現を編集するためのユーザ入力には、命令表現のいずれかの追加、削除、及び修正のうち１つ以上が含まれ得る。いくつかの実施形態では、ノードの一部はビデオツールに対応し、各々が、幾何学的形状測定動作又は撮像（例えば自動合焦）動作、又は画像処理動作等の個別の動作を対象とする命令サブセットを含む。様々な実施形態において、コピーされる要素の各々に、一意のノード名、変数名、及び／又はコードブロック名を割り当てることができる。いくつかの実施形態又は状況においては、ノード又はコピーされる要素が編集された場合に名前を変更することができる。
【００１３】
様々な実施形態において、コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体が提供される。これらの命令は、コンピュータ上にロードされて、コンピュータが本明細書に概説する機能及び動作に対応した方法を実行可能であるように構成されている。
【００１４】
マシンビジョン検査システムのためのパートプログラムの編集は、マシンツール又はアセンブリロボット等のためのプログラムの編集よりも複雑なタスクであることは認められよう。例えば、マシンビジョン検査システムのためのパートプログラムは、動作を制御する及び／又は画像に依存した測定結果を提供する部分を後の方に含むが、これらは少なくとも部分的に、プログラムの前の方の部分の実行によって決定された結果、及び／又は検査動作に不可欠な画像を提供するために用いられているワークピースの特定のインスタンスに依存する。更に、特定の画像に必要な照明及び／又は露出時間は、ワークピースの特定のインスタンスに依存し得る。更に、ユーザが部分的に完了したパートプログラムをセーブし、後にそのパートプログラムをプログラミングの変更又は終了のために再び呼び出した場合、その間に、パートプログラムの編集続行に悪影響を及ぼしかねない何らかのタイプの変化が生じたか否か（例えば環境条件の変化、ステージ上のパートが不注意により動かされた等）は未知であり得る。こういった懸念があるため、そのようなシステムのいくつかでは、パートプログラムの全ての命令を最初から、パートプログラム命令に対する潜在的な付加的修正又は追加までを含めて実際に実行することにより、そのような修正及び／又は追加が動作のための現実的な条件セットに基づいてプログラミングされていることを検証することが標準的な慣例となっている。しかしながら、パートプログラム命令に対する修正又は追加の実際的な動作条件を提供するために命令を全て実行することは、大きいパートプログラム（例えば多数の画像取得及び／又は要素の検査を含むもの）においては非現実的であるが、大きいパートプログラムは、肉眼で見える物体（例えば数十から数百ミリメートルに及ぶ物体）に対する顕微鏡検査（例えばミクロン級の分解能の測定）を行うマシンビジョン検査システムでは特に一般的なものである。
【００１５】
先に参照により本願にも含まれるものとした２３２号出願及び０６１号出願が開示する特徴は、編集動作中に短時間で（例えばほぼ「リアルタイム」で）動作条件又は動作コンテキストを信頼性高く更新することができる編集環境を提供することができ、精密マシンビジョン検査システムのためのパートプログラムの、より迅速、高効率、直観的、柔軟かつロバストな生成及び編集を可能とする。しかしながら、そのような編集環境に関連付けられたコピーアンドペースト動作の必要性はなお残っている。また、既知のコピーアンドペースト方法は、２３２号出願及び０６１号出願に開示された動作に関連付けられた要素及び機能性をサポートしない。問題は、マシンビジョン検査システムのパートプログラムにおける命令のコピーアンドペーストが、物理オブジェクトを実際には動かさないテキストベースのプログラムにおける命令のカットアンドペーストよりも複雑であり、マシンツール又はアセンブリロボット等のためのプログラムにおける命令のカットアンドペーストよりもいっそう複雑であることである。パートプログラム内の１つの位置での適正な動作コンテキストに従って構成された命令をコピーし、次いでそのパートプログラム内の別の位置にペーストすることは、これまでに知られている方法では実行することができない。これまでに知られているテキストベースの方法は、必要な動作を潜在的には実行し得るとしても、コンピュータプログラマでなく、ワークピース検査のために記憶され、後に実行するために再び呼び出される基本的なパートプログラムを書くために用いられるコンピュータ言語を理解しない、比較的技術力の低いユーザは用いることができない。２３２号出願及び０６１号出願に概説された方法は、高速の動作コンテキストの生成及び使用を可能にして、比較的速やかで現実的な「プログラム生成及び編集結果」フィードバックを比較的技術力の低い編集者に提供する編集環境に関するが、パートプログラムのある部分から「動作コンテキスト対応」プログラム命令をコピーし、そのパートプログラムの別の部分にペーストすることに伴う問題については考慮していない。そのような編集環境におけるコピーアンドペーストのための手段があれば望ましい。
【００１６】
先に概説した検討事項によれば、マシンビジョン検査システムにおいて、パートプログラムを編集する際に動作コンテキストに対して行われるほぼリアルタイムの更新と適合するコピーアンドペースト動作を提供して、修正及び／又は追加をプログラムする時に、それらの修正及び／又は追加のための基礎又は動作コンテキストとして現実的な動作条件セットが利用可能であることを検証することが望ましい。これが特に重要であるのは、マシンビジョン検査システムのユーザによる実際の制御動作入力を記録することでパートプログラムを生成及び編集する場合である。なぜなら、ユーザは、マシンビジョン検査システムの状態及び／又は入力動作を行っている時に存在する画像の外見及び位置等に基づいて、入力動作の詳細を直観的に選択しているからである。このため、ユーザは、パートプログラム内の任意の位置でそのパートプログラムの有効かつ信頼性の高い修正を開始する場合には、最初に、その位置で実行モード中の自動実行モードの間にパートプログラムの以前の命令の実行により与えられるものと実質的に同じ動作コンテキストにシステムを設定しなければならない。これまで、いかなる汎用マシンビジョン検査システムによっても、また、特に、（例えば簡単なグラフィックオブジェクト又はテキストベースのプログラミングシステムとは対照的に）パートプログラムを生成するために実際のユーザ制御動作を記録するいかなるシステムによっても、編集動作中にコピーアンドペースト動作のための有効なパートプログラミング編集動作コンテキストをほぼリアルタイムで信頼性高くロバストに与える編集環境は提供されていない。
【００１７】
コピーアンドペースト動作は、比較的技術力の低いユーザによって使用可能であるように、少なくともいくつかの自動動作を含むべきである。様々な実施形態において、コピーアンドペースト動作は、ユーザにとって、検査動作を自動的に実行するために記憶され実行されるパートプログラム命令を実際に形成している基礎にあるテキストベースの言語ではなく、比較的技術力の低いユーザによって編集可能なパートプログラム命令の簡単な表現に対して作用するように見えなければならない。様々な実施形態において、編集可能である簡単な表現に関連付けることができる様々なメタデータは、基礎にあるパートプログラム命令又はコードに含まれるが隠れるようになっている。様々な実施形態において、それらの存在及び／又は除去はユーザに見えないようにして、ＧＵＩの乱雑な状態（ｃｌｕｔｔｅｒ）を回避すると共に、比較的技術力の低いユーザの混乱を回避することができる。そのようなメタデータの１つのタイプとして、実行の編集モードに用いられる代理データが挙げられる。メタデータの別の例として、ステップアンドリピートプログラムのために定義された配列の形態のデータフォーマットが挙げられる。様々な実施形態において、コピーアンドペースト動作は、パートプログラム命令のコピーされる表現に関連付けられたメタデータを自動的に調節（追加、削除、修正）して、この調節されたメタデータをパートプログラム内のペースト位置に適合させることができる。様々な実施形態において、ペーストされた表現自体は、基礎にある関連付けられた命令又は代理データ等のメタデータの存在、不在、又は変更を反映しない場合がある。むしろ、コピーアンドペーストコマンドは、この機能を実行するために編集インタフェースにおいて一般的に用いられるステータスインジケータ（例えばノード識別子、符号化カーソル状態、挿入指示状態、コードブロックのマージンに沿って延出してそのステータスを色分けする「カラーバー」の状態。２３２号出願等に開示されている）に、ユーザが認識するのに役立つメタデータステータスの態様が反映されるように構成された動作を含むことができる。このため、コピーアンドペースト動作が与えるペーストされたコードは、ペーストされる動作コンテキストに適合すると共に、ステータス指示及び実行動作（ｒｕｎ  ｏｐｅｒａｔｉｏｎ）等に関して、ユーザがペースト位置及び／又はその動作コンテキストにおいて実行し得る新しい動作生成のような他のプログラミング動作と、多くの又はほとんどの動作特性を共有するように挙動する。これには、ペースト位置における編集動作に応答した挙動等が含まれる。
【００１８】
更に別の検討事項が発生するのは、編集環境が、基礎にあるプログラミング言語（例えばマークアップ言語）で書かれたパートプログラム命令を抑制し、代わりに編集インタフェースにおいて簡略化命令表現を用いることで、比較的技術力の低いユーザ（例えばマークアップ言語を理解しないユーザ）によるプログラミングを容易にするという場合である。このような場合は、様々な実施形態において、コピーアンドペーストコマンドが、基礎にあるプログラムのコピーアンドペースト動作をユーザから隠しながら、命令表現及び基礎にあるプログラミング言語の双方に対して自動的に動作することが有利であり得る。また、コピーアンドペーストコマンドが、命令表現において最初は折り畳まれていた親ノードを自動的に展開して、ユーザがそれらの子ノードを見ることができ、これによってコピー及び／又はペースト動作の全容を理解できるようにすることも有利であり得る。更に、先に概説したもの等の編集環境のＧＵＩは、表示されたパートプログラム表現内の位置での編集コンテキストステータス（動作コンテキストステータス）を示すために、その位置の近くに表示される編集コンテキストステータスインジケータを備えることができる。そのような場合、コピー及び／又はペーストコマンドは、ペーストされた要素がコピー位置からコピーされたにもかかわらず新たに生成されたか又は挿入された新しい命令と同様な挙動を示すように動作することが有利であり得る。そのような場合、編集コンテキストステータスインジケータは、ペーストされた要素に対応する命令がビジョンシステムを用いて（例えば代理／シミュレート及び／又は実際実行モードにおいて）実行されるまで、ペースト位置における動作コンテキスト及び／又は編集コンテキストが不確かであるか又は無効であることを控えめに示すことができる。いくつかの実施形態において、編集コンテキストステータスインジケータは、表示されたパートプログラム表現内でのその位置に対応した編集コンテキストステータスに応じて色が変わる命令ポインタを含むことができる。
【００１９】
「コピーアンドペースト動作、機能、及び実施の概要」と題する以下のセクションは、本出願の文脈において、可能な実施形態の全てではないがいくつかを例示することを意図し、限定は意図していない。しかしながら、先に概説した問題を解決し、他の利点を与えることも可能である様々な実施形態を包含することが意図される。特許請求の範囲内で様々な代替的な実施形態が可能であり、これらの実施形態は、本願に含まれる上述の２３２号出願及び０６１号出願の教示と組み合わせて利用される本出願の資料に教示又は開示した様々な原理の利点を有することが、当業者によって理解又は実感され得る。
【００２０】
コピーアンドペースト動作、機能、及び実施の概要
本発明の一態様によれば、以下のようなコンピュータ実行可能命令を含むコンピュータ読み取り可能媒体が提供される。
１．コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体であって、それらの命令が、コンピュータにロードされて、マシンビジョン検査システムにおいてパートプログラムを編集する場合にマシンビジョンパートプログラム動作セットをコピーアンドペーストするための方法をコンピュータが実行することを可能とするように構成され、マシンビジョン検査システムが、撮像部と、撮像部の視野に１つ以上のワークピースを保持するためのステージと、制御部と、編集部と、ディスプレイと、グラフィカルユーザインタフェース（ＧＵＩ）と、学習モードであって、パートプログラムを生成するために、マシンビジョン検査システムの動作を制御するユーザ入力を受信すると共に、制御された動作に対応して関連付けられたパートプログラム命令を記録するように動作可能に構成された、学習モードと、を含み、実行される方法が、
編集部に関連付けられたコピーコマンド及びペーストコマンドを提供することと、
ＧＵＩの編集インタフェース部を提供することであって、この編集インタフェース部が、基礎にあるパートプログラム命令の編集可能パートプログラム表現を表示するように動作可能であり、パートプログラム表現が命令表現を含む、ことと、
編集インタフェース部に、基礎にあるパートプログラムのパートプログラム表現を表示することと、
表示されたパートプログラム表現内のコピー位置で少なくとも第１の命令表現を選択して、基礎にある選択した命令コピーセットに関連付けられた選択した命令表現コピーセットを定義することと、
表示されたパートプログラム表現において、選択した命令表現セットをペーストするペースト位置を定義するように編集インタフェース部を動作させることであって、ペースト位置が、基礎にあるパートプログラム内の命令ペースト位置に関連付けられている、ことと、
選択した命令表現コピーセット又は選択した命令コピーセットの少なくとも一方を対象とするコピーセット修正動作を実行するように編集部を動作させることであって、コピーセット修正動作が、以下のａ）からｃ）のうち少なくとも１つを含む動作によって修正済みの選択した命令表現コピーセットを形成することを含む、ａ）ペースト位置動作コンテキストと不適合である選択した命令表現コピーセットの要素及び関連付けを修正すること、ｂ）ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを選択した命令表現コピーセットに追加すること、又は、ｃ）以下のｃ１）又はｃ２）の少なくとも一方を含む動作によって形成された修正済みの選択した命令コピーセットに基づいて、修正済みの選択した命令表現コピーセットを形成すること、ｃ１）命令ペースト位置動作コンテキストと不適合である選択した命令コピーセットの要素及び関連付けを修正すること、もしくはｃ２）命令ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを、選択した命令コピーセットに追加することと、
修正済みの選択した命令表現コピーセットを、表示されたパートプログラム表現内のペースト位置にペーストすることを含むペースト動作を実行するように編集部を動作させることと、
を備える。
【００２１】
以下のセクションでは、限定ではなく一例として、実施に関する様々な詳細事項及び詳しい特徴を開示する。開示する資料及び組み込んだ引例に基づいて当業者には理解されようが、上述のコンピュータ読み取り可能媒体の様々な要素は、様々な実施形態のそれぞれにおいて下に概説する様々な特徴及び／又は態様を包含し得る。
【００２２】
・選択した命令表現コピーセット又は関連付けられた基礎にある選択した命令コピーセットの少なくとも一方は、プログラムノードを備えることができる。プログラムノードは、子ノードを含む親ノードを含み得る。
【００２３】
・選択した命令コピーセットの要素及び関連付けを修正すること及び／又は選択した命令表現コピーセットの要素及び関連付けを修正することは、（例えば表示された命令表現及び／又は基礎にある命令コードにおける）そのような要素に関連付けられた機能の名前、トレランス（ｔｏｌｅｒａｎｃｅ）の名前、ワーク座標系の名前、「測定ポイントバッファ」の名前、又は表示された変数の名前等を変更することを含み得る。更に一般的には、「記憶された要素」の名前は、この記憶された要素の名前を含む命令又は表現のコピーを新しい位置にペーストする前に、変更することができる。この変更は好ましくは、自動的な変更とするか、又は自動的に表示されるユーザに対する変更プロンプトを含むことができる。
【００２４】
・選択した命令コピーセットの要素及び関連付けを修正すること及び／又は選択した命令表現コピーセットの要素及び関連付けを修正することは、そのような要素に関連付けられた一意のノード識別子（例えば命令表現に関連付けられているがパートプログラム表現に表示されない一意のノード識別子、及び／又は基礎にある命令コードに含まれる一意のノード識別子）を変更することを含み得る。この変更は、好ましくは自動的な変更とすることができる。
【００２５】
・選択した命令表現コピーセットがステップアンドリピートループ内にペーストされた場合、選択した命令コピーセットの要素及び関連付けを修正すること及び／又は選択した命令表現コピーセットの要素及び関連付けを修正することは、（例えば表示された命令表現及び／又は基礎にある命令コードにおける）そのような要素に関連付けられた機能の名前、トレランスの名前、ワーク座標系の名前、「測定ポイントバッファ」の名前、又は表示された変数の名前等を変更することを含み得る。これは、ステップアンドリピートループの動作コンテキストに一致する要素又はフォーマットを変更又は追加することを含み得る。１つの実施形態において、これは、表示された要素の名前（例えば機能の名前）を、「指数カッコ」等を含むように変更することを含み得る。このカッコは、ステップアンドリピートループの動作コンテキストにおける様々な配列位置又はループ繰り返し指数等を保持するために使用可能なフォーマット要素である（例えば、ステップアンドリピート位置の特定の１つにおいて「ループ動作」繰り返しの結果を識別又は名付けるため）。更に一般的には、「記憶された要素」の名前は、この記憶された要素の名前を含む命令又は表現のコピーをステップアンドリピートループ内の新しい位置にペーストする前に、変更又は再フォーマットすることができる。この変更は好ましくは、自動的な変更とするか、又は自動的に表示されるユーザに対する変更プロンプトを含むことができる。
【００２６】
・選択した命令表現コピーセットが、ステップアンドリピートループからコピーされ、ステップアンドリピートループの外側にペーストされた場合、選択した命令コピーセットの要素及び関連付けを修正するステップ、及び／又は選択した命令表現コピーセットの要素及び関連付けを修正するステップは、（例えば表示された命令表現及び／又は基礎にある命令コードにおける）機能の名前、トレランスの名前、ワーク座標系の名前、「測定ポイントバッファ」の名前、又は表示された変数の名前等、又はステップアンドリピートループの動作コンテキストに特定的なフォーマットを変更又は除去することを含み得る。１つの実施形態において、これは、表示された要素の名前（例えば機能の名前）を、「指数カッコ」等を削除するように変更することを含み得る。このカッコは、ステップアンドリピートループの動作コンテキストにおける様々な配列位置又はループ繰り返し指数等を保持するために使用可能なフォーマット要素である（例えば、ステップアンドリピート位置の特定の１つにおいて「ループ動作」繰り返しの結果を識別又は名付けるため）。更に一般的には、「記憶された要素」の名前は、この記憶された要素の名前を含む命令又は表現のコピーをステップアンドリピートループの外側の新しい位置にペーストする前に、変更及び／又は再フォーマットすることができる。この変更は好ましくは、自動的な変更とするか、又は自動的に表示されるユーザに対する変更プロンプトを含むことができる。
【００２７】
・選択した命令コピーセットの要素及び関連付けを修正するステップ、及び／又は選択した命令表現コピーセットの要素及び関連付けを修正するステップは、そのような要素を排除することを含み得る。
【００２８】
・編集部は更に、修正済みの選択した命令コピーセットを、基礎にあるパートプログラム内の命令ペースト位置にペーストすることを含むペースト動作を実行するように動作させることができる。
【００２９】
・編集部は、コピーコマンドを実行するようにＧＵＩを動作させることを含むコピーセット修正動作を実行するように動作させ、コピーコマンドは、選択した命令表現コピーセット及び／又は関連付けられた基礎にある選択した命令コピーセットを対象とすることができる。
【００３０】
・コピーセット修正動作の少なくともいくつかは、ペーストコマンドの実行に応答して自動的に行うことができる。１つの実施形態において、そのような動作は、ａ）選択した命令表現コピーセットに対応する代理データ、又はｂ）記憶した命令表現コピーセットといずれかの対応する代理データとの間の関連付け（例えば一実施形態において、この関連付けは、関連付けが切断されるように除去又は変更されるノード識別子によって提供され得る）、の少なくとも一方を除去することを含む。１つの実施形態において、そのような動作は、対応する代理データ及び／又はその関連付けを除去した後に、選択した命令コピーセット又は選択した命令表現コピーセットの少なくとも一方のコピーをクリップボードに移動させることを含み得る。一実施形態において、クリップボード動作のために、Ｗｉｎｄｏｗｓ（登録商標）のクリップボードの機能を使用可能である。一実施形態では、Ｗｉｎｄｏｗｓ（登録商標）の「プライベート」クリップボードの機能を使用可能である。
【００３１】
・コピーセット修正動作の少なくともいくつかは、ペーストコマンドの実行に応答して自動的に行うことができる。１つの実施形態において、そのような動作は、ａ）選択した命令表現コピーセットと対応する代理データ記憶アドレスもしくは位置との関連付け（例えば一実施形態において、この関連付けは、関連付けが生成されるように追加又は変更されるノード識別子によって提供され得る）、又はｂ）機能の名前、トレランスの名前、ワーク座標系の名前、「測定ポイントバッファ」の名前、もしくは表示された変数の名前等、の少なくとも一方を追加又は変更することを含み得る。１つの実施形態において、そのような動作は、選択した命令コピーセット又は選択した命令表現コピーの少なくとも一方のコピーをクリップボードからペースト又は命令ペースト位置に移動させることを含み得る。一実施形態において、クリップボード動作のために、Ｗｉｎｄｏｗｓ（登録商標）のクリップボードの機能を使用可能である。一実施形態では、Ｗｉｎｄｏｗｓ（登録商標）の「プライベート」クリップボードの機能を使用可能である。
【００３２】
・１つの実施形態において、コピーコマンド及び／又はペーストコマンドはＧＵＩに表示可能であり、コマンドは、対応する動作を活性化して、選択した命令表現コピーセット及び／又は関連付けられた基礎にある選択した命令コピーセットを対象とするコピーセット修正動作を提供するように、ユーザによって選択可能及び／又は実行可能である。
【００３３】
・１つの実施形態において、編集インタフェース部は、選択した命令表現コピーセット及び／又は関連付けられた基礎にある選択した命令コピーセット及び／又はそれらを修正したものを対象としてコピーコマンドを選択及び／又は実行するように動作可能であり、その際に、ＧＵＩの編集インタフェース部において表現コピーセット及び／又は関連付けられた基礎にある選択した命令コピーセットを選択し、選択した命令表現コピーセット及び／又は関連付けられた基礎にある選択した命令コピーセットに対応するコピーコマンドを少なくとも含むメニューを表示するようにＧＵＩを動作させ、表示されたメニューにおいてコピーコマンドを選択する。
【００３４】
・１つの実施形態において、編集インタフェース部は、選択した命令表現コピーセット及び／又は関連付けられた基礎にある選択した命令コピーセット及び／又はそれらを修正したものを対象としてペーストコマンドを選択及び／又は実行するように動作可能であり、その際に、カーソル又はＧＵＩの他の編集位置インジケータをパートプログラム表現内のペースト位置に位置決めし、選択した命令表現コピーセット及び／又は関連付けられた基礎にある選択した命令コピーセット又はそれらを修正したものに対応するペーストコマンドを少なくとも含むメニューをクリップボード上に表示するようにＧＵＩを動作させ、表示されたメニューにおいてペーストコマンドを選択する。
【００３５】
・プログラム及びルーチンにおいて一般的であるように、「コピー」コマンドに関連付けられたものと「ペースト」コマンドに関連付けられたものとの間での様々な動作の分割は、様々な実施形態において様々な形態をとるように変動し得る。そのような様々な形態は、本明細書に開示する及び／又は本明細書に特許請求される特徴を提供するように動作可能であるならば、本明細書に開示する教示に基づいて当業者によって到達されるいかなる形態であってもよい。
【００３６】
・１つの実施形態において、「表現」（例えばパートプログラム表現（複数の表現））は、マークアップ言語で書かれた基礎にある機械実行可能コード命令と、ＧＵＩ上に表示される、対応した基礎にあるコード命令に関連付けられた編集可能命令表現と、を含むものと見なされるように解釈され得る。一実施形態において、この解釈を行い得る理由は、例えば以前に生成し記憶したパートプログラムを再び呼び出してその表現をＧＵＩに表示する場合に、基礎にある機械実行可能コード命令から表現を生成可能であるからである。
【００３７】
・基礎にある機械実行可能コード命令は、マークアップ言語で書くことができる。マークアップ言語は、カスタムの「ＸＭＬと同様の」又は「ＨＴＭＬと同様の」言語とすればよい。
【００３８】
・１つの実施形態において、本明細書に開示するコピーアンドペースト動作に関連した方法は、以下のステップの１つ以上を含み得る。
〇表示されたパートプログラム表現内のコピー位置で少なくとも第１の命令表現を選択して、基礎にある選択した命令コピーセットに関連付けられた選択した命令表現コピーセットを定義するステップ。
〇選択した命令表現コピーセット又は基礎にある選択した命令コピーセットの少なくとも一方のコピーを生成するコピー動作を開始するようにＧＵＩを動作させるステップ（例えば選択した命令表現コピーセットを対象とするコピーコマンドウィジェットを活性化することによって）。
〇コピー動作を自動的に実行して、選択した命令表現コピーセット又は選択した命令コピーセットの少なくとも一方を対象とするコピーセット修正動作の第１のサブセットを実行するステップ（例えばコピーセット修正動作の第１のサブセットは、コピー位置での第１の動作コンテキストに特定的な要素を対象とすることができ、例えば、関連付けられた代理データ及び／又はそのコピーセット（複数のコピーセット）との関連付けを排除すること及び／又は新しいか又は変更した一意のノード識別子を提供すること等を含み得る）。部分的に修正したコピーセット（複数のコピーセット）はクリップボード上に記憶することができる。
〇表示されたパートプログラム表現において、選択した命令表現セットをペーストするペースト位置を定義するステップであって、ペースト位置が、基礎にあるパートプログラム内の命令ペースト位置に関連付けられている、ステップ。
〇選択した命令表現コピーセット又は基礎にある選択した命令コピーセットの部分的に修正したものの少なくとも一方を対象とするペースト動作を開始するようにＧＵＩを動作させるステップ（例えばペースト位置を対象とするペーストコマンドウィジェットを活性化することによって）。
〇ペースト動作を自動的に実行して、選択した命令表現コピーセット又は選択した命令コピーセットの少なくとも一方の部分的に修正したものを対象とするコピーセット修正動作の第２のサブセットを実行するステップ。例えば、コピーセット修正動作の第２のサブセットは、ペースト位置での動作コンテキストに特定的な要素を対象とすることができ、以下のａ）からｃ）のうち少なくとも１つを含む、ａ）ペースト位置動作コンテキストと不適合である選択した命令表現コピーセットの要素及び関連付けを修正すること、ｂ）ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを選択した命令表現コピーセットに追加すること（例えば、ａ又はｂは、新しいか又は変更された機能の名前等を適正なフォーマットで与えることができる）、及びｃ）以下のｃ１）又はｃ２）の少なくとも一方を含む動作によって形成された、修正済みの選択した命令コピーセットに基づいて、修正済みの選択した命令表現コピーセットを形成すること、ｃ１）命令ペースト位置動作コンテキストと不適合である選択した命令コピーセットの要素及び関連付けを修正すること、もしくはｃ２）命令ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを、選択した命令コピーセットに追加すること。部分的に修正したコピーセット（複数のコピーセット）は、クリップボードから自動的に検索することができ、コピーセット修正動作の第２のサブセットを実行して、（完全に）修正済みの選択した命令表現コピーセット及び／又は（完全に）修正済みの選択した命令コピーセットを生成する。
〇パートプログラム表現内のペースト位置に修正済みの選択した命令表現コピーセットをペーストする、及び／又は基礎にあるパートプログラム内の命令ペースト位置に修正済みの選択した命令表現コピーセットをペーストするペースト動作を自動的に実行するステップ。
〇ペーストされた修正済みの選択した命令表現コピーセットが、以前に実行された可能性のある位置からコピーされたにもかかわらず、新たに生成されたか又は挿入された「新しい命令」のものと同様のステータスを有することを示す編集インタフェースＧＵＩの動作を自動的に実行するステップ。
【００３９】
・１つの実施形態において、コピー動作は、選択した命令表現コピーセットに含まれる少なくとも１つの親ノードを自動的に展開して、選択した命令表現コピーセットに含まれるその子ノードの全てを表示することを含む。選択した命令表現コピーセットに含まれるノードは、それらの展開を示すように、ＧＵＩにおいて強調表示され得る。いくつかの実施形態では、選択した命令表現コピーセット内の全てのノードを表示する。一実施形態では、これは、コピーコマンドウィジェットが選択されているか又は「重ねられている（ｈｏｖｅｒｅｄ  ｏｖｅｒ）」が、実行される前に行われる。
【００４０】
・１つの実施形態において、ペースト動作は、ペーストされた修正済みの選択した命令表現コピーセットに含まれる少なくとも１つの親ノードを自動的に展開して、修正済みの選択した命令表現コピーセットに含まれるその子ノードの全てを表示することを含む。ペーストされた修正済みの選択した命令表現コピーセットに含まれるノードは、それらの展開を示すように、ＧＵＩにおいて強調表示され得る。いくつかの実施形態では、ペーストされた修正済みの選択した命令表現コピーセット内の全てのノードを表示する。一実施形態では、これは、ペーストコピーコマンドウィジェットが選択されているか又は「重ねられている」が実行される前に行われる。
【図面の簡単な説明】
【００４１】
【図１】汎用の精密マシンビジョン検査システムの様々な典型的な構成要素を示す図である。
【図２Ａ】図１５のものと同様のマシンビジョン検査システムの制御システム部及びビジョン構成要素部のブロック図であり、本発明による様々な実施形態において使用可能なモジュール及び機能を含む。
【図２Ｂ】図１５のものと同様のマシンビジョン検査システムの制御システム部及びビジョン構成要素部のブロック図であり、本発明による様々な実施形態において使用可能なモジュール及び機能を含む。
【図３Ａ】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図３Ｂ】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図４】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図５】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図６】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図７Ａ】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図７Ｂ】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図８】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図９】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１０】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１１】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１２】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１３Ａ】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１３Ｂ】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１４】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１５】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１６】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１７】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１８】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図１９】本明細書に開示する原理によるコピーアンドペースト動作の一実施形態の表現を含む編集インタフェース又はＧＵＩ、並びに編集中にユーザを支援するように構成された様々なウィンドウ、メニュー、及びツールバーを含む図である。
【図２０Ａ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２０Ｂ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２０Ｃ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２０Ｄ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２０Ｅ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２０Ｆ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２０Ｇ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２０Ｈ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２１】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２２Ａ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２２Ｂ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２２Ｃ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２３Ａ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２３Ｂ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２３Ｃ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２４Ａ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２４Ｂ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２４Ｃ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２４Ｄ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２４Ｅ】図３Ａから図１９に表したシーケンス動作に示す様々な状態及び／又は動作シーケンスに対応する、マークアップ言語で書かれたパートプログラムコード命令又はその部分の図である。
【図２５Ａ】本明細書に開示する原理による、マシンビジョン検査システムにおいてパートプログラムを編集する場合にマシンビジョンパートプログラム動作セットをコピーアンドペーストするためのルーチンの一例を示すフロー図を表す。
【図２５Ｂ】本明細書に開示する原理による、マシンビジョン検査システムにおいてパートプログラムを編集する場合にマシンビジョンパートプログラム動作セットをコピーアンドペーストするためのルーチンの一例を示すフロー図を表す。
【発明を実施するための形態】
【００４２】
本明細書に開示する記載及び／又は図面に関して、ハードウェア及びソフトウェア構成要素並びにそれらの対応する動作、ＧＵＩ機能及びそれらの対応する動作等を含めて、図面に示す多くの特徴は、図１における実質的に同様の対応部分の記載に基づいて理解することができる。図１は、本発明の様々な実施形態において使用可能である１つの例示的なマシンビジョン検査システム１０の図である。マシンビジョン検査システム１０は画像測定機１２を含み、これは、データ及び制御信号を制御コンピュータシステム１４と交換可能なように接続されている。制御コンピュータシステム１４は更に、データ及び制御信号を、モニタ又はディスプレイ１６、プリンタ１８、ジョイスティック２２、キーボード２４、及びマウス２６と交換可能なように接続されている。本発明の様々な実施形態に従って、モニタ又はディスプレイ１６は、マシンビジョン検査システム１０の動作の制御及び／又はプログラミングに適切なユーザインタフェースを表示することができる。これは例えば、ステップアンドリピート命令を含むパートプログラムを生成及び編集するためのＧＵＩであり、プログラム生成及び編集動作の一部としてカットアンドペースト動作の実行が含まれる。
【００４３】
画像測定機１２は、可動ワークピースステージ３２と、ズームレンズ又は交換可能レンズを含み得る光学撮像システム３４と、を含む。ズームレンズ又は交換可能レンズは一般に、光学撮像システム３４によって得られる画像に様々な倍率を与える。マシンビジョン検査システム１０は一般に、上述のＱＵＩＣＫ  ＶＩＳＩＯＮ（登録商標）シリーズのビジョンシステム及びＱＶＰＡＫ（登録商標）ソフトウェアや、同様の最新技術を用いた市販の精密マシンビジョン検査システムと類似のものである。また、マシンビジョン検査システム１０は、本発明の譲受人に譲渡された米国特許第７，４５４，０５３号、第７，３２４，６８２号、第８，１１１，９３８号、及び第８，１１１，９０５号に記載されている。これらの各々は、援用により本願にも含まれるものとする。
【００４４】
図２Ａ及び図２Ｂは、図１のマシンビジョン検査システム１０と同様のマシンビジョン検査システム１００の制御システム部１２０及びビジョン構成要素部２００のブロック図である。制御システム部１２０は、本発明に従った様々な実施形態において使用可能な機能を含む。制御システム部１２０を用いてビジョン構成要素部２００を制御する。図２Ａに示すように、ビジョン構成要素部２００は、光学アセンブリ部２０５と、光源２２０、２３０、及び２４０と、中央の透明部２１２を有するワークピースステージ２１０と、を含む。ワークピースステージ２１０は、ワークピース２０を位置決めすることができるステージの表面に対して概ね平行な面内にあるＸ軸及びＹ軸に沿って制御可能に移動させることができる。光学アセンブリ部２０５は、カメラシステム２６０及び交換可能対物レンズ２５０を含み、レンズ２８６及び２８８を有するターレットレンズアセンブリ２８０も含む場合がある。ターレットレンズアセンブリの代わりに、固定もしくは手作業で交換可能な倍率可変レンズ、又はズームレンズ構成等を含むことも可能である。光学アセンブリ部２０５は、制御可能モータ２９４を用いることで、Ｘ軸及びＹ軸に概ね直交するＺ軸に沿って制御可能に移動させることができる。
【００４５】
ワークピースステージ２１０上に、マシンビジョン検査システム１００を用いて撮像されるワークピース２０、又は複数のワークピース２０を保持しているトレイもしくは固定具が配置されている。ワークピースステージ２１０は、光学アセンブリ部２０５に対して移動するように制御することができ、交換可能対物レンズ２５０がワークピース２０上及び／又は複数のワークピース２０間の位置で移動するようになっている。透過照明光２２０、落射照明光２３０、及び斜め照明光２４０の１つ以上が、それぞれソース光２２２、２３２、又は２４２を発して、ワークピース又は複数のワークピース２０を照明することができる。ソース光は、ワークピース光２５５として反射又は透過され、これは交換可能対物レンズ２５０及びターレットレンズアセンブリ２８０を通過して、カメラシステム２６０によって集光される。カメラシステム２６０によりキャプチャされたワークピース（複数のワークピース）２０の画像は、制御システム部１２０への信号ライン２６２に出力される。光源２２０、２３０、及び２４０は、それぞれ信号ライン又はバス２２１、２３１、及び２４１を介して制御システム部１２０に接続することができる。画像の倍率を変更するため、制御システム部１２０は、信号ライン又はバス２８１を介してターレットレンズアセンブリ２８０を軸２８４に沿って回転させて、ターレットレンズを選択することができる。
【００４６】
様々な例示的な実施形態において、光学アセンブリ部２０５は、制御可能モータ２９４を用いて、ワークピース２１０に対して垂直なＺ軸方向に移動可能である。制御可能モータ２９４は、アクチュエータ、接続ケーブル等を駆動して、光学アセンブリ部２０５をＺ軸に沿って動かすことで、カメラシステム２６０によりキャプチャされるワークピース２０の画像の焦点を変更する。本明細書において用いる場合、Ｚ軸という言葉は、光学アセンブリ部２０５によって得られる画像のピントを合わせるために用いることが意図される軸のことを指す。制御可能モータ２９４は、使用される場合、信号ライン２９６を介して入出力インタフェース１３０に接続される。
【００４７】
図２Ａに示すように、様々な例示的な実施形態において、制御システム部１２０は、コントローラ１２５、電源部１２８、入出力インタフェース１３０、メモリ１４０、ワークピースプログラム（パートプログラム）発生器及び実行器１５０、レコーダ変換器１５５、学習モード実行器１５６、実行モード実行器１５７、編集部１６０、代理データマネージャ１８０、プログラムステータスマネージャ１８５、ノードマネージャ１９０、オートスクロールマネージャ１９５、及びコピーアンドペーストマネージャ１６９を含む。これらの構成要素及び以下に記載する追加の構成要素の各々は、１つ以上のデータ／制御バス及び／又はアプリケーションプログラミングインタフェースによって、又は様々な要素間の直接接続によって、相互接続することができる。当業者によって認められようが、各実施に応じて、これらの構成要素はいずれもマージすること、多数の副構成要素（ｓｕｂ−ｃｏｍｐｏｎｅｎｔ）から成ること、又は副構成要素のいずれもマージすることが可能である。
【００４８】
入出力インタフェース１３０は、撮像制御インタフェース１３１、移動制御インタフェース１３２、照明制御インタフェース１３３、及びレンズ制御インタフェース１３４を含む。移動制御インタフェース１３２は、位置制御要素１３２ａ及び速度／加速度制御要素１３２ｂを含み得るが、そのような要素はマージされる及び／又は区別できない場合もある。照明制御インタフェース１３３は、マシンビジョン検査システム１００の様々な対応する光源について、例えば選択、パワー（強度）、オン／オフ切り換え、及びストロボパルスタイミングを適用可能な場合に制御する。
【００４９】
メモリ１４０は、画像ファイルメモリ部１４１、１つ以上のパートプログラム１４２ＰＰ等を含み得るワークピースプログラムメモリ部１４２、ビデオツール部１４３、及び、図示する実施形態では代理データ１４４ＳＤを含み得る代理データメモリ部１４４を含む。ビデオツール部１４３は、各々が特定の機能を実行するように定義されたＧＵＩ及び画像処理動作を含む様々なビデオツール（まとめて１４３ａとする）を含む。ツールは例えば、エッジ／境界検出ツール、自動焦点ツール、形状又はパターンマッチングツール、及び寸法測定ツールである。多くの既知のビデオツールが、上述のＱＵＩＣＫ  ＶＩＳＩＯＮ（登録商標）シリーズのビジョンシステム及び関連するＱＶＰＡＫ（登録商標）ソフトウェア等、市販のマシンビジョン検査システムに含まれている。ビデオツール部１４３は、関心領域（ＲＯＩ：ｒｅｇｉｏｎ  ｏｆ  ｉｎｔｅｒｅｓｔ）発生器１４３ｘも含み、これは、ビデオツール部１４３に含まれる様々なビデオツールにおいて動作可能である様々なＲＯＩを定義する自動、半自動、及び／又は手動の動作をサポートする。
【００５０】
代理データメモリ部１４４は代理データ１４４ＳＤを含む。いくつかの実施形態によれば、パートプログラムを編集する場合、プログラム内のある位置における編集の継続に必要な動作コンテキストを生成するためにパートプログラムのステップ全てを最初から実行することは要求されず、以前にセーブしたデータを代理データとして用いて（ハードウェア設定とソフトウェアのパラメータ及び値との双方の点で）必要な動作コンテキストをシミュレートすることができる。これは先に言及した２３２号出願に記載されている。
【００５１】
一般に、メモリ部１４０は、所望の画像特性を有するワークピース２０の画像をキャプチャ又は取得するようにビジョンシステム構成要素部２００を動作させるために使用可能なデータを記憶する。メモリ部１４０は、検査結果データも記憶することができ、また、取得した画像に対して手作業で又は自動で様々な検査及び測定動作を実行する（例えば部分的にビデオツールとして実施される）ように、更にその測定結果を入出力インタフェース１３０を介して出力するように、マシンビジョン検査システム１００を動作させるために使用可能なデータも記憶することができる。また、メモリ部１４０は、入出力インタフェース１３０を介して動作可能なユーザインタフェースを定義するデータも収容することができる。
【００５２】
透過照明光２２０、落射照明光２３０、及び斜め照明光２４０のそれぞれの信号ライン又はバス２２１、２３１、及び２４１は全て、入出力インタフェース１３０に接続されている。カメラシステム２６０からの信号ライン２６２及び制御可能モータ２９４からの信号ライン２９６は、入出力インタフェース１３０に接続されている。信号ライン２６２は、画像データの伝達に加えて、画像の取得を開始するコントローラ１２５からの信号を伝達することができる。
【００５３】
１つ以上のディスプレイデバイス１３６（例えば図１のディスプレイ１６）及び１つ以上の入力デバイス１３８（例えば図１のジョイスティック２２、キーボード２４、及びマウス２６）も、入出力インタフェース１３０に接続することができる。ディスプレイデバイス１３６及び入力デバイス１３８を用いて、様々なユーザインタフェース機能を含み得るユーザインタフェースを表示することができる。それらのユーザインタフェース機能は、検査動作の実行、プログラム生成及び／又は編集プロセスの一部としてのカットアンドペースト動作の実行を含むパートプログラムの生成及び／又は編集（修正）、カメラシステム２６０によってキャプチャされた画像の閲覧、及び／又はビジョンシステム構成要素部２００の直接制御のために使用可能である。特に、本発明の様々な例示的な実施形態によれば、ディスプレイデバイス１３６及び入力デバイス１３８を用いて提示する様々なユーザインタフェース要素は、マシンビジョン検査システム１００におけるカットアンドペースト動作を含むパートプログラムの迅速、高効率、直観的、柔軟かつロバストな編集を可能とするために用いられ得る。
【００５４】
ワークピース発生器及び実行器１５０、レコーダ変換器１５５、学習モード実行器１５６、実行モード実行器１５７、編集部１６０、代理データマネージャ１８０、プログラムステータスマネージャ１８５、ノードマネージャ１９０、オートスクロールマネージャ１９５、及びコピーアンドペーストマネージャ１６９は全て、一実施形態において、コントローラ１２５にリンクされている一般マシンコントローラブロックＭＣの一部と見なすことができる。ワークピースプログラム発生器及び実行器１５０は、パートプログラムの生成及び編集を担っている。「ワークピースプログラム」及び「パートプログラム」という言葉は、本明細書において交換可能に使用され得ることは認められよう。ワークピースプログラム発生器及び実行器１５０の動作に基づき、ユーザはマシンビジョン検査システム１００を用いてワークピース２０のためのパートプログラムを生成するが、その際には、ワークピースプログラミング言語を用いて命令を自動的に、半自動的に、又は手作業で明示的に符号化するか、及び／又は、マシンビジョン検査システム１００を学習モードで動作させて（例えば学習モード実行器１５６により制御されて）所望の画像取得訓練シーケンスを提供することで命令を生成する。例えば訓練シーケンスは、ワークピース要素を視野（ＦＯＶ）に位置決めし、光レベルを設定し、合焦又は自動合焦を行い、画像を取得し、（例えばビデオツールを用いて）画像に適用される検査訓練シーケンスを提供することを含み得る。学習モードの動作では、「学習された」動作シーケンス（複数のシーケンス）が記録されて、対応するパートプログラムステップ（すなわち命令）に変換されるようになっている。これらのパートプログラムステップは、パートプログラムが実行モードで（例えば実行モード実行器１５７により制御されて）実行された場合に、マシンビジョン検査システム１００に、訓練した画像取得及び検査動作を再生させて、パートプログラムの生成時に用いたワークピースに合致するワークピース又は複数のワークピースを自動的に検査する。
【００５５】
レコーダ変換器１５５は、マシン動作をパートプログラムコードに変換するために用いられる。換言すると、ユーザがあるアクション（例えばワークピース上の要素の測定に用いられるビデオツールを手作業で変更する等）を実行すると、基本的な命令を生成し、これが機械読み取り可能言語に変換されてパートプログラムを形成する。逆の変換も実行可能である。以下で更に詳しく説明するように、本発明の様々な実施形態においては、編集可能な命令表現が編集ＧＵ上に表示され、これらの命令表現は、例えばマークアップタイプの言語で書かれた機械読み取り可能コード命令を指し示す。レコーダ変換器１５５は、編集可能な命令表現とそれらが対応するコード命令との間の変換を実行することができる。編集部１６０は、パートプログラムの編集に関連した様々な動作及びユーザインタフェース機能を提供又は活性化する。これについては図２Ｂを参照して以下で更に詳しく説明する。
【００５６】
いくつかの実施形態において、代理データマネージャ１８０は、パートプログラムに記録することができる代理データにリンクする。特定の実施において、代理データマネージャ１８０は、正常に生成される場合に出力から代理データを取得すること、及び代理データをパートプログラムに書き込むために提供することを担っている。代理データが利用可能となり得るパートプログラム内のポイントは、代理データを用いて、そのポイントでの編集のために適正な動作コンテキストを設定することができる。これは、適正な動作コンテキストを提供するためにそのポイントまで実際にパートプログラムを実行して実際のデータを収集しなければならないこととは対照的である。プログラムステータスマネージャ１８５は、一実施形態において、プログラムを保護するか又は保護しないかを管理する。１つの例示的な実施形態では、保護されるプログラムは編集プロセスが完了しているプログラムであり、例えば工場において実行モードで利用可能なもの等である。１つの実施においては、保護されないパートプログラムは、編集のために正しい動作コンテキストを生成させる際に用いられる記憶された代理データを含み得る。また、プログラムステータスマネージャ１８５は、パートプログラムが保護されていない場合に代理データがパートプログラムに記録されたままであることを保証するように機能し、パートプログラムが編集部１６０によって再び呼び出された場合に代理データは利用可能であると示される。
【００５７】
一実施形態において、ノードマネージャ１９０は、パートプログラム内のノードに割り当てられたノード番号の管理を担っている。ある実施では、１つのパートプログラムの表現内で、命令表現の各々にノード番号を割り当てる。特定の実施においては、親ノード及び子ノードを含む組織ツリー構造を用いることができる。特定の実施では、レコーダ変換器１５５が生成したパートプログラム表現の全ての行に、ノードマネージャ１９０によってノード番号が割り当てられる。オートスクロールマネージャ１９５は、ノードマネージャ１９０が割り当てたノード番号を用いて、関連付けられたパートプログラム要素の関連要素と対応する編集機能とを同時に異なるウィンドウに表示する。例えば、ワークピースのどの測定値がパートプログラムのどの命令表現及び／又はどの符号化命令に関連しているかをユーザが見てわかるように、オートスクロールマネージャ１９５は、各ウィンドウにおいて、関連ノード番号に対応するパートプログラム表現及び／又は符号化命令の関連する行に自動的にスクロールすることができる。
【００５８】
コピーアンドペーストマネージャ１６９は、コピーアンドペーストプログラミング要素命令の生成／発生等を担っている。これは、先の「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションの記載に対応し、ワークピースプログラムの部分を編集／形成するために使用可能である。また、コピーアンドペーストマネージャ１６９は、ＧＵＩの編集インタフェース部に、コピーアンドペーストした要素の編集可能表現を提供することができる。そのために、コピーアンドペーストマネージャ１６９は、ワークピースプログラム発生器及び実行器１５０、レコーダ変換器１５５、編集部１６０、代理データマネージャ１８０、プログラムステータスマネージャ１８５、及びオートスクロールマネージャ１９５によって提供される機能、動作、及びユーザインタフェース機能のいずれにもアクセスし使用することができる。コピーアンドペーストマネージャ１６９には代替的な構成も可能である。例えばいくつかの実施形態において、コピーアンドペーストマネージャ１６９と、ワークピースプログラム発生器及び実行器１５０、レコーダ変換器１５５、編集部１６０、代理データマネージャ１８０、プログラムステータスマネージャ１８５、又はオートスクロールマネージャ１９５の１つ以上とは、マージされる及び／又は区別できない場合もある。一般に、本発明は、マシンビジョン検査システム１００と連携して動作可能である現在知られている形態又は後に開発される形態で実施して、本明細書に開示するユーザインタフェース機能並びに関連するプログラミング及び他の動作を提供することができる。
【００５９】
図２Ｂは、図２Ａの編集部１６０の追加構成要素を示す。図２Ｂに示すように、編集部１６０は、編集動作コントローラ１７４、編集ユーザインタフェース部１７６、エディタコマンド部１７７、及び編集実行部１７８を含む。編集動作コントローラ１７４は編集機能のための動作を制御し、編集ユーザインタフェース部１７６は編集機能のためのユーザインタフェース機能を提供する。編集ユーザインタフェース部１７６は、プログラム命令表現ウィンドウ１７６ｐｉを含み、これは表現ユーザインタフェース機能１７６ｒを含み、これはノードユーザインタフェース機能１７６ｎを含む。プログラム命令表現ウィンドウ１７６ｐｉは、コピーされた命令のソース及びコピーアンドペーストマネージャ１６９が生成したペーストされた命令を含んだパートプログラム命令の編集可能表現を含むパートプログラム表現を与える。これについては、先に記載し図３Ａ〜図１９に示す「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションに記載されている。一実施形態においては、コピーアンドペーストマネージャ１６９により生成された命令のグラフィック表現を、各々が１つ以上の子ノードを含む親ノードを含むツリー構造において提供することができる。表現ユーザインタフェース機能１７６ｒは、ユーザが多数の編集オプションから選択を行うための様々なプルダウンメニューや、コピーアンドペーストマネージャ１６９により生成された命令等を含む様々な命令を生成及び編集するためにユーザが選択して開くことができる様々なビデオツールを含むツールバー等の機能を提供する。ノードユーザインタフェース機能１７６Ｎは、一実施形態において、特定の命令又は命令ブロックに対応するノードが現在編集されているか又はすでに編集されたこと等を示すためのアイコン及び色による強調表示等の機能を含むことができる。これは、例えば２３２号出願及び０６１号出願、及び図３Ａから図１９に開示されている。
【００６０】
様々な実施形態において、編集実行部１７８は、学習モードにおける編集プロセス中の様々な編集実行モードを担っており、これは、実行モード（ｒｕｎ  ｍｏｄｅ）における実行（ｅｘｅｃｕｔｉｏｎ）の実行モード（ｒｕｎ  ｍｏｄｅ）とは異なる実行（ｅｘｅｃｕｔｉｏｎ）の編集モードを含む。一般に、実行の実行モードは、パートプログラムを最初から実行して、ワークピースの撮像から得られる実際のデータを取得及び処理する（例えば検査及び解析する）。一方、様々な実施形態における実行の編集モードは、実際のデータの少なくとも一部を以前に記録した「代理データ」で置き換えるように動作可能であり、この代理データを用いてパートプログラムの所望のポイントで実行が開始できるようにする。これは、実際のデータを取得するためにパートプログラムを最初から開始しなければならないこととは対照的である。すなわち、様々な実施形態における実行の編集モードは、パートプログラムのいずれかの部分の編集のために必要な正しい動作コンテキストを効率的に生成することができる。マシンビジョン検査システムのためのパートプログラムの編集は、マシンツール又はアセンブリロボット等のためのプログラムの編集よりも複雑なタスクであることに留意すべきである。例えば、マシンビジョン検査システムのためのパートプログラムが含む後の方の（後続の）部分は、動作を制御する及び／又は画像に依存した測定結果を提供するが、これらは少なくとも部分的に、プログラムの前の方の部分の実行によって達成／取得された結果、及び／又は解析のために撮像されているワークピースの特定のインスタンスに依存する。また、ビジョンシステムは典型的に、様々な機械的要素、電気的要素、及び光学的要素から成り、これらが複雑に相互作用することで撮像／解析動作を実行することに留意すべきである。このため、ステップアンドリピート命令を含むパートプログラムのいずれの部分の編集も、現実的な条件セットに基づいて正しい動作コンテキストで実行しなければならない、すなわち、ビジョンシステムの様々なハードウェア及びソフトウェア要素並びにパラメータを、その部分を編集するために適正に（現実的なデータに基づいて）セットしなければならない。パートプログラムの編集のために正しい動作コンテキストを達成する際の標準的な慣例は、ビジョンシステムに、パートプログラムの全ての命令を最初から、及び／又は編集対象の命令部分までを含めて実際に実行させることであるが、これは時間がかかり、無駄が多く、大きいパートプログラムでは非現実的である場合がある。「代理データ」の使用に基づいて、編集対象のパートプログラムの特定ノードのために正しい動作コンテキストを生成することができるビジョンシステム編集環境を提供する１つの解決策は、２３２号出願及び０６１号出願に開示されている。
【００６１】
いくつかの実施形態において、編集実行部１７８は、代理モード部１８０、実モード部１９１、及び編集実行ユーザインタフェース機能部１９２を含む。代理モード部１８０はノード解析器１８１を含み、これは代理データ動作１８１ａ及びマシン動作１８１ｂを含む。代理モード部１８０が代理実行モードを動作させる場合、継続的な編集動作のための動作コンテキストを生成するために代理データが用いられる。１つの実施におけるノード解析器１８１は、パートプログラムの実行がターゲットノード（例えばパートプログラム内で修正を行う箇所）に到達したか否かを判定する。ノード解析器１８１は、関与するノードのタイプに従って、代理データ動作１８１Ａ又は実マシン動作１８１Ｂのどちらを実行するかを判定する。一般に、いったんターゲットノードに到達したら、実マシン動作が実行される。これに対して、ターゲットノードよりも前のパートプログラム命令では、継続的な編集動作に必要な動作コンテキストの少なくとも一部を生成するために、代理データ動作が利用され得る。代理データが存在しない場合、必要な動作コンテキストを生成するために実マシン動作を可能とする／実行することをユーザに促すことができる。１つの実施においては、各ノードを解析して、代理データが存在するか否を含めて代理データ動作が適用可能であるか、代理データ動作のために正しいノードタイプであるか、又は実マシン動作を利用する必要があるか等を判定する。例えばパートプログラム内のいくつかのノードにおいては、代理データで置き換えることができない実データを取得するために、ワークピースステージや撮像部を実際に動かす等の実マシン動作が必要である場合がある。
【００６２】
実モード部１９１は、以前のマシンビジョンシステムによって従来実行されている動作を含む。実モード部１９１は、適宜、マシン動作１８１ｂの実行のために代理モード部１８０によって呼び出され得ることは認められよう。実モード部１９１は、マシン動作１９１ａ及びデータ動作１９１ｂを含む。マシン動作１９１ａは実マシン動作を実行し（例えばビデオツール動作の一部としてステージを動かす）、データ動作１９１ｂは一般にデータを出力する。編集実行ユーザインタフェース機能１９２は、編集機能を実行するためのユーザインタフェース機能を提供する（例えば、パートプログラムのどの部分が代理データを用いたか、又は実際の実行（ｅｘｅｃｕｔｉｏｎ）により実行（ｒｕｎ）されたか等を示す色分け等、様々な実行動作のステータスについての指示）。様々な実施形態において、そのような機能は、２３２号出願及び０６１号出願に開示されたように実施することができる。
【００６３】
エディタコマンド１７７は、実行セグメント部１７７ａ、修正部１７７ｂ、挿入／添付部１７７ｃ、コピーコマンド１７７ｄ、及びペーストコマンド１７７ｅを含む。コピーアンドペーストコマンドは、コピーアンドペーストマネージャ１６９の各動作、及び／又は、先の「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションに概説したような様々なコピーアンドペースト動作及び方法を活性化することができる。上述のように、様々な実施形態において、コピーアンドペーストマネージャ１６９は、編集動作コントローラ１７４、編集ＵＩ部１７６、編集実行部１７８、及びエディタコマンド１７７を含む編集部１６０によって提供される機能（ｆｕｎｃｔｉｏｎｓ）及び機能（ｆｅａｔｕｒｅｓ）のいずれにもアクセスし使用することができる。
【００６４】
一般に、実行セグメント部１７７ａは、パートプログラムの選択されたセグメントの実際の実行（ｒｕｎ）を実行する。パートプログラムの選択されたセグメントを実行するために、選択されたセグメントまでの適正な動作コンテキストを確立しなければならないことは認められよう。適正な動作コンテキストは、代理データを利用することによって確立可能である。
【００６５】
修正部１７７ｂは、実行セグメント部１７７ａの動作とある程度の類似性を有する。一般に、パートプログラムにおける命令表現が修正（編集）のために選択された場合、この修正対象の命令よりも前のパートプログラムの部分に代理モードを用いることで、編集のために正しい動作コンテキストを生成することができる。一実施形態では、パートプログラムにおける命令表現に修正コマンドが選択された場合、その命令表現のノードがターゲットノードとして指定される。いったんターゲットノードに到達したら、エディタは代理モードから実際実行モードに切り換わり（例えば実モード部１９１により制御されて）、ターゲットノードの第１の関連パートプログラム命令を実行する。
【００６６】
図３Ａ及び図３Ｂは、ディスプレイデバイス１３６（例えば図１のディスプレイ１６）上に表示することができる、複数の初期パートプログラム命令表現を有するパートプログラムの表現を含んだ編集インタフェース３０１の図を含むユーザインタフェース画面の図である。編集インタフェースは、マシンビジョン検査システムのためのステップアンドリピート命令を含むパートプログラムをユーザが生成及び編集することを可能とする。また、編集インタフェースは、上部及び側部の選択バー等、様々な測定及び／又は動作選択バーも含む。図３Ｂは、ディスプレイデバイス１３６上に表示された画像インタフェースを示す。これは、ワークピースの（ビデオ）画像を表示する視野ウィンドウ３０２を含み、ここで図３Ａのパートプログラムを（編集インタフェース３０１において）実行することができる。マシンビジョンシステムは、ある実施では多数の個別のワークピースに対してパートプログラムを実行し、他の実施では単一のワークピースにおける多数のワークピース要素に対して、例えば表面に画定された多数の孔に対してパートプログラムを実行する。このため、「ワークピース」及び「ワークピース要素」という言葉は、特定の文脈において、本明細書では交換可能に使用され得る。画像インタフェースは、選択バー３０３Ａ、３０３Ｂ等の様々な測定及び／又は動作選択バーを含み、更に、ワークピースステージ上で撮像／解析されているワークピースのＸ−Ｙ−Ｚ位置を関連する座標系に示すリアルタイムＸ−Ｙ−Ｚ（位置）座標ウィンドウ３０４も含む。座標系は、測定のための基準を与え、典型的には、ワークピース座標系（例えば矩形ワークピースの１つのかどを原点として用いる）、又はワークピースステージの線形目盛により規定されるマシン座標系である。画像インタフェースは更に、照明制御ウィンドウ３０５も含む。
【００６７】
パートプログラム表現は、表面に画定された孔等、概ね円形のワークピース要素４１５の要素を決定するように設定される。一実施形態において、パートプログラム命令表現の各々にはノードが関連付けられ、ノード番号が割り当てられる（例えば２３２号出願及び０６１号出願に開示されているように）。特定の実施においてはツリー構造が用いられる。この場合、命令表現のいくつかに親ノードを関連付け、いくつかに子ノードを関連付ける。例えば、子ノード命令表現には、図３Ａから図１９のそれらの親ノード命令表現がそれぞれ関連付けられている。本明細書において用いる場合、編集インタフェース３０１（図３Ａ）上に表示されるようなプログラム命令表現の各々は、交換可能に「ノード」と呼んでもよい。また、一実施形態において、編集インタフェース上に表示されるような命令表現は、パートプログラムのマークアップ言語命令（コード命令）から導出されたアイコン及びラベルを含むことは認められよう。いくつかの実施形態において、パートプログラムのマークアップ言語は、カスタム化マークアップ言語コード等のＸＭＬと同様のコードを含み得る。このため、命令表現は、マシンによって実行可能である関連付けられたコード命令を「指し示す」か、又はそのようなコード命令との関連付けを有する。
【００６８】
図３Ａの編集インタフェース３０１に示すように、「プロローグ」ノードは、実行モードでパートプログラムを実行するために必要なプロセスを表し、典型的には学習モードに入った場合に生成される。「プロローグ」ノードは親ノードであり、例えば「光の設定」ノード及び「ステージの移動」ノードのような子ノードを含み得る。「光の設定」ノードは、どのタイプの照明をどの強度レベルで用いるかを規定し、これは、照明制御ウィンドウ３０５に含まれるスライディングバーを用いてユーザが容易に設定及び調節することができる。「ステージの移動」ノードは、様々な実施に従ってユーザにより手作業で設定されるように、ワークピースを保持するステージの位置を規定する。図１において、その後の命令／表現（「円の測定、円１」「原点を円１に合わせる」「円の測定、円２」「Ｘ軸を円２に合わせる」）は、図３Ｂの円形要素４１５の測定済みの要素にワークピース座標系を位置合わせすることによって座標系を設定するように動作する。従って、更に測定を実行する際には、これらの命令表現の動作により、関連する座標系においてワークピースの正しい位置及び向きが確立される。また、図３Ａは命令ポインタ３３２も示す。様々な実施形態において、命令ポインタ３３２は、表示されたパートプログラム表現内でのその位置に対応した編集コンテキストステータスに応じて色を変えることができる。すなわち、命令ポインタの色は、有効な編集コンテキスト又は不確かな（又は無効な）編集コンテキスト（例えばパートプログラム動作の有効かつ完全な実行又はシミュレーション）が、パートプログラム内でのその位置までの予想されるデータ及び動作条件を全て確立し終わったか否かを示すことができる。以下で更に説明するように、様々な実施形態において、本明細書に開示するように新たにペーストされた要素に関して、元のコピーセットが有効な編集コンテキストステータスに対応するコピー位置からコピーされたにもかかわらず、そのような新たにペーストされた要素（例えば修正済みの選択された命令表現コピーセット）が、新たに生成又は挿入された新しい命令と同様の編集コンテキストステータスに対応していることを、編集コンテキストステータスインジケータが控えめに自動的に示すことが有利であり得る。いくつかの例では、命令ポインタを挿入ポインタと称することができる。しかしながら、様々な実施形態において、挿入及びコピーアンドペースト位置等は、選択された及び／又は強調表示された命令表現に対して決定され、これは命令ポインタと必ずしも同じ位置ではない。
【００６９】
図４を参照すると、ユーザは、本発明の実施形態に従った様々なＧＵＩ機能を用いてステップアンドリピート命令を定義することができる。具体的には、ユーザが「プログラム」オプション３０６上にセレクタ（例えばカーソル）を置くと、「ステップアンドリピート」オプション３０８を含むプルダウンメニュー３０７を出すことができる。ユーザが「ステップアンドリピート」オプションを選ぶと、「配列」オプションを含む別のプルダウンメニューが表示される。ユーザは「配列」オプションを選んで、ステップアンドリピートプログラミング要素の命令の定義を開始することができる。これは例えば、援用により全体が本願にも含まれる米国特許第８，２７１，８９５号に開示されている。
【００７０】
図５を参照すると、図示する実施形態において、上述したようにユーザが「配列」オプションを選択すると、ディスプレイ画面に「ステップアンドリピートの配列」ウィンドウ３１０が現れて、配列の全体的な配置及び構造の定義をユーザに促すことができる。いくつかの実施形態では、ユーザは名前ボックスに配列の名前を入力することができる。図示する例では、ユーザは「ＭｙＬｏｏｐ（マイループ）」を入力している。ユーザは更に、第１のリピートボックスに、１つの軸（例えばＸ軸）に沿って生成するリピート数を定義し、「ＤＸ」ボックスに、同じ軸に沿ったリピート間の間隔の距離を定義する。同様にユーザは、第２のリピートボックスに、別の軸（例えばＹ軸）に沿って生成するリピート数を定義し、「ＤＹ」ボックスに、その軸に沿ったリピート間の間隔の距離を定義する。図示する例では、ユーザは、基本的なステップアンドリピート命令セットをＸ軸に沿って１．５８７５の間隔で４回繰り返すと共に、Ｙ軸に沿って１．５８７５の間隔で４回繰り返すことを定義している。これは、それぞれ〔Ｘ，Ｙ〕と符号を付けたアイコンによってグラフィックに表されている。ユーザは配列の位置の定義を終了すると、ＯＫボタンを選択して、定義した位置をセーブする。
【００７１】
図６は、先に概説したステップアンドリピートループ配列動作に関連したパートプログラム命令表現を含む編集インタフェース３０１を示す。ここで、パートプログラム命令表現は、「ループの終了」子ノード３１２を含む「ステップアンドリピートループ配列」ノード３１１を含む。
【００７２】
図７Ａは、先に「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションに概説したような動作を実行するコピーコマンド３１４の一実施形態に関連付けたパートプログラム命令表現を含む編集インタフェース３０１を示す。例えば、コピーコマンド３１４は、限定ではないが、以下のような動作例と関連付けて用いることができる。
・表示されたパートプログラム命令内のコピー位置で少なくとも第１の命令表現を選択して、基礎にある選択した命令コピーセットに関連付けられた選択した命令表現コピーセットを定義する。
・選択した命令表現コピーセット又は基礎にある選択した命令コピーセットの少なくとも一方のコピーを生成するコピー動作を開始するようにＧＵＩを動作させる（例えば選択した命令表現コピーセットを対象とするコピーコマンドウィジェット３１４を活性化させることによって）。
・コピー動作を自動的に実行して、選択した命令表現コピーセット又は選択した命令コピーセットの少なくとも一方を対象とするコピーセット修正動作の第１のサブセットを実行する（例えば、コピーセット修正動作の第１のサブセットは、コピー位置での動作コンテキストに特定的な要素を対象とし得る。これは、例えば、関連付けられた代理データ及び／又はそのコピーセット（複数のコピーセット）との関連付けを排除すること、及び／又は、新しいか又は変更した一意のノード識別子、機能の名前、トレランスの名前、ワーク座標系の名前、測定ポイントバッファの名前、表示された変数の名前等を提供すること、を含み得る）。部分的に修正したコピーセット（複数のコピーセット）はクリップボード上に記憶することができる。
【００７３】
図示する例では、ユーザは「円の測定、円２」表現を選択している。
【００７４】
図７Ｂは、図７Ａと同期させた「測定結果」３１６を含むウィンドウ又は枠のインタフェースステータスを示す。ここでは、選択した（コピーした）「円の測定、円２」に対応する測定結果３１８は、０６１号出願における開示と同様に、強調表示されている。一実施形態において、ＧＵＩの編集インタフェース部に表現を表示する場合、ユーザは、その表現を選択する（例えば編集インタフェースでその上にカーソルを置く）、及び／又は選択した表現上で右クリックすればよい。これにより、選択した表現を対象とする様々なオプション／選択肢を含むメニューウィンドウ３１５を出すことができる。これは例えば、本明細書に開示するような様々な動作を含むコピーコマンドの一実施形態である「コピー」コマンドオプション３１４等である。ユーザが「コピー」コマンドオプション３１４を選択及び／又は実行すると、制御システム部１２０（図２Ａを参照のこと）のコピーアンドペーストマネージャ１６９は、先に「コピーアンドペースト動作、機能、及び実施の概要」と対するセクションに概説したように、そのコマンドの動作を実行する。様々な実施形態において、コピーアンドペーストマネージャ１６９は、「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションに概説したように、要素の消去及び／又は修正を自動的に実行するそのコマンドの動作も実行して、選択してコピーした表現の位置における動作コンテキストに特定的な要素を排除する。様々な実施形態において、コピーアンドペーストマネージャ１６９は、選択してコピーした表現の基礎にあって後の時点でペーストするためにクリップボード上に置かれる命令の代理データコピーを排除するコマンドの動作を実行する。様々な実施形態において、コピーコマンド３１４は、図８に示すように、コピーした表現における折り畳まれた親ノードを自動的に展開してその子ノードを表示する。３２０に示すように、選択した「円の選択、円２」ノードの３つの子ノードの全てが表示される。図８は、コピー及び展開したノードを強調表示することも示す。
【００７５】
図９は、先に「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションで概説したような動作を実行するペーストコマンド３２２の一実施形態に関連付けられたパートプログラム命令表現を含む編集インタフェース３０１を示す。例えばペーストコマンド３２２は、限定ではないが、以下のような動作例と関連付けて用いることができる。
・表示されたパートプログラム表現において、選択した命令表現セットをペーストするペースト位置を定義する。このペースト位置は、基礎にあるパートプログラム内の命令ペースト位置に関連付けられている。
・選択した命令表現コピーセット又は基礎にある選択した命令コピーセットを部分的に修正したものの少なくとも一方を対象とするペースト動作を開始するようにＧＵＩを動作させる（例えばペースト位置を対象とするペーストコマンドウィジェット３２２を活性化させることによって）。
・ペースト動作を自動的に実行して、選択した命令表現コピーセット又は選択した命令コピーセットの少なくとも一方の部分的に修正したものを対象とするコピーセット修正動作の第２のサブセットを実行する。例えば、コピーセット修正動作の第２のサブセットは、ペースト位置での動作コンテキストに特定的な要素を対象とし得る。これは以下のａ）からｃ）のうち少なくとも１つを含む。ａ）ペースト位置動作コンテキストと不適合である選択した命令表現コピーセットの要素及び関連付けを修正すること、ｂ）ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを、選択した命令表現コピーセットに追加すること（例えば、ａ又はｂは、新しいか又は変更された機能の名前等を適正なフォーマットで与えることができる）、ｃ）以下のｃ１）又はｃ２）の少なくとも一方を含む動作によって形成した修正済みの選択した命令コピーセットに基づいて、修正済みの選択した命令表現コピーセットを形成すること。ｃ１）命令ペースト位置動作コンテキストと不適合である選択した命令コピーセットの要素及び関連付けを修正すること、ｃ２）命令ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを選択した命令コピーセットに追加すること。部分的に修正されたコピーセット（複数のコピーセット）は、クリップボードから自動的に検索することができ、コピーセット修正動作の第２のサブセットを実行して、（完全に）修正済みの選択した命令表現コピーセット及び／又は（完全に）修正済みの選択した命令コピーセットを生成する。
・パートプログラム表現内のペースト位置に修正済みの選択した命令表現コピーセットをペーストする、及び／又は基礎にあるパートプログラム内の命令ペースト位置に修正済みの選択した命令表現コピーセットをペーストするペースト動作を自動的に実行する。
【００７６】
図９に示す例において、ユーザは、ステップアンドリピートループ配列表現の下に（内側に）カーソル／挿入ポインタを位置決めしている（図示する例では「ループの終了」ノード３１２上）。一実施形態において、ユーザはこの後右クリックすればよい。これにより、選択した位置を対象とする様々なオプション／選択肢を含むメニューウィンドウ３２３を出すことができる。これは例えば、本明細書に開示するような様々な動作を含むペーストコマンドの一実施形態である「ペースト」コマンドオプション３２２等である。ユーザが「ペースト」コマンドオプション３２２を選択及び／又は実行すると、制御システム部１２０（図２Ａを参照のこと）のコピーアンドペーストマネージャ１６９は、先に「コピーアンドペースト動作、機能、及び実施の概要」と対するセクションに概説したように、そのコマンドの動作を実行する。様々な実施形態において、コピーアンドペーストマネージャ１６９は、「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションに概説したように、要素の追加及び／又は修正を自動的に実行するそのコマンドの動作も実行して、ペーストした表現の位置における動作コンテキストのために必要な要素を提供する。様々な実施形態において、コピーアンドペーストマネージャ１６９は、図１０に示すように、ペーストした表現を自動的に展開してその子ノードを表示するそのコマンドの動作を実行する。ここでは、コピーアンドペーストした「円の測定、円２」ノード３２０’が展開されて、その３つの子ノードが全て表示されている。また、図１０が示すコピー及び／又はペースト動作は、ペーストした表現における機能名を修正してコピーしたソースの表現における機能と区別すると共に、ペースト要素をペースト位置に適合させる動作を含む。この例では、３２０’の機能名「円の測定、円２＿１〔，〕」における追加のカッコ〔，〕によって、ペーストしたステップアンドリピートループにおける動作コンテキストと適合していることを示し／適合させ、機能名の「＿１（下線１）」によって、３２０のコピーしたソースの機能と区別する。
【００７７】
図１１は、ユーザがコピーした要素の別のペースト動作の開始を選択していることを示すが、この場合はステップアンドリピートループの外側である（例えば「パートプログラム終了」表現３２５が選択されており、ペースト動作は、「ループの終了」表現の下にあるその選択されたノードよりも前に発生する）。前述のように、一実施形態において、ユーザは挿入ポイントの選択後に右クリックすればよい。これにより、「ペースト」コマンドオプション３２２等、選択した位置を対象とする様々なオプション／選択肢を含むメニューウィンドウ３２３を出すことができる。ユーザが「ペースト」コマンドオプションを選択及び／又は実行すると、制御システム部１２０（図２Ａを参照のこと）のコピーアンドペーストマネージャ１６９は、先に「コピーアンドペースト動作、機能、及び実施の概要」と対するセクションに概説したように、そのコマンドの動作を実行する。様々な実施形態において、コピーアンドペーストマネージャ１６９は、「コピーアンドペースト動作、機能、及び実施の概要」と題するセクションに概説したように、要素の追加及び／又は修正を自動的に実行するそのコマンドの動作も実行して、ペーストした表現の位置における動作コンテキストに特定的な要素を提供する。様々な実施形態において、コピーアンドペーストマネージャ１６９は、図１２に示すように、ペーストした表現を自動的に展開してその子ノードを表示するそのコマンドの動作を実行する。ここでは、コピーアンドペーストした「円の測定、円２」ノード３２０’’の第２のインスタンスが展開されて、その３つの子ノード全てが表示されている。また、図１２が示すコピー及び／又はペースト動作は、ペーストした表現における機能名を修正して、コピーしたソースの表現３２０及び同様の機能名３２０’を含むコピーした要素の以前ペーストしたインスタンスにおける機能から区別すると共に、ペースト要素をペースト位置に適合させる動作を含む。この例では、３２０’’の機能名「円の測定、円２＿２」に追加カッコは存在しない。これは、コピーした要素３２０’の以前にペーストしたインスタンスとは異なるが、これは、カッコ〔，〕が、（例えば以前ペーストした）ステップアンドリピートループの外側の動作コンテキストと不適合であるからである。また、機能名３２０’’の「＿２（下線２）」によって、コピーしたソースの機能名３２０と、コピーした要素の以前ペーストしたインスタンスにおける機能名３２０’とから区別する。
【００７８】
図１３Ａは、ペーストされた「円ツール」３２７のコピーのいくつかの属性が、コピーしたソースの要素の値を保持していることを付随して示す。これは、コピーした要素３２０’’の第２のインスタンスに含まれるものとして「円ツール」３２７を定義する属性／パラメータのリスト３２９によって示されており、これが当てはまるのは、それらの要素がペースト位置と不適合でない（プログラミングの意味で）場合である。プログラミングの意味で「不適合である」とは、所望のパートプログラムの挙動に照らして「不適切である」のと同じでないことは認められよう。例えば、保持された属性（例えば円ツール位置パラメータ）は、ユーザがそれらを編集することを予想する（例えば図１３Ａの強調表示した「修正」コマンド３３０に示すように）という点で不適切であり得るが、それらは編集動作に対して意図しない影響を及ぼすか又は得られるパートプログラムに予想しないクラッシュ又は挙動を引き起こすという点で「不適合」ではない。おそらく、様々な実施形態において最も重要なのは、ペーストした表現又は基礎にある命令をパートプログラム及び／又は編集環境で動作させるために、ユーザがコンピュータ言語で書かれた基礎にある命令の編集を実行しなければならないという意味で、それらが不適合でないことである。コピー及び／又はペーストコマンドは、適合性のために必要なコンテキスト関連動作の全てを自動的に実行して、少なくともいくつかの実施形態において、ＧＵＩの編集部に（例えば編集インタフェース３０１に）及び／又は関連するＧＵＩウィンドウ及びメニューに表示されたパートプログラム表現のレベルで、ユーザがコピーアンドペースト動作を用いてパートプログラムを編集することを可能とする。いくつかの実施形態では、コピーアンドペーストコマンドが、コピー及び／又はペースト表現／命令の特定の場合にそのような動作を自動的に実行することができない場合、関連するエラーメッセージが表示される。図１３Ａでは、円の測定、円２＿２ノードの下にある選択した「円ツール」命令表現に関連して、「修正」コマンドが選択されている。修正のために利用可能な円ツールのパラメータは、属性／パラメータ枠３２９に表示されている。この特定の例では、ユーザは、「コピーした」パラメータ「走査間隔＝２０」及び「走査間隔の形式＝度」を修正して、走査間隔を「１」に、走査間隔の形式を「画素」にする。これについては以下で図１７及び１８に示す。
【００７９】
図１３Ｂは、図１３Ａと同期させた「測定結果」３１６を含むウィンドウ又は枠のインタフェースステータスを示す。ここでは、「測定結果」ウィンドウ３１６は、ソース「円の測定、円２」３２０及び第１のペーストしたインスタンス「円の測定、円２＿１〔１，１〕」３２０’の測定結果を示すが、図示する例において修正対象である第２のペーストしたインスタンス「円の測定、円２−２」３２０’’の測定結果は示していない。
【００８０】
図１４は、選択／強調表示した円ツール３２７をユーザ入力によって修正する準備において、パートプログラムのその位置で適正なマシン及び／又は編集動作コンテキストを確立しなければならないこと（例えば２３２号出願に開示されているように）を示し、必要な動作は、挿入ポインタ（及び編集コンテキストステータスインジケータ）３３２／３３２’の変化によって示されるように自動的に実行される（例えば２３２号出願に開示されているように）（図１３Ａでは有効かつ目に見えるのに対して、必要な動作の実行中は３３２’として表示されない（ｓｕｐｐｒｅｓｓｅｄ））。編集インタフェース３０１及び同期したメッセージボックス３３３におけるグレー表示された命令表現は、システムが適正なマシン動作コンテキストを確立するためにパートプログラムの少なくとも一部を解析中及び／又は実行中であることを示す。
【００８１】
図１５は、図１４の同期している動作の完了時におけるＧＵＩの状態を示す。この時点で、パートプログラムの修正（編集）のために有効な動作又は編集コンテキストが確立されている。
【００８２】
図１６は、先に図１３Ａから図１５において説明した動作の後に続く修正動作を反映している。「円ツール修正」ダイアログボックス３３５が現れるのは、ユーザが図１３Ａの「修正」コマンド３３０を選択し、先に示したように「コピーした」パラメータ「走査間隔＝２０」及び「走査間隔の形式＝度」を「１」の走査間隔及び「画素」の走査間隔形式に変更した後であることに留意すべきである。赤い「記録」ステータスインジケータ３３７は、マシンビジョン検査システムがパートプログラムの生成及び記録のための「記録」又は学習モードにあることを示すことに留意すべきである。「円ツール修正」ダイアログボックス３３５内の選択可能コマンドの１つである実行コマンド３３９は、まだ実行されていない。前述のパラメータ修正を有効にするため、円ツールを実行することができる。また、図１６は、「円の測定、円２＿１」［３，４］、［４，１］、［４，２］、［４，３］、［４，４］の第１のペーストしたインスタンスの「測定結果」３１６を含むインタフェースステータスを示す。これらは容易に上下にスクロールすることができる。
【００８３】
図１７は、実行コマンド３３９を実行して修正した円ツールを実行した後のＧＵＩを示す。修正した円ツールの実行の結果、「円ツール修正」ダイアログボックス３３５には、６３９のエッジ点が位置付けられていることが示され（３４０を参照のこと）、位置付けられたエッジ点は、ビデオ表示ウィンドウ（視野ウィンドウ）３０２のビデオツールの内側に示されている。
【００８４】
図１８は、修正した円ツールに実行コマンドを実行した結果として得られた更新済みパラメータを、属性／パラメータのリスト３２９に示す。これは、図１５にリスト化した円ツールの以前のパラメータと比べると、有効になった修正済みパラメータすなわち「１」の走査間隔及び「画素」の走査間隔形式の表示を含む。図１９は、図１８と同期させた「測定結果」３１６を含むウィンドウ又は枠のインタフェースステータスを示す。これに含まれる追加のダイアログボックス３４２を用いて、図１７に最もよく見られる検出エッジ点及び図１８に示す円測定結果及びパラメータを生成するように、ペースト及び修正された円ツールの結果及び構成を受容することができる（「完了」を押すことにより）。
【００８５】
図２０Ａから図２４Ｅは、マークアップ言語で書かれたコード命令の図であり、図３Ａから図１９に表すシーケンス動作に示した様々な状態及び／又は動作シーケンスに対応する。状態間の対応付けは、２３２号出願及び０６１号出願、並びに本明細書に含まれる他の援用を含め、本明細書に記載する特徴及び動作に基づいた理解と組み合わせて、図３Ａから図１９に示す表現に対して図２０Ａから図２４Ｅに示す命令を慎重に検討することで当業者によって決定することができる。概して言えば、図２０Ａから図２０Ｈは、図３Ａから図３Ｂに関して記載又は示した動作から得られるパートプログラム命令を示す。様々な命令に参照用の名称を付けて、それらの命令と前出の図面における対応した命令表現との関係を読者が理解するように支援する。例えば、ＰＳ及びＰＥはそれぞれ、「プロローグ」命令表現に関連した命令の開始及び終了に相当する（ａｐｐｒｏｘｉｍａｔｅ）。ＭＣＩＲＣ１Ｓ及びＭＣＩＲＣ１Ｅはそれぞれ、「円の測定、円−１」命令表現に関連した命令の開始及び終了に相当する。ＤＣＩＲＣ１Ｓ及びＤＣＩＲＣ１Ｅはそれぞれ、円−１の「円の定義」命令表現に関連した命令の開始及び終了に相当する。ＡＬＩＧＮＯＳ及びＡＬＩＧＮＯＥはそれぞれ、「原点を合わせる」命令表現に関連した命令の開始及び終了に相当する。ＭＣＩＲＣ２Ｓ及びＭＣＩＲＣ２Ｅはそれぞれ、「円の測定、円−２」命令表現に関連した命令の開始及び終了に相当する。ＤＣＩＲＣ２Ｓ及びＤＣＩＲＣ２Ｅはそれぞれ、円−２の「円の定義」命令表現に関連した命令の開始及び終了に相当する。ＡＬＩＧＮＸＳ及びＡＬＩＧＮＸＥはそれぞれ、「Ｘ軸を合わせる」命令表現に関連した命令の開始及び終了に相当する。ＥＰＰは「パートプログラム終了」命令表現に関連する。これらの注釈は図２１から図２４のものと一致し、それらの図におけるプログラムセグメントの位置が、図２０に示すパートプログラムに関して位置付けられる（例えば挿入される）箇所に関連付けることができるようになっている。
【００８６】
概して言うと、図２１は、図４から図６に関して記載又は示した動作から得られるパートプログラム命令を示す。ＬＯＯＰＳ及びＬＯＯＰＥはそれぞれ、図６に示した「ステップアンドリピートループ配列」命令表現に関連する命令の開始及び終了に相当することがわかる。概して言うと、図２２Ａから図２２Ｃは、図７Ａから図１０に関して記載又は示した動作から得られるパートプログラム命令を示す。ＭＣＩＲＣ２＿１Ｓ及びＭＣＩＲＣ２＿１Ｅはそれぞれ、図１０の「ＭｙＬｏｏｐ」にペーストされて示された「円の測定、円２＿１〔．〕」命令表現に関連する命令の開始及び終了に相当することがわかる。同様に、ＤＣＩＲＣ２＿１Ｓ及びＤＣＩＲＣ２＿１Ｅはそれぞれ、対応する「円の定義」命令表現に関連する命令の開始及び終了に相当する。概して言うと、図２３Ａから図２３Ｃは、図１１から図１２に関して記載又は示した動作から得られるパートプログラム命令を示す。ＭＣＩＲＣ２＿２Ｓ及びＭＣＩＲＣ２＿２Ｅはそれぞれ、図１２のループ終了後にペーストして示す「円の測定、円２＿２」命令表現に関連した命令の開始及び終了に相当することがわかる。同様に、ＤＣＩＲＣ２＿２Ｓ及びＤＣＩＲＣ２＿２Ｅはそれぞれ、対応する「円の定義」命令表現に関連する命令の開始及び終了に相当する。概して言うと、図２４Ａから図２４Ｅは、図１３Ａから図１９に関して記載又は示した動作から得られるパートプログラム命令及びデータを示す。例えば図２４Ｃにおいて、ＭＯＤ１は、図１８に示した修正済みの走査間隔及び走査間隔形式のパラメータを示すことがわかる。ＣＩＲＣ２＿２−ＳＵＲＲＯＳ及びＣＩＲＣ２＿２−ＳＵＲＲＯＥはそれぞれ、「円の測定、円２＿２」表現に関連したビジョンマシンでの命令実行に関する新しいデータの開始及び終了に相当する（例えば、「円の測定、円２＿２」命令表現に関連する命令の開始及び終了にそれぞれ相当する注釈ＭＣＩＲＣ２＿２Ｓ及びＭＣＩＲＣ２＿２Ｅ内）。このデータは、図１８に要素３３２として示される動作中の編集コンテキストステータスのための基礎を提供する（これは、例えば、「円の測定、円２＿２」に関連してペースト及び修正済みの要素について動作中の編集コンテキストステータスが確立されていない図１５とは対照的である）。
【００８７】
全体として、図１から図２５Ｂは、上述の「コピーアンドペースト動作、機能、及び実施の概要」と題するセクション及び／又は以下の特許請求の範囲に述べるような特徴、動作、及び対応付けの多くを示す一実施形態を図示することが理解されよう。
【００８８】
テキストベースのプログラム編集環境において実行され得るような既知のコピーアンドペーストプログラム編集動作、又はプログラミング言語機能内で示されるコンテキストを認識しているプログラム編集等が、プログラミング言語に熟練したユーザによるタイピング及び／又はプログラム編集を促進し得ることとは対照的に、本明細書に開示されるコピー及び／又はペーストコマンドは、比較的技術力が低いユーザによって動作されるＧＵＩにおいて利用可能であることは認められよう（例えば個々の位置での動作の編集、拡張、置換、又は削除の目的のため）。既知のコピーアンドペースト動作とは対照的に、本明細書に開示されるコマンド動作は、基礎にあるプログラミング言語命令におけるターゲットプログラミング要素のために必要なコンテキスト調節動作を完全に自動化することができるので、少なくともいくつかの実施形態において、ユーザが、ＧＵＩの編集部及び／又は関連するＧＵＩウィンドウ及びメニューに表示されるパートプログラム表現のレベルで、コピーアンドペースト動作を用いて確実にパートプログラムを編集及び／又は実行することが可能となる。
【００８９】
様々な例示的な実施形態において、前述のように、コピーアンドペーストされた命令及び／又はコピーアンドペーストマネージャ１６９により生成された命令を含むパートプログラムは、ＸＭＬ（拡張マークアップ言語）又は同様のカスタム化マークアップ言語等のマークアップ言語で書かれている。すなわち、編集インタフェース３０１に表示される編集可能命令表現は、マークアップタイプの言語で書かれた対応するコード命令（機械実行可能命令）を指し示す。
【００９０】
図２５Ａ及び図２５Ｂは、マシンビジョン検査システムにおいてパートプログラムを編集する場合に、マシンビジョンパートプログラム動作セットをコピーアンドペーストするための方法を示すフロー図を表す。このマシンビジョン検査システムは、撮像部と、この撮像部の視野に１つ以上のワークピースを保持するためのステージと、制御部と、編集部と、ディスプレイと、グラフィカルユーザインタフェース（ＧＵＩ）と、学習モードと、を含む。学習モードは、パートプログラムを生成するために、マシンビジョン検査システムの動作を制御するユーザ入力を受信すると共に、制御された動作に対応して関連付けられたパートプログラム命令を記録するように動作可能に構成されている。ブロック２７１０において、マシンビジョン検査システムが提供される。このシステムは、撮像部と、この撮像部の視野に１つ以上のワークピースを保持するためのステージと、制御部と、編集部と、ディスプレイと、グラフィカルユーザインタフェース（ＧＵＩ）と、学習モードと、を含む。学習モードは、パートプログラムを生成するために、マシンビジョン検査システムの動作を制御するユーザ入力を受信すると共に、制御された動作に対応して関連付けられたパートプログラム命令を記録するように動作可能に構成されている。ブロック２７２０において、編集部に関連付けられたコピーコマンド及びペーストコマンドが提供される。ブロック２７３０において、ＧＵＩの編集インタフェース部が提供される。この編集インタフェース部は、基礎にあるパートプログラム命令の編集可能パートプログラム表現を表示するように動作可能である。このパートプログラム表現は命令表現を含む。ブロック２７４０において、編集インタフェース部において基礎にあるパートプログラムのパートプログラム表現が表示される。ブロック２７５０において、表示されたパートプログラム表現内のコピー位置で少なくとも第１の命令表現を選択して、基礎にある選択した命令コピーセットに関連付けられた選択した命令表現コピーセットを定義する。ブロック２７６０において、編集部は、選択した命令表現コピーセット又は選択した命令コピーセットの少なくとも一方を対象とするコピーセット修正動作を実行するように動作する。このコピーセット修正動作は、以下のａ）からｃ）のうち少なくとも１つを含む動作によって修正済みの選択した命令表現コピーセットを形成することを含む。ａ）ペースト位置動作コンテキストと不適合である選択した命令表現コピーセットの要素及び関連付けを修正すること、ｂ）ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを選択した命令表現コピーセットに追加すること、又は、ｃ）以下のｃ１）及びｃ２）の少なくとも一方を含む動作によって形成された修正済みの選択した命令コピーセットに基づいて、修正済みの選択した命令表現コピーセットを形成すること。ｃ１）命令ペースト位置動作コンテキストと不適合である選択した命令コピーセットの要素及び関連付けを修正すること、もしくはｃ２）命令ペースト位置動作コンテキストとの適合性のために必要な要素及び関連付けを、選択した命令コピーセットに追加すること。ブロック２７７０において、編集インタフェース部は、表示されたパートプログラム表現において、選択した命令表現セットをペーストするペースト位置を定義するように動作する。ペースト位置は、基礎にあるパートプログラムにおける命令ペースト位置に関連付けられている。ブロック２７８０において、編集インタフェース部は、表示されたパートプログラム表現において、選択した命令表現セットをペーストするペースト位置を定義するように動作する。ペースト位置は、基礎にあるパートプログラムにおける命令ペースト位置に関連付けられている。ブロック２７８０において、この方法は終了する。
【００９１】
上述の様々な実施形態を組み合わせて、更に別の実施形態を提供することができる。本明細書において言及した及び／又は出願データシートに列挙した米国特許、米国特許出願公報、米国特許出願、外国特許、外国特許出願、及び非特許公報、更に、限定ではないが２０１３年５月１３日に出願された米国特許出願第６１／８２２，８２２号を含めて全てのものは、全体が援用により本願にも含まれるものとする。これらの様々な特許及び出願の概念を用いて更に別の実施形態を提供するために必要な場合は、実施形態の態様は変更可能である。
【００９２】
前述の記載に照らして、実施形態にこれら及び他の変更を行うことができる。一般に、以下の特許請求の範囲において、用いる用語は本明細書及び特許請求の範囲に開示される特定の実施形態に特許請求の範囲を限定するものとして解釈されず、そのような特許請求の範囲の権利が与えられる均等物の全範囲に従う全ての可能な実施形態を包含するものとして解釈される。
【図１】
0006386540.tif 000002
【図２Ａ】
0006386540.tif 000003
【図２Ｂ】
0006386540.tif 000004
【図３Ａ】
0006386540.tif 000005
【図３Ｂ】
0006386540.tif 000006
【図４】
0006386540.tif 000007
【図５】
0006386540.tif 000008
【図６】
0006386540.tif 000009
【図７Ａ】
0006386540.tif 000010
【図７Ｂ】
0006386540.tif 000011
【図８】
0006386540.tif 000012
【図９】
0006386540.tif 000013
【図１０】
0006386540.tif 000014
【図１１】
0006386540.tif 000015
【図１２】
0006386540.tif 000016
【図１３Ａ】
0006386540.tif 000017
【図１３Ｂ】
0006386540.tif 000018
【図１４】
0006386540.tif 000019
【図１５】
0006386540.tif 000020
【図１６】
0006386540.tif 000021
【図１７】
0006386540.tif 000022
【図１８】
0006386540.tif 000023
【図１９】
0006386540.tif 000024
【図２０Ａ】
0006386540.tif 000025
【図２０Ｂ】
0006386540.tif 000026
【図２０Ｃ】
0006386540.tif 000027
【図２０Ｄ】
0006386540.tif 000028
【図２０Ｅ】
0006386540.tif 000029
【図２０Ｆ】
0006386540.tif 000030
【図２０Ｇ】
0006386540.tif 000031
【図２０Ｈ】
0006386540.tif 000032
【図２１】
0006386540.tif 000033
【図２２Ａ】
0006386540.tif 000034
【図２２Ｂ】
0006386540.tif 000035
【図２２Ｃ】
0006386540.tif 000036
【図２３Ａ】
0006386540.tif 000037
【図２３Ｂ】
0006386540.tif 000038
【図２３Ｃ】
0006386540.tif 000039
【図２４Ａ】
0006386540.tif 000040
【図２４Ｂ】
0006386540.tif 000041
【図２４Ｃ】
0006386540.tif 000042
【図２４Ｄ】
0006386540.tif 000043
【図２４Ｅ】
0006386540.tif 000044
【図２５Ａ】
0006386540.tif 000045
【図２５Ｂ】
0006386540.tif 000046