chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
イベントハンドラー
« 投稿日: 2006/03/20 - 19:18:05 » |
|
SolidWorksのイベントハンドラーってどうやって使うのですすか? たとえば、ファイル保存時にメッセージを表示させたいとか・・・・ ご存知の方、ご教授願います。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:イベントハンドラー
« 返信 #1 投稿日: 2006/03/20 - 19:33:20 » |
|
hiroponです 私はよく、フォーム出現時にイベントハンドラを使います。 (フォーム出現時しか使えないと思ってるんですが ちがうのかな???) フォームを作成して フォーム最上部(フォーム内グローバル変数宣言箇所)に 例えば Dim WithEvents aaa as PartDoc と宣言します。 Genelicと書いていあるコンボボックスで aaa が選択できるようになります。 aaa を選択すると 右横のコンボボックスに イベントの関数一覧が表示されるので 望みのイベント関数を選択します。 すると望みのイベントが発生した際、その関数内に実行が移るようになります。 たしか、このサイトでイベントハンドラについてすごく参考になるプログラムを 発見した記憶があるんですがどこだっけかな?? :-
|
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:イベントハンドラー
« 返信 #3 投稿日: 2006/03/20 - 19:42:44 » |
|
chippuさん ありましたよ〜 Makoronさんが以前投稿してくれてました。 Makoronさん引用させていただきます。。。 >(API Downloads のページ) >http://www.solidworks.com/pages/services/APIDownloads.html >(VBAイベントモニターのサンプルファイル) >http://www.solidworks.com/downloads/API/Downloads/00000/0200s/0230/VBA_Events.zip
このサンプルプログラムが非常に役に立ちました。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:イベントハンドラー
« 返信 #4 投稿日: 2006/03/20 - 20:10:16 » |
|
' 引用元: hiropon 投稿日 '.timeformat('1142851364').' 'chippuさん ありましたよ〜 Makoronさんが以前投稿してくれてました。 Makoronさん引用させていただきます。。。 >(API Downloads のページ) >http://www.solidworks.com/pages/services/APIDownloads.html >(VBAイベントモニターのサンプルファイル) >http://www.solidworks.com/downloads/API/Downloads/00000/0200s/0230/VBA_Events.zip
このサンプルプログラムが非常に役に立ちました。 |
お〜〜、自分書き込んでいたのですね・・・。 また同じ事書いてしまいました 記憶していて見つけ出したhiroponさんは、すごい!
・・・で、少し恥ずかしいので、追加情報です。 http://www.solidworktips.com/api_pages/05_using_notifications.htm にClassを使ったイベント取得方法が書かれているようです。 (いつもの事ながら、英語が不得意なので、良く理解していませんが...)
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:イベントハンドラー
« 返信 #5 投稿日: 2006/03/20 - 21:18:15 » |
|
Makoronさん このイベントハンドラーのサンプルって、どうゆう意味なんでしょう? 私のつたない英語読解力でよんだところ、SolidWorks Exeの ショートカットを C:\Program Files\SolidWorks\SLDWORKS.exe" /m "C:\Macros\notifications.swp にしたら、自動的に C:\Macros\notifications.swp のマクロが走って、部品ファイルを新規に作成してセーブしたらメッセージがでるよ って書いてあると読解したんですが、なりませんよね??(なりました??) というか Public Sub MonitorSolidWorks() Set swApp = Application.SldWorks End Sub が実行してEnd Subまでいったら イベントなんてとれないですよねー?(もしかして、 とれるんですか???) それとも Set swApp = New SldWorks.SldWorks の下になにかコードを書くことを前提としているんでしょうか? ちなみに 下に swApp.CloseDoc ("Part1.SLDPRT") と書いたら、ちゃんとクラスのイベントは発生しましたが・・・ いまいち、英文のPDF文章の意味がわからないっす。。。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:イベントハンドラー
« 返信 #6 投稿日: 2006/03/21 - 09:31:54 » |
|
実は試した事がなかったのです・・・。 ちょっと試して見ましたが、サンプルのままだと動きませんでした。
そこで、いろいろと試して、なんとか動きそうな事がわかりました。 標準モジュールの部分を次の様に修正したら動きました。 ------------------------------------------------------- Option Explicit Dim MyClass As New Notification_Class Sub main() MyClass.MonitorSolidWorks End Sub ------------------------------------------------------- MyClass の定義の場所を変えただけです。
>が実行してEnd Subまでいったら イベントなんてとれないですよねー?(もしかして、 >とれるんですか???) たぶん、クラスとしてイベントハンドラーを定義しているので、クラスが開放されるまかSWが閉じない限り、動いているのではないかと思います。 なにせ、クラスの使い方(考え方)をマスターしていないので、このくらいしか説明出来ません。
あと、 C:\Program Files\SolidWorks\SLDWORKS.exe" /m "C:\Macros\notifications.swp の部分ですが、
単に、起動と同時にこのマクロを実行するための手順だと思うので、 従来どおり、マクロの実行やマクロボタンの登録から、マクロを起動しても問題ないのと思います。 (終了できないマクロになると思いますが...。)
このマクロの使い方はいろいろあると思いますが、例えば、 ・保存した時に、自動でPDFも作る ・特定のフォルダへの保存を禁止する ・保存した時に、別のフォルダにもコピーしておく なんか使えそうなしょりかな。
別のイベントも追加すると、いろいろ出来そうですね。
|
|
|
|
chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
Re:イベントハンドラー
« 返信 #7 投稿日: 2006/03/22 - 09:06:27 » |
|
なるほど。。。 例えば、既存のファイル保存コマンドで利用してるマクロ?に手を加えたりって不可能なんですかね?
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:イベントハンドラー
« 返信 #8 投稿日: 2006/03/22 - 09:27:11 » |
|
hiroponです おぉー Makoronさん さすがです。グローバルにしておけば クラスオブジェクトが破棄されない んですね 破棄をどうするかがネックですかね。まぁ、SWが閉じたら自動的に破棄されるんで問題 はないでしょうね- 。 クラスによるイベント取得は、憶えておくとかなり後々いろんなことに使えそうですねー 本当、いつもいつも有益な情報ありがとうございます。
|
|
|
|