AutoCAD VBAを掌握する:図面に「点」を打つという極意
こんにちは。AutoCADの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードの羅列に呆然とした経験はありませんか?あれはあくまで「手作業の録画」に過ぎません。今日から皆さんが目指すのは、「AutoCADの頭脳を直接操作するエンジニア」です。
今回は、自動化の第一歩として「指定した座標に点(Point)オブジェクトを配置する」という、一見単純ながらもCADエンジニアの基礎となる技術を伝授します。
—
1. AutoCADオブジェクトモデルの「心臓部」を理解する
AutoCAD VBAを操る上で、絶対に避けて通れないのが「オブジェクトモデル」という階層構造です。
- Application(AutoCADそのもの)
- Document(開いている図面ファイル)
- ModelSpace(図面の中の「紙面」そのもの)
私たちが何かを描こうとする時、それは必ず「ModelSpace(モデル空間)」というキャンバスに対して命令を送ることになります。「どこに」「何を」置くか、これをプログラムに教えるのが今回の目的です。
—
2. 実践:座標を指定して「点」を配置するコード
まずは、以下のコードをVBAエディタ(Alt + F11)に貼り付けてみてください。
Sub CreatePointAtCoordinate()
‘ 1. オブジェクト変数の宣言(メモリの準備)
Dim ptObj As AcadPoint
Dim coord(0 To 2) As Double ‘ X, Y, Z座標を格納する箱
‘ 2. 座標値を設定(今回は X=100, Y=50, Z=0)
coord(0) = 100: coord(1) = 50: coord(2) = 0
‘ 3. 点オブジェクトをモデル空間に追加
‘ AddPointメソッドは「どこに(coord)作成するか」を引数に取ります
Set ptObj = ThisDrawing.ModelSpace.AddPoint(coord)
‘ 4. 更新を通知(これがないと画面がチラつくことがあります)
ptObj.Update
MsgBox “座標(100, 50)に点を配置しました。”
End Sub
—
3. コードの「裏側」で起きていること(ここが重要!)
ただコピペするだけでは成長はありません。なぜこのコードが動くのか、プロの視点で解説します。
- 配列 `coord(0 To 2)` の意味
AutoCADの座標系は、常に3次元(X, Y, Z)です。たとえ2次元の図面であっても、プログラム側には必ず3つの箱(Double型)を用意してあげる必要があります。ここを疎かにすると、メモリの型不一致エラーの温床になります。
- `ThisDrawing` の魔法
VBAには最初から`ThisDrawing`というオブジェクトが用意されており、これは現在アクティブな図面を指します。`Application.Documents.ActiveDocument`と書くのと同じ意味ですが、現場では簡潔に`ThisDrawing`を使うのが定石です。
- `Set` キーワードの存在
数値の代入には不要ですが、オブジェクト(図形)を扱う時は必ず`Set`が必要です。これを忘れると「オブジェクトが設定されていません」というエラーでプログラムは停止します。
—
4. 初心者が陥りやすい「落とし穴」
現場でよくある失敗談を共有します。これを知っておくだけで、皆さんのデバッグ時間は半分になります。
1. 「点が見えない!」問題
コードは完璧なのに点が見えない。これはAutoCADのシステム変数 `PDMODE`(点の表示形式)が「点」のままだからです。
対策:コードの冒頭で `ThisDrawing.SetVariable “PDMODE”, 3` を実行し、表示形式を変更しておきましょう。
2. 空間の勘違い
`ModelSpace` ではなく `PaperSpace`(レイアウト)に描こうとしていないか確認してください。初心者のうちは、とりあえず `ModelSpace` に絞って考えるのが安全です。
—
最後に:なぜ今、AutoCAD VBAを学ぶのか
世の中には様々な自動化ツールがありますが、AutoCADの内部から直接エンジンを叩けるVBAは、今なお現場の強力な武器です。
今回学んだ「座標を指定して図形を配置する」というロジック。これは、「CSVから座標リストを読み込んで何千もの点を一瞬で打つ」という業務効率化の核心部分そのものです。
まずはこのコードを動かし、次に「もし座標をExcelから読み込めたら?」と想像してみてください。そこが、皆さんが自動化エンジニアとして覚醒するポイントです。
困ったことがあれば、いつでもまた聞きに来てください。CADの深淵で、皆さんの成長を楽しみにしていますよ。
