オブジェクトは、直接またはユーザ定義変数を使用して参照できます。オブジェクトを直接参照するには、呼び出し側の階層にそのオブジェクトを含めます。
たとえば、次の文はモデル空間に線分を追加します。階層は、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