公開日: 04/01/2021

Pickコマンド

SceneBoxのコールバック関数では、2次元のマウス座標を取得した後、マウスの座標にある「名前が付けられた」オブジェクトをピックアップすることができます。以下の例では、hitlistには、(x,y)点を中心にした5x5ピクセルの選択領域内に含まれる項目(最大1000個)の末端部の名前が戻されます。戻される形式は最後の引数で決まります。1を指定すると1つの配列が、0を指定すると深度で並べ替えられた配列のリストが戻されます。

Track2d=function({x, y, m, k},
hitlist = theSceneBox<<pick( x, y, 5, 5, 1000, 1 );
  if ( nrow(hitlist) > 0, // 選択領域が空ではない
     ... hitlist[1..n] // 表示リスト内で定義されたオブジェクトの名前が入れられる
  ) );

いっぽう、Track3dコールバック関数では、選択領域が常に1 x 1ピクセルであるのに加え、マウスを移動しない限り選択が行われません。通常はこの方法を使用しますが、1x1ピクセルの選択領域は点と同じくらい小さいため、選択が困難なことがあります。また、Pickコマンドでは、マウスを移動しなくても選択が行われます。

Track3d関数では、常に深度で並べ替えられた配列のリストが戻されます。各配列は、階層を構成する複数のオブジェクト名です(プッシュ名およびポップ名は、オブジェクトの階層を構成します)。大量のオブジェクトが選択されている場合は、並べ替えに長い時間がかかることがあります。なお、Pick関数では、最後の引数(上の例では1)で、並べ替えた配列のリストまたは1つの配列のどちらを戻すかを制御できます。1つの配列を戻す場合は、末端部の名前だけが含まれ、それより上位の名前は含まれません。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).