出力引数は、割り当てオペレータを使って値を戻す手法の代案として、特定のスクリプト言語(VBScript など)やコンパイル言語(C++ など)で使用されます。 出力引数の利点の 1 つは、出力引数を使用する関数が複数の値を同時に戻すことができる点です。 ただし、JScript や PerlScript など一部の言語で出力引数をサポートしていなかったり、サポートしていても Softimage の一部の状況下に制限されている言語(Python など)があったりします。
Softimage は、一部のスクリプト コマンド(AddProp、GetFCurveInfo、および SICreateImageClip)および一部のメソッド(NurbsSurface.EvaluateNormalizedPosition、SIMatrix4.Get、および NurbsCurveList.Get)で出力引数を使用します。 VBScript でこれらのコマンドまたはメソッドを使用する場合は、各出力引数のプレースホルダとして変数名で渡してから、残りのコード部で使用できます。
' This VBScript example illustrates how to use the AddProp ' command to add an annotation property to a null object. Set oNull = GetPrim("Null") AddProp "Annotation", oNull, , "MyAnnonation", oRtn ' You can use an output argument in VBScript to avoid ' using the implicit return argument collection. SetValue oRtn & ".text", "Hello World" InspectObj oRtn
すべてのシナリオでの各言語の動作の概要については、「各言語でサポートされている出力引数」を参照してください。 このセクションでは、出力引数をサポートしている(値は戻さない)コマンドを使用した各言語の作業について説明します。
他の戻り値が指定されていない限り、スクリプト コマンドは ISIVTCollection を戻します。 引数名はそのまま正確に(明記されていない限り、スペースは不要で、大文字と小文字は区別されます)、このコマンドの「コマンドおよびスクリプト リファレンス」に記載されているとおりに使用してください。 たとえば、SICreateImageClip コマンドでは、2 つの出力引数("FileName" と "Clip")を使用します。
Command および Argument オブジェクトを使用して、Softimage で引数の名前を問い合わせることもできます。 ArgumentCollection のリファレンス ページの例を参照してください。
C# からコマンドを呼び出すには、XSIApplication.ExecuteCommand メソッドを使用する必要があります。 出力引数は、汎用 C# オブジェクト内の ExecuteCommand メソッドから戻される Array にパック化されます。
Application::ExecuteCommand 関数を使用するときは、入力引数配列に CValue オブジェクトを設定します。 このコマンドが実行された後に、これらのオブジェクトを適切なクラスに変換することができます。 「コマンドおよびスクリプト リファレンス」を調べて、各引数の順序と型を確認してください。 詳細については、「出力引数を操作する」を参照してください。
それぞれの言語が各シナリオでどのように機能するかについての概要は、「各言語でサポートされている出力引数」を参照してください。 ここでは、出力引数がサポートされているが、値は戻さないコマンドを使用した各言語の動作について説明します。
Python 以外のすべてのスクリプト言語は、出力引数を戻すメソッドを、出力引数を戻すコマンドと同じ方法で扱います。 Python は、複数の変数割り当て構文を使用している場合にのみ、メソッドの出力引数がサポートされる特殊な言語です(「メソッドから出力引数を取得する」を参照)。
出力引数は、C# で Softimage メソッドを使用している場合にサポートされますが、いくつかの特殊な制限が適用されます。 「オブジェクト モデル メソッドを呼び出す」を参照してください。
Softimage の一部のスクリプト コマンド(AddProp、GetFCurveInfo、および SICreateImageClip)および一部のメソッド(NurbsSurface.EvaluateNormalizedPosition、SIMatrix4.Get、および NurbsCurveList.Get)では出力引数が使用されます。
例として、PickObject コマンドは 3 つの出力引数 "PickedElement"、"ButtonPressed"、および "ModifierPressed" を使用します。
特定の出力引数の名前については、「コマンドおよびスクリプト リファレンス」を参照してください。 各パラメータの名前は、パラメータ一覧のパラメータ列に記載されています。 出力引数にはすべて、次のように名前の後に[out]と表示されます。