|
|
イベントとは、オブジェクトに対してあらかじめ決められた操作や動作が行われたときに発生するものです。たとえば「図面が閉じられようとしている」「図面に何かの図形が作図した」といった動作があると、イベントが発生します。
AutoCAD VBAではイベントが発生したときの処理を記述することができます。つまり、特定の動作があったときには自動的にイベントに対応したプロシージャ(イベントプロシージャやイベントハンドラなどと呼ばれる)が呼び出され、必要な処理を実行させることができるのです
AutoCADのイベントには、イベントを発生させるオブジェクトごとに以下の3タイプがあります。
■ アプリケーションレベルのイベント
■ ドキュメントレベルのイベント
■ オブジェクトレベルのイベント
アプリケーションレベルのイベントは、AutoCAD(Applicationオブジェクト)自身およびその環境が変化したときに発生します。これらのイベントは図面の作成、オープン、保存、クローズおよび印刷などによって発生します。
ドキュメントレベルのイベントは、特定の図面(Documentオブジェクト)自身またはその内容が変化したときに発生します。これらのイベントは特定の図面に対する図形などのオブジェクトの作成、削除または変更などによって発生します。また、図面のオープン、クローズ、および印刷などでもドキュメントレベルのイベントが発生します。
オブジェクト レベルのイベントは、特定の図形などのオブジェクトが変化したときに発生します。現在のところオブジェクトレベルのイベントは1つだけで、これは図形が修正されるたびに発生します。
これら3つのタイプのイベントのうち、もっとも簡単に利用できるのはドキュメントレベルのイベントです。ドキュメントレベルのイベントを利用するには、VBエディタのプロジェクトエクスプローラで「ThisDrawing」をダブルクリックして開き、コードウィンドウの上部左側の[オブジェクト]ボックスで[AcadDocument]を選択します。
[AcadDocument]を選択すると右側の[プロシージャ]ボックスにVBAで認識可能なイベントがすべて表示されるので、イベントを選択するとそのイベント(下図の例ではObjectModified = 図面内の図形などのオブジェクトが変更されたときに発生する)に対応したイベントプロシージャ(下図の例ではAcadDocument_ObjectModified)がコードウィンドウに表示されます。
非常に単純な例ですが、前述の操作で表示されたAcadDocument_ObjectModifiedイベントプロシージャを使用したサンプルコードを掲載します。図面に何か変更を加えるたびにメッセージボックスが表示され、変更されたオブジェクトの名前が表示されます。
ここで注意する必要があるのは、イベントとして利用できるのはあらかじめAutoCADを構成するオブジェクトで決められているものだけであるということです。それ以外の操作や動作がオブジェクトに対して行われても、AutoCAD VBAプログラムからはその発生を知ることができません。
現状ではVBAプログラムから利用できるイベントの種類も少なく、イベントの発生する順番などがあいまいであることやイベントを利用するには必ずVBAプログラムをロードしておく必要あるため、私自身はあまり活用できるシーンが思いつかないというのが実情です。
AutoCAD VBAのイベントの詳細については、AutoCADの[ヘルプ]メニューの[開発者用]ヘルプ、[ActiveX/VBA開発用ガイド]の[イベントの使用]各ページを参照してみてください。サンプルコードなども多数あります。 |
|
|
|