【AutoCAD VBA】「マクロの記録」を卒業せよ。テンプレートから一瞬で“理想の図面”を立ち上げる極意
AutoCADの自動化へようこそ。
多くの人が「マクロの記録」ボタンを探して途方に暮れる中、あなたは一歩先へ進もうとしていますね。素晴らしい。AutoCAD VBAの真髄は、「人間が手作業で行う準備運動を、コードで一瞬にして終わらせること」にあります。
今回は、現場の生産性を劇的に変える「テンプレート(DWT)からの新規図面作成」の極意を伝授します。これさえマスターすれば、毎回手作業で画層を整えたり、枠線をコピペしたりする無駄な時間から解放されます。
—
1. なぜ「Documents.Add」を理解する必要があるのか
AutoCADにおいて、図面は「Document」というオブジェクトとして管理されています。
新規図面を開く際、何も指定せずに `Documents.Add` を呼ぶと、AutoCADはデフォルトの設定(acad.dwtなど)を読み込みます。しかし、現場ではプロジェクトごとに「決まった画層」「決まった文字スタイル」「決まった表題欄」を持つテンプレートを使うのが鉄則です。
ここを自動化できるかどうかで、「毎回10分かかる初期設定」が「0秒」になります。
—
2. 【実践】特定テンプレートから図面を作成するコード
以下が、現場でそのまま使える実用的なコードです。まずはコピペして、自分の環境に合わせてパスを書き換えてみてください。
Sub OpenNewDrawingFromTemplate()
‘ テンプレートファイルのフルパスを指定
‘ ※パスにスペースが含まれる場合やネットワークドライブの場合は特に注意が必要です
Dim templatePath As String
templatePath = “C:\CAD_Standards\MyProject_Template.dwt”
‘ ファイルの存在確認(重要:ここをサボると実行時エラーで止まります)
If Dir(templatePath) = “” Then
MsgBox “テンプレートが見つかりません: ” & templatePath, vbCritical
Exit Sub
End If
‘ 新規図面の作成
‘ Documents.Add の引数にテンプレートパスを渡すのがポイント
Dim doc As AcadDocument
Set doc = Application.Documents.Add(templatePath)
‘ 新しく開いた図面がアクティブになっていることを確認
doc.Activate
MsgBox “図面テンプレートの読み込みが完了しました!”, vbInformation
End Sub
コードの重要ポイントを解説
- `Application.Documents.Add(templatePath)`: これが心臓部です。引数にテンプレートのパスを渡すことで、AutoCADはその設定を継承した「無題の図面(Drawing1.dwgなど)」をメモリ上に生成します。
- `Dir関数`による事前確認: 自動化において「ファイルがない」という例外は最も頻発するエラーです。いきなり `Add` するのではなく、`Dir` で存在を確認する。これがプロの守りです。
—
3. 現場で陥りやすい「3つの落とし穴」
初心者がよくつまずくポイントを、先回りして伝授しておきます。
① パス区切り文字の罠
Windowsのファイルパスは `\` ですが、プログラム上では正しく認識されないことがあります。もしエラーが出る場合は、テンプレートのパスを `Replace(“C:/CAD/Template.dwt”, “/”, “\”)` のように置換する工夫をしてみてください。
② 「読み取り専用」の罠
テンプレートファイル自体が「読み取り専用」属性になっていると、VBA側で開く際にトラブルが起きることがあります。プロパティを確認しておきましょう。
③ 既存図面との干渉
`Documents.Add` を実行すると、現在の図面は閉じられず、新しい図面が追加されます。もし「現在の図面を閉じてから開く」必要があるなら、`ThisDrawing.Close False` を `Add` の直前に入れる必要があります。※保存忘れに注意してくださいね。
—
4. 次のステップ:ここをクリアすれば「中級者」
このコードをマスターしたら、次は以下のステップに挑戦してみてください。
1. 図面情報の埋め込み: `doc.SummaryInfo` を使い、作成者名やプロジェクト名を自動で図面プロパティに書き込む。
2. 画層の存在チェック: `doc.Layers` コレクションをループし、必要な画層がテンプレート内に存在するか検証する関数を作る。
—
最後に:先輩からのアドバイス
VBAの学習において、最も大切なのは「一度に完璧を目指さないこと」です。
まずは「テンプレートから図面が開く」ことだけに集中してください。それができれば、あなたはもう「マクロの記録」を使っていた頃のあなたではありません。
コードは、あなたの分身です。あなたが手作業で繰り返している退屈な作業を、一つずつコードに置き換えていきましょう。
ここをクリアすれば、AutoCAD VBAの基本はバッチリです。何か詰まったら、いつでも戻ってきてください。応援していますよ!
