DXF自動修復ツール
Windows アプリ(無償)
AutoCADで開けないDXFを自動で修復する
「DXF自動修復」— 点検・修正・AutoCAD 自身での確認までをひとつで。元のファイルは触りません。
DXF をダブルクリックしたら、AutoCAD のコマンドラインに「続けるには [Enter] キーを押してください」とだけ出て、Enter を押すと図面が消える。設計事務所で DXF を受け渡ししていると、年に何度かはこの場面に出会います。原因は決まって、AutoCAD が読み込みの途中で「無効 または 不完全な DXF の入力です。図面は破棄されました」と判断していることです。
「DXF自動修復」は、その DXF を開く前に点検し、原因になっている箇所を直して、別名で保存するソフトです。直したあとに、AutoCAD 自身にそのファイルを読ませて「本当に開けるか」まで確かめます。画面に出るのは、AutoCAD が実際に返した判定です。
対象の中心は、Jw_cad などから出力した R12 形式(AC1009)の DXF です。R12 形式は古くから使われている分、どのソフトでも読めるという利点がある一方で、AutoCAD の R12 読み込みは画層名などの「名前」に厳格です。半角の中黒 1 文字で図面ごと破棄されるのは、このためです。
| AutoCAD が返すエラー | 「DXF自動修復」の対応 |
|---|---|
| テーブル項目名 ○○ が間違っています。N 行上。 | 名前に含まれる中黒・括弧・プラスなどを _ に置き換えます。画層の定義と、その画層を使う図形の参照を同時に直すので、図形が行方不明になりません |
| 複合線種にグループコード 49 がありません。 | AutoCAD 2000 形式で必須の 74 を線種定義に補います |
| 無効 または 不完全な DXF の入力です。 | セクションやブロックの終端の欠落、EOF の欠落、文字コードの食い違いなど、33 項目の点検表に沿って順に確かめ、直せるものは直します |
| (黒い画面のまま何も出ない) | .dxf の関連付けが本体ではなくコンソール版 AutoCAD に向いているときに起きます。点検の最初の項目でお知らせします |
原本は一切変更しません
修正した結果は ○○_修正.dxf という別名で保存します。同じ名前があれば番号を付け、上書きもしません。元のファイルはそのまま残ります。
AutoCAD 自身で確かめます
修正版を AutoCAD のコンソール(accoreconsole)に読ませ、開けたかどうかを AutoCAD の判定で表示します。原本のエラー文も記録するので、何が原因だったかが残ります。
名前を変えない道もあります
画層名を変えたくないときは、AutoCAD 2000 形式のファイルも同時に作れます。同じ名前でも 2000 形式なら AutoCAD は受け付けます。変換に必要なものは同梱しています。
画層名を入れると、R12 で開けるかどうかが分かります
「DXF自動修復」が名前を判定する規則を、そのまま JavaScript に移してあります。お手元の DXF の画層名やブロック名を入れてみてください。AutoCAD が返すはずのエラー文と、修正版での名前が出ます。プリセットは、実際に開けなかった図面にあった名前です。
名前を入力
DXF の形式
AutoCAD のコマンドラインに出る内容
判定の内訳
形式を AutoCAD 2000 に切り替えてみてください。同じ名前がそのまま通ります。R12 の読み込みだけが厳しいのであって、名前そのものが間違っているわけではありません。
画層名は LAYER テーブルで定義され、何万個もの図形が 8 というコードでその名前を参照しています。片方だけ直すと、図形が存在しない画層を指すことになります。「DXF自動修復」は両方を同じ置換表で直し、その置換表をレポートに残します。文字そのもの(図面に書かれた文字列)は触りません。
*U58 のような無名ブロックや、*Active というビューポートの名前は、先頭の * が規約です。置き換えるのは先頭以外の * だけです。
R12 の読み込みが受け付けない文字
AutoCAD 2027 に、画層が 1 つだけの小さな DXF を何通りも読ませて確かめた結果です。漢字や半角カタカナは問題になりません。問題になるのは記号です。
| 名前に含む文字 | R12 の読み込み | 備考 |
|---|---|---|
| 漢字・ひらがな | 開けます | |
| 半角カタカナ(ハッチ ライン ロゴ) | 開けます | 濁点「゙」単独も可 |
| 全角の英字・数字(ELV 1) | 開けます | |
| 半角の中黒 ・ | 破棄されます | Jw_cad のレイヤ名でよく使われます |
| 全角の中黒 ・ | 破棄されます | 半角を全角に直しても通りません |
| 括弧(全角・半角) | 破棄されます | 半角の ( ) は R12 のときだけ |
| プラス + | 破棄されます | 「p513+45」のような通り芯の表記 |
| 先頭以外の * | 破棄されます | 2000 形式でも不可 |
| _ や – | 開けます | 置き換え先に使えます |
このほか、すべての形式で名前に使えない文字(< > / \ ” : ; ? * , = ` ‘)も同じように置き換えます。ただし縦棒 | は外部参照の画層名に使われる正規の記法なので、置き換えずに報告だけします。
この文字の問題は、DXF の構造としては正しいため、一般的な検証ライブラリでは見つかりません。AutoCAD 自身に読ませて、返ってくるメッセージを見る以外に確実な方法がありません。「DXF自動修復」はそれを自動で行います。
点検する項目は 33 あります
名前の問題がいちばん多いのですが、それだけではありません。文字コードの食い違い、終端の欠落、線種定義の不整合、未定義の画層への参照など、開けない原因になりうる項目を 33 に整理した点検表(YAML ファイル)を同梱しており、ソフトは起動時にそれを読み込んで順に確かめます。
下の一覧で分類を切り替えてみてください。「自動」はソフトが直す項目、「一部」は直せる範囲が限られる項目、「報告」はお知らせだけの項目です。半径 0 の円のように、消すと図面の内容が変わってしまうものは報告にとどめています。
絞り込み
点検表は、実際に開けなかった図面で AutoCAD が返したエラーに加え、Autodesk の DXF 仕様書や各種フォーラムで報告されている原因(BOM 付きの UTF-8、UTF-16 で保存された DXF、同じハンドルの重複、R12 形式に混ざった新しい図形タイプなど)を集めて作りました。本体と点検表は一体で版を上げます。
修正版は 2 種類。名前を変えるか、形式を上げるか
同じ図面を開けるようにする方法は 2 つあります。どちらが優れているという話ではなく、画層名をどう扱いたいかで選びます。
| ○○_修正.dxf | ○○_修正_R2000.dxf | |
|---|---|---|
| 形式 | R12 のまま | AutoCAD 2000 形式に変換 |
| 画層名など | 記号を _ に置き換えます(例: ハッチ・物干 は ハッチ_物干) | そのまま残ります(先頭以外の * だけは例外) |
| 向いている場面 | R12 で受け渡しを続けたいとき。古いソフトでも読める形式を保てます | Jw_cad 側の画層名をそのまま AutoCAD の図面に引き継ぎたいとき |
| 作られる条件 | いつも作ります(異常が無ければ作りません) | オプションをオンにしたとき |
| 必要なもの | なし | 変換に Python と ezdxf を使います。どちらも同梱しているので、別途の準備は要りません |
R12 の線種定義を 2000 形式に変換すると、2000 形式で必須のグループコード 74 が付かないまま書き出されることがあります。AutoCAD はこれを「複合線種にグループコード 49 がありません」として破棄します。「DXF自動修復」は変換後にもう一度点検を回し、この 74 を補ってから保存します。変換ツールを使うだけでは済まない理由です。
使いかた
- DxfCheckFix.exe を起動するインストールは不要です。ZIP を解凍したフォルダーの中身を、そのまま同じ場所に置いて起動します。
- DXF ファイルを指定する「参照」で選ぶか、ウィンドウにドラッグ&ドロップします。
- オプションを選ぶふだんは初期設定のままで構いません。名前を残したいときだけ「AutoCAD 2000 形式も作成」をオンにします。
- 「チェック実行」を押す点検、修正、別名保存、AutoCAD での検証が順に進みます。18MB・11 万図形の平面図でも 10 秒ほどです。
- 完了メッセージとレポートを見る修正版のパスと「AutoCAD での検証: OK」が出れば完了です。同じフォルダーに
○○_チェック結果.txtが残ります。
画面に出る結果の意味
| OK | 問題なし |
|---|---|
| 修正済 | 異常があり、修正版に反映しました |
| NG | 異常があり、自動では直せません。レポートに説明があります |
| 注意 | 開けなくなる原因ではありませんが、気を付けたい点(範囲を大きく外れた図形など) |
| 情報 | 参考情報(形式、単位、テーブルの内訳など) |
| 該当なし | このファイルの形式では点検対象外 |
いちばん大事なのは、画面下部とレポート先頭の「修正版の AutoCAD 検証: OK」です。これは AutoCAD が実際にそのファイルを開いて返した結果なので、OK なら安心して使えます。
本体は、同じフォルダーにある点検表を読んで動きます。EXE だけを別の場所にコピーすると、点検表が見つからず動きません。Google ドライブや OneDrive 上のファイルで失敗するときは、いったんローカルのフォルダーにコピーしてから実行してください。
実際に開けなかった図面で確かめました
Jw_cad から R12 形式で出力した 3 つの図面です。いずれも AutoCAD 2027 で「図面は破棄されました」となっていたもので、修正版は AutoCAD で開け、図形の数は原本と完全に一致しました。
| 図面 | 原本のエラー(AutoCAD の第一エラー) | 修正版 | 2000 形式版 | 図形数 |
|---|---|---|---|---|
| 住宅の 1 階平面図(18MB) | テーブル項目名 _1-D_ハッチ・物干 が間違っています | 開けました | 未作成 | 114,887 |
| 別荘 南棟の平面・立面 | テーブル項目名 _1-1_P513+45 が間違っています | 開けました | 開けました | 12,882 |
| 別荘 北棟の平面・立面 | 同上(ほかにブロック名の括弧と * も) | 開けました | 開けました | 6,263 |
3 つとも、画層名の記号が原因でした。ソフトの判定は、AutoCAD が返したエラー文と 1 回目で一致しています。推測で直しているのではなく、AutoCAD の判定を基準にしているためです。
動作環境
| OS | Windows 10 / 11(64bit) |
|---|---|
| 必要なもの | .NET Framework 4.8(Windows 10 1903 以降と Windows 11 には標準で入っています) |
| AutoCAD | 無くても点検と修正はできます。「開けるかの検証」だけが AutoCAD のある PC で行われます(2027 で確認。2022 以降の accoreconsole.exe があれば使います) |
| 対応する DXF | ASCII 形式の DXF(R12 から 2018 形式まで)。バイナリ DXF は対象外です |
| 開発言語 | Visual Basic .NET(変換部に Python + ezdxf を同梱) |
| ソフト種別 | 無償 |
| バージョン | Ver.1.0(点検表 version 1.0) |
画面を出さずに実行し、結果をテキストに書くこともできます。終了コードは、修正版が開けたとき 0、開けないとき 1 です。多数の DXF をまとめて処理するときにお使いください。
うまく動かないとき
| 「チェックリストが見つかりません」 | 点検表(DXF読み込みチェックリスト.yaml)を EXE と同じフォルダーに置いてください。 |
|---|---|
| 「accoreconsole.exe が見つからない」 | AutoCAD が無い PC では検証を行いません。修正自体は行われるので、修正版を AutoCAD のある PC で開いて確認してください。 |
| 修正版も NG になる | レポート末尾の「accoreconsole 出力」にある「… N 行上。」の行が AutoCAD 自身のエラーです。自動修正の範囲外の異常なので、その行番号付近を確認するか、元のソフトから AutoCAD 2000 形式以上で出力し直してください。 |
| 起動時に SmartScreen の警告が出る | 「詳細情報」を押してから「実行」で起動できます。 |
コメントを残す