概要 - オブジェクト レベルのイベントを有効にする(VBA/ActiveX)

オブジェクト レベルのイベントを使用するためには、まず新しいクラス モジュールを作成し、イベントを使用できる AcadObject タイプのオブジェクトを宣言する必要があります。

たとえば、EventClassModule という名前のクラス モジュールを新しく作成するとします。新しいクラス モジュールには、WithEvents という VBA キーワードを持つアプリケーションの宣言が含まれます。

ポリラインが更新されるたびに閉じたポリラインの領域を表示する

以下の例では、イベントを使用するライトウェイト ポリラインを作成します。ポリライン用のイベント ハンドラは、ポリラインが変更されるたびに新しい面積を表示します。イベントを発生させるには、AutoCAD でポリラインのサイズを変更するだけです。イベント ハンドラをアクティブにする前に CreatePLineWithEvents サブルーチンを実行する必要があることを覚えておいてください。

Public WithEvents PLine As AcadLWPolyline

Sub CreatePLineWithEvents()
 ' This example creates a light weight polyline
 Dim points(0 To 9) As Double
 points(0) = 1: points(1) = 1
 points(2) = 1: points(3) = 2
 points(4) = 2: points(5) = 2
 points(6) = 3: points(7) = 3
 points(8) = 3: points(9) = 2
 Set PLine = ThisDrawing.ModelSpace. _
 AddLightWeightPolyline(points)
 PLine.Closed = True
 ThisDrawing.Application.ZoomAll
End Sub

Private Sub PLine_Modified _
 (ByVal pObject As AutoCAD.IAcadObject)
 ' This event is triggered when the polyline is resized.
 ' If the polyline is deleted the modified event is still
 ' triggered, so we use the error handler to avoid
 ' reading data from a deleted object.
 On Error GoTo ERRORHANDLER
 MsgBox "The area of " & pObject.ObjectName & " is: " _
 & pObject.Area
 Exit Sub

ERRORHANDLER:
 MsgBox Err.Description
End Sub