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の挙動を設計する人」です。
何か分からないことがあれば、いつでも聞いてください。壁を越えるまで、何度でも解説しますよ。
