2005年8月11日木曜日

SolidWorks API「視点の切り替え」

今回は視点の切り替えについて考えてみましょう

SolidWorksは標準で「正面」「平面」「右側面」の3平面を持っています。
各平面と座標系との関係は
正面:XY座標
平面:XZ座標
右側面:YZ座標
となっています。

ここまで読んで「あれっ、ちょっとおかしいな」と思った方はいますでしょうか?

自分の目線で形状を考えた場合、正面とは形状を前から見るのでXZ座標に、平面(上面)は形状を上から見るのでXY座標になるのではないかと考えました。

そう考えるとSolidWorksの正面と平面は逆になりますので、今回は正面と上面の表示を行うためのマクロを作成してみましょう。
まずサンプルマクロを取得/実行してください。こちらから...

処理は至って単純で
正面ボタンを押したときはXXXを使用して平面ビューを
上面ボタンを押したときはXXXを使用して正面ビューを
呼び出しているだけです。

これだけではおもしろくないので別の方法で画面切替を行ってみましょう。

以下のコードを UserForm1 に追加してください

 Private Sub View_Change()
 Dim Xform As SldWorks.MathTransform
 Dim data As Variant
 Set Xform = swModel.ActiveView().Orientation3
 data = Xform.ArrayData
 data(0) = 1#
 data(1) = 0#
 data(2) = 0#
 data(3) = 0#
 data(4) = 1#
 data(5) = 0#
 data(6) = 0#
 data(7) = 0#
 data(8) = 1#
 Xform.ArrayData = data
 swModel.ActiveView().Orientation3 = Xform
 swModel.ViewZoomtofit2
 End Sub

次に上面ボタンの処理を変更してみましょう。
CommandButton1_Click内の処理を上記関数呼び出しに変更します。

 Private Sub CommandButton1_Click()
   View_Change
   ' swModel.ShowNamedView2 "*正面", 1
 End Sub

修正したら実行してみましょう。
どうでした?修正前と同じように動作しましたか?

正面ボタンの処理も修正します。
CommandButton1_Click内の処理を上記関数呼び出しに変更します

 Private Sub CommandButton2_Click()
 View_Change
 swModel.ViewRotXPlusNinety
   ' swModel.ShowNamedView2 "*底面", 6
   ' swModel.ViewZoomtofit2
 End Sub

View_Changeの処理は必ずXY平面を画面に表示するため
ViewRotXPlusNinetyでX軸を回転させてXZ平面を画面に表示させます。

ではまた!