サンプル コードを VB で使用できるように更新するには、まず、AutoCAD タイプ ライブラリを参照する必要があります。
VB でこれを行うには、[プロジェクト]メニューから[参照設定]を選択し、[参照設定]ダイアログ ボックスを表示します。[参照設定]ダイアログ ボックスから AutoCAD のタイプ ライブラリを選択し、[OK]をクリックします。
次に、サンプル コードで、ThisDrawing へのすべての参照を、アクティブなドキュメントを参照するユーザ指定の変数に置き換えます。それには、AutoCAD アプリケーション(acadApp)と現在の図面(acadDoc)の変数を定義します。次に、アプリケーション変数を現在の AutoCAD アプリケーションに設定します。
AutoCAD が実行中の場合は、AutoCAD のバージョン番号を指定すると、VB の GetObject 関数は AutoCAD Application オブジェクトを取得します。AutoCAD が実行中でない場合は、エラーが発生しますが、(この例では)エラーはトラップされクリアされます。次に、CreateObject 関数が AutoCAD Application オブジェクトを作成しようとします。オブジェクトが正常に作成された場合は AutoCAD が起動し、失敗した場合はエラーに関する説明がメッセージ ボックスに表示されます。
AutoCAD の複数のセッションを実行中の場合、GetObject 関数は Windows の Running Object Table の最初の AutoCAD インスタンスを返します。GetObject によって返されるセッションを確認する方法については、Microsoft VBA のマニュアルの Running Object Table(ROT)および GetObject 関数についての説明を参照してください。
AutoCAD の作図ウィンドウを表示するには、AutoCAD アプリケーションの Visible プロパティを TRUE に設定する必要があります。
GetObject によって AutoCAD の新しいインスタンスが作成される場合(つまり、GetObject を発行したとき、AutoCAD をまだ実行していない場合)、Visible を TRUE に設定しておかないと、AutoCAD アプリケーションが非表示になり、AutoCAD は Windows タスクバーにも表示されなくなります。
次のサンプル コードでは、Err の Clear プロパティと Description プロパティが使用されています。これらのプロパティがサポートされていないコーディング環境の場合は、適宜、例を修正する必要があります。
Sub Ch2_ConnectToAcad() Dim acadApp As AcadApplication On Error Resume Next Set acadApp = GetObject(, "AutoCAD.Application.19") If Err Then Err.Clear Set acadApp = CreateObject("AutoCAD.Application.19") If Err Then MsgBox Err.Description Exit Sub End If End If MsgBox "Now running " + acadApp.Name + _ " version " + acadApp.Version End Sub
次に、ドキュメント変数を AutoCAD アプリケーションの Document オブジェクトに設定します。Application オブジェクトの ActiveDocument プロパティによって Document オブジェクトが返されます。
Dim acadDoc as AcadDocument Set acadDoc = acadApp.ActiveDocument
この時点から、acadDoc を使って現在の AutoCAD 図面を参照します。
次のサンプル コードは、VBA と VB での線分の作成を示しています。
VBA を使用した線分の作成
Sub Ch2_AddLineVBA() ' This example adds a line ' in model space Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double ' Define the start and end ' points for the line startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 ' Create the line in model space Set lineObj = ThisDrawing. _ ModelSpace.AddLine _ (startPoint, endPoint) ' Zoom in on the newly created line ZoomAll End Sub
VB を使用した線分の作成
Sub Ch2_AddLineVB() On Error Resume Next ' Connect to the AutoCAD application Dim acadApp As AcadApplication Set acadApp = GetObject _ (, "AutoCAD.Application.20") If Err Then Err.Clear Set acadApp = CreateObject _ ("AutoCAD.Application.20") If Err Then MsgBox Err.Description Exit Sub End If End If ' Connect to the AutoCAD drawing Dim acadDoc As AcadDocument Set acadDoc = acadApp.ActiveDocument ' Establish the endpoints of the line Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 ' Create a Line object in model space Set lineObj = acadDoc.ModelSpace.AddLine _ (startPoint, endPoint) ZoomAll acadApp.visible = True End Sub