get_selected_objects 関数を使ってみよう

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

criatom_tools_atomcraft_api_tutorial_search_and_edit_relative.png

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

キューの選択

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

criatom_tools_atomcraft_api_tutorial_search_and_edit_relative_select.png

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

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

スクリプトの保存先スクリプトファイル名
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増加します。

criatom_tools_atomcraft_api_tutorial_search_and_edit_relative_result.png