【入門編】【初心者向け】AcadDocumentオブジェクトで新規図面を作成し、基本的な図形(線、円)を配置する – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCADの世界へようこそ。私はこのプラットフォームの深淵を長年見守ってきたエンジニアです。

「マクロの記録」という安全な岸辺から離れ、コードという名の筆で直接AutoCADを操る決意をしたあなたを歓迎します。AutoCAD VBAは、単なる自動化ツールではありません。あなたのCAD操作という「作業」を、一瞬で終わる「処理」へと昇華させるための最強の武器です。

今回は、すべての始まりである「図面の生成」と「図形の描画」という、AutoCADオートメーションの心臓部を紐解いていきましょう。

1. AutoCADオブジェクトモデルの「階層」を理解する

まず、最も重要な地図を描きます。AutoCADの頭の中は、以下の階層構造になっています。

  • Application (AcadApplication):AutoCADそのもの。
  • Documents (AcadDocuments):開いている図面ファイルの集まり。
  • Document (AcadDocument):個別の図面ファイル。
  • ModelSpace (AcadModelSpace):図形が住んでいる「現実の空間」。

私たちがコードを書くとき、常に「今どの階層にいるのか?」を意識してください。「アプリケーションから図面を呼び出し、モデル空間へアクセスして図形を置く」。この流れがすべてです。

2. 実践:新規図面の作成と描画のコード

それでは、実際に動くコードを見てみましょう。VBAエディタ(`Alt + F11`)を開き、標準モジュールに以下のコードを貼り付けてみてください。

Sub DrawBasicShapes()
‘ 変数の宣言(型を明確にすることで、AutoCADの動作は劇的に安定します)
Dim newDoc As AcadDocument
Dim mSpace As AcadModelSpace
Dim lineObj As AcadLine
Dim circleObj As AcadCircle

‘ 座標用の配列(AutoCADは常に「X, Y, Z」の3点座標で空間を認識します)
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
Dim centerPoint(0 To 2) As Double
Dim radius As Double

‘ 1. 新規図面の作成
‘ “acad.dwt” は標準テンプレート。ここから新しいキャンバスが生まれます。
Set newDoc = ThisDrawing.Application.Documents.Add(“acad.dwt”)

‘ 2. モデル空間へのアクセス
‘ 図形は「どこに」描くのか。ModelSpaceを指定するのが鉄則です。
Set mSpace = newDoc.ModelSpace

‘ 3. 線分の定義(0,0,0 から 100,100,0 まで)
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 100: endPoint(1) = 100: endPoint(2) = 0
Set lineObj = mSpace.AddLine(startPoint, endPoint)

‘ 4. 円の定義(中心 50,50,0、半径 20)
centerPoint(0) = 50: centerPoint(1) = 50: centerPoint(2) = 0
radius = 20
Set circleObj = mSpace.AddCircle(centerPoint, radius)

‘ 描画後の再描画(画面を最新の状態に更新)
newDoc.Regen acActiveViewport

MsgBox “図形の生成が完了しました。”
End Sub

3. なぜ「型」を定義し、座標を「配列」にするのか?

初心者の方がここで躓きやすいポイントを、先輩として解説します。

「型(Object)」を指定する意味

`Dim lineObj As AcadLine` と書くことで、VBAは「あ、これは線分だな」と理解し、線分特有のプロパティ(始点や終点など)をインテリセンス(入力補完)で提案してくれるようになります。型を指定しない `Dim lineObj As Object` と書くのは、目隠しをして図面を引くようなものです。

座標が「配列(0 to 2)」である理由

AutoCADは2次元のソフトに見えて、内部的には常に「3次元空間(Z軸含む)」で計算を行っています。そのため、X=100 と指定したい場合でも `point(0)=100` と配列の0番目に格納する必要があります。これは設計上の不変のルールです。

4. 陥りやすい「エラー」と対策

現場でよくある失敗を先回りして教えます。

  • 「オブジェクト変数またはWithブロック変数が設定されていません」
  • 原因:`Set` を忘れていませんか? オブジェクト(図面や図形)を代入するときは必ず `Set` が必要です。
  • 「モデル空間が見つからない」
  • 原因:まだ図面が開かれていない状態で `ModelSpace` にアクセスしようとしています。`Documents.Add` を実行した直後であることを確認してください。

最後に:ここからがスタート地点です

今回解説したのは、広大なAutoCAD APIのほんの入り口に過ぎません。しかし、この「新規図面を作り、モデル空間に線を引き、円を置く」という手順さえマスターすれば、あとは「繰り返す(Loop)」か「条件で分ける(If)」かを組み合わせるだけで、どんなに複雑な図面でも自動生成できるようになります。

コードを書くことは、AutoCADという巨大なシステムと対話することです。エラーが出ても恐れることはありません。それは、システムがあなたに「もっと正しく指示してほしい」と語りかけているだけなのですから。

さあ、次はあなたの業務にある「繰り返し作業」を、このコードで書き換えてみましょう。何か困ったことがあれば、いつでもまた聞きに来てくださいね。あなたの挑戦を応援しています。

タイトルとURLをコピーしました