CRI ADX2(AtomCraft)
ロボット編13 get_selected_objects関数を使ってみよう

ここまでのチュートリアルでは、スクリプトで対象のオブジェクトを取得して様々な処理を行う方法を紹介してきました。
CRI Atom Craft ロボットでは、GUIで選択中のオブジェクトを取得して、スクリプトからオブジェクトを操作することもできます。
このチュートリアルでは、get_selected_objects関数を使って、GUIで選択中のキューを取得し、ボリュームを相対で変更する処理を行うスクリプトを作成します。

本チュートリアルは、チュートリアル「find_object関数を使用してみよう」で作成したプロジェクトを使用します。
プロジェクトを開いていない場合は、プロジェクトを開くか、「find_object関数を使用してみよう」にて作成したスクリプトを実行してから、チュートリアルを進めましょう。

キューの選択

今回のチュートリアルでは、GUIで選択中のオブジェクトに対して操作を行うため、事前にCRI Atom CraftのGUI操作でキューを選択します。
下の図のようにキューシート「Tutorial」内のキューを全て選択しましょう。

スクリプトファイルの準備

スクリプトメニューで「スクリプトリスト...」を選択し、スクリプトリストからのスクリプト実行ウィンドウ表示します。
スクリプトリストウィンドウの新規作成ボタンを押して、以下の名前でスクリプトファイルを作成しましょう。

スクリプトの保存先 スクリプトファイル名
tutorials [CRI] tutorial05-4_use_get_selected_objects.py

スクリプトの説明

作成したスクリプトをダブルクリックして、スクリプトエディターからのスクリプト実行で開きます。
スクリプトリストからのスクリプト実行ウィンドウでスクリプトの内容が一覧できるように、スクリプトの説明を次のように記述しましょう。

# --Description:[チュートリアル]get_selected_objects関数を使って選択中のキューを取得してボリュームを一括相対変更

モジュールのインポート

スクリプトの説明が記述できたら、スクリプトでCRI Atom Craftを操作するため、次のモジュールをインポートします。

import cri.atomcraft.debug as acdebug
import cri.atomcraft.project as acproject

プロジェクト操作のためにProjectモジュール、ログ出力のためにDebugモジュールをインポートします。

選択中のキューを取得

projectモジュールにはGUIにて選択中のオブジェクトを取得するための次の関数が用意されています。

関数名 説明
get_selected_objects GUI ツリーで選択中のオブジェクトを取得しま

GUIで選択中のオブジェクトを取得する処理をスクリプトで記述すると次のようになります。

# 選択中のキューを取得
selected_cues = acproject.get_selected_objects("Cue")["data"]

選択中のキューを取得の解説

get_selected_objects関数には「オブジェクトタイプ名」を指定します。
関数を呼び出すと、GUIにて選択中のオブジェクトからタイプが一致するオブジェクトだけがリスト形式で取得できます。
ここでは選択中のキューを取得するため、オブジェクトのタイプに "Cue" を指定してキューのリストを取得しています。

取得したキューに相対で値を更新

取得したキューに対して現在のボリュームを取得し、0.5を加えて値を更新します。
キューのボリューム値の取得、設定は、次の関数を使用します。

関数名 説明
get_value 指定したオブジェクトのパラメーターを取得します
set_value 指定したオブジェクトのパラメーターを設定します

これらの関数を使って、スクリプトで現在のボリュームに0.5を加える処理を記述すると次のようになります。

# キューの現在ボリューム値を取得して、新たなボリュームを設定
for cue in selected_cues:
    # キューのボリュームを取得
    val = acproject.get_value(cue, "Volume")["data"]
    volume = float(val)
    # ボリュームに0.5を加えて設定
    acproject.set_value(cue, "Volume", volume + 0.5)

acdebug.log("[チュートリアル]get_selected_objects関数を使って選択中のキューを取得してボリュームを一括相対変更 が完了しました")
get_value により得られる値は、パラメーターによらず文字列です。 このため、float 関数を使用して文字列から数値に変更しています。

スクリプトの保存と実行

これで本チュートリアルのスクリプト記述は終了です。
スクリプトを保存し、実行します。
スクリプトが正常に実行されると、選択したキュー全てのボリュームが0.5増加します。