カスタム コマンド ウィザードを使用して、カスタム コマンドを含む自己インストール プラグインのコードを作成することができます。 このウィザードでは、プラグインとコマンドのスケルトン コードを作成するだけでなく、コマンドをメニューに追加する場合に必要なコードも作成できます。
[ファイル](File)[プラグイン](Plug-ins)をクリックして、[プラグインマネージャ]を開きます。
[ツール開発環境]レイアウトで[プラグイン](Plug-ins)タブをクリックすると、[プラグインマネージャ]ビューに切り替えることができます。
[コマンド名](Command Name) ボックスに、コマンドのプラグイン項目名を入力します。
プラグイン名を変更する場合は、 [プラグイン名](Plug-in Name) ボックスに別の名前を入力します。 デフォルトでは、プラグイン名はコマンド名に基づいて付けられます(ただし、スペースはアンダースコアに置き換えられません)。
[コーディング言語](Coding Language) リストで、生成する言語をクリックして選択します。
[メニューに追加](Add to Menu)リストから、メニュー アンカー ポイントを選択します。
[メニュー ラベル](Menu Label) ボックスに、メニュー上に表示するテキストを入力します。
[コマンド定義](Command Definition) タブをクリックし、コマンドの説明とツールチップを入力します。
コマンドが値を戻さない場合は、 [戻り値](Return Value) チェック ボックスをオフにします。
C++ API の場合、ウィザードで、Undo、Redo、および TermUndoRedo コールバックのスケルトン コードを含めることができます。これには、 [Undo/Redo コールバック(C++のみ)](Undo/Redo Callbacks (C++ only)) チェックボックスをオンにします。
[引数](Arguments)で、[追加](Add)をクリックします。
[名前](Name) ボックス内をクリックして、引数の名前を入力します。
デフォルト値を指定する場合は、 [デフォルト値](Default Value) ボックスをクリックしてから、値を入力します。 文字列の場合は、引用符を含めないでください。ウィザードがコードの作成時に引用符を追加するためです。
引数ハンドラを使用する場合は、 [ハンドラ](Handler) ボックスをクリックし、[引数ハンドラ](argument handler)をクリックします。
ウィザードを使用して、既存のプラグインにコマンドを追加できます。 テキスト エディタまたはスクリプト エディタでプラグインを開き、編集パネルを右クリックします。続けて、[ツール]をポイントしてから[コマンドの追加]をクリックします。
引数を削除するには、行の最初の列(空のボックス)をクリックして引数行を選択します。 次に、[削除](Remove)をクリックします。
ウィザードは [SDK_Wizards] という名前のモデルを作成し、そのモデルの下に、作成した各コマンドのカスタム プロパティを格納します。 対応するカスタム プロパティをダブルクリックすると、コマンドのウィザードを開くことができます。
[プラグイン定義]タブでは、XSILoadPlugin 関数を作成するために必要な情報を入力します。XSILoadPlugin 関数は、コマンドやメニューなどのプラグイン アイテムを Softimage に登録します。
コマンドの名前を指定します(プラグイン項目名)。 コマンド名の先頭文字には英字を使用します。 以降に続く文字には、英字、数字、アンダースコア(_)を使用できます。
既定では、この名前は、コマンド名(ユーザ インタフェース内、および XSIApplication.Commands または Application::GetCommands から戻されるリスト内で使用される名前)とスクリプト名(コマンドの実行に使用される名前)の両方に使用されます。コマンド名は、作成されたコールバック関数に名前を付けるためにも使用されます。
別々の名前を使用する場合(たとえば、ユーザ インタフェース用には内容のわかりやすい長い名前を、スクリプト用には短い名前を使用する場合など)は、生成された XSILoadPlugin 関数の中の PluginRegistrar.RegisterCommand または PluginRegistrar::RegisterCommand への呼び出しを編集する必要があります。コマンド名(RegisterCommand の最初の引数)を変更するということは、コマンド コールバック関数(Execute や Init など)の名前を変更する必要があるということです。
プラグインの名前を指定します。 デフォルトでは、プラグイン名はコマンド名に基づいて付けられます。 プラグインに複数のコマンドまたはその他のプラグイン項目(プロパティなど)が含まれる場合は、この名前を変更することもできます。
たとえば、最初にコマンド名を NewCommand から My Command に変更したとします。その場合、[プラグイン名]ボックスのコマンド名とプラグイン名のタブがそれぞれ、My_Command と My CommandPlugin になります。 プラグイン名を My Cmd Plugin に変更した場合、コマンド名はそのままです。 再び[コマンド名]ボックスに戻り、コマンド名を XYZ に変更した場合、プラグイン名は自動的に XYZPlugin になります。
カスタム コマンドのメニュー アンカー ポイントを指定します。 アンカー ポイントとは、メニュー上の特定の場所のことです(たとえば、siMenuTbGetPrimitivePolygonMeshBasicIDは、メニュー項目を[取得](Get)[プリミティブ](Primitive)[ポリゴンメッシュ](Polygon Mesh menu)メニュー上の[トーラス]と[正12面体]の間に挿入します。 使用できるメニュー アンカー ポイントの説明については、? をクリックしてください。
コマンドの簡単な説明を指定します。 この説明は、Softimage のユーザ インタフェース(たとえば、[ツールバーのカスタマイズ]ダイアログ ボックスや[キーボード マッピング]ダイアログ ボックス)で表示されます。
ユーザがツールバー上のコマンド ボタンをポイントしたときに表示される短い説明を指定します。 ツールチップが定義されていない場合は、代わりに説明が表示されます。また、説明が定義されていない場合は、コマンド名が表示されます。
[キーボード マッピング]ダイアログ ボックスでキーボード ショートカットをコマンドに割り当てることができるかどうかを指定します。 コマンドが低レベルの Helper Functions であるため、汎用目的で公開しない場合は、このチェック ボックスをオフにします。
xsibatch または xsi -script を使用してコマンド ラインから実行されたスクリプトでコマンドが使用できるかどうかを指定します。 コマンドにユーザ入力が必要な場合は、このチェック ボックスをオンにします。
コマンドがコマンド ヒストリにログ記録されるかどうかを指定します。 ログ記録を無効にすると、たとえば、カスタム コマンドが他のスクリプトから頻繁に呼び出される場合や、コマンドでオブジェクトの大きなコレクションを引数として使用する場合などに、パフォーマンスを向上させることができます。
コマンドが値を返すかどうかを指定します。 コマンドが値を戻さない場合は、チェック ボックスをオフにします。 このチェック ボックスがオンになっていても、コマンドが値を戻さない場合は、Softimage は空の Variant を戻します。 このチェック ボックスがオフの場合、Softimage はコマンドが戻す値を無視します。
VBScript コマンドの場合は、このチェック ボックスの設定によって、ウィザードがサブルーチン(値を戻すことができない)と関数(値を戻すことができる)のどちらを作成するかが決定されます。
オプションの Undo、Redo、および 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。 |