QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4688|回复: 1
收起左侧

[分享] DXF中文开发文档详解

[复制链接]
发表于 2008-11-2 09:00:55 | 显示全部楼层 |阅读模式 来自: 中国山东烟台

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
DXF 的基本惯例
6 u* [! |; k$ t1 l$ T  P! r, eDXF 格式是特定版本 AutoCAD 9 r) R- {/ |; o
图形文件中所包含的全部信息的标记数据的一种表示方法。标记数据的意思是指在每个数据元素前都带一个称为组码的整数。组码的值表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意。实际上,图形文件中所有用户指定的信息都能够以
5 P5 E8 C( g  H' @4 ]( _DXF 文件格式表示。在 AutoLISP 和 ARX 应用程序中使用的 DXF 格式与上述格式基本相同,只是在某些数据组上存在着细微的差别。 8 F& C1 |, p* h/ e4 a
如不作特殊说明,本节中所出现的组码都可以应用于 DXF 文件、AutoLISP 应用程序和 ARX 应用程序。当组码说明对于应用程序和 DXF / U) T# U- g8 p# t, n
文件有所不同时(或只适用于其中之一),在组码的说明前有如下提示符: 5 v& e1 V9 F2 \: l8 h* ?
APP 只用于应用程序的说明 : E8 p. Z+ }3 s  Y7 c( w2 F
DXF 只用于 DXF 文件的说明
$ R5 O; i* E9 a7 K$ @如果组码说明对 DXF 文件和应用程序都适用,那么没有提示符;否则将显示适当的提示符。 9 w% W9 ?( J' ^! g# z9 Q
组码范围 / B1 q0 N1 N* I3 U! N, \' J
组码将与组码关联的值(组值)定义为整型、浮点数型或字符串型。具体说明如下表:
) V  d0 L  Z5 F" b) ^5 `组码范围 1 }9 F/ P9 r& ~- j+ Q$ e5 l! [
组码范围组值类型 0 s. K# D, a2 z; }
0-9字符串(最多 255 个字符,对于 UNICODE 字符串则更少)
, ]; W; w  c0 M9 q' N- x2 O- v10-59双精度三维点
& X1 P! u- T" _' v) U60-7916 位整数值 3 ]& o& ^, X2 C
90-9932 位整数值
  B# ]8 r& ~" y3 E% C, S4 L0 Y100字符串(最多 255 个字符,对于 UNICODE 字符串则更少) " N2 o7 }, T5 W* ^( ~
102字符串(最多 255 个字符,对于 UNICODE 字符串则更少) 3 ?- ~+ c$ B, f5 f- }4 `% O1 n
105表示十六进制句柄值的字符串 7 a; |/ ^8 \" \! ?: g! ~
140-147双精度标量浮点值
0 [" O# v$ h, G$ y9 b% B7 V( q& b170-17516 位整数值 9 H) B- _: {9 j; U5 K
280-2898 位整数值 & ~" W: v9 l' ?; S5 V4 m6 ^- P
300-309任意文字字符串
% n) r) t1 @8 L" ^3 z0 k) b310-319表示二进制数据组的十六进制值的字符串
( L4 S2 q+ @! J( i" ^1 U+ J320-329表示十六进制句柄值的字符串 4 |( o& g0 B! n" Y6 S2 N; g
330-369表示十六进制对象标识符的字符串 9 w( R7 D: N$ p! p
999注释(字符串)
: S. l# N& T3 p5 ?- ]1000-1009字符串(最多 255 个字符;对于 UNICODE 字符串则更少)
3 A' T- a  V: _* E- p2 r1010-1059浮点值
9 |: g) [* }1 W3 p; u* ]4 I1060-107016 位整数值
" K7 o% h* M+ R) i107132 位整数值 ( V* M# b6 t. a" z- M  l) \0 j1 u
 
# b% B! e1 ^2 r0 C; b 
- {; j. }9 b( {% Z# T: a按数字次序排列的组码
3 u8 m: [; H8 v; b& v下表给出了组码(或组码范围)及其说明。在表中,“固定”表示该组码的用途固定不变,非固定组码的用途将随上下文变化。
* `+ y$ Q5 o. G  }* v8 S& K6 {按数字次序排列的图元组码
) A. ]6 U; d% w0 g/ t  r5 a) A组码说明 * h+ L( K; [5 ]3 J  Y- U
-5APP:persistent reactor 链表 * O0 ~2 F  U" b9 _1 D* v0 o# ^4 |
-4APP:条件运算符(仅用于 ssget)
! q6 s. A- K4 l& l-3APP:扩展数据 (XDATA) 标记(固定)
% s# f) C* p0 I) h1 A-2APP:图元名引用 (固定)
- k4 u) D! H3 X" n& N: ]-1APP:图元名。每次打开图形时它都改变,且不被保存。(固定) ' {  d) w9 y) `, T, B' M% r3 U. y# h
0表示图元类型的文字字符串(固定) 8 V7 u) q1 ~; l8 V4 j! ?% U. p; ?! _( w
1图元的主要文字值 5 c8 P5 z5 N2 k
2名称(属性标记、块名称等)
/ V! Q6 p5 K  G( s8 @- d1 x5 w3-4其他的文字值或名称值
1 I: N" f0 F$ D5图元句柄。最多 16 位十六进制数字的文字字符串(固定) 1 `7 V, b" k0 U, i( m/ H
6线型名(固定)
% l0 c& g+ X" n3 o- ^( X  m7文字样式名(固定) 0 O" B) Z/ }7 Y$ n* L& j
8图层名(固定)
# R* z7 J* b! g9DXF:变量名标识符(仅用于 DXF 文件的 HEADER 区域)。
' s7 {* l1 t0 @* M4 n10主要点。此点为直线或文字图元的起点,圆的圆心等等。 2 Y" H+ k) H3 T7 n( W, b
DXF:主要点的 X 值(其后为 Y 和 Z 值的组码 20 和 30)
7 O& _1 h0 o( c& {, i( JAPP:三维点(三个实数构成的表)
1 v3 G6 U2 Q. C/ ], s- O. A. d11-18其他点。
7 ~" i! P$ Y: O7 N6 B& t6 yDXF:其他点的 X 值(其后为 Y 和 Z 值的组码 21-28 和 31-38) 6 ?6 ?6 C& m" j+ N/ i
APP:三维点(三个实数构成的表)
; X2 `: Z) C. I" P20, 30DXF:主要点的 Y 和 Z 值 ' Z2 ?# D! A( t" T. f' w
21-28, 31-37DXF:其他点的 Y 和 Z 值 # w' ^, {/ B, J# ^
38DXF:如果非零,则为图元的标高。只在 R11 以前的 AutoCAD 输出的 DXF 文件中存在
5 f5 R! B8 t& \& l8 W39如果非零,则为图元的厚度(固定) 0 t% E; O0 _- E+ V  V" D0 ~
40-48浮点值(文字高度、比例因子等)
8 d. G4 s3 l% Q8 O' C$ @% Z' J48线型比例。浮点标量值。缺省值适用于所有图元类型。
: r# ]3 h1 b3 m6 T' S( i49可重复的浮点值。一个图元中的可变长度表(例如 LTYPE 表中的虚线长度)中可出现多个组码 49。组码 7x 总是在第一个组码 49
1 }4 {: N7 X( C7 k前出现,用于指定表的长度。 % c' @. G1 R* j0 ?( z$ @
50-58角度(在 DXF 文件中单位为度,在 AutoLISP 和 ARX 应用程序中单位为弧度)。
9 {/ Y" o  ~+ Y) k9 F- a0 q60表示图元可见性的整数值。不赋值或值为 0 时表示可见;为 1 时表示不可见。
2 M* B8 ^7 t% g62颜色代码(固定) 1 E# h4 l, T6 T% E1 Z8 H7 U
66“图元跟随”标志(固定)
9 h: ^. `/ ~! M4 n67空间,即模型空间或图纸空间(固定)
0 N9 H1 V5 \# ?8 W8 ?68APP:表示视口打开但不可见、未激活或者关闭。 ) j& E+ ^% B/ B) {9 J
69APP:视口标识数字。
  Y6 V! F) D# q0 |70-78整数值,如重复部分的计数器、标志位或模式等。
; h, t# ^/ E% N3 {$ W7 C90-9932 位整数值   i: c2 n7 g# W8 `% a) G8 L
100子类数据标记(把继承下来的类名当作字符串)。由具体类继承下来的所有对象和图元类都必须有此项。此标记用于分离某个对象中由不同的类定义的数据。它也满足从 * {1 E' k' w7 m; _5 {/ a
ARX 继承下来的每个独立的具体类的 DXF 命名需要(请参见子类标记!AL(`XREF_11832_al_u05_c,1))。
* n# M3 f! c- ]102控制字符串,其后为“{”或 }。除了字符串必须以 { 开始外,它与外部数据组码 1002 0 Q" F6 a. T$ V7 p
类似。其后可跟任意字符串,且此字符串的解释取决于应用程序。另一个可用的控制字符串为 },它标识组的结束。如上所述,除了在执行图形核查操作期间外 9 G/ c3 u& @7 [  v, h
AutoCAD 一般不解释这些字符串;它们仅用于应用程序。
* p. p2 c) L6 G: c105DIMVAR 符号表条目对象句柄。 4 t1 l$ Y$ U  h6 U* B  o5 o
210拉伸方向(固定)。 & \, G7 C" p: K' L6 e' j
DXF:拉伸方向的 X 值 . s: J) J8 i4 d( k" p# B& B
APP:三维拉伸方向矢量   _& L, l/ F* \5 `$ e) D5 G: _9 Y
220, 230DXF:拉伸方向的 Y 和 Z 值 5 b% L/ e3 O! C8 x; ~7 P( i
280-2898 位整数值 , q  X" l. w  l) k$ e3 O
300-309任意的文字字符串
* ]5 r% q" _  \) A: {; d% f310-319任意二进制数据组,与组码 1004 具有相同表示法和限制:最长为 254 个字符的十六进制字符串表示最长为 127
* W( R; a* F9 o* C( @& Z个字节的数据数据组。 8 u6 }- Y& O" n  B, T( [
320-329任意对象句柄。句柄值保留原样,在执行 INSERT 和 XREF 操作时它们不被转化。
7 c  _: k5 ^# ^) a330-339软键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的软键指针,在执行 INSERT 和 XREF 操作时被转化。
3 A" d2 R; h+ x) `/ x340-349硬键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的硬键指针,在执行 INSERT 和 XREF 操作时被转化。 $ D7 `5 g  o; _+ O: {
350-359软键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意软键从属链接,在执行 INSERT 和 XREF 操作时被转化。
) ?. r8 k! H. m5 @360-369硬键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意硬键从属链接,在执行 INSERT 和 XREF 操作时被转化。 0 W1 c; G' U- N. l
999DXF:999 组码表示其后为注释字符串行。DXFOUT 不在 DXF 输出文件中包括此组;DXFIN 能识别词组码,但忽略其后的注释。通过 2 @" u7 u: Z! o/ Y3 `
999 组码,用户可以在所编辑的 DXF 文件中包括注释。
8 p2 c6 _  V& G% t1000扩展数据中的 ASCII 字符串(最长 255 个字节)。 0 }4 j5 ^1 T9 H5 ~+ d% Z
1001扩展数据的已注册应用程序名(ASCII 字符串,最长 31 个字节)。 # p% |! T1 j. G( Q! u2 l% f/ J
1002扩展数据控制字符串({ 或 })。 3 J4 h/ M' @! A5 @& D2 o1 e
1003扩展数据图层名。 4 {+ h9 v/ L. I% y. \1 J4 u
1004扩展数据中的字节数据组(最长 127 字节)。
3 |- L0 j2 T% D5 K# A' D1005扩展数据中的图元句柄。文字字符串,最多 16 位十六进制数字。
  Z1 w1 _# D) U! R1010扩展数据中的点
9 Y5 O+ n9 K2 F- e6 iDXF:X 值(其后跟组码 1020 和 1030) * _" y8 k9 t- Z" Y' d
APP:三维点 * P4 ^* X- C# m
1020, 1030DXF:点的 Y 和 Z 值 / U& V/ a; H0 f9 M
1011扩展数据中的三维世界空间位置:X 值(其后跟组码 1021 和 1031):三维点
8 L7 {, r% V# u( Y, M* `8 w1021, 1031DXF:世界空间位置的 Y 和 Z 值。 0 H% l6 T3 E7 @
1012扩展数据中的三维世界空间位移:X 值(其后跟组码 1022 和 1032):三维矢量 & Y8 E: J0 v4 ]4 M3 ^! ~4 a
1022, 1032DXF:世界空间位移的 Y 和 Z 值
/ a7 f1 I* t( D6 B. Q, `1013扩展数据中的三维世界空间方向 & k$ _1 v( k& j/ i: L2 |: y
DXF:X 值(其后跟组码 1022 和 1032) , z% P0 j7 Z% |/ N
APP:三维矢量   {/ V! I( F. ?
1023, 1033DXF:世界空间方向的 Y 和 Z 值 0 j5 {/ U# s: c3 h& f% t8 _% t
1040扩展数据浮点值。
6 t7 v* t6 c" U$ W! E1041扩展数据距离值。 * ?, A3 f. h- j9 |' y
1042扩展数据比例因子。
7 N) ~8 K, A+ {% @& u/ f! C1070扩展数据 16 位符号整数。 0 R! h+ l. U4 I! z* \
1071扩展数据 32 位符号整数。 % {4 {. F+ P) ?
 
  W, E1 s" [: x 
' z$ W0 M& `* Y/ ]: ]- D  : p; p/ t4 \& `* \( x1 K5 x
对象和图元的组码 % L( {3 d6 }4 q( `' p
在 DXF 格式中,对象的定义与图元的定义不同:图元有图形表示,而对象则没有图形表示。例如,词典是对象而不是图元。对象通常作为非图形对象来使用,图元则作为图形对象来使用。
; ?8 w8 r! {( H5 W) D5 J0 [在 DXF 文件中,图元可以出现在 BLOCK 和 ENTITIESE 区域中。两个区域中图元的用法一样。 - k5 I* v% y2 V+ Y
某些定义图元的组码始终会出现,而其他的组码仅在它们的值与缺省值不同时才出现。
4 u$ p' b6 c$ ]7 d读取 DXF 文件的程序不应该假定说明图元的组码是按照给定次序出现的。与说明图元的组码相连的 0 组码表示此图元已结束。0 组码将开始新图元或表示此区域已结束。 ( L' I" V2 B) F$ Y  h; X
注意 如果用户以表驱动方式(即忽略未定义的组码,且对图元中的组码次序不做任何假定)编写 DXF 处理程序,那么该程序将比较容易针对 AutoCAD
! P  H$ ^8 M1 V9 K$ S5 `5 G9 Y# s的后续版本做调整。因为 AutoCAD 的性能将不断得到增强,所以图元中将添加一些新的组码以提供更多的功能。
发表于 2009-10-24 12:16:20 | 显示全部楼层 来自: 中国广西桂林
好详细的枝术教程,学学
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表