AutoCAD環境をコードで制圧せよ:Preferences APIによる設定強制の極意
設計現場において、「バックアップが取れていない」「自動保存の間隔が長すぎて手戻りが発生した」というトラブルは、もはやエンジニアリングの範疇を超えた「管理の不備」です。
AutoCADのオプション設定は、個人の裁量に委ねるべきではありません。我々自動化エンジニアの使命は、これらの環境設定をコードによって「物理的かつ強制的に」統一し、ヒューマンエラーの余地を排除することにあります。
今回は、AutoCAD VBAを用いて `Preferences.OpenSave` オブジェクトを操作し、組織の標準設定を強固に定義する手法を伝授します。
—
1. なぜ「設定の直接操作」が重要なのか
多くの初心者は、UI上の「オプション」ダイアログで手動設定を済ませます。しかし、大規模な設計チームにおいてこれは自殺行為です。
VBAで制御するメリットは以下の3点に集約されます。
- コンプライアンスの担保: 起動時に設定を再適用することで、意図せぬ変更を即座に無効化できる。
- 環境の可搬性: PCの入れ替えやOSの再インストール時も、コードを実行するだけで「いつもの環境」が即座に完成する。
- 属人化の排除: 「誰が設定したか」ではなく「スクリプトが設定した」状態を作り出すことで、管理責任を明確化できる。
2. 実装の要:`AcadPreferencesOpenSave` オブジェクト
AutoCADの内部設定は `Application.Preferences` を起点として階層構造になっています。今回扱う `OpenSave` は、ファイル操作に関連する心臓部です。
注意すべきは、「値を変更しただけでは、設定ファイル(Registry)に即時反映されないケースがある」という点です。また、誤った型での代入や、読み取り専用属性が有効な環境での実行はエラーを招きます。堅牢な実装には、必ずエラーハンドリングを組み込むのがプロの流儀です。
3. 実践:標準設定適用プロシージャ
以下は、組織の標準ルール(自動保存間隔を10分、バックアップ作成をON)を強制適用するためのプロダクションコードです。
‘ ——————————————————————
‘ 目的: AutoCADのOpen/Save設定を組織標準に強制更新する
‘ 備考: 実行権限エラーを考慮し、必ずOn Error GoToを実装すること
‘ ——————————————————————
Public Sub ForceCompanyStandardSettings()
Dim prefObj As AcadPreferences
Dim openSavePref As AcadPreferencesOpenSave
‘ アプリケーションオブジェクトから設定階層へアクセス
Set prefObj = Application.Preferences
Set openSavePref = prefObj.OpenSave
On Error GoTo ErrorHandler
With openSavePref
‘ 1. 自動保存の間隔を10分に設定 (SAVETIME相当)
If .AutoSaveInterval <> 10 Then
.AutoSaveInterval = 10
End If
‘ 2. バックアップファイルを作成 (ISAVEBAK相当)
If .CreateBackupFile <> True Then
.CreateBackupFile = True
End If
‘ 3. 保存形式をあえて旧形式に合わせる場合(必要に応じて)
‘ .SaveAsType = ac2018_dwg
End With
MsgBox “環境設定の同期が完了しました。”, vbInformation, “System Success”
Exit Sub
ErrorHandler:
MsgBox “設定適用中にエラーが発生しました: ” & Err.Description, vbCritical, “System Error”
End Sub
4. 運用上のアーキテクト的アドバイス
このコードをただ書くだけでは不十分です。以下の点に留意し、システムの「運用」まで設計してください。
① 起動時フック(`acaddoc.lsp` または `Application_Startup`)
上記のコードを、AutoCAD起動時に自動実行されるイベントハンドラに組み込んでください。これにより、ユーザーが意図的に設定を崩しても、次回起動時には強制的に修正されます。
② 設定の「固定化」に対する配慮
設定を強制することは、個人の作業効率を一時的に下げる可能性があります。「なぜ10分なのか」「なぜバックアップが必要なのか」という論理的根拠をドキュメント化し、社内Wiki等で周知してください。技術的な強制は、納得感があって初めて機能します。
③ データベース連携への拡張
将来的には、この設定値をローカルのコードにハードコーディングするのではなく、社内の共有サーバーにある `JSON` や `CSV` から読み込む設計に昇華させてください。そうすることで、会社全体の設計ルールが変更になった際、コードを書き換えることなく、設定ファイルを置き換えるだけで全社員の環境をアップデートできるようになります。
—
最後に:自動化の真髄
自動化とは、単に作業を楽にすることではありません。「標準化された正しい状態を、常に維持し続ける仕組み」を作ることです。
今回紹介した `Preferences` オブジェクトの操作は、その第一歩に過ぎません。皆さんが構築するそのツールが、設計現場の「安全な基盤」となることを期待しています。何か技術的な壁に突き当たったら、いつでもまたこの場に戻ってきてください。コードは裏切りません。
