スクリプト コマンドで選択する

 
 
 

Softimage において手動で実行できることは、スクリプト コマンドからも実行できます。選択操作も例外ではありません。 選択されている内容を変更したり、その選択対象がどういうものであるかを確めることも可能です。

ヒント:

このセクションでは、スクリプト コマンドを使用して選択されている項目を操作する方法についてのみ説明します。 より強力なオブジェクト モデルおよび C++ API アクセスについては、「選択」を参照してください。

現在の選択対象の取得

現在選択されている内容を確認するには、ネイティブの Softimage GetValue コマンドを使用して、SelectionList·を返します。

SelectionList(Softimage ネイティブ コマンド)

SelectionList は、現在選択されているすべてのオブジェクトを表すシーン項目名(文字列)をカンマで区切ったリストのことです。

GetValue コマンドを使用して SelectionList にアクセスするには

	Set oReturn = GetValue("SelectionList")
	For Each r In oReturn 
		LogMessage r & " is an " & r.Type
	Next

選択文字列からオブジェクトへ変換する

Set キーワードを指定して任意の Softimage ネイティブ コマンドを使用すると、戻り値が自動的に本物のオブジェクトに変換されます。 この使い方は、たとえば Softimage オブジェクト名の文字列からオブジェクトのコレクションを作成するときに大変役立ちます。また、ワイルドカードを使用するときは特に便利です。

注:

GetValue コマンドでパラメータの文字列パスを使用している場合、値のタイプが戻され、オブジェクトの文字列パスの場合は適切なオブジェクトが戻されます。

現在の選択対象をオブジェクトのコレクションに変換するには

Set oRoot = ActiveProject.ActiveScene.Root
Set oSelection = GetValue( "SelectionList" )

For Each item In oSelection
	LogMessage item.Name
Next

ワイルドカード文字列をオブジェクトのコレクションに変換するには

SelectObj "cube*" 
Set oSelection = Application.Selection

For Each item In oSelection
	LogMessage item.Name
Next

選択対象を変更する

スクリプト処理を介して現在の選択対象に項目を追加したり、または現在の選択対象から項目を削除することができます。

項目を選択する

エレメントまたはパラメータを選択するには、SelectObj コマンドを使用して対応する名前を指定します。たとえば以下のようになります。

SelectObj "Camera_Interest"

選択対象に項目を追加する

現在の選択対象に何かを追加するには、AddToSelection コマンドを使用します。

AddToSelection "Spot_Interest"

シーン内のカメラ、ライト、および 3D オブジェクトをすべて選択するには、以下のコマンドを使用します。

SelectAll

選択対象から項目を削除する

現在の選択対象から何かを削除するには、RemoveFromSelection コマンドを使用します。

RemoveFromSelection "Scene.Scenecolors.litcol"

選択のクリア

現在の選択内容からすべての項目を削除するには、次のコマンドを使用します。

DeselectAll

ピッキング

PickElement コマンドを使用して、スクリプト内で対話形式の選択セッションを起動できます。

エレメントのピックを使用する

以下の例では、PickElement を使用して、ユーザにプロパティの選択を要求します。戻される変数は、PickedElement、ButtonPressed 、および ModifierPressed です(Shift キーや Ctrl キーなど)。 ユーザが[Esc]キーを押すか右クリックして選択をキャンセルすると、ButtonPressed0 になります。

Dim PickedElement, ButtonPressed, ModifierPressed
call PickElement( "property", "Select a property", "Select a property",_
		PickedElement, ButtonPressed, ModifierPressed) 
if ButtonPressed <> 0 Then 
	'Test PickedElement to see if it's a property then
	'Do something with PickedElement
End if