hiromayu
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
座標拾得
« 投稿日: 2006/10/23 - 16:29:01 » |
|
はじめまして。VBマクロ初心者です。
現在VBにて、正面スケッチを開いた状態で
画面内でマウスの左ボタンをクリックしたら
そこの座標を拾得したいのですが上手に出来ません。
どなたかサンプルコードを教えて下さい。
よろしくお願いします
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:座標拾得
« 返信 #1 投稿日: 2006/10/23 - 18:13:33 » |
|
hiromayuさん、はじめまして。
SWではマウスイベントを取得することが出来ません。 (SW2007からは出来るよになるみたいです。) なので、「クリックした時」自身を取得する事は難しいと思います。 ましてや、マウスの座標を取得と言うのはさらに難しいです。
ただ、マウスのイベントが取れないだけで、 何かが選択された時や選択オブジェクトが変更された時は SolidWorksのイベントを取得することが出来るので、 これを代用して、ある程度の事ができると思います。
もう少し、手順ややりたい事を書いてくれると、サンプルを 作る事も出来ると思います。
|
|
|
|
hiromayu
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
Re:座標拾得
« 返信 #2 投稿日: 2006/10/24 - 09:15:05 » |
|
お返事ありがとうございます。
SW2006を使用しています。マウスイベント取得はきびしいのですか
行いたい内容は2Dスケッチを開いた状態から
スケッチ画面内の任意の場所を左クリック ↓ 左クリックした場所に半径100mの円を書きたい
このような内容です。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:座標拾得
« 返信 #3 投稿日: 2006/10/24 - 14:14:43 » |
|
いろいろと調べたり、テストしてみたりしたのですが、 やはり、できないようです。 どうしても、マウスイベントや現在のカーソル座標が取得できません。 SW2007で実現するしかなさそうです。
|
|
|
|
hiromayu
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
Re:座標拾得
« 返信 #4 投稿日: 2006/10/24 - 14:28:22 » |
|
ありがとうございます。 今2007をインストールしてmausuイベントを勉強中なのですが ?ばかりです 色々検討してみます 何か2007VBの情報があればよろしくお願いします。
|
|
|
|
hiromayu
新人さん
オフライン
投稿: 4
I'm a llama!
|
|
Re:座標拾得
« 返信 #5 投稿日: 2006/10/25 - 10:02:07 » |
|
お世話になっています。
マウスイベントの使用方法が分からなくて行き詰ってます
サンプルがあれば情報をお願いします。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:座標拾得
« 返信 #6 投稿日: 2006/10/25 - 12:18:25 » |
|
SolidWorks2007 APIヘルプのサンプルみてみました? 私はまだサンプルを試していないのですが、時間があれば試して見ます。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:座標拾得
« 返信 #7 投稿日: 2006/11/08 - 12:23:07 » |
|
SolidWorks2007 APIヘルプのサンプルを基に、サンプルマクロを作ってみました。 ・・・が、マウスイベントで取得できる座標が、ウィンドウ上でのXY座標で、そのXY座標からスケッチ座標やモデル空間の3次元座標に変換する方法がわかりませんでした・・・ (どなたか方法のわかる方がいましたら、書き込みお願いします。)
あまり使い物にならないサンプルマクロですが、添付しておきます。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:座標拾得
« 返信 #8 投稿日: 2007/01/10 - 14:05:53 » |
|
hiromayuさん、はじめまして
色々調べてみましたが、結構難しいですね 一応、スクリーン座標→モデル座標変換は出来るのですが、 2D表現であるスクリーンと実際の3Dモデルでは『奥行き』の部分で望む結果が 得られない場合があります。 具体的には、モデルを傾いて表示している場合に、同じマウスの位置でも奥行きに よって返される座標値が異なります。
添付図(□50立方体の頭角投影)で説明すると、原点位置にマウスを持っていった 場合に、明示しない限り原点なのか手前の頂点なのかの判別が出来ません。 言い換えれば、奥行き次第でXYZ座標は変化してしまいます。 実際APIで検証してみたら、どうやらスクリーン座標は視線に垂直且つモデル中心 を通る平面として存在しているようです。 (添付図の緑色平面となり、原点位置にカーソルを持っていくとモデル中心:X25,Y25,Z25が返される)
上記を踏まえると、正面視や側面視などX/Y/Zのいずれかがカーソル位置で変化 しない状態であれば、他の座標は望む値を返してくれます。
分かりづらい説明になってしましたが、ようは画面に平行でモデルの中心を通る仮想 平面上をカーソルが常に這っていると考えて頂ければ…と思います
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:座標拾得
« 返信 #9 投稿日: 2007/01/10 - 14:10:56 » |
|
一応、試しに作成したマクロも添付しておきます。
フォームのチェックをONにした場合に、指定半径で円を描きます。 条件として、 1)スケッチ(3Dスケッチは除く)を開いた状態で 2)視線に垂直の表示で としないと正しく機能してくれません…
幸い、ドラッグすることで既存の要素に一致させることも可能です あまりデバッグしていませんのであしからず…
ご参考までに
追記) 上記を読むと全くの不可能の様に聞こえますが、ModelViewオブジェクトの Orientation3・Transration・Scale2辺りを利用し指定面への座標変換 マトリクスを作成出来そうな気はしています。しかし、自分の頭ではそこまで 検証しきれませんでした…
|
|
|
|