AutoCAD自動化の極意:テンプレートからの「堅牢な」図面生成術
現場の自動化を志すエンジニア諸君、ようこそ。AutoCADの自動化において、「図面を作成する」というプロセスは単なるファイルの生成ではない。それは、「一貫した設計環境の強制」という、品質保証の第一歩だ。
多くの初心者が、「とりあえず動くコード」を書いて満足する。しかし、私は君たちに「止まらないコード」を書いてほしい。ファイルオープン一つとっても、バックグラウンドでのロック状態や、テンプレートパスの不整合など、罠は無数にある。
今日は、AutoCAD VBAを用いて、テンプレート(DWT)から新規図面を生成する際の「プロの設計思想」を伝授しよう。
—
1. なぜ「Workbooks.Add」のような安易なアプローチは危険なのか
Excel VBAの感覚で `Documents.Add` を使うと痛い目を見る。図面生成において最も避けるべきは「パスのハードコーディング」と「例外処理の欠如」だ。
- パスの不整合: 開発環境と実行環境でテンプレートの格納場所が違うことは、現場では日常茶飯事だ。
- AutoCADの内部状態: 既存の図面が開かれているか、あるいはAutoCADが非表示で起動しているかによって、オブジェクトの振る舞いは変わる。
これらを考慮した、「堅牢なコード」の書き方を叩き込む。
—
2. 実践:プロダクションレベルの図面生成コード
以下のコードは、単にテンプレートを開くだけではない。「ファイルが存在するか」「AutoCADが確実に読み込める状態か」を担保した設計だ。
Option Explicit
‘ ———————————————————
‘ テンプレートから新規図面を生成するプロフェッショナル・ルーチン
‘ ———————————————————
Public Sub CreateDrawingFromTemplate()
Dim strTemplatePath As String
Dim docNew As AcadDocument
‘ 1. テンプレートパスを定数化、または設定ファイルから読み込む
‘ ここでは例としてフルパスを指定しているが、環境依存を避ける設計を推奨
strTemplatePath = “C:\CompanyStandard\Templates\Project_Standard.dwt”
‘ 2. ファイル存在確認(基本中の基本だが、これを忘れると例外処理が面倒になる)
If Dir(strTemplatePath) = “” Then
MsgBox “テンプレートファイルが見つかりません。” & vbCrLf & strTemplatePath, vbCritical
Exit Sub
End If
‘ 3. エラーハンドリングの開始
On Error GoTo ErrorHandler
‘ 4. テンプレートから図面を作成
‘ Documents.Addメソッドは引数なしで空図面、引数にテンプレートパスで指定した設定を継承
Set docNew = Application.Documents.Add(strTemplatePath)
‘ 5. 必要であればここで初期設定(レイヤー設定や図面プロパティの更新)を行う
‘ この時点で docNew はアクティブな図面として操作可能
MsgBox “図面生成完了: ” & docNew.Name, vbInformation
Exit Sub
ErrorHandler:
MsgBox “図面生成中にエラーが発生しました。” & vbCrLf & _
“エラー番号: ” & Err.Number & vbCrLf & _
“詳細: ” & Err.Description, vbCritical
End Sub
—
3. 実務で勝つための「3つの極意」
① テンプレートは「読み取り専用」として扱う
コード内でテンプレートを直接操作して保存してはいけない。テンプレートはあくまで「型」だ。生成した図面は必ず `SaveAs` メソッドで、所定のプロジェクトフォルダへ別名保存するフローを自動化の前提とせよ。
② `On Error` を使い倒せ
AutoCAD APIは、ファイルがロックされていたり、アクセス権がなかったりすると容赦なくクラッシュする。`On Error GoTo` を駆使し、異常時には必ずユーザーへ状況をフィードバックする仕組みを作ること。無言で止まるプログラムは、現場では「壊れている」と見なされる。
③ オブジェクトの解放を意識せよ
VBAはメモリ管理が甘くなりがちだ。特にループ処理の中で図面を開閉する場合、`Set docNew = Nothing` を明示的に呼び出し、AutoCADのドキュメントスタックが肥大化するのを防ぐのが、長期運用におけるエンジニアの作法である。
—
最後に:エンジニアとしての矜持
君たちが書くコードは、誰かの作業時間を削り、誰かのミスを減らす「資産」だ。
「動けばいい」という考えは今すぐ捨ててほしい。「誰が使っても、どんな環境でも、同じ結果を返す」。その一貫性こそが、エンジニアとしての信頼を築く唯一の道だ。
次のステップとしては、作成した図面にプロジェクト番号や担当者名を書き込む「属性ブロックの操作」や「データベース連携」を学ぶといい。だが、まずはこの基本コードを完璧に理解し、自分の環境でエラーを一つも出さずに走らせてみてくれ。
準備ができたら、また次の領域へ踏み込もう。道は常に開かれている。
