【入門編】【上級】AcadApplication.Preferences.Userの右クリックカスタマイズ設定をVBAで制御し、設計作業のストップウォッチ機能を実装する – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCAD VBAを掌握する:設計の「時間」を可視化せよ。右クリック制御と計測エンジンの構築

こんにちは。AutoCADの自動化の世界へようこそ。
マクロの記録ボタンを押して「なんとなく動いた」段階から、APIの深淵を覗き込み、制御の主導権を握る。今日はその第一歩です。

今回は、単なるルーチンワークの自動化ではなく、「設計作業のボトルネックを可視化する」という、エンジニアリングの真髄に触れるテーマを扱います。

なぜ「右クリック設定」をコードで制御するのか?

AutoCADの強みであり、同時に生産性の足かせにもなり得るのが「右クリックのカスタマイズ」です。

  • 長押しでショートカットメニューを出すか、即時確定にするか。

これをプログラムから操作するということは、「ユーザーの操作環境を強制的にエンジンの計測モードに切り替える」という意思決定です。設計の質を上げるには、まず「どこに時間がかかっているか」という事実(データ)が必要です。

1. AutoCADオブジェクトモデルの「階層」を理解する

AutoCAD VBAを操る上で、以下のピラミッド構造を脳内に焼き付けてください。

  • Application (頂点): AutoCADそのもの。
  • Preferences: AutoCADの設定全般を司る頭脳。
  • User: その中の「基本設定」や「右クリック」といった、個別のユーザー環境設定。

この階層を辿るコードは、いわばAutoCADの神経系に直接触れる行為です。

2. 実装:作業計測エンジンの構築

以下のコードは、現在の右クリック設定を退避させ、計測モードへ切り替え、コマンド終了後に設定を戻す「計測のライフサイクル」を管理します。

‘ ———————————————————
‘ 設計作業計測エンジン (Prototype)
‘ ———————————————————
Option Explicit

Dim startTime As Double
Dim originalRightClick As Boolean

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

‘ 現在の設定をバックアップ(元の状態に戻すためのマナー)
originalRightClick = acadPref.User.ShortcutMenuDisplay

‘ 計測用設定へ変更:右クリックを「確定」に固定し、無駄なUI操作を排除
acadPref.User.ShortcutMenuDisplay = False

‘ タイマー起動
startTime = Timer
MsgBox “計測を開始します。終了時は ‘StopTaskMeasurement’ を実行してください。”
End Sub

Public Sub StopTaskMeasurement()
Dim acadPref As AcadPreferences
Set acadPref = ThisDrawing.Application.Preferences
Dim duration As Double

‘ 経過時間を計算
duration = Timer – startTime

‘ 設定を元に戻す(重要:エラーで中断しても戻るように工夫が必要)
acadPref.User.ShortcutMenuDisplay = originalRightClick

‘ ログ出力(イミディエイトウィンドウに表示)
Debug.Print “作業所要時間: ” & Format(duration, “0.00”) & ” 秒”
MsgBox “計測終了。所要時間: ” & Format(duration, “0.00”) & ” 秒”
End Sub

このコードの肝

  • 退避(Backup): `originalRightClick`変数に元の状態を保持しています。これを忘れると、ユーザーは「なぜ右クリックが効かないんだ!」と混乱します。
  • Timer関数: `Timer`は深夜0時を跨ぐと挙動が変わるという弱点がありますが、まずはこのシンプルさで「開始と終了の差分」を取る感覚を掴んでください。

3. 初学者が陥りやすい「落とし穴」

その1:エラーハンドリングの欠如

もし計測中にAutoCADがクラッシュしたら? 設定が「計測モード」のまま固定されてしまいます。
実務で使う際は、必ず `On Error GoTo` を活用し、どのルートを通っても設定が元に戻る `Finally` ブロックのような記述を心がけましょう。

その2:オブジェクトの解放

VBAはメモリ管理が自動ですが、大規模な開発では `Set acadPref = Nothing` を明示的に記述する癖をつけることで、AutoCADのメモリリークを防ぐ意識が芽生えます。

さあ、計測を始めよう

このツールを作った目的は、単なるタイマーではありません。
「右クリックの設定ひとつで、設計の速さはどれだけ変わるのか?」を検証するためです。

  • 設定A(メニュー表示)の平均作業時間
  • 設定B(即時確定)の平均作業時間

この二つを比較したとき、初めてあなたは「エンジニアとしての客観的な改善提案」ができるようになります。

AutoCAD VBAは、単に絵を描く道具ではありません。あなたの作業環境を最適化し、思考のスピードをCADに同期させるための武器です。ここをクリアしたあなたは、もう「記録したマクロを動かす人」ではなく、「CADの挙動を設計する人」です。

何か分からないことがあれば、いつでも聞いてください。壁を越えるまで、何度でも解説しますよ。

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