【脱・手作業】AutoCAD VBAで図面形式を魔法のように一括変換する極意
こんにちは。AutoCADの自動化の世界へようこそ。
日々、何百枚ものDWGを「取引先指定のDXFへ」変換したり、逆に受け取ったDXFをDWGへ整えたり……そんな「単純作業」に時間を奪われてはいませんか?
今日は、マクロの記録から一歩踏み出し、AutoCADの核心である「オブジェクトモデル」を操って、図面変換を自動化する魔法を伝授します。ここをマスターすれば、あなたの仕事のスタイルは劇的に変わります。
—
1. なぜ「SaveAs」が重要なのか?
AutoCAD VBAで図面を保存する際、もっとも重要なメソッドは `SaveAs` です。
ただ保存するだけではありません。「どの形式で」「どのバージョンで」書き出すかを制御することで、相手先との互換性トラブルをゼロにできます。
まずは、基本のコードを見てみましょう。
Sub ConvertDrawing()
‘ 現在開いている図面を操作するオブジェクト
Dim doc As AcadDocument
Set doc = ThisDrawing
‘ 保存先のパス(例:デスクトップ)
Dim savePath As String
savePath = “C:\Users\YourName\Desktop\ConvertedFile.dxf”
‘ ここが核心:acDXFはDXF形式、ac2018_dxfはバージョン指定
‘ ※第二引数で形式を決定します
doc.SaveAs savePath, acDXF
MsgBox “変換完了!デスクを確認してください。”
End Sub
2. コードが語る「オブジェクトの作法」
このコードのポイントを解説します。
- `ThisDrawing`: これは現在アクティブな図面を指す「特権階級」のオブジェクトです。これに指示を出すことで、開いているファイルを自在に操れます。
- `SaveAs` メソッドの引数:
- 第一引数:フルパスを含むファイル名。
- 第二引数:保存形式。ここを `acNative` にすればDWG、`acDXF` にすればDXFになります。
- なぜ重要か: `SaveAs` を使うと、現在の図面を「別名」で保存しつつ、作業中の図面としてその新しい形式が開かれたままになります。ここが初心者が陥る最初の罠です。
—
3. 初心者が必ずハマる「3つの落とし穴」
現場で動かしていると、必ず壁にぶつかります。伝説のアーキテクトから、先回りして回避策を授けましょう。
① 「ファイルが既に存在します」エラー
`SaveAs` は、同名ファイルがあると警告なしに上書きを試みるか、エラーで止まります。
対策: 保存前に `Dir()` 関数でファイルが存在するか確認し、必要なら削除(`Kill`)する処理を挟むのがプロの鉄則です。
② 閉じるタイミングを制御せよ
変換した後に、変換前の図面を閉じるのか、変換後の図面を閉じるのか。
`doc.Close` を使う際は、必ず `False` (保存せずに閉じる) を明示的に指定しないと、予期せぬ「変更を保存しますか?」ダイアログ地獄に陥ります。
③ バージョン互換の罠
`acDXF` だけでなく、`acR12_dxf` や `ac2018_dxf` など、相手の環境に合わせてバージョンを細かく指定できます。相手が古いAutoCADを使っている場合、最新バージョンで送っても開けません。「相手の環境を知る」、これもエンジニアの重要な仕事です。
—
4. 実戦向け:フォルダ内の一括変換テンプレート
最後に、フォルダ内のすべてのDWGをDXFに変換する、少しだけ高度なツールを紹介します。
Sub BatchDWGtoDXF()
Dim fso As Object
Dim folder As Object
Dim file As Object
Dim doc As AcadDocument
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set folder = fso.GetFolder(“C:\SourceDrawings\”) ‘ 変換元フォルダ
For Each file In folder.Files
If LCase(fso.GetExtensionName(file.Path)) = “dwg” Then
‘ 図面を開く
Set doc = Application.Documents.Open(file.Path)
‘ 変換して保存(パスを書き換えてDXFにする)
Dim newPath As String
newPath = Left(file.Path, Len(file.Path) – 3) & “dxf”
doc.SaveAs newPath, acDXF
‘ 変換が終わったら閉じる
doc.Close False
End If
Next
MsgBox “全ファイルの変換が完了しました!”
End Sub
5. 次のステップへ
どうでしょう? わずか数十行のコードで、手作業なら1時間かかる作業が数秒で終わるようになります。
AutoCAD VBAは単なる「お絵描きツール」の自動化ではありません。「図面というデータの構造を理解し、それを再構築する」ための強力なエンジンです。
まずはこのコードをコピーして、自分の環境で動かしてみてください。エラーが出たら、それはあなたが「動くもの」を作ろうと挑戦した証です。何か不明点があれば、またいつでも聞いてくださいね。あなたのエンジニアライフが、ここから加速しますように!
