SpaceBall/SpaceMouseデバイス

サポートされているSpaceBallまたはSpaceMouseデバイス

HyperMeshHyperViewHyperGraph 2DHyperGraph 3DMotionViewは、3DconnexionのSpaceBallまたはSpaceMouseデバイス(SpaceNavigator、SpacePilot、SpaceExplorerおよび)をサポートするようになりました。

HyperWorksを実行する前に、これらデバイス用のドライバがインストールされていることを確認してください。デバイスが正しく接続され、機能するようになると、HyperWorksは自動的にSpaceBall/SpaceMouseを検出し、使用可能にします。

SpaceMouseデバイスでは自由度6の入力は、HyperWorks内での使用に先駆け特別な設定を行う必要はありません。ただし、3Dconnexionコントロールパネルは、デバイスの感度調整や軸がどのように入力に反応するかの調整に使用することが可能です。

SpaceMouseデバイス上のボタンはプログラム可能で、これらのボタンの使用を最適化するにはユーザーによるカスタマイズが必要な場合もあります。各ボタンは3Dconnexionコントロールパネルを使用し、キーボードキーを押した場合やボタンを押した場合の動作の割り当て、あるいは3Dconnexionコントロールパネルの設定をプログラムすることができます。例えば、3DconnexionコントロールパネルのCustom Functionsボタンを使って、SpaceBall/SpaceMouseデバイスのボタン1をHyperViewキーボードショートカット'M'(メッシュライン表示の切り替え)に割り当てることが可能です。
注: 前述のHyperWorksアプリケーション群は、ボタンイベントの発行を設定する際、最適な3Dconnexionボタンに対応します。


図 1. 3Dconnexionコントロールパネル - SpacePilotボタン設定(Windows)のサンプル
表 1. 3DconnexionデバイスでのHyperWorks機能のまとめ
ボタン動作番号 機能
1 トップビュー
2 レフトビュー
3 ライトビュー
4 フロントビュー
5 フィットビュー
6 アイソビュー
7-10 View Memoryボタン
11-16 ユーザー定義のTclコールバック
17-29 これらのボタンはさまざまなプラットフォーム(Windows、Linuxなど)でサポートされているため、HyperWorksアプリケーション内でカスタマイズすることはできません。
注: SpaceExplorerおよびSpacePilotデバイスでは、T、L、R、F、Fitボタンはそれぞれボタン動作1、2、3、4、5に設定されなくてはなりません。

View Memoryボタン

SpaceBall/SpaceMouseデバイスのView Memoryボタンは、View Controlsダイアログ(HyperWorks パネルの下部右側角に位置)のM1、M2、R1、R2ボタンと同様に機能します。

ボタン 詳細
View Memoryボタン群の使用 7から10までのボタン動作を3Dconnexionデバイスのボタンの1つに割り当てます。

これら4つのボタン動作は、保存されているビュー1から4までに関連付けられます。

現在のビューの保存 SpaceMouseボタンを押し、2秒間もしくはそれ以上ホールドします。
保存したビューの呼び出し SpaceMouseボタンを押してすぐ放します。

保存されているビュー1および2は、M1/R1およびM2/R2ビューと同じビュー登録にリンクされています。

カスタムボタンハンドラー

SpaceMouseボタン動作11 - 16は、ユーザー定義のTclコールバックハンドラーをコールするようプログラムされています。これらにより、ユーザーは自身のニーズに合うようSpaceMouseの機能をカスタマイズすることが可能です。

3Dconnexionボタンのプログラムを可能とするために、下記の3つのSessionオブジェクトメソッドが用意されています。
ボタン 詳細
GetSpaceballButtonMin() Tclコールバックにプログラム可能なボタン動作の最も小さいIDを戻します。
GetSpaceballButtonMax() Tclコールバックにプログラム可能なボタン動作の最も大きいIDを戻します。
RegisterSpaceballCallback

(buttonID, procName)

指定したボタン動作のIDに対し、Tclコールバックを登録します。コールバックのプロシージャは、動作が起こった時点でのボタンの状態である状態パラメータを取ります。

True - ボタンが押されたことを示します。

False - ボタンが放されたことを示します。

下記の例は、アニメーションのオンオフを切り替えるためのボタン動作11をプログラムする方法を示しています:
proc ::FlipAnim { state } {

   # Only respond to button events, which occurs when state == "True"
   if {$state == "False"} {
      return;
   }

   hwi OpenStack;
   set t [lindex [split [expr rand()] .] end];

   catch {
       hwi GetSessionHandle sess$t;
       sess$t GetProjectHandle proj$t;
       proj$t GetPageHandle page$t [proj$t GetActivePage ];

       if {"false" == [page$t IsAnimating] } {
           page$t StartAnimation;
       } else {
           page$t StopAnimation;
       }

   }
   hwi CloseStack;

}

set t [lindex [split [expr rand()] .] end];
hwi GetSessionHandle sess$t
set buttonID [sess$t GetSpaceballButtonMin];
sess$t RegisterSpaceballCallback $buttonID ::FlipAnim;
sess$t ReleaseHandle;