DXF
AutoCAD

DXFことはじめ #4

More than 3 years have passed since last update.

 DXFを理解しづらくしている要因として、屋上屋を架していることがあげられます。

 そのため、構成に一貫性がなく、しかも、その辺りのことはリファレンスマニュアルにも詳しく記載されていないので、「なぜそうなっているのか?」は自分で推測するしかありません。

 たとえば、前回とりあげたCLASSESセクションでは、クラスについての一連のデータに終わりを示すマーカーはなく、次のクラスの始まりをしめすマーカーをもって、区切りとしています。
 これは、SECTIONの終わりを示すENDSECというマーカーがあるのとは、異なるルールで作られています。ちなみに、後に解説するTABLESセクション内の要素や、BLOCKSセクション内の要素では、それぞれ、TABLE〜ENDTAB、BLOCK〜ENDBLKという始まりを示すマーカーと終わりを示すマーカーの組があります。
 実際に自分でパーザ(読込ルーチン)を作ってみるとわかるのですが、先読み可能なパーザでは、むしろ、終わりのマーカーがあると邪魔です。CLASSESセクション内部のような構成のほうが、書き方としてはすっきりします。では、なぜ、終わりを示すマーカーなんかが使われているのでしょうか。

 AutoCAD Release12までの、DXFファイルでは、CLASSESセクションとOBJECTSセクションがなく、HEADER、TABLES、BLOCKS、ENTITIESの4セクション構成でした。
 そこに、Release13からCLASSESセクションとOBJECTSセクションが加わっています。つまり、昔の考え方(Release12以前の頃のプログラムの書き方)では、終わりを示すマーカーが必要だったから、それがDXFファイル上に存在しているが、最近の考え方(Release13を作った頃のプログラムの書き方)では、それがない方が都合が良かったということではないか、と考えられるのです。

 幸い、Release13のあとは、AutoCAD2000でTHUMNAILIMAGEセクション(サムネールイメージを16進ダンプしたようなデータがはいっている、これはこれで謎なセクション)が加わったのみで、大きな変更はなく、AutoCADが扱える図形要素の追加にともなって、ENTITIESセクション内のデータが追加されているだけになっています。

 通常、Release12以前の形式のDXFファイルを扱うことは少ないと思いますので、今回取り上げた4セクション構成の世代については、昔そういう形式だったということや、ENDなんとかというマーカーは昔必要だったから、今も使われているというような理解で十分だと思います。