カスタム コマンド ウィザード

 
 
 

カスタム コマンド ウィザードを使用して、カスタム コマンドを含む自己インストール プラグインのコードを作成することができます。 このウィザードでは、プラグインとコマンドのスケルトン コードを作成するだけでなく、コマンドをメニューに追加する場合に必要なコードも作成できます。

カスタム コマンド ウィザードを使用してカスタム コマンドを作成するには

  1. [ファイル](File)[プラグイン](Plug-ins)をクリックして、[プラグインマネージャ]を開きます。

    [ツール開発環境]レイアウトで[プラグイン](Plug-ins)タブをクリックすると、[プラグインマネージャ]ビューに切り替えることができます。

  2. 次のいずれかの操作を実行します。

    • ユーザ ロケーションでコマンドを作成するには、[ファイル](File)[新規作成](New)[コマンド](Command)をクリックします。

    • 別の場所(ワークグループや Add-on ディレクトリなど)にコマンドを作成するには、プラグイン ツリーを展開し、[プラグイン](Plugins)フォルダを右クリックして[新規作成](New)[コマンド](Command)をクリックします。

    コマンド ウィザードが表示されます。

  3. [コマンド名](Command Name) ボックスに、コマンドのプラグイン項目名を入力します。

    コマンド名の先頭文字には英字を使用します。 以降に続く文字には、英字、数字、アンダースコア(_)を使用できます。

    スペースは、ウィザードによって自動的にアンダースコアに置き換えられます。

  4. プラグイン名を変更する場合は、 [プラグイン名](Plug-in Name) ボックスに別の名前を入力します。 デフォルトでは、プラグイン名はコマンド名に基づいて付けられます(ただし、スペースはアンダースコアに置き換えられません)。

  5. [コーディング言語](Coding Language) リストで、生成する言語をクリックして選択します。

  6. コマンドをメニューに追加する場合は、次の操作を行います。

  7. [コマンド定義](Command Definition) タブをクリックし、コマンドの説明とツールチップを入力します。

  8. コマンドが値を戻さない場合は、 [戻り値](Return Value) チェック ボックスをオフにします。

  9. C++ API の場合、ウィザードで、UndoRedo、および TermUndoRedo コールバックのスケルトン コードを含めることができます。これには、 [Undo/Redo コールバック(C++のみ)](Undo/Redo Callbacks (C++ only)) チェックボックスをオンにします。

  10. コマンドに引数を追加する場合は、次の操作を行います。

  11. [コードの生成](Generate Code)をクリックして、カスタム コマンドを作成します。

作成されたプラグインは自動的にロードされて実行され、コードは Script Editor にロードされます。

注:

  • ウィザードを使用して、既存のプラグインにコマンドを追加できます。 テキスト エディタまたはスクリプト エディタでプラグインを開き、編集パネルを右クリックします。続けて、[ツール]をポイントしてから[コマンドの追加]をクリックします。

  • 引数を削除するには、行の最初の列(空のボックス)をクリックして引数行を選択します。 次に、[削除](Remove)をクリックします。

  • 頻繁に作成するコマンド タイプのウィザード プリセットを保存することができます。

  • ウィザードは [SDK_Wizards] という名前のモデルを作成し、そのモデルの下に、作成した各コマンドのカスタム プロパティを格納します。 対応するカスタム プロパティをダブルクリックすると、コマンドのウィザードを開くことができます。

プラグイン定義

[プラグイン定義]タブでは、XSILoadPlugin 関数を作成するために必要な情報を入力します。XSILoadPlugin 関数は、コマンドやメニューなどのプラグイン アイテムを Softimage に登録します。

コマンド名

コマンドの名前を指定します(プラグイン項目名)。 コマンド名の先頭文字には英字を使用します。 以降に続く文字には、英字、数字、アンダースコア(_)を使用できます。

既定では、この名前は、コマンド名(ユーザ インタフェース内、および XSIApplication.Commands または Application::GetCommands から戻されるリスト内で使用される名前)とスクリプト名(コマンドの実行に使用される名前)の両方に使用されます。コマンド名は、作成されたコールバック関数に名前を付けるためにも使用されます。

別々の名前を使用する場合(たとえば、ユーザ インタフェース用には内容のわかりやすい長い名前を、スクリプト用には短い名前を使用する場合など)は、生成された XSILoadPlugin 関数の中の PluginRegistrar.RegisterCommand または PluginRegistrar::RegisterCommand への呼び出しを編集する必要があります。コマンド名(RegisterCommand の最初の引数)を変更するということは、コマンド コールバック関数(ExecuteInit など)の名前を変更する必要があるということです。

プラグイン名

プラグインの名前を指定します。 デフォルトでは、プラグイン名はコマンド名に基づいて付けられます。 プラグインに複数のコマンドまたはその他のプラグイン項目(プロパティなど)が含まれる場合は、この名前を変更することもできます。

重要:

コマンド名を 2 回以上変更すると、プラグイン名は、コマンド名に基づいた新しい名前で再度上書きされます。

たとえば、最初にコマンド名を NewCommand から My Command に変更したとします。その場合、[プラグイン名]ボックスのコマンド名とプラグイン名のタブがそれぞれ、My_CommandMy CommandPlugin になります。 プラグイン名を My Cmd Plugin に変更した場合、コマンド名はそのままです。 再び[コマンド名]ボックスに戻り、コマンド名を XYZ に変更した場合、プラグイン名は自動的に XYZPlugin になります。

作成者

カスタム コマンドの作成者を識別します(作成者の名前や組織名などを入力します)。 プラグイン マネージャでは、この情報をプラグインごとに表示します。

コーディング言語

作成するコードの型(C++、C#、JScript、VBScript、Python)を指定します。

メニューに追加

カスタム コマンドのメニュー アンカー ポイントを指定します。 アンカー ポイントとは、メニュー上の特定の場所のことです(たとえば、siMenuTbGetPrimitivePolygonMeshBasicIDは、メニュー項目を[取得](Get)[プリミティブ](Primitive)[ポリゴンメッシュ](Polygon Mesh menu)メニュー上の[トーラス][正12面体]の間に挿入します。 使用できるメニュー アンカー ポイントの説明については、? をクリックしてください。

メニューにカスタム コマンドを追加しない場合は、このドロップダウン ボックスで[なし]を選択したままにします。

メニュー ラベル

メニュー上に表示されるテキストを指定します。

出力ディレクトリ

作成したファイルの格納場所を指定します。

コマンド定義

[コマンド定義](Command Definition)タブでは、コマンド プロパティの設定とコマンド引数の定義を行うことができます。

説明

コマンドの簡単な説明を指定します。 この説明は、Softimage のユーザ インタフェース(たとえば、[ツールバーのカスタマイズ]ダイアログ ボックスや[キーボード マッピング]ダイアログ ボックス)で表示されます。

ツールチップ

ユーザがツールバー上のコマンド ボタンをポイントしたときに表示される短い説明を指定します。 ツールチップが定義されていない場合は、代わりに説明が表示されます。また、説明が定義されていない場合は、コマンド名が表示されます。

キーの割り当てに対応

[キーボード マッピング]ダイアログ ボックスでキーボード ショートカットをコマンドに割り当てることができるかどうかを指定します。 コマンドが低レベルの Helper Functions であるため、汎用目的で公開しない場合は、このチェック ボックスをオフにします。

バッチ処理で使用不可能

xsibatch または xsi -script を使用してコマンド ラインから実行されたスクリプトでコマンドが使用できるかどうかを指定します。 コマンドにユーザ入力が必要な場合は、このチェック ボックスをオンにします。

ログ記録なし

コマンドがコマンド ヒストリにログ記録されるかどうかを指定します。 ログ記録を無効にすると、たとえば、カスタム コマンドが他のスクリプトから頻繁に呼び出される場合や、コマンドでオブジェクトの大きなコレクションを引数として使用する場合などに、パフォーマンスを向上させることができます。

戻り値

コマンドが値を返すかどうかを指定します。 コマンドが値を戻さない場合は、チェック ボックスをオフにします。 このチェック ボックスがオンになっていても、コマンドが値を戻さない場合は、Softimage は空の Variant を戻します。 このチェック ボックスがオフの場合、Softimage はコマンドが戻す値を無視します。

VBScript コマンドの場合は、このチェック ボックスの設定によって、ウィザードがサブルーチン(値を戻すことができない)と関数(値を戻すことができる)のどちらを作成するかが決定されます。

Undo/Redo コールバック(C++ のみ)

オプションの UndoRedo、および TermUndoRedo コールバックのスケルトン コードを生成する場合はオンにします。C++ API でプラグインを実装する場合にのみ使用します。

引数

このセクションでは、コマンド引数を定義できます。

名前

引数の名前を指定します。 名前は有効な識別子でなければなりません(通常、名前の先頭文字には英字を使用します。以降に続く文字には、英字、数字、アンダースコア(_)を使用できます)。

デフォルト値

引数のデフォルト値を指定します。 デフォルト値を入力するときは、引用符を含めないでください。 ウィザードがコードの作成時に引用符を追加するためです。

Softimage は、デフォルト値から引数タイプを判断し、ユーザがコマンドを実行するときに、引数値をそのタイプに変換しようとします。 たとえば、デフォルト値が true である場合、引数はブール値であるため、Softimage は、0、"0"、"false"などの値を false に変換します。 ブールに変換できない引数値(「C:¥Softimage」など)は、入力の不一致エラーの原因になります。

追加する引数の型:

追加操作:

ブール

[デフォルト値](Default Value)ボックスで、true または false と入力します。 引用符を追加しないでください。

文字列

[デフォルト値](Default Value)ボックスで、文字列を入力します。 引用符を追加しないでください。

数値

[デフォルト値](Default Value)ボックスで、数値を入力します。 数値にはウィザードによって自動的に引用符が追加されるため、生成された ArgumentCollection.Add または ArgumentArray::Add を編集して、引用符を削除する必要があります。

任意のタイプ

[デフォルト値](Default Value)ボックスを空のままにし、[ハンドラ](Handler)[なし]に設定します。 ブール、文字列、数値、配列、Softimage オブジェクトなど、あらゆるタイプの値を渡すことができるようになります。

JScript オブジェクトを渡すことができるようにするには、生成された ArgumentCollection.Add または ArgumentArray::Add を編集して、引数タイプを siDispatch に設定する必要があります。

ハンドラ

コマンドに渡される引数値を処理する引数ハンドラを指定します。 たとえば、Collection/Selection 引数ハンドラは、「cube,cone」などの文字列をコレクションに変換し、ヌル値を現在の選択内容に変換します。

コマンドで Softimage オブジェクトを引数として使用する場合は、SingleObj 引数ハンドラまたは Collection/Selection 引数ハンドラの使用を考慮する必要があります。

引数ハンドラ

説明

なし

引数に対して前処理が行われないことを指定します。

Animatable Marked Parameters

Grid1,Grid2/Name」などの文字列を、アニメート可能なマーク パラメータの XSICollection または CRefArray に変換します。Marked Parameters ハンドラに似ていますが、アニメート不可能なパラメータもフィルタリングします。

引数のデフォルト値が必要な場合は、[デフォルト値]ボックスで、「/kine.pos」のようなマーキング リストを入力します。

既定値: 選択したオブジェクトのすべてのアニメート可能なマーク パラメータの XSICollection または CRefArray

Collection/Selection

*」、「*.polymsh」、「cube,grid,light」などの文字列を、オブジェクトの XSICollection または CRefArray に変換します。

[デフォルト値](Default Value)ボックスで「*」、「*#model*」、「"*#3dobject"」などのオブジェクト リストを入力した場合、Collection/Selection ハンドラは、指定されたオブジェクトのコレクションを既定の引数値として提供します。

既定値: 現在選択されているオブジェクトを含む XSICollection または CRefArray

SingleObj

MyGrid」などの文字列を、対応する X3DObject に変換します。

デフォルト値: ヌル値(空のオブジェクト)。

Frame

現在のフレーム番号を提供します。 引数に対して値(またはデフォルト値)が指定されていない場合は、何も処理されません。

デフォルト値: 現在のフレーム番号。

Frame Rate

フレーム レートを提供します。 引数に対して値(またはデフォルト値)が指定されていない場合は、何も処理されません。

デフォルト値: 現在のフレーム レート。

Marked Parameters

Grid1,Grid2/Name」などの文字列を、マーク パラメータの XSICollection または CRefArray に変換します。引数のデフォルト値が必要な場合は、[デフォルト値]ボックスで、「/kine.pos」のようなマーキングリストを入力します。

既定値: 選択したオブジェクトのすべてのマーク パラメータの XSICollection または CRefArray