AutoCADを「軽く」使いこなせ!最強の最適化セーブ・マクロ術
こんにちは。現場の「重い図面」に頭を抱えたことはありませんか?
図面を開くたびにプログレスバーがゆっくりと進み、保存するだけで数秒間固まる……。それは、図面のデータベースに「ゴミ」が蓄積している証拠です。
AutoCAD VBAをマスターするということは、単に自動化することではありません。AutoCADの内部データベースを理解し、その健康状態を最適に保つことです。
今回は、実務で即戦力となる「名前削除(Purge)」と「監査(Audit)」を組み合わせた、究極の「超軽量化セーブ・マクロ」を伝授します。
—
1. なぜ「そのまま保存」してはいけないのか?
AutoCADの図面(DWG)は、長期間使っていると、使われていない画層、不要なブロック定義、さらには破損しかけたデータなどが蓄積されます。これがファイル肥大化の主犯です。
- Purge(名前削除): 参照されていないオブジェクトをデータベースから物理的に排除する「断捨離」です。
- Audit(監査): データベースの構造的な不整合(リンク切れ等)を修正する「健康診断」です。
この2つを自動で行うことで、図面は常にスリムで堅牢な状態を維持できます。
—
2. 超軽量化セーブ・マクロのコード
このコードは、現在アクティブな図面に対して、強制的な最適化と保存を行います。VBAエディタ(`Alt + F11`)を開き、標準モジュールに貼り付けてください。
Public Sub OptimizedSave()
‘ エラーハンドリングを組み込み、処理の安全性を確保
On Error GoTo ErrorHandler
Dim doc As AcadDocument
Set doc = ThisDrawing
‘ 1. 監査(Audit)を実行してデータベースを修復
‘ 引数Trueは、検出されたエラーを自動的に修正することを意味します
doc.AuditInfo True
‘ 2. 名前削除(Purge)をループで実行
‘ Purgeは一度では全て消えない場合があるため、完全にゼロになるまで回すのがコツ
Dim i As Integer
Do
‘ 未使用のブロック、画層、線種などを削除
‘ 0は全て削除、Falseはネストされた項目も削除する設定
doc.PurgeAll
i = i + 1
Loop While i < 3 ' 念のため3回ループさせて徹底的にクリーニング
' 3. 最適化された状態で保存
doc.Save
MsgBox "最適化セーブが完了しました!図面はスリムで健全です。", vbInformation
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub
---
3. コード解説:プロの視点
この短いコードには、現場で生き残るための「こだわり」が詰まっています。
- `AuditInfo True` の重要性:
この引数 `True` を忘れると、監査結果がテキストで出力されるだけで、実際には何も修復されません。「修正」まで行うのがプロの自動化です。
- `Purge` のループ処理:
実は、Purgeは1回実行しただけでは、ネストされた(他のオブジェクトに依存していた)ゴミまで消しきれないことが多々あります。「3回回す」という泥臭い実装ですが、これが最も確実に図面を軽くする「経験則に基づく解」です。
- `On Error GoTo`:
AutoCADの操作は、時として図面の破損状況によって予期せぬエラーを起こします。マクロがクラッシュしてAutoCADごと落ちるのを防ぐための防波堤です。
—
4. 陥りやすいエラーと対策
初学者がよくやるミスは、「コマンドラインに直接コマンドを送りすぎて処理が追いつかない」ことです。
- ミス: `SendCommand` を多用して、コマンドの終了を待たずに次の行へ進んでしまう。
- 対策: 今回のように、できるだけAutoCADのAPI(`AuditInfo`や`PurgeAll`など)を直接叩くようにしましょう。APIを使えば、コマンドの完了を確実に待ち受けてから次の処理へ進むため、安定性が劇的に向上します。
—
次のステップへ
このマクロをツールバーやリボンに登録しておけば、Ctrl+S(保存)の代わりにこのボタンを押す癖がつきます。それだけで、あなたの図面ライフは劇的に快適になります。
AutoCAD VBAは、単なる「作業の代行者」ではなく、あなたの図面を守る「門番」です。この基礎をクリアできれば、次は「図面を開いた瞬間に自動でプロパティをチェックする」といった高度な自動化の世界が待っています。
何か詰まったら、いつでも聞いてください。焦らず、一歩ずつマスターしていきましょう。応援しています!
