【入門編】【上級】AcadApplicationのPreferencesオブジェクト攻略:AutoCADのオプション設定(パス、表示、選択)を社内標準に強制統一 – AutoCAD VBA解析バイブル

スポンサーリンク

こんにちは!AutoCADの自動化の海へようこそ。
今回は、多くの人が見落としがち、しかし「組織のCAD標準化」においては最強の武器となる『Preferencesオブジェクト』の攻略法をお届けします。

マクロの記録から一歩抜け出し、「AutoCADそのものを自分の意のままにコントロールしたい」と願うあなたにとって、今回の内容は間違いなく大きなブレイクスルーになります。

ここをクリアすれば、AutoCAD VBAの本質をグッと掴んだと言えますよ。さあ、一緒に深掘りしていきましょう!

なぜ、設計者の「環境設定」はバラバラなのか?

新しいPCを支給されたとき、あるいは協力会社からデータをもらったとき、こんなストレスを感じたことはありませんか?

  • 「クロスヘアカーソルのサイズが小さすぎて目がチカチカする……」
  • 「自動保存の間隔が長すぎて、クラッシュした時に絶望した……」
  • 「社内共通のフォントやブロックへのパス(サポートファイルの検索パス)が通っていなくて、文字化けやリンク切れが起きる……」

これらを個人の手作業で設定させると、必ず抜け漏れやミスが発生します。設計者によって環境が違うことは、チーム全体の生産性を下げる「見えない大敵」です。

これを一撃で解決するのが、`AcadApplication.Preferences` オブジェクトです。
AutoCADの「オプション」ダイアログボックスに並ぶ設定のほぼすべてを、VBAのコード一発で強制的に書き換えてしまうことができます。

AutoCADオブジェクトモデルにおける「Preferences」の位置づけ

まず、頭の中にAutoCADのオブジェクト階層図を思い浮かべてください。

AcadApplication (最上位のアプリケーション)
┣━━ ActiveDocument (現在開いている図面)
┗━━ Preferences (AutoCAD全体の環境設定)
┣━━ Files (ファイルパス関連)
┣━━ Display (画面表示関連)
┣━━ Selection (選択動作関連)
┗━━ … (その他多数のカテゴリ)

`Preferences` は、図面(Document)の中ではなく、アプリケーション(Application)の直下にぶら下がっています。つまり、図面を開いていようがいなかろうが、AutoCADが起動していればいつでも設定を書き換えられる、というのが非常に重要なポイントです。

【実践】社内標準を強制統一するVBAマクロ

それでは、実際に社内標準の環境設定を流し込むコードを見てみましょう。
開発環境(VBAエディタ:[Alt] + [F11])を開き、標準モジュールに以下のコードを貼り付けてみてください。

Sub ForceApplyCADStandards()
Dim acadPref As AcadPreferences
Set acadPref = ThisDrawing.Application.Preferences

On Error GoTo ErrorHandler

‘ ==========================================
‘ 1. [表示] タブの設定
‘ ==========================================
With acadPref.Display
‘ クロスヘアカーソルのサイズを画面全体(100%)にする
.CursorSize = 100

‘ コマンド履歴の文字高さを 12ポイントにする
.TextFrameLines = 12

‘ 図面背景色を黒に設定 (ColorIndex: 0 = 黒)
‘ .GraphicsWindowForeColor = 0 ‘ 必要に応じてコメント解除
End With

‘ ==========================================
‘ 2. [選択] タブの設定
‘ ==========================================
With acadPref.Selection
‘ グリップのサイズを標準より少し大きく (有効範囲: 1〜25)
.PickBoxSize = 5

‘ 矩形選択時に「交差選択」の動作を標準化 (IMAGINARY)
‘ ※必要に応じたセレクトモードの調整
End With

‘ ==========================================
‘ 3. [ファイル] タブの設定(パスの追加・統合)
‘ ==========================================
Dim currentPaths As String
Dim standardPath As String

‘ 社内共通ブロック・Hatchライブラリのパス
standardPath = “C:\CAD_Standards\Support;C:\CAD_Standards\Blocks”

‘ 現在のサポートファイルの検索パスを取得し、先頭に社内パスを追加する
currentPaths = acadPref.Files.SupportPath

‘ 重複追加を防ぐための簡易チェック(実際には厳密な文字列判定を入れるとより安全)
If InStr(currentPaths, standardPath) = 0 Then
acadPref.Files.SupportPath = standardPath & “;” & currentPaths
End If

‘ 自動保存を有効にし、間隔を「10分」に強制設定
acadPref.OpenSave.AutoSaveEnabled = True
acadPref.OpenSave.AutoSaveInterval = 10

MsgBox “社内標準設定の適用が完了しました!”, vbInformation, “CAD標準化ツール”
Exit Sub

ErrorHandler:
MsgBox “エラーが発生しました: ” & Err.Description, vbCritical, “致命的なエラー”
End Sub

コードの深掘りとエンジニア的注意点

このコードには、実務で使う上で絶対に知っておくべき「現場の知見」が詰まっています。いくつかポイントを解説しましょう。

1. `ThisDrawing.Application.Preferences` のスマートな取得

今回は `ThisDrawing` からたどっていますが、`AcadApplication` を直接操作する場合は `Application.Preferences` でも同じです。このオブジェクトの下にさらに `.Display` や `.Files` といった子オブジェクトが存在する階層構造を意識してください。

2. パス設定(`SupportPath`)の罠

`SupportPath` は、AutoCADがフォントや線種、CUIファイルを探しに行く命綱です。
ここを単純に `acadPref.Files.SupportPath = “C:\MyPath”` と書き換えてしまうと、AutoCADが最初から持っているデフォルトの重要パスがすべて消飛んでしまい、最悪の場合CADが正常に動作しなくなります。

必ず既存のパス(`currentPaths`)を取得し、そこに「追加(結合)」する形で代入するのがプロの作法です。

3. 設定は即座にレジストリ / プロファイルへ保存される

VBAでこれらのプロパティを変更すると、裏側でAutoCADの現在のプロファイル(レジストリ)に即座に反映されます。「保存ボタンを押す必要があるの?」と心配になるかもしれませんが、コードの実行と同時に環境が更新されます。

陥りやすいエラーと回避策

初心者がやりがちなミスを先回りしてご紹介しておきます。

  • エラー:型が一致しません(Error 13)
  • 原因: プロパティに代入する値のデータ型が間違っています(例:数値を入れるべきところに文字列を入れているなど)。
  • 対策: 各プロパティの仕様(IntegerなのかBooleanなのか)をVBAのオブジェクトブラウザ([F2]キー)で必ず確認しましょう。
  • エラー:権限不足でパスが書き込めない
  • 原因: 社内ネットワークのセキュリティポリシーや、Windowsの権限(Cドライブ直下など)により、パスの書き込みがブロックされている。
  • 対策: AutoCADを管理者として実行するか、書き込みが許可されたローカルフォルダ(例:`C:\Users\[ユーザー名]\AppData\…`)をターゲットに選定してください。

まとめ:自動化の第一歩は「環境の均一化」から

今回は `AcadApplication.Preferences` を使った環境設定の強制統一について解説しました。

複雑な図形を描画するマクロを作る前に、まずは「全社員の土台(環境)を同じにする」こと。これが、社内ニート化させない、本当に実用的なAutoCAD VBA活用の第一歩です。

ここをクリアすれば、次は図面データベースの深層や、イベントプロシージャの世界へ進む準備は万全です。ぜひあなたの職場のPCでも試してみてくださいね。それでは、次回の応用編でお会いしましょう!

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