概要 - オブジェクト階層内のオブジェクトを参照する(VBA/ActiveX)

オブジェクトは、直接またはユーザ定義変数を使用して参照できます。オブジェクトを直接参照するには、呼び出し側の階層にそのオブジェクトを含めます。

たとえば、次の文はモデル空間に線分を追加します。階層は、ThisDrawing から始まり、ModelSpace オブジェクトに進み、次に AddLine メソッドを呼び出します。

Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)

ユーザ定義変数を使用してオブジェクトを参照するには、変数をオブジェクトのタイプとして定義し、次に変数を適当なオブジェクトに設定します。たとえば、次のコードは、タイプ AcadModelSpace の変数(moSpace)を定義し、その変数を現在のモデル空間に設定します。

Dim moSpace As AcadModelSpace
Set moSpace = ThisDrawing.ModelSpace

次の文は、ユーザ定義変数を使用して、モデル空間に線分を追加します。

Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = moSpace.AddLine(startPoint,endPoint)

モデル空間の最初の図形を抽出する

次の例は、モデル空間の最初の図形オブジェクトを返します。ペーパー空間図面についても、同様のコードが同じ働きをします。すべての図面オブジェクトを AcadEntity オブジェクトとして定義できます。

Sub Ch2_FindFirstEntity()
    ' This example returns the first entity in model space
    On Error Resume Next

    Dim entity As AcadEntity
    If ThisDrawing.ModelSpace.count <> 0 Then
        Set entity = ThisDrawing.ModelSpace.Item(0)
        MsgBox entity.ObjectName + _
 " is the first entity in model space."
    Else
        MsgBox "There are no objects in model space."
    End If
End Sub