BS2-CAD & AutoCAD User's Page
Top Page 便利ツール 知得情報 Lisp メモ VBA メモ 関連リンク
情報番号 015

Back 上へ Next

開けないDXFファイルを開くには

もらってきたDXFファイルが開けなかったことはありませんか
そんな時、何とか開こうとした経験の記録です

なぜDXFファイルが開けないのか

DXFファイルとは、元々はAutoDesk社が、AutoCADの異なるバージョン間で、ファイルを読み書きするために作った仕様です。
しかし、他の多くのCADで、読み書き可能になっており、事実上、異なるCAD間でデータを読み書きするための中間ファイルとなっています。
相手先のCADが、DXFの仕様に正しく則ったファイルを作成してくれれば、AutoCADで読み込めるのですが、いろんなCADがあるようで、一筋縄にはいきません。また、DXFファイル自体もバージョンがあり、どのバージョンで作成されたのかも問題になります。
そして、CADの仕様以外でも、相手側が、画層名や線種名にAutoCADにとって不適切な文字を使用している場合にも開けないDXFファイルが作成されることがあります。(経験上はこれが多いです)

まずはR13で開いてみる

AutoCAD2000以後、DXFファイルに対して扱いが厳格になったようで、開けない事が多くなったようです。
というわけで、R13が動くのなら、挑戦してみる価値はあります。(そんなもん、とっくに無いかも・・・・(-_-;) )

ほかのCADで読み込んで、もう一度DXFファイルを作成する

ほかのCADと言っても、そんなにいろいろ持ってませんよね。
JWW(JW_CAD for Windows)・JW_CAD なんかが、フリーのCADとして使えますので、こちらがお勧めです。
ただし、これらのCADは結構なシェアーを持ってますから、もともとこれらのCADで作成されたDXFファイルである可能性が大です。その場合、作成し直しても結果は同じです。
「ファイルの終了が早すぎます」みたいなメッセージが出たときには、この方法が有効かも

不正な部分をエディターで編集して開く

DXFファイルは、単なるテキストデータです。
メモ帳なんかでも開いて見れるのですが、行番が表示されないと不便です。
行番が表示できて、文字列検索・置換ができるエディターをご用意ください。
(XPのメモ帳なら行番指定で行の移動はできます)

1.DXFファイルを開いたときのエラーメッセージを書き留める。

DXFファイルが開けないとき、AutoCADはコマンドラインにメッセージを表示します。
これには、なぜ開けなかったのかを調査する上で、大切なメッセージです。

コマンド: _open
テーブル項目名 _0-4____・建具 が間違っています. 568. 行上.
無効 または 不完全な DXF の入力です. - 図面は放棄されました.
; ユーザ警告: 閉じるドキュメントの名前空間が見つかりません

568行目の _「0-4____・建具」 に問題が有るようです。
この段階では、私の場合勘ですが「・」が怪しいですね。

2.エディターで開いて 568行目を編集

まず、もらってきたファイルを壊してしまうと大変ですから、バックアップをとってから、エディターで編集です。
手っ取り早く 「・」を消してみましょう。

566:    LAYER
567:    2
568:    _0-4____建具

消したら、エディターで上書き保存して、もう一度AutoCADで開いてみる。

コマンド: _open
テーブル項目名 _0-6_______・ALC が間違っています. 588. 行上.
無効 または 不完全な DXF の入力です. - 図面は放棄されました.
; ユーザ警告: 閉じるドキュメントの名前空間が見つかりません

さっきとメッセージが違います。
568行目ではエラーが出ずに、通過したようです。
しかし、「0-4____・建具」以外にも問題が有る事が判りました。

3.エディターで「0-4____・建具」を編集

「0-4____・建具」は、どうも画層名のようです。
ということは、「0-4____・建具」は、何度も使われている可能性大です。
そこで、エディターの置換機能を使って、「0-4____・建具」を「0-4____建具」にすべて置換えます。
ついでに、 「_0-6_______・ALC」も「 _0-6_______ALC」に置換えましょう。

4.もう一度開いてみる

ほかに、不正な個所が無ければ開くはずです。

コマンド: _open
Release 12 DXF ファイルを開いています.
モデルを再作図中.

ほらね、うまくいったでしょ。
しかし、めんどくさい ・・・・・ (-_-;)

経験上、2バイトの特殊文字は問題を起す事が多いです。
半角カナもだめです。
また、改行コードなんかでも引っかかったりすることもあります。

参考までにRedame.hlpより

画層名・ブロック名等のシンボル名で使える文字

・英数字・半角記号は[-_$]の3文字だけ
・普通の漢字
・全角スペース

使えない文字

・全角の記号文字(:、/、◎など)
・特殊文字(1.、III、ミリ、√など)
・[-_$]の3文字以外の半角記号
・半角スペース

コンバーター ソフトを使ってみる

「そんな面倒な事やってられんわ。」 という方は、コンバーターソフトを使ってみるのもいいでしょう。

http://www.daioh.net/file/tool/fai_be05.htm

http://forum.nifty.com/farchi/download/cad/uty/jacconvert.htm

http://jwx.hp.infoseek.co.jp/

それでもダメならあきらめる

それでもダメなら、お手上げです。
本当は、異なるCAD間でデータの受け渡しをする場合には、事前に綿密な打合せが必要なのです。
今後、SXF対応が軌道に乗れば、この問題も解消されるかもしれません。

Back 上へ Next

 

ご意見・ご感想はこちら