【入門編】【実務中級者向け】図面をテンプレートとして開く:新規図面作成の自動化 – AutoCAD VBA解析バイブル

スポンサーリンク

こんにちは!AutoCAD VBAの世界へようこそ。
マクロの記録ボタンを押すだけの作業はもう卒業して、「自分の思い通りに図面を操りたい」と感じている頃ではないでしょうか。

実務で図面を描くとき、最初に行う面倒な作業は何ですか?
レイヤの作成、文字スタイルの設定、決まったタイトルの枠(図枠)の配置……。新しい図面を開くたびに、毎回同じ手作業を繰り返していませんか?

今回は、「指定したテンプレートファイル(.dwt)を基に、新しい図面を自動でスパッと作成するマクロ」の作り方を解説します。ここをクリアすれば、図面作成の標準化と効率化はあなたのものです。さあ、一緒に一歩先へ進みましょう!

—

なぜ「新規作成」ではなく「テンプレート(.dwt)」なのか?

AutoCAD VBAで新しく図面を開くとき、よくやりがちなのが `Documents.Add` というメソッドをそのまま使う方法です。

‘ 【よくある初歩のコード】これだと真っ白な初期状態になってしまいます
Dim doc As AutoCAD.AcadDocument
Set doc = ThisDrawing.Application.Documents.Add()

しかし、これではAutoCADデフォルトの味気ない設定(ミリ単位なら `acad.dwt` や `acadiso.dwt`)で立ち上がってしまいます。実務では、会社ごとのレイヤ規則、画層、寸法スタイル、そして専用の図枠があらかじめ入った自社のテンプレート(.dwt)を使いたいですよね。

AutoCAD VBAでは、`Documents.Add` の引数にテンプレートファイルのパスを渡すことで、「そのテンプレートをベースにした新規図面」を瞬時に生成できます。これが実務で最も使える基本テクニックです。

—

実践!テンプレートから新規図面を作成するVBAコード

それでは、実務でそのままコピー&ペーストして使える堅牢なコードを公開します。
エラー対策(ファイルの存在チェックなど)も組み込んだ、先輩エンジニアお墨付きのコードです。

Sub CreateNewDrawingFromTemplate()
‘ —————————————————————–
‘ 目的: 指定したテンプレート(.dwt)を基に、新しい図面を自動作成する
‘ 対象読者: マクロの記録から脱却し、実務の効率化を目指す方
‘ —————————————————————–

Dim targetTemplatePath As String
Dim newDoc As AutoCAD.AcadDocument

‘ 1. 使用するテンプレートファイルのパスを指定してください
‘ ※環境に合わせてパスを書き換えてください(例: 社内共有サーバーのパスなど)
targetTemplatePath = “C:\AutoCAD_Templates\CompanyStandard_A1.dwt”

‘ 2. テンプレートファイルが本当に存在するかチェック(実務では必須の配慮!)
If Dir(targetTemplatePath) = “” Then
MsgBox “指定されたテンプレートが見つかりません。” & vbCrLf & _
“パスを確認してください: ” & targetTemplatePath, vbCritical, “ファイルエラー”
Exit Sub
End If

‘ 3. エラーハンドリングの準備
On Error GoTo ErrorHandler

‘ 4. テンプレートを指定して新規図面ドキュメントを作成
‘ Documents.Add の引数にテンプレートのフルパスを渡すのがポイント!
Set newDoc = ThisDrawing.Application.Documents.Add(targetTemplatePath)

‘ 5. 作成された新規図面をアクティブにする
newDoc.Activate

‘ 成功メッセージ
MsgBox “テンプレートからの新規図面作成が完了しました!”, vbInformation, “処理成功”

Exit Sub

ErrorHandler:
‘ 万が一エラーが発生した場合の処理
MsgBox “予期せぬエラーが発生しました。” & vbCrLf & _
“エラー番号: ” & Err.Number & vbCrLf & _
“エラー内容: ” & Err.Description, vbCritical, “致命的なエラー”

End Sub

—

コードの核心!ここが分かればVBAが楽しくなるポイント

初心者から一歩抜け出すために、上記のコードで特に重要な3つのポイントを解説します。

① `Documents.Add(テンプレートパス)` の破壊力

`Documents.Add()` の中に何も入れないと完全なデフォルト新規図面になりますが、ここに文字列で `.dwt` のフルパスを渡すことで、AutoCADが裏側で「このテンプレートを読み込んで新規図面を開く」という動作をしてくれます。手動で「ファイル > 新規作成」を選んでテンプレートを選択する手間が、この1行で消滅します。

② `Dir` 関数による事前チェックの美学

プログラミング初心者が一番ハマる罠が、「ファイルが存在しないパスを指定してエラーで強制終了する」という現象です。コードを実行する前に `Dir(path)` を使ってファイルが実在するか確認するクセをつけましょう。これだけでマクロの信頼性がプロのレベルに跳ね上がります。

③ `ThisDrawing.Application` のお作法

VBAからAutoCAD全体(Application)を操作する場合、現在の図面を指す `ThisDrawing` からアプリケーション階層を辿るか、あるいは `Application.Documents` と記述します。マルチドキュメント環境(複数の図面を同時に開いている状態)を安全に制御するためには、アプリケーションのスコープを意識することが極めて重要です。

—

陥りやすい罠と解決策(よくあるエラー)

実務でこのマクロを動かす際、以下の罠にハマることがよくあります。あらかじめ知っておけば怖くありません。

  • 罠1: パス区切りの「¥(バックスラッシュ)」の書き忘れ・間違い
  • 対策: VBAの文字列内では環境によって文字化けすることもあるため、正確なフルパスをエクスプローラーからコピーして貼り付けるようにしましょう。
  • 罠2: テンプレートのバージョン違いによるクラッシュ
  • 対策: 古いバージョンのAutoCADで、新しすぎるバージョンのテンプレート(.dwt)を開こうとすると、正常に動作しない場合があります。テンプレートは使用するAutoCADのバージョンに合わせたものを用意してください。

—

まとめ:ここをクリアすれば、AutoCAD VBAの基本はバッチリですよ!

お疲れ様でした!
今回は「テンプレートを基にした新規図面作成の自動化」という、実務で最も直結するテーマを解説しました。

  • `Documents.Add` にテンプレートパスを渡すこと
  • `Dir` 関数で存在チェックを行う堅牢性
  • エラーハンドリングの基本構造

ここをクリアできれば、単なる「お絵かきマクロ」ではなく、「業務プロセスを改善するエンジニアリング」の領域に足を踏み入れたことになります。

毎日の面倒な定型作業をマクロに任せて、あなたしかできないクリエイティブな設計業務に集中していきましょう。それでは、次回の実践的な解説でお会いしましょう!

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