【入門編】【実務中級者向け】Documents.Addメソッドによる特定DWTテンプレートからの新規図面作成自動化 – AutoCAD VBA解析バイブル

スポンサーリンク

【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の基本はバッチリです。何か詰まったら、いつでも戻ってきてください。応援していますよ!

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