pickObject [ message:<string> ] [ prompt:<string> ] \ [ count:n|#multiple ] [ filter:fn ] \ [ select:<boolean> ] [ pickFrozen:<boolean> ] \ [ rubberBand:<point3>] [ rubberBandColor:<color> ] \ [ forceListenerFocus:<boolean> ]
pickObject() 関数を使用すると、ユーザは 3ds Max ビューポート内で 1 つまたは複数のシーン オブジェクトを選択できます。この関数は、オプションのキーワード引数をいくつかとります。 message: 引数は、ステータス バーのプロンプト ラインに表示される文字列値を受け入れます。 prompt: 引数は、リスナー ウィンドウに表示される文字列値をとります。 count: 引数は、選択できるオブジェクトの個数(既定値は 1)を指定する正の整数、またはシンボル #multiple をとります。指定したカウントが 1 より大きかったり、値が #multiple の場合には、選択オブジェクトを含む配列が返されます。シンボル #multiple は、オブジェクトをいくつでも選択できることを意味し、ユーザは右マウス ボタンをクリックするか、またはリスナー ウィンドウにフォーカスがある場合はキーボードの 任意の文字キーを押して選択を終了します。リスナー ウィンドウにフォーカスがある場合に[Esc]キーを押すと、 escape 値が返されます。ビューポートにフォーカスがある場合に[Esc]を押すと、選択が解除されて選択の結果が返されます。
#multiple が指定されている場合、選択が解除されるときに選択されているオブジェクトがないと、空の配列が返されます。 #multiple が指定されていない場合、選択が解除されるときに選択されているオブジェクトがないと、 undefined が返されます。
filter: 関数は、引数が 1 つの MAXScript 関数をとります。この場合の MAXScript 関数は、シーン内のオブジェクトにカーソルが置かれている場合にはいつでも呼び出され、そのオブジェクトに渡されます。オブジェクトを選択できる場合は true を返し、そうでない場合は false を返します。通常、この関数はオブジェクト クラスのテストを含んでいます。
オプションのキーワード引数 select: は、選択オブジェクトが 3ds Max シーン内で新しく現在の選択になるかどうかをコントロールします。 true を指定すると、現在の選択はユーザが選択したオブジェクトに置換されます。既定値は false で、この場合ピッカーは選択セットに影響しません。
pickFrozen: キーワード引数が false (既定値)に設定されている場合は、フリーズされているノードは選択できません。 true に設定されている場合は、フリーズされているノードだけを選択できます。
2 つのオプションのキーワード引数 rubberBand: および rubberBandColor: は、選択操作中に、ビューポート内のラバーバンド線の表示をコントロールします。
rubberBand: を pickObject() の呼び出し時に指定すると、ラバーバンドが有効になります。このとき、指定した <point3>(ワールド スペース座標)がラバーバンドの始点となります。 rubberBandColor: 引数を使えば、既定のライン カラーであるグレー(color 128 128 128)を上書きできます。
オプションのキーワード引数 forceListenerFocus: は、リスナー フォーカスの実行をコントロールします。既定値の true が設定されている場合、既存のセマンティクスと以前のバージョンとの互換性が維持されます。
[H]キーを使用して複数のノードを選択したり、名前による選択を行ったりする場合は、[H]キーが一貫した動作をするように forceListenerFocus:false を指定する必要があります。これを指定しないと、各選択の後にフォーカスが強制的にリスナーに戻されてしまうからです。
返される配列には同じノードが何度も含まれる可能性があることに注意してください。
コマンド モードをビューポート以外のコマンド モードに切り替えると、 pickObject は終了します。たとえば、 pickObject() を実行してから[選択して移動](Select and Move)をクリックすると、 pickObject は現在の結果のまま終了します。代わりにパンまたはズームを実行すると、 pickObject は終了せずにそのコマンド モードに戻るまで待機します。ビューポートのコマンド モードを別のコマンド モードに切り替えると、pickObject は終了します。