こんにちは!AutoCADの自動化の世界へようこそ。
業務で図面を描いていて、「あ、しまった! 全体図のノリのまま詳細図の寸法を打っちゃった……」なんてミス、ありませんか? 縮尺が違う図面を行ったり来たりしながら、寸法スタイルをちまちま手動で切り替えるのは、ミスも増えるし何よりストレスですよね。
今回は、そんな手作業の煩わしさを一刀両断する「詳細図用と全体図用の寸法スタイルを、ボタン一つ(あるいは自動)で一瞬で切り替えるVBAマクロ」の作り方を解説します。
ここをクリアすれば、AutoCAD VBAの心臓部である「オブジェクトモデル」の基礎はバッチリです。一緒にプロの第一歩を踏み出しましょう!
—
1. そもそも「AcadDocument.ActiveDimStyle」ってなに?
AutoCAD VBAの世界では、開いている図面ファイルそのものを `AcadDocument` というオブジェクトとして扱います。そして、その図面の中で現在「主役」として使われている設定や要素を指す言葉として、よく `Active〇〇` というプロパティが登場します。
- `ActiveLayer` (現在の画層)
- `ActiveTextStyle` (現在の文字スタイル)
- そして今回主役になる `ActiveDimStyle` (現在の寸法スタイル)
つまり、`ActiveDimStyle` をコードで書き換えるということは、画面上のプルダウンメニューからカチッと寸法スタイルを変更する動作を、VBAの命令一発で肩代わりさせることに他なりません。
—
2. 現場で使える!スタイル切り替えマクロの実装
それでは、実際に動くコードを見てみましょう。
以下のコードをAutoCADのVBAエディタ([Alt] + [F11]キーで起動)の標準モジュールに貼り付けてみてください。
Option Explicit
‘ ==============================================================================
‘ 概要: 詳細図用の寸法スタイルに切り替える
‘ ==============================================================================
Public Sub SwitchToDetailDimStylecriptor()
Dim targetStyleName As String
targetStyleName = “詳細図用スタイル” ‘ ※あなたの図面にある寸法スタイル名に変更してください
Call ChangeActiveDimStyle(targetStyleName)
End Sub
‘ ==============================================================================
‘ 概要: 全体図用の寸法スタイルに切り替える
‘ ==============================================================================
Public Sub SwitchToGeneralDimStyle()
Dim targetStyleName As String
targetStyleName = “全体図用スタイル” ‘ ※あなたの図面にある寸法スタイル名に変更してください
Call ChangeActiveDimStyle(targetStyleName)
End Sub
‘ ==============================================================================
‘ 共通処理: 指定した名前の寸法スタイルをアクティブにする実務関数
‘ ==============================================================================
Private Sub ChangeActiveDimStyle(ByVal styleName As String)
Dim acadDoc As AcadDocument
Set acadDoc = ThisDrawing ‘ 現在アクティブな図面を取得
On Error GoTo ErrorHandler ‘ エラーハンドリング(安全装置)の準備
‘ 1. 指定した名前の寸法スタイルが図面内に存在するか確認しつつ、アクティブに設定
acadDoc.ActiveDimStyle = acadDoc.DimStyles.Item(styleName)
‘ 2. 成功メッセージをコマンドラインに表示
acadDoc.Utility.Prompt vbCrLf & “【VBA】寸法スタイルを 「” & styleName & “」 に切り替えました。” & vbCrLf
Exit Sub
ErrorHandler:
‘ 存在しないスタイル名を指定された場合などのエラー対策
MsgBox “エラーが発生しました。” & vbCrLf & _
“指定された寸法スタイル ‘” & styleName & “‘ が図面内に見つかりません。”, _
vbCritical, “スタイル切り替えエラー”
End Sub
コードのここがポイント!
- `ThisDrawing`: 暴れ馬になりがちなAutoCADのドキュメント制御において、いま作業しているまさにその図面を指し示す強力なキーワードです。
- `DimStyles.Item(styleName)`: 図面が持っている寸法スタイルのコレクション(集合体)の中から、名指しで目的のスタイルを探し出しています。
- 安全装置(`On Error GoTo`): もし図面に存在しないスタイル名を指定してしまった場合、マクロが強制終了してイライラさせられるのを防ぐための、プロ必須のテクニックです。
—
3. 初学者が絶対にハマる「3大トラップ」と対策
AutoCAD VBAを使い始めの頃、誰もが一度は以下の罠に引っかかります。先回りしてクリアしておきましょう。
トラップ①:スタイル名が一致していない(全角・半角の罠)
プログラムは人間よりもはるかに冷徹です。図面内のスタイル名が「詳細図用スタイル」なのに、コード側が「詳細図用スタイル(半角カナ)」や「 詳細図用スタイル(先頭にスペース)」になっているだけで、容赦なくエラーを出します。
- 対策: あらかじめ図面側で使いたい寸法スタイルを正確に作成し、その名前をコピー&ペーストしてコードに貼り付けましょう。
トラップ②:マクロの記録の限界を知る
「マクロの記録」ボタンを押して寸法スタイルを変えても、コードが記録されないことがあります。そう、AutoCADの一部のグラフィカルな設定変更は、マクロ記録の対象外なのです。
- 対策: だからこそ、今回紹介したようなオブジェクトモデルを直接操作するVBAコードを覚える必要があるのです。ここを越えれば、あなたもう「脱・初心者」です!
トラップ③:図面を開いていない状態で実行する
ドキュメントが開かれていない(あるいは完全に閉じている)状態で `ThisDrawing` を呼び出すと、当然エラーになります。
- 対策: VBAを実行するときは、必ず対象となる図面ファイルをアクティブ(最前面)にした状態で行いましょう。
—
4. さらに実用的に!リボンやツールバーに組み込もう
無事にマクロが書けたら、VBAの画面を閉じてAutoCADに戻りましょう。
CUIコマンド(CUI命令)を使って、作成したマクロをリボンやクイックアクセスツールバーに登録することができます。
1. コマンドラインに `CUI` と入力してカスタマイズ画面を開く。
2. 新しいマクロ用のコマンドを作り、マクロの動作に `^C^C_-vbarun SwitchToDetailDimStyle` のようなVBA実行コマンドを割り当てる。
3. アイコンを設定して、お好みの場所に配置!
これで、詳細図を描くときは「詳細図ボタン」、全体図を描くときは「全体図ボタン」をポチッと押すだけで、二度とスタイルの設定ミスに悩まされない快適な作図環境が手に入ります。
—
まとめ
今回は `AcadDocument.ActiveDimStyle` を使った寸法スタイルの自動切り替えについて解説しました。
- `ThisDrawing` で現在の図面を掴む。
- `ActiveDimStyle` に新しいスタイルを代入する。
- エラー対策(安全装置)を忘れない。
たったこれだけの基本を押さえるだけで、AutoCADの自動化の幅は一気に広がります。この調子で、日々の面倒な手作業をどんどんコードに肩代わりさせていきましょう。あなたのCADライフがよりスマートで快適になることを応援しています!
