AutoCAD VBAの深淵へ:設定の「強制統一」で設計の安全性を極める
こんにちは。AutoCADの自動化の海を渡る皆さん。
今日は、マクロの記録という「岸辺」を離れ、AutoCADの魂とも言える「オブジェクトモデル」の深層にダイブする話をしましょう。
多くのユーザーがGUI(画面上のメニュー)から行っている「オプション設定」。これ、実はVBAから完全に掌握できることを知っていますか?
今回は、設計データという「会社の資産」を守るための「自動保存とバックアップ設定の強制統一」という、実務の現場で最も切望されるテクニックを伝授します。
—
1. AutoCADオブジェクトモデルの頂点:AcadApplication
AutoCAD VBAを操る上で、まず理解すべきは「ヒエラルキー(階層)」です。
- AcadApplication: AutoCADそのもの(最上位)
- Preferences: 設定(オプションダイアログの中身)
- OpenSave: 「開く/保存」タブの全設定
この構造を理解すれば、あなたはAutoCADの全てをコントロール下に置くことができます。「マクロの記録」が触れない領域に、真の自動化エンジニアの戦場があるのです。
—
2. なぜ「強制統一」が必要なのか?
大規模プロジェクトにおいて、ある設計者はバックアップ(.bak)を作成し、ある設計者は自動保存をオフにしている……。これでは組織としての品質管理が崩壊します。
今回扱うのは、以下の2点です。
- SAVETIME: 自動保存の間隔(分)
- ISAVEBAK: バックアップファイル(.bak)を作成するか否か
これらをVBAで一気に書き換えるコードを書いてみましょう。
—
3. 実践:設定を一括適用するVBAコード
このコードをコピーして、VBAエディタ(Alt+F11)の標準モジュールに貼り付けてください。
Option Explicit
”’
”’
Public Sub ApplyStandardSaveSettings()
Dim pref As AcadPreferences
Dim openSave As AcadPreferencesOpenSave
‘ AutoCAD本体からPreferencesオブジェクトを取得
Set pref = ThisDrawing.Application.Preferences
‘ その中の「開く/保存」タブの設定にアクセス
Set openSave = pref.OpenSave
‘ 【重要】ここで設定値を強制的に書き換える
With openSave
‘ 自動保存の間隔を15分に設定
.SaveInterval = 15
‘ バックアップファイルの作成を有効化 (True:作成する / False:作成しない)
.CreateBackup = True
‘ 変更が適用されたことをコンソールに出力
Debug.Print “設定の強制適用が完了しました: 間隔 ” & .SaveInterval & “分, バックアップ有効化”
End With
MsgBox “設計標準の設定を適用しました。”, vbInformation, “AutoCAD Automator”
End Sub
コードの解説
- `ThisDrawing.Application.Preferences`: ここが全ての起点です。AutoCADが起動している限り、このオブジェクトは常にそこに存在します。
- `With openSave`: オブジェクトの参照を省略することで、コードの可読性を高め、処理速度をわずかに向上させます。プロはこういう細部にこだわります。
—
4. 陥りやすい罠と解決策
初心者がよくやる失敗と、それを回避する「エンジニアの知見」を共有します。
罠1:設定が反映されない?
AutoCADの設定は、図面を開いた瞬間にメモリへ読み込まれるものがあります。VBAで設定を変更した直後に「あれ、変わってない?」と感じたら、それはAutoCAD内部のキャッシュの問題かもしれません。大規模な設定変更の後は、`Application.Update`を呼び出すか、一度図面を開き直すことで解決します。
罠2:権限の問題
会社支給のPCで、管理者権限がないとレジストリに書き込めない場合があります。`Preferences`オブジェクトはAutoCADのレジストリ設定を直接操作するため、エラーハンドリング(`On Error Resume Next`など)を適切に実装することを推奨します。
—
5. 次のステップへ:自動化の真髄
今回学んだ「設定の操作」は、ほんの入り口です。
これを応用すれば、「起動時に自動で最新の会社設定を適用する」という仕組みを作ることも可能です。`AcadApplication_BeginOpen`イベントなどを活用すれば、図面を開くたびに「バックアップ設定がOFFになっていないか」を監視するガードマンを作ることもできるでしょう。
「設定を自分で行う」時代は終わりました。これからは「設定をコードで定義する」時代です。
皆さんの設計環境が、より堅牢で、より創造的なものになることを願っています。
また次回の技術講義でお会いしましょう。質問があれば、いつでもコメント欄で待っていますよ。
—
執筆:AutoCAD開発アーキテクトより
