拡張データ
拡張データ(Xdata)は、AutoLISP などの API を利用して作成される。 図形に拡張データが含まれている場合は、図形の標準定義データの後に拡張データが続く。 グループ コード 1000 から 1071 は拡張データを表す。
次に DXF 形式で、拡張データを含む図形の例を示します。
標準図形定義データ:
0 INSERT 5 F11 100 AcDbEntity 8 TOP 100 AcDbBlockReference 2 BLOCK_A 10 0.0 20 0.0 30 0.0
拡張図形定義データ:
1001 AME_SOL 1002 { 1070 0 1071 1.95059E+06 1070 519 1010 2.54717 1020 2.122642 1030 2.049201 1005 ECD 1005 EE9 1005 0 1040 0.0 1040 1.0 1000 MILD_STEEL
グループ コード 1001 は、拡張データの開始を示す。 標準図形データとは異なり、拡張データでは同じグループ コードが「複数回」現れることがあり、その「順序」が重要になる。
拡張データは、登録されたアプリケーション名により、グループ化される。 登録された各アプリケーションのグループは、文字列値としてアプリケーション名を伴ったグループ コード 1001 で始まり、登録されたアプリケーション名は、APPID シンボル テーブル項目と一致する。
アプリケーションは、必要なだけ多くの APPID 名を使用でき、APPID 名は永続的だが、図面内で使用されなくなった場合には、パージ(名前削除)されることがある。 各 APPID 名は、各図形にアタッチされた 1 つのデータ グループだけを持つことができる。 アプリケーションのグループ内では、拡張データ グループのシーケンスとその意味は、そのアプリケーションによって定義される。
拡張データのグループ コードを、次の表に示す。
拡張データのグループ コードと意味
- 図形名 … グループ コード … 意味
- 文字列 … 1000 … 拡張データ内の文字列は、最大 255 バイトの長さ (256 番目のバイトは null 文字用に確保されている)。
- アプリケーション名 … 1001 … これも文字列値。アプリケーション名は、最大 31 バイトです(32 バイト目は null 文字のために予約されている)。
- 注:ユーザ独自の拡張データにグループ 1001 を追加してはならない。 追加すると、CAD はそれを、新しいアプリケーション拡張データの開始とみなす。
- 制御文字列 … 1002 … 拡張データの制御文字列は、"{" か "}" のどちらかが可能。これらの括弧により、アプリケーションは、そのデータをリストに細分化して組織化できるようになる。 左側の中括弧はリストの始まりで、右側の中括弧はリストを終了する。リストはネストできる。CAD は、個々のアプリケーションに対する拡張データを読み込むとき、括弧の数が合っているかどうかを調べる。
- 画層名 … 1003 拡張データに関連付けられた画層の名前
- バイナリ データ … 1004 … バイナリ データは、可変長の「チャンク」に組織化される。各チャンクは、最大 127 バイト。ASCII DXF ファイルでは、バイナリ データは、バイナリ バイト当り 2 文字の 16 進数文字列で表される。
- データベース ハンドル … 1005 … 図面データ内の図形のハンドル
- 注:ハンドルおよび拡張データ ハンドルを有する図面が、INSERT[ブロック挿入]コマンド、INSERT *(挿入時にブロック内のオブジェクトを分解)コマンド、XREF[外部参照]/[バインド(B)]コマンド、XBIND[個別バインド]コマンド、または OPEN[開く]コマンドの[部分的に開く]オプションを使用して他の図面に読み込まれるとき、拡張データ ハンドルは、一致する図形ハンドルと同じ方法で変換されるので、これらの結合は維持される。これは、ブロックに対する EXPLODE[分解]コマンドや他の AutoCAD の操作に対しても行われます。AUDIT[監査]コマンドにより、図面内の図形のハンドルと一致しない拡張データ ハンドルが検出されると、エラーとみなされる。AUDIT が図形を修復すると、ハンドルは 0 に設定される。
- 3 つの実数 … 1010, 1020, 1030 … 3 つの実数、 X、Y、Z の順。これらは点またはベクトル レコードとして使用できます。AutoCAD が値を変更することは決してありません。
- ワールド空間の位置 … 1011, 1021, 1031 … 単純な 3D 点とは違い、ワールド空間座標は、拡張データが属する親図形とともに移動され、尺度変更され、鏡像化されます。ワールド空間位置は、STRETCH[ストレッチ]コマンドが親図形に適用されこの点が選択窓内にある場合も、ストレッチされます。
- ワールド空間の変位 … 1012, 1022, 1032 … これも、親図形とともに尺度変更、回転、鏡像化される 3D 点(移動やストレッチはされません)
- ワールド方向 … 1013, 1023, 1033 … これも、親図形とともに回転および鏡像化される 3D 点(移動、尺度変更、ストレッチはされません)
- 実数 … 1040 … 実数値
- 距離 … 1041 … 親図形とともに尺度変更される実数値
- 尺度係数 … 1042 … 親図形とともに尺度変更される実数値。距離と尺度係数の違いは、アプリケーション定義です。
- 整数 … 1070 … 16 ビット整数(符号付きまたは符号なし)
- 長整数 … 1071 … 32 ビット符号付き(長)整数