「DXF」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
 
202行目: 202行目:




=== ===


=== オブジェクトに共通のグループ コード(DXF) ===
次の表に、実際にすべての非グラフィカル オブジェクトに適用されるグループ コードを示します。後述の'' ''「特定の」オブジェクトに関連するコードをリストしたオブジェクト タイプ別のグループ コードを参照するときは、ここで示すコードも現れる点に注意してください。グループ コードのいくつかは、オブジェクトのグループ コードのプロパティが既定値と異なる値である場合にのみ、オブジェクトに含まれます。
{| class="wikitable"
! colspan="2" |オブジェクトに共通のグループ コード
|-
!グループ コード
!説明
|-
|0
|オブジェクト タイプ
|-
|5
|ハンドル
|-
|102
|アプリケーション定義したグループの開始。“{'' ''アプリケーション名)" (省略可能)
|-
|''アプリケーション定義のコード''
|グループ 102 内のコードと値は、アプリケーションによって定義されます(省略可能)。
|-
|102
|グループの終了。"}" (省略可能)
|-
|102
|"{ACAD_REACTORS" は、AutoCAD 不変リアクタ グループの開始を示します。このグループは、不変リアクタがこのオブジェクトにアタッチされているときにのみ存在します(省略可能)。
|-
|330
|オーナー ディクショナリのソフト ポインタ ID/ハンドル(省略可能)
|-
|102
|グループの終了。"}" (省略可能)
|-
|102
|"{ACAD_XDICTIONARY" は、拡張ディクショナリ グループの開始を示します。このグループは、不変リアクタがこのオブジェクトにアタッチされているときにのみ存在します(省略可能)。
|-
|360
|オーナー ディクショナリへのハード オーナー ID/ハンドル(省略可能)
|-
|102
|グループの終了。"}" (省略可能)
|-
|330
|オーナー オブジェクトへのソフト ポインタ ID/ハンドル
|}


=== 各オブジェクト ===
<div class="mcol2">
<div class="mcol2">
関連資料
*[[OBJECT]] セクションのグループ コード(DXF)
*[[OBJECT]] セクションのグループ コード(DXF)
*[[ACAD_PROXY_OBJECT]] ACAD プロキシ オブジェクト (DXF)
*[[ACAD_PROXY_OBJECT]] ACAD プロキシ オブジェクト (DXF)

2025年3月31日 (月) 05:27時点における最新版

DXF(Drawing eXchange Format)形式は、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 をサポートしていないケースが多い。( DWG互換CAD は大体対応してる。)


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

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

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

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

データ内の文字の扱い・文字列値の格納

DXF ファイルに格納された文字列値は、ASCII、UTF-8、CIF (Common Interchange Format)、および MIF (Maker Interchange Format)形式で表現することができる。UTF-8 形式は、AutoCAD 2007 DXF 以降のファイル形式でのみサポートされている。AutoCAD プログラムが DXF ファイルを書き出す場合、文字列値を書き込む形式は、選択した DXF ファイル形式によって決まる。

文字列値は、次の形式で書き出される。

  • AutoCAD 2007 DXF 以降の形式: UTF-8
  • AutoCAD 2004 DXF 以前の形式: Plain ASCII および CIF(日本語だと Shift_JIS,MBCS) Unicode 文字を含む文字列値は、制御文字シーケンスで表される。 例: "TEST¥U+7F3A¥U+4E4F¥U+89E3¥U+91CA¥U+6B63THIS¥U+56FE"


文字列値は、次の DXF グループ コードで格納することができる。

  • 0 - 9
  • 100 - 101
  • 300 - 309
  • 410 - 419
  • 430 - 439
  • 470 - 479
  • 999 - 1003

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

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

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

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

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

  • 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-139 … 倍精度浮動小数点値
  • 140-149 … スカラー倍精度浮動小数点値
  • 170-179 … 16 ビット整数値
  • 210-239 … 倍精度浮動小数点値
  • 270-289 … 16 ビット整数値
  • 290-299 … 真偽フラグ値
  • 300-309 … 任意のテキスト文字列
  • 310-319 … バイナリ チャンクの 16 進数を表す文字列
  • 320-329 … 16 進数のハンドル値を表す文字列
  • 330-369 … 16 進数のオブジェクト ID を表す文字列
  • 370-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 ビット整数値


HEADER セクション

DXF ファイルの HEADER セクションには、図面に関する変数の設定が含まれている。

各変数は、変数名を示すグループ コード 9 と、それに続く、変数の値を表すグループによって表される。図面ファイルに保存されている変数のみが一覧表示される。


CLASSES セクション

DXF ファイルの CLASSES セクションは、アプリケーション定義のクラスに関する情報を保持する。

クラスのインスタンスは、データベースの BLOCKS、ENTITIES、OBJECTS セクションに現れる。

クラス定義はクラス階層に永続的に固定されているとみなされ、すべてのフィールドが必要。


ENTITIES セクション (図形タイプ)

グラフィカル オブジェクトに適用される図形のグループ コード。

各オブジェクトのコードは、DXF™ ファイルの ENTITIES セクションに現れる他、図形定義リスト内の AutoLISP ® や ObjectARX ® アプリケーションでも使用される。

すべての図形(グラフィカルオブジェクト)にあるグループコード

以下のグループコードは、すべての図形(グラフィカルオブジェクト)にあるコードである。 CAD のプロパティでいうところの一般や3Dの項目だと思えばイメージしやすいかもしれない。


グループ コード 意味 省略時の既定...
-1 APP: 図形名(図面を開くたびに変わる) 省略されない
0 図形タイプ 省略されない
5 ハンドル 省略されない
102 アプリケーション定義グループの開始、 "{アプリケーション名" (省略可能) 既定なし。

アプリケーション定義のコード||グループ 102 内のコードと値は、アプリケーションによって定義される(省略可能)。||既定なし

102 グループの終了。"}" (省略可能) 既定なし
102 "{ACAD_REACTORS" は、AutoCAD 不変リアクタ グループの開始を示す。このグループは、不変リアクタがこのオブジェクトにアタッチされているときにのみ存在する(省略可能)。 既定なし
330 オーナー ディクショナリのソフト ポインタ ID/ハンドル(省略可能) 既定なし
102 グループの終了。"}" (省略可能) 既定なし
102 "{ACAD_XDICTIONARY" は、拡張ディクショナリ グループの開始を示す。このグループは、拡張ディクショナリがこのオブジェクトにアタッチされているときにのみ存在する(省略可能)。 既定なし
360 オーナー ディクショナリへのハード オーナー ID/ハンドル(省略可能) 既定なし
102 グループの終了。"}" (省略可能) 既定なし
330 BLOCK_RECORD オブジェクトへのソフト ポインタ ID/ハンドル 省略されない
100 サブクラス マーカー(AcDbEntity) 省略されない
67 省略または 0 の場合、図形がモデル空間にあることを示す。1 は、図形がペーパー空間にあることを示す(省略可能)。 0
410 APP: レイアウト タブ名 省略されない
8 画層名 省略されない
6 線種名(BYLAYER 以外の場合に現れる)。特殊な名前 BYBLOCK は、浮動型の線種を示す(省略可能)。 BYLAYER
347 マテリアル オブジェクトへのハードポインタ ID/ハンドル(BYLAYER 以外の場合に現われる)。 BYLAYER
62 色番号(BYLAYER 以外の場合に現れる)。0 は、色 BYBLOCK(浮動)を示す。256 は、BYLAYER を示す。負の値は、その画層が非表示になっていることを示す(省略可能)。 BYLAYER
370 線の太さの値。16 ビット整数として格納され、転送される。 省略されない
48 線種尺度(省略可能) 1.0
60 オブジェクトの可視性(省略可能): 0 = 可視、1 = 不可視 0
92 バイナリ チャンク レコードである、後続のグループ 310 に表示されるプロキシ図形グラフィックスのバイト数(省略可能) 既定なし
310 プロキシ図形グラフィックス データ(複数の線、1 本の線あたり最大 256 文字)(省略可能) 既定なし
420 0 ~ 255 の値を持つバイトとして扱われなければならない 24 ビット色値。この場合最下位バイトは青の値で、中間バイトは緑の値、第 3 バイトは赤の値になる。最上位バイトは常に 0。このグループ コードは AcDbEntity クラスレベル色データおよび AcDbEntity クラスレベル透過性データのために予約されているので、それぞれのデータのカスタム図形により使用することはできない。 既定なし
430 色名。このグループ コードは AcDbEntity クラスレベル色データおよび AcDbEntity クラスレベル透過性データのために予約されているので、それぞれのデータのカスタム図形により使用することはできない。 既定なし
440 透明度の値。このグループ コードは AcDbEntity クラスレベル色データおよび AcDbEntity クラスレベル透過性データのために予約されているので、それぞれのデータのカスタム図形により使用することはできない。 既定なし
390 印刷スタイル オブジェクトへのハードポインタ ID/ハンドル 既定なし
284 影のモード 0 = 投影し、受影する。、1 = 投影し、受影しない。、2 = 投影せず、受影する。、3 = 投影も受影もしない。

OBJECTS セクション

非グラフィカル オブジェクトに適用されるグループ コードは、OBJECTS セクションに含まれる他、AutoLISP や ObjectARX アプリケーションでも、図形定義リスト内で使用される。

オブジェクト オーナーシップ(DXF)

OBJECTS セクションに現れるすべてのオブジェクトのルート オーナーは、名前の付いたオブジェクト ディクショナリである。したがって、ルート オーナーは常に、このセクションに最初に現れるオブジェクトとなる。名前の付いたオブジェクト ディクショナリが所有していないオブジェクトは、他の図形、オブジェクト、またはシンボル テーブル項目が所有する。このセクションのオブジェクトは、AutoCAD®や互換CAD によって、または ObjectARX® API(や BRXなどの互換API) にアクセスすることにより、アプリケーションによって定義された可能性がある。アプリケーション定義オブジェクト タイプの DXF 名は常に、DXF ファイルの CLASS セクション内のクラス名に関連付ける必要がある。そうでないと、オブジェクト レコードをこれを解釈するアプリケーションに結び付けることができないため。

名前の付いたオブジェクト ディクショナリ レコードは、他のディクショナリと同様に、項目名と関連オブジェクトを参照するハード オーナーシップ ポインタのペアのみからなる。

名前の衝突を避けるために、開発者は必ず、独自の項目に対し、登録された開発者接頭語を使用する必要がある。(うちの場合は GZ: )


オブジェクトに共通のグループ コード(DXF)

次の表に、実際にすべての非グラフィカル オブジェクトに適用されるグループ コードを示します。後述の「特定の」オブジェクトに関連するコードをリストしたオブジェクト タイプ別のグループ コードを参照するときは、ここで示すコードも現れる点に注意してください。グループ コードのいくつかは、オブジェクトのグループ コードのプロパティが既定値と異なる値である場合にのみ、オブジェクトに含まれます。

オブジェクトに共通のグループ コード
グループ コード 説明
0 オブジェクト タイプ
5 ハンドル
102 アプリケーション定義したグループの開始。“{アプリケーション名)" (省略可能)
アプリケーション定義のコード グループ 102 内のコードと値は、アプリケーションによって定義されます(省略可能)。
102 グループの終了。"}" (省略可能)
102 "{ACAD_REACTORS" は、AutoCAD 不変リアクタ グループの開始を示します。このグループは、不変リアクタがこのオブジェクトにアタッチされているときにのみ存在します(省略可能)。
330 オーナー ディクショナリのソフト ポインタ ID/ハンドル(省略可能)
102 グループの終了。"}" (省略可能)
102 "{ACAD_XDICTIONARY" は、拡張ディクショナリ グループの開始を示します。このグループは、不変リアクタがこのオブジェクトにアタッチされているときにのみ存在します(省略可能)。
360 オーナー ディクショナリへのハード オーナー ID/ハンドル(省略可能)
102 グループの終了。"}" (省略可能)
330 オーナー オブジェクトへのソフト ポインタ ID/ハンドル

各オブジェクト

TABLES セクション

TABLES セクションには複数のテーブルがある。

各テーブルには、可変数の項目を含めることができる。 各テーブル項目のコードは、AutoLISP や ObjectARX アプリケーションでも使用される。

DXF の THUMBNAILIMAGE セクション

DXF™ ファイルの THUMBNAILIMAGE セクションは、DXF ファイルと一緒にプレビュー イメージを保存した場合にのみ存在する。


DXF の高度な内容(DXF)

いくつかの高度な概念が DXF™ グループ コードに関連している。