【入門編】【初心者向け】図面バージョン変換の自動化:DWGをDXFへ、DXFをDWGへ – AutoCAD VBA解析バイブル

スポンサーリンク

【脱・手作業】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は単なる「お絵描きツール」の自動化ではありません。「図面というデータの構造を理解し、それを再構築する」ための強力なエンジンです。

まずはこのコードをコピーして、自分の環境で動かしてみてください。エラーが出たら、それはあなたが「動くもの」を作ろうと挑戦した証です。何か不明点があれば、またいつでも聞いてくださいね。あなたのエンジニアライフが、ここから加速しますように!

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