DXF

提供:GizmoLabs - だいたい CAD LISP なサイト
2011年5月25日 (水) 09:25時点におけるGizmon (トーク | 投稿記録)による版 (→‎ASCII DXF と バイナリ DXF)

DXF 形式は、AutoCAD の図面ファイルに格納されるすべての情報をタグ付きデータで表現したもの。 「タグ付きデータ」とは、ファイル内の各データ要素の前に、「グループ コード」と呼ばれる整数が付いたデータのこと。グループ コードの値は、それに続くデータ要素のタイプを表し、この値は特定のオブジェクト(またはレコード)タイプのデータ要素の意味も表している。

実際には、図面内でユーザが指定したすべての情報は、DXF 形式で表現することができる。(一部を例外あり)

LISP や ObjectARX、SDS などで高度・高速なカスタマイズする際は、DXFの「グループ コード」に対する理解が必要といっていい。


ASCII DXF と バイナリ DXF

一般的にDXFファイル言うと、ASCII DXF となるが、バイナリ DXFというものもある。 バイナリ DXFにはASCII DXFのファイルに含まれる情報がすべて含まれているが、いくつかの特徴がある。

  • ASCII DXF ファイルに比べて約25% 小さいファイルサイズになる。
  • AutoCAD では約5倍程度高速に読み書きできる。(互換CADでも同様に高速に扱えるものもある)
  • ASCII DXF ファイルでは、浮動小数点の精度を犠牲するが、バイナリ DXF ファイルでは、DWGと同様な精度が維持される。

バイナリ DXF ファイル形式を初めてサポートしたバージョンは、AutoCAD Release 10(日本だとGX-III)以降なので、それ以前のバージョンではない。また、DXFが扱えると謳っているソフトでもバイナリ DXFをサポートしていないケースが多い。

バイナリ DXF は次のようなヘッダになっている。

AutoCAD Binary DXF<CR><LF><SUB><NULL>

ヘッダの後にはグループコードと値のペアが続くが、バイナリ DXF ではバイナリ形式で表現される。 グループコードは 2バイトのバイナリ値(R14以前は1バイト)でそれに続く値はイカのいづれかの種類になる。

  • 2バイト整数値。前が最下位バイト、後ろが最上位バイト。
  • 8バイトの IEEE 倍精度浮動小数点数。初めが最下位バイト、最後が最上位バイト。
  • 0(NULL)バイトで終了するASCII文字列。

文字の扱い

2007形式以降のDXFは図面内の文字データはユニコード(UTF-8)になっている。

グループ コードの値のタイプ

グループ コードは、対応する値のタイプを定義します。値のタイプには、整数、浮動小数点数、文字列がある。

次に、グループ コード範囲を示す。

グループ コードの値のタイプ

コード範囲 … グループ値のタイプ

  • 0-9 … 文字列(AutoCAD 2000 の拡張シンボル名の説明にある 255 文字の制限は、2049 文字(シングルバイト)に拡張されました。文字数には、行末の改行コードは含まれません)。
  • 10-39 … 倍精度 3D 点
  • 40-59 … 倍精度浮動小数点値
  • 60-79 … 16 ビット整数値
  • 90-99 … 32 ビット整数値
  • 100 … 文字列(最大 255 文字、Unicode 文字列ではそれ以下)
  • 102 … 文字列(最大 255 文字、Unicode 文字列ではそれ以下)
  • 105 … 16 進数のハンドル値を表す文字列
  • 110-119 … 倍精度浮動小数点値
  • 120-129 … 倍精度浮動小数点値
  • 130-139 … 倍精度浮動小数点値
  • 140-149 … スカラー倍精度浮動小数点値
  • 170-179 … 16 ビット整数値
  • 210-239 … 倍精度浮動小数点値
  • 270-279 … 16 ビット整数値
  • 280-289 … 16 ビット整数値
  • 290-299 … 真偽フラグ値
  • 300-309 … 任意のテキスト文字列
  • 310-319 … バイナリ チャンクの 16 進数を表す文字列
  • 320-329 … 16 進数のハンドル値を表す文字列
  • 330-369 … 16 進数のオブジェクト ID を表す文字列
  • 370-379 … 16 ビット整数値
  • 380-389 … 16 ビット整数値
  • 390-399 … 16 進数のハンドル値を表す文字列
  • 400-409 … 16 ビット整数値
  • 410-419 … 文字列* * 420-429 … 32 ビット整数値
  • 430-439 … 文字列
  • 440-449 … 32 ビット整数値
  • 450-459 … 長整数
  • 460-469 … 倍精度浮動小数点値
  • 470-479 … 文字列
  • 999 … コメント(文字列)
  • 1000-1009 … 文字列(コード範囲 0-9 で示したのと同じ制限が適用されます)
  • 1010-1059 … 倍精度浮動小数点値
  • 1060-1070 … 16 ビット整数値
  • 1071 … 32 ビット整数値