AutoCAD DWGファイルのプレビューイメージ

AutoCAD図面のイメージ

AutoCAD R13 以降では、開くファイルを選択するダイアログボックスで、図面のプレビューイメージを表示できるようになっています。このプレビュー機能は、DWGファイル内の図面のデータそのものを使っているわけではありません。図面データ保存時にプレビュー用としてビットマップやメタファイル形式のイメージデータをファイル内に埋め込むことができ、それを表示するようになっています。つまり、プレビューイメージのデータがDWGファイル内にどのように格納されているのかがわかれば、AutoCADを使わなくても簡単なビットマップやメタファイル表示のプログラムにより、プレビューイメージを見ることができます。

プレビューイメージの格納形式

AutoCAD DWGファイルで、プレビューイメージに関する部分は次の例のようになっています。

DWGファイルのダンプリスト(例)
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
00000000 41 43 31 30 31 32 00 00 00 00 00 06 01 A8 0E 00
00000010 00 00 00 16 00 04 00 00 00 00 4F 00 00 00 B3 01
 ・・・
00000EA0 AC DB BF F6 ED C3 55 FE 1F 25 6D 07 D4 36 28 28
00000EB0 9D 57 CA 3F 9D 44 10 2B E2 0F 00 00 03 01 D8 0E
00000EC0 00 00 50 00 00 00 02 28 0F 00 00 D6 08 00 00 03
00000ED0 FE 17 00 00 A0 06 00 00 00 00 00 00 00 00 00 00
 ・・・
00000F20 00 00 00 00 00 00 00 00 28 00 00 00 00 01 00 00
00000F30 9E 00 00 00 01 00 08 00 01 00 00 00 8E 08 00 00
00000F40 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00
00000F50 FF FF FF 00 00 00 FF 00 00 FF FF 00 00 FF 00 00
 ・・・

先頭の青字の部分を文字コード(ASCII)として見てみると、この例では「AC1012」となります。この部分は、AutoCADのバージョンにより次のような値が書き込まれます。

DWGファイルのプレビューはR13から追加された機能ですので、それ以前のバージョンのDWGファイルにはプレビューイメージデータは含まれていません。プレビューイメージを読み出すには、まずこの先頭6バイトを調べ、R13以降のDWGファイルであることを確認します。次に、ファイル先頭から14〜17バイト目のデータ(上図の赤字部分)を調べます。この部分に、プレビューイメージデータに関する情報を記録している場所が、ファイル先頭からの相対アドレスで書き込まれます。(この例では 00000EA8H) このアドレス+20バイトのところに、プレビューイメージの個数が格納されます。そして、その個数分だけ、次の情報が繰り返し格納されます。

項目 バイト数 内容
iType 1 1 ... 不明、2 ... ビットマップ形式、3 ... メタファイル形式
iAddress 4 データの先頭アドレス
iSize 4 データサイズ(バイト数)

データ種類が1のアドレスが示す領域はとりあえず無視し、データ種類が2または3のものについて、抽出を行います。上の例では、2順目のデータ列はビットマップ形式のデータがアドレス00000F28Hから08D6Hバイトに渡って存在することを表し、3順目のデータ列がメタファイル形式のデータがアドレス000017FEHから06A0Hバイトに渡って存在することを表しています。

ビットマップデータ

DWGファイルにプレビューイメージ用として埋め込まれるビットマップデータを Windows のビットマップデータとして扱うためには、ヘッダ情報を一部補う必要があります。Windows のビットマップ(DIB形式)データは、まず、次に示すヘッダ部分があり、それにカラーテーブルが続き、その後にビットマップ本体が格納されます。

項目 バイト数 内容
bfType2 "BM" という文字
bfSize4 ファイルサイズ
bfReserved12 常に 0
bfReserved22 常に 0
bfOffBits4 データビットのファイル先頭からのオフセット
biSize4 ビットマップ情報構造体のサイズ: 28H
biWidth4 ビットマップの幅 (ピクセル単位)
biHeight4 ビットマップの高さ (ピクセル単位)
biPlanes2 常に 1
biBitCount2 ピクセルあたりのカラービット数 (1/4/8/24)
biCompression4 圧縮方式 (圧縮しないときは 0)
biSizeImage4 ビットマップビットのサイズ (バイト単位。圧縮するときのみ必要)
biXPelsPerMeter4 水平解像度 (1メートルあたりのピクセル数)
biYPelsPerMeter4 垂直解像度 (1メートルあたりのピクセル数)
biClrUsed4 イメージで使われている色の数
biClrImportant4 イメージで使われている重要な色の数

プレビューイメージ用として埋め込まれるビットマップデータのヘッダ情報は、上の表のうち、biSize以下のものしか持っていません。前節のビットマップ形式のデータサイズも、これらヘッダ情報の先頭部分を除いたサイズになっています。つまり、bfType〜bfOffBitsの項目は、別途、次のように作成する必要があります。

ここで、カラーテーブルサイズは、次のようになります。

biSize以降のヘッダ情報からカラーテーブル、ビットマップビットは、DWGファイルから抽出したものをそのまま使うことができます。ただし、DWGファイルから抽出したビットマップイメージの背景色は、図面を保存した時のAutoCADの作図エリア背景色に関係なく、常に白色になっています。プレビューイメージとして表示する時に背景色を変えたい場合は、カラーパレットのカラー値を変更します。

メタファイルデータ

プレビューイメージ用のメタファイルデータは、前述の03Hから始まる9バイトの領域に書かれた先頭アドレス、データサイズに従い、データを抽出すると、それがAPM(Aldus Placeable Metafile)形式のWMFデータになっています。APM形式のWMFデータは、Windows3.1のAPIで作成されるメタファイルデータの前に、次に示すAPMヘッダが付加されています。

項目 バイト数 内容
key49AC6CDD7H
hmf20
bbox8論理座標での境界矩形
inch2論理座標での長さをインチに換算するための係数
reserved40
checksum2このヘッダの先頭から10ワードのXOR

注意!

上記の内容は、Autodesk社が公開している情報ばかりではなく、独自の調査によるものも含まれています。これらの情報は無保証でありサポート対象外ですので、参考にする場合はご注意ください。


[TOPページへ]

Copyright (C) 2008 Hirpy.