DXF入出力

DXFファイルは図面交換ファイルフォーマットとして広く普及しています。DXFの入出力機能を備えることで、他のソフトウェアとの図形データのやり取りが可能となり、データの再利用や図形の一次制作において活用が期待されます。DXFファイルはASCII形式のテキストデータで構成されており、ライブラリを使用することで情報の読み込みが比較的容易に行えます。特定の目的に応じて、自前でパーサーを作成することも可能です。

NijiCADにもDXF入出力機能が備わっています。NijiCADはブラウザで動作するアプリケーションのため、npmからライブラリを選定しました。選択肢はそれほど多くなく、機能も十分に揃っていないものが多いですが、ネイティブにDXFを扱うわけではないため、大きな問題にはなりません。パーサーとライターは別々のライブラリを使用していますが、これで十分な役割を果たしています。

また、NijiCADではファイルをサーバーにアップロードせずに直接処理します。これにより、ユーザーはデータのプライバシーを保護しながら安心して利用できます。

DXFOUT

DXFには複数のバージョンが存在します。これはAutoCADのバージョンによるもので、新しい図形や機能が実装されるたびに拡張されてきました。その多くは応用性の高い複合図形で、柔軟なカスタマイズや図面の表現に用いられます。これらは巧妙な仕組みでブロックとして保存されています。

また、文字コードの違いにも注意が必要です。現在のバージョンではUTF8で保存するのが主流ですが、UTF8未対応のソフトで開くと文字化けが発生してしまいます。これを解決するために、別途DXFOUT_SJISコマンドを用意しました。これはShift_JISで書き出しを行います。通常はDXFOUTで書き出します。目的に応じて使い分けることができます。

試しにDXFOUT_SJISコマンドで書き出してJWCADで開いてみましょう。

適当な図面を作成し、DXFOUT_SJISコマンドを起動します。
図形を選択して左下を起点で指定します。
ダウンロードフォルダに 「dxfout_sjis.dxf」がダウンロードされます。

ファイルをJWCADにドラッグアンドドロップします。

DXFOUT_SJISで書き出すことで文字化けすることなく正常に開きました。

以下の表でv0.4.4での対応状況です。順次対応していく予定です。

図形種別DXFOUT / DXFOUT_SJIS備考日付
ARC-24/09/27
CIRCLE-24/09/27
ELLIPSE楕円弧は未対応24/09/27
IMAGEREF×※画像の境界を書き出すか検討24/09/27
INSERT×※対応中24/09/27
DIMLINEAR寸法尺度未対応24/09/27
LINE-24/09/27
TEXT用途に応じてコマンドを使い分ける24/09/27
MTEXT用途に応じてコマンドを使い分ける24/09/27
PLINE-24/09/27
HATCH-24/09/27
RAY×※対応中24/09/27
XLINE×※対応中24/09/27

※DXFOUT_SJISは図面中にUNICODE文字が含まれていた場合、その文字を??として書き出します。

DXFIN

DXF入力についても文字コードの問題は発生します。DXFが保存された文字コードによって文字化けが発生する可能性があります。そのためにあらかじめ文字コードを知る必要があります。NijiCADではDXFに保存されている $ACADVER の値を読み取ることでUTF8もしくはShif_JISかを判断しています。(一般的には文字コードの判別はその原理上不可能とされているためです。)

DXFINの対応状況は以下です。

図形種別DXFIN備考日付
ARC-24/09/27
CIRCLE-24/09/27
ELLIPSE楕円弧は未対応24/09/27
IMAGEREF×※境界とファイルの参照先を読み込むか要検討24/09/27
INSERT×※対応中24/09/27
DIMLINEAR寸法尺度未対応24/09/27
LINE-24/09/27
TEXT-24/09/27
MTEXT-24/09/27
PLINE-24/09/27
HATCH×※未検証24/09/27
RAY×※未検証24/09/27
XLINE×※未検証24/09/27

※図面中のUNICODEの符号表現は変換されません。 例 \U+3042 は "あ" に変換されません。今後対応を予定しています。

OPENDXF

DXFファイルを開きます。DXFINが現在の図面に挿入されるのに対して、OPENDXFは図面として開きます。この違いは、図面に依存するシステム変数などの設定にあります。現在調整中のため、表示範囲や位置は常に一定です。

表示順序

図面制作において、図形の表示順序は重要な要素です。塗りつぶしのハッチングの前後関係や図形同士の視認性、図形の選択時に大きな影響を与えます。この点は、DXFの出力時も入力時も、表示順序が正しく再現されます。

まとめ

DXFIN、DXFOUTを使用すれば、DXFファイルを目的に応じて入力や出力ができます。過去のコンテンツを読み込んだり再利用したりする場合に有用です。また、デザイン系のアプリや3D系のアプリでの利用を想定して図形を作成することにも適しています。実際の活用方法も随時検証を行っていきますので、どうぞご期待ください。

NijiCADホームページ https://nijicad.com
NijiCADアプリ https://app.nijicad.com
By NijiCAD開発者