はじめに
Excel VBAとAutoCADを組み合わせると、作業を効率化できるだけでなく、手作業では難しい正確さや一貫性を持つ図面作成が可能になります。この記事では、AutoCADのコマンドラインにコマンドを送信してAutoCAD上に長方形を描く方法を紹介します。
長方形を描くコマンド
まず試しに、AutoCADのコマンドラインに次の文章を入力して、最後にエンターキーを押しましょう。間のスペースも忘れずに。
途中AutoCADが気を利かせて、コマンド入力部からカーソルが外れることもありますが、そのときはカーソルをコマンドラインに戻してください。
RECTANG 0,0 200,300
これで、左下の角の座標が(0,0)であり、幅200、高さ300の長方形が描けます。
この操作をVBAで自動実行させてみましょう。
長方形(Rectangle)を描くサンプルコード
それでは早速、エクセルに入力した値を持ちいて長方形を描くサンプルコードを紹介します。
下のようなエクセルを準備ください。この例では、基点が(10,10)であり、幅500、高さ300の長方形を描きます。
A2からA4が入力セルになっています。
次にVBAコードです。次のコードをコピーしてエクセルのVBAエディタに貼り付けてください。
VB
Sub DrawRectangleInAutoCAD()
'AutoCADアプリケーションオブジェクトを宣言
Dim acadApp As Object
'AutoCADドキュメントオブジェクトを宣言
Dim acadDoc As Object
'描画に必要な変数の宣言
Dim x As Double '起点のX座標
Dim y As Double '起点のY座標
Dim width As Double '長方形の幅
Dim height As Double '長方形の高さ
Dim commandText As String
'AutoCADが起動していなければ起動し、すでに開いていたら取得する。
On Error Resume Next
Set acadApp = GetObject(,"AutoCAD.Application")
If acadApp Is Nothing Then
Set acadApp = CreateObject("AutoCAD.Application")
End If
On Error GoTo 0
'AutoCADドキュメントを新規作成、または取得する。
On Error Resume Next
Set acadDoc = acadApp.ActiveDocument
If acadDoc Is Nothing Then
Set acadDoc = acadApp.Documents.Add
End If
On Error GoTo 0
'エクセルから値を取得する
x = Cells(2, 1)
y = Cells(2, 2)
width = Cells(2, 3)
height = Cells(2, 4)
'コマンド文の作成
commandText = "RECTANG " & x & "," & y & " " & (x + width) & "," & (y + height) & " "
'コマンドの送信
acadDoc.SendCommand commandText & vbCr
'AutoCADを表示
acadApp.Visible = True
'メッセージを表示
MsgBox ”長方形を描きました!”
End Sub
- 3行目、5行目でAutoCADのオブジェクトを準備します。
- 8~12行目が作図に必要な変数です。
- 14~20行目で、AutoCADオブジェクトをセットします。すでにAutoCADを立ち上げていれば、それをセットし、立ち上げていなければ新規で立ち上げます。
- 22~28行目で、AutoCADのファイルをセットします。すでに図面を立ち上げていれば、それをセットし、立ち上げていなければ新規でファイルを作成します。
- 30~34行目でエクセルからの値を取得します。
- 37行目でコマンド文を作成しています。本コードの肝となる部分です。
- 40行目でコマンドをAutoCADに送信しています。本コードの肝となる部分その2です。コマンドを確定するため、改行(vbCr)を付け加えます。
おわりに
Excel VBAを使ったAutoCAD操作は、初心者にとって少し敷居が高く感じられるかもしれませんが、一度仕組みを理解すれば簡単です。今回の長方形描画を応用すれば、複雑な図形の自動生成も夢ではありません。日常業務を効率化しながら、自動化の楽しさを体験してみて下さい!
このコード、長方形だけど使い勝手はマル!
コメント