[V-REP] 親・子が存在するかハンドルを調べる
対象オブジェクトの親・子オブジェクトのハンドルを取得する方法です。
これによって親・子が存在する場合やしない場合について処理を振り分けたり、親・子のオブジェクト名を直接指定すること無く制御することが可能です。
サンプル
次のような親子関係になっている場合の、取得したハンドル値が図中右になっています。
親・子が存在しない場合は-1が、存在する場合はそのハンドル値が表示されていることが分かります。
Cuboidのスクリプトは次の通りです。
1 2 3 4 5 6 7 8 9 10 11 |
if (sim_call_type==sim_childscriptcall_initialization) then handle_console=simAuxiliaryConsoleOpen("Cuboid",5,1,{500,100},{200,100}) own_handle=simGetObjectHandle("Cuboid") parent_handle=simGetObjectParent(own_handle) child_handle_0=simGetObjectChild(own_handle,0) child_handle_1=simGetObjectChild(own_handle,1) simAuxiliaryConsolePrint(handle_console,"parent:"..parent_handle.."\n") simAuxiliaryConsolePrint(handle_console,"own:"..own_handle.."\n") simAuxiliaryConsolePrint(handle_console,"child-0:"..child_handle_0.."\n") simAuxiliaryConsolePrint(handle_console,"child-1:"..child_handle_1.."\n") end |
使用した関数
simGetObjectParent
- 引数:親を調べたいオブジェクトのハンドル値
- 返り値:親のハンドル値。存在しない場合は-1。
simGetObjectChild
- 引数:子を調べたいオブジェクトのハンドル値,子のインデックス
子のインデックスには0を基準とした整数を用いる。これは複数の子がある場合にどの子のハンドルを取得するかの指定に使う。この時の子のインデックスはハンドル値の順番になっている(つまりオブジェクトを追加した順番)。 - 返り値:子のハンドル値。存在しない場合は-1。
コメントを残す