【入門編】【上級】AcadApplication.Preferences.Display.CursorSizeを一時的に100%に変更し、広域図面での「位置合わせ」を支援するVBAツール – AutoCAD VBA解析バイブル

スポンサーリンク

こんにちは!AutoCADの自動化の世界へようこそ。
今回は、実務の現場で「かゆいところに手が届く」、ちょっとスマートなUI補助ツールの作り方を解説します。

マクロの記録から一歩進んで、AutoCADの「頭脳」であるアプリケーション層(`AcadApplication`)と対話し、図面の操作性を劇的に向上させる方法を学びましょう。

ここをクリアすれば、単なる作業の自動化にとどまらず、「使いやすいCAD環境そのものをデザインする」という、ワンランク上のVBAエンジニアの扉が開きます。一緒にマスターしていきましょう!

なぜ「クロスヘア(十字カーソル)」を一時的に100%にするのか?

広域な図面や、詳細なパーツ配置の図面で作業しているとき、こんなストレスを感じたことはありませんか?

  • 「遠くにある基準線と、今配置したい図形の端が、本当に水平・垂直に合っているか分からない…」
  • 「画面を何度もズームイン・ズームアウトさせられて目が回る…」

AutoCADの標準機能(オプション画面)で、クロスヘアカーソルのサイズを「100%」にすれば画面いっぱいに十字線が広がり、位置合わせが劇的に楽になります。しかし、普段の作業ではカーソルがデカすぎて邪魔なので、ずっと100%にしておく人はいません。

「配置作業のコマンドを実行する瞬間だけ、自動で100%にして、終わったら元のサイズに戻したい!」
これをVBAでスマートに解決するのが今回のミッションです。

AutoCAD VBAの心臓部:AcadApplicationとPreferences

AutoCAD VBAを操る上で、最も重要なのがオブジェクト階層の頂点に君臨する `ThisDrawing.Application`(または `AcadApplication`) です。

図面(Document)の中にある線や円だけでなく、AutoCADというアプリケーション自体の「設定(Preferences)」も、VBAから自由自在にコントロールできます。

今回のキモとなる設定プロパティがこちらです。

‘ カーソルサイズを100%にする
ThisDrawing.Application.Preferences.Display.CursorSize = 100

‘ カーソルサイズを元のサイズ(例: 5%)に戻す
ThisDrawing.Application.Preferences.Display.CursorSize = 5

たったこれだけ?と思われるかもしれませんが、この「環境設定をプログラムから動的に書き換える」というアプローチこそが、UIをハックする上級テクニックの基本なのです。

【実践】配置支援ツールの完全コード

それでは、実際に動くコードを見てみましょう。
今回は、「現在のカーソルサイズを記憶し、処理を実行したのちに確実に元のサイズに戻す(例外処理の考慮)」という、プログラミングの現場で必須の作法を取り入れた実用コードをプレゼントします。

VBAの標準モジュールに以下のコードを貼り付けてください。

Option Explicit

”====================================================================
” 処方箋:広域図面の位置合わせ支援ツール
” カーソルサイズを一時的に100%にし、配置作業をアシストする
”====================================================================
Public Sub AssistAlignment()
Dim app As AcadApplication
Set app = ThisDrawing.Application

‘ 1. 現在のユーザー設定(カーソルサイズ)を退避させておく
Dim originalCursorSize As Integer
originalCursorSize = app.Preferences.Display.CursorSize

‘ 2. エラーが発生しても確実に設定を戻せるように「エラーハンドラ」を準備
On Error GoTo ErrorHandler

‘ — 【演出・メイン処理】 —
‘ カーソルサイズを画面いっぱいの100%に変更!
app.Preferences.Display.CursorSize = 100

‘ ユーザーにメッセージを表示し、配置作業を行わせる
‘ (ここで実際の配置コマンドをVBAから呼ぶことも可能です)
MsgBox “クロスヘアを100%に拡張しました。” & vbCrLf & _
“基準線との位置合わせを行ってください。” & vbCrLf & _
“(OKボタンを押すと、カーソルサイズが元の設定に戻ります)”, _
vbInformation, “位置合わせ支援ツール”

ErrorHandler:
‘ 3. 正常終了時、およびエラー発生時に必ず通る「後片付け」の処理
‘ これにより、万が一マクロが中断してもカーソルが100%のまま固定される悲劇を防ぎます。
app.Preferences.Display.CursorSize = originalCursorSize

If Err.Number <> 0 Then
MsgBox “予期せぬエラーが発生しましたが、設定は正常に復元されました。” & vbCrLf & _
“エラー内容: ” & Err.Description, vbCritical
Else
‘ すっきりと完了を通知
‘ MsgBox “配置作業が完了しました。カーソルを元に戻しました。”
End If
End Sub

コードの重要ポイント解説

ここが分かればバッチリ!というエンジニアの視点をいくつか解説します。

1. 状態の「退避(バックアップ)」と「復元」

プログラミングにおいて、ユーザーの環境を書き換えるときは「元の状態を必ず変数に記憶させておくこと」が鉄則です。今回は `originalCursorSize` という変数に、もともとの設定値を避難させています。

2. `On Error GoTo` による安全装置(ライフサイクル管理)

もし、コードの途中でユーザーが何らかの強制終了を行ったり、予期せぬエラーが起きた場合、カーソルが100%のままになってしまい、ユーザーにストレスを与えてしまいます。
VBAでは `On Error GoTo` を使って、「何が起きても最後に必ず設定を元に戻すルート(後片付けの部屋)」を通る構造にすることが、プロフェッショナルなコードの条件です。

さらに実用性を高めるためのヒント

今回のコードをベースに、さらに実務で使えるようにカスタマイズしてみましょう。

  • カスタムコマンド化: `SendCommand` メソッドを併用すれば、カーソルを100%にした瞬間に「MOVE(移動)」コマンドや「COPY(複写)」コマンドを自動で立ち上げることも可能です。
  • リボンやツールバーへの登録: この `AssistAlignment` マクロをCADのツールバーやリボンに登録し、ワンクリックで呼び出せるようにしておけば、広域図面での作業スピードが何倍にも跳ね上がります。

まとめ

今回は `AcadApplication.Preferences` を操作して、AutoCADのUIを一時的にハックする実用的なツールを作成しました。

  • アプリケーション層(`AcadApplication`)を使えば、図面の中身だけでなくCADの環境そのものを制御できる。
  • ユーザーの設定を変更する時は、必ず退避と確実な復元(エラーハンドリング)をセットで行う。

この2つを抑えておけば、あなたも立派なAutoCAD VBAエンジニアです。ぜひ日々の業務に取り入れて、まわりが驚くようなスマートな自動化を実現してくださいね。

それでは、次回の応用編でお会いしましょう!

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