DXF文档详解

转自:http://www.5iehome.com/bbs/viewthread.php?tid=2585

DXF 的基本惯例

DXF 格式是特定版本 AutoCAD
图形文件中所包含的全部信息的标记数据的一种表示方法。标记数据的意思是指在每个数据元素前都带一个称为组码的整数。组码的值表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意。实际上,图形文件中所有用户指定的信息都能够以DXF 文件格式表示。在 AutoLISP 和 ARX 应用程序中使用的 DXF 格式与上述格式基本相同,只是在某些数据组上存在着细微的差别。如不作特殊说明,本节中所出现的组码都可以应用于 DXF 文件、AutoLISP 应用程序和 ARX 应用程序。当组码说明对于应用程序和 DXF 文件有所不同时(或只适用于其中之一),在组码的说明前有如下提示符:
APP 只用于应用程序的说明
DXF 只用于 DXF 文件的说明
如果组码说明对 DXF 文件和应用程序都适用,那么没有提示符;否则将显示适当的提示符。
组码范围
组码将与组码关联的值(组值)定义为整型、浮点数型或字符串型。具体说明如下表:
组码范围
      组码范围组值类型
      0-9字符串(最多 255 个字符,对于 UNICODE 字符串则更少)
      10-59双精度三维点
      60-7916 位整数值
      90-9932 位整数值
      100字符串(最多 255 个字符,对于 UNICODE 字符串则更少)
      102字符串(最多 255 个字符,对于 UNICODE 字符串则更少)
      105表示十六进制句柄值的字符串
      140-147双精度标量浮点值
      170-17516 位整数值
      280-2898 位整数值
      300-309任意文字字符串
      310-319表示二进制数据组的十六进制值的字符串
      320-329表示十六进制句柄值的字符串
      330-369表示十六进制对象标识符的字符串
      999注释(字符串)
      1000-1009字符串(最多 255 个字符;对于 UNICODE 字符串则更少)
      1010-1059浮点值
      1060-107016 位整数值
      107132 位整数值

 
 
按数字次序排列的组码
下表给出了组码(或组码范围)及其说明。在表中,“固定”表示该组码的用途固定不变,非固定组码的用途将随上下文变化。
按数字次序排列的图元组码
      组码说明
      -5APP:persistent reactor 链表
      -4APP:条件运算符(仅用于 ssget)
      -3APP:扩展数据 (XDATA) 标记(固定)
      -2APP:图元名引用 (固定)
      -1APP:图元名。每次打开图形时它都改变,且不被保存。(固定)
      0表示图元类型的文字字符串(固定)
      1图元的主要文字值
      2名称(属性标记、块名称等)
      3-4其他的文字值或名称值
      5图元句柄。最多 16 位十六进制数字的文字字符串(固定)
      6线型名(固定)
      7文字样式名(固定)
      8图层名(固定)
      9DXF:变量名标识符(仅用于 DXF 文件的 HEADER 区域)。
      10主要点。此点为直线或文字图元的起点,圆的圆心等等。
      DXF:主要点的 X 值(其后为 Y 和 Z 值的组码 20 和 30)
      APP:三维点(三个实数构成的表)
      11-18其他点。
      DXF:其他点的 X 值(其后为 Y 和 Z 值的组码 21-28 和 31-38)
      APP:三维点(三个实数构成的表)
      20, 30DXF:主要点的 Y 和 Z 值
      21-28, 31-37DXF:其他点的 Y 和 Z 值
      38DXF:如果非零,则为图元的标高。只在 R11 以前的 AutoCAD 输出的 DXF 文件中存在
      39如果非零,则为图元的厚度(固定)
      40-48浮点值(文字高度、比例因子等)
      48线型比例。浮点标量值。缺省值适用于所有图元类型。
      49可重复的浮点值。一个图元中的可变长度表(例如 LTYPE 表中的虚线长度)中可出现多个组码 49。组码7x 总是在第一个组码49 前出现,用于指定表的长度。
      50-58角度(在 DXF 文件中单位为度,在 AutoLISP 和 ARX 应用程序中单位为弧度)。
      60表示图元可见性的整数值。不赋值或值为0 时表示可见;为1 时表示不可见。
      62颜色代码(固定)
      66“图元跟随”标志(固定)
      67空间,即模型空间或图纸空间(固定)
      68APP:表示视口打开但不可见、未激活或者关闭。
      69APP:视口标识数字。
      70-78整数值,如重复部分的计数器、标志位或模式等。
      90-9932 位整数值
      100子类数据标记(把继承下来的类名当作字符串)。由具体类继承下来的所有对象和图元类都必须有此项。此标记用于分离某个对象中由不同的类定义的数据。它也满足从ARX 继承下来的每个独立的具体类的 DXF 命名需要(请参见子类标记!AL(`XREF_11832_al_u05_c',1))
      102控制字符串,其后为“{<任意名称>”或 "}"。除了字符串必须以 "{" 开始外,它与外部数据组码1002 类似。其后可跟任意字符串,且此字符串的解释取决于应用程序。另一个可用的控制字符串为 "}",它标识组的结束。如上所述,除了在执行图形核查操作期间外 AutoCAD 一般不解释这些字符串;它们仅用于应用程序。
      105DIMVAR 符号表条目对象句柄。
      210拉伸方向(固定)。
      DXF:拉伸方向的 X 值
      APP:三维拉伸方向矢量
      220, 230DXF:拉伸方向的 Y 和 Z 值
      280-2898 位整数值
      300-309任意的文字字符串
      310-319任意二进制数据组,与组码 1004 具有相同表示法和限制:最长为 254 个字符的十六进制字符串表示最长为 127
个字节的数据数据组。
      320-329任意对象句柄。句柄值保留原样,在执行 INSERT 和 XREF 操作时它们不被转化。
      330-339软键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的软键指针,在执行 INSERT 和 XREF 操作时被转化。
      340-349硬键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的硬键指针,在执行 INSERT 和 XREF 操作时被转化。
      350-359软键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意软键从属链接,在执行 INSERT 和 XREF 操作时被转化。
      360-369硬键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意硬键从属链接,在执行 INSERT 和 XREF 操作时被转化。
      999DXF:999 组码表示其后为注释字符串行。DXFOUT 不在 DXF 输出文件中包括此组;DXFIN 能识别词组码,但忽略其后的注释。通过
      999 组码,用户可以在所编辑的 DXF 文件中包括注释。
      1000扩展数据中的 ASCII 字符串(最长 255 个字节)。
      1001扩展数据的已注册应用程序名(ASCII 字符串,最长 31 个字节)。
      1002扩展数据控制字符串("{" 或 "}")。
      1003扩展数据图层名。
      1004扩展数据中的字节数据组(最长 127 字节)。
      1005扩展数据中的图元句柄。文字字符串,最多 16 位十六进制数字。
      1010扩展数据中的点
      DXF:X 值(其后跟组码 1020 和 1030)
      APP:三维点
      1020, 1030DXF:点的 Y 和 Z 值
      1011扩展数据中的三维世界空间位置:X 值(其后跟组码 1021 和 1031):三维点
      1021, 1031DXF:世界空间位置的 Y 和 Z 值。
      1012扩展数据中的三维世界空间位移:X 值(其后跟组码 1022 和 1032):三维矢量
      1022, 1032DXF:世界空间位移的 Y 和 Z 值
      1013扩展数据中的三维世界空间方向
      DXF:X 值(其后跟组码 1022 和 1032)
      APP:三维矢量
      1023, 1033DXF:世界空间方向的 Y 和 Z 值
      1040扩展数据浮点值。
      1041扩展数据距离值。
      1042扩展数据比例因子。
      1070扩展数据 16 位符号整数。
      1071扩展数据 32 位符号整数。

 
 
 
对象和图元的组码
在 DXF 格式中,对象的定义与图元的定义不同:图元有图形表示,而对象则没有图形表示。例如,词典是对象而不是图元。对象通常作为非图形对象来使用,图元则作为图形对象来使用。
在 DXF 文件中,图元可以出现在 BLOCK 和 ENTITIESE 区域中。两个区域中图元的用法一样。
某些定义图元的组码始终会出现,而其他的组码仅在它们的值与缺省值不同时才出现。
读取 DXF 文件的程序不应该假定说明图元的组码是按照给定次序出现的。与说明图元的组码相连的 0 组码表示此图元已结束。0 组码将开始新图元或表示此区域已结束。
注意 如果用户以表驱动方式(即忽略未定义的组码,且对图元中的组码次序不做任何假定)编写 DXF 处理程序,那么该程序将比较容易针对 AutoCAD
的后续版本做调整。因为 AutoCAD 的性能将不断得到增强,所以图元中将添加一些新的组码以提供更多的功能。

读取DXF格式文件


      OpenGL是美国SGI公司最新推出的一套开放式的三维图形软件接口,适用于广泛的计算机环境,从个人计算机到工作站,OpenGL都能实现高性能的三维图形功能。OpenGL本身不仅提供对简单图元的操作和控制,还提供了许多函数用于复杂物体的建模。但是,我们通常喜欢使用AutoCAD和3DS及3Dmax等工具来建立模型,并且我们已经有了很多这样的模型,那么我们如何才能资源共享,避免重复劳动呢?利用CAD图形标准数据交换格式—DXF格式,我们就能很容易地实现资源共享,而不需要重复建模。

      DXF文件的结构很清楚,具体如下:
      1. 标题段(HEADER )
      有关图形的一般信息都可以DXF 文件的这一节找到,每一个参数具有一个变量名和一个相关值。
      2. 表段
      这一段包含的指定项的定义,它包括:
      a、
      线形表(LTYPE)
      b、
      层表(LYER)
      c、
      字体表(STYLE)
      d、
      视图表(VIEW)
      e、
      用户坐标系统表(UCS)
      f、
      视窗配置表(VPORT)
      g、
      标注字体表(DIMSTYLE)
      h、
      申请符号表(APPID)
      3. 块段(BLOCKS)
      这一段含有块定义实体,这些实体描述了图形种组成每个块的实体。
      4. 实体段(ENTITIES )
      这一段含有实体,包括任何块的调用。
      5. END OF FILE(文件结束)

      下面是对DXF的基本结构举一实例进行说明:
      0 0 后接SECTION
      SECTION 表明这是一个段的开始
      2 2 后接的是段名
      HEADER 说明该段是HEADER 段(标题段)
      9
      $ACADVER 文件是由AUTOCAD 产生的
      1
      AC1008
      9 9 后接 $UCSORG
      $UCSORG 用户坐标系原点在世界坐标系中的坐标
      10 10 对应 X
      0.0 X 的值
      20 20 对应 Y
      0.0 Y 的值
      30 30 对应 Z
      0.0 Z 的值
      9
      $UCSXDIR 这是一段不太相关的部分,略去
      10
      1.0
      ... ....
      9 9 后接 $EXTMIN
      $EXTMIN 说明三维实体模型在世界坐标系中的最小值
      10 10 对应 X
      -163.925293 X 的值
      20 20 对应 Y
      -18.5415860.0 Y 的值
      30 30 对应 Z
      78.350945 Z 的值
      9 9 后接 $EXTMAN
      $EXTMAX 说明三维实体模型在世界坐标系中的最大值
      10 10 对应 X
      202.492279 X 的值
      20 20 对应 Y
      112.634300 Y 的值
      30 30 对应 Z
      169.945602 Z 的值
      0 0 后接 ENDSEC
      ENDSEC 说明这一段结束了
      0 0 后接SECTION
      SECTION 表明这是一个段的开始
      2 2 后接的是段名
      TABLES 说明该段是TABLES 段(表段)
      ... ... ... ... 该段对我们不太相关,此处略去不进行说明
      0 0 后接 ENDSEC
      ENDSEC 说明这一段结束了
      0 0 后接SECTION
      SECTION 表明这是一个段的开始
      2 2 后接的是段名
      ENTITIES 说明该段是ENTITIES 段(实体段)这是我
      0 们要详细说明的段,该段包含了所有实体的
      POLYLINE 点的坐标和组成面的点序。0后接POLYLINE
      8 表明以下数据是对于一个新的实体;
      OBJECT01 8后接的字符串是这个实体的名称
      66
      1
      70 从66 1 到70 64
      64 说明该实体是由许多小平面组成的
      71
      38 71 38说明该实体共有38 个点
      72
      72 72 72 说明该实体由72 个三角形构成
      0 0 VERTEX
      VERTEX 表明后面紧跟着的是实体的数据
      8
      OBJECT01
      10 对应X 坐标
      -163.925293 X 的值
      20 对应Y 坐标
      -17.772665 Y 的值
      30 对应Z 坐标
      128.929947 Z 的值
      70 70 192
      192 表明上面的数据信息是点的坐标
      0 每一个从0 VERTEX 到70 192 之间
      VERTEX 的一小段是点的坐标
      ... ... ...
      70
      192
      0
      VERTEX
      8
      OBJECT01
      10
      0
      20
      0
      30
      0 当70 后跟128 时,表明该实体的每个点的坐标数据已经记录
      70 完了,下面紧跟着的是记录这些点是以什么样的方式组合成各
      128 个三角形。
      71 71、72、73 后面跟着的值表明某一个三角形是第二个、第
      2 一个、第四个点构成的,点的顺序是按照记入DXF 文件的顺
      72 序。当某一值为负数时,则表明该点到下一点的线不要画出,
      1 如果要画三维实体的线型图,就必须使用这一特性,否则线条
      73 将会出现紊乱。
      -4
      0
      VERTEX
      ... ... ... ...
      0 0 后接SEQEND 表明该实体的数据已经全部记录完了
      SEQEND
      8
      OBJECT01
      0
      POLYLINE 0 后接POLYLINE 表明以下又是一个新的实体
      ... ... ... ...
      0
      ENDSEC 0 后接ENDSEC 表明这是该段的结尾
      0
      EOF 0后接EOF 表明这个DXF 文件结束了

      在DXF文件中,我们最关心的是如何得到模型上各个点的坐标,并且用这些点连成许多个三用形,构成面,进而绘制出整个模型。在DXF文件的结构中,我们已经看到,DXF文件先叙述实体上各个点的坐标,然后叙述实体上有多少个面,每个面由哪些点构成。这样,我们至少需要2个数组来存储一个实体的信息,一个用于存储点的坐标,一个用于存储点序,我们可以把这2个数组放到一个结构中,如果模型中实体的数目不止一个是,我们就用这个结构来定义一个数组。在本文中,我们使用
      Visual C++ 6.0 来写一个读取DXF文件的小程序。
      在实际应用中,模型中实体的数目以及实体中点和面的数目都是不定的,为了有效地利用内存,我们选择MFC类库中的聚合类CobArray类所创建的对象vertex,
      sequence来存储和管理实体的点坐标和点序。
      CObArray类是一个用来存放数组类的聚合类,它能根据要存进来的数组(或结构)多少自动进行自身大小的高速,而且这个类本身具有的成员函数使得我们对它的对象的操作更加方便、快捷,用它编的程序也易于读懂。
      三维实体模型的模型信息中的一部分信息可以在标题段中读出,通过读取变量名为$UCSORG的三个变量,可以得到三维实体在世界坐标系中自身所定义的用户坐标系原点的三维坐标。通过读取$EXTMAX,$EXTMIN可以获知三维实体在世界坐标系中的范围,而其它部分的信息只有读完了全部DXF文件后才可以通过计算确定。对于三维实体模型的全部点坐标、点序,可以在实体段中按照前面介绍的DXF文件基本结构读出。现在我们开始写这个程序。
      先建立一个头文件HEAD.H定义如下的结构:VERTEX, SEQUENCE和类CVertex, Csequence。
      typedef struct {
      float x,y,z;
      }VERTEX; 结构VERTEX用来存储点的坐标

      typedef struct {
      int a,b,c;
      }SEQUENCE; 结构SEQUENCE用来存储实体的面的组成

      typedef struct {
      char obName[20]; 定义结构myVertex来存储实体的名字,点的坐标以及面的组成,
      CObArray Vertex; 其中,点的坐标和面的组成是由聚合类CObArray定义的对象来
      CObArray Sequence; 在存储的,我们可以把VERTEX结构和SEQUENCE结构加入到
      }myVertex; 这两个对象中保存

      class CVertex : public CObject
      { 因为CObArray类的对象中只能加入由CObject派生的对象,所以
      protected: 我们还需要建立一个由CObject类派生的CVertex类。在CVertex类
      CVertex(); 中有一个VERTEX结构的变量:m_vertex,信息实际上是存储在这
      DECLARE_DYNCREATE(CVertex) 个变量中的。
      virtual ~CVertex();

      // Attributes
      public: 我们还需要建立一个由CObject类派生的CVertex类。在CVertex类
      CVertex(VERTEX& ver);
      中有一个VERTEX结构的变量:m_vertex,信息实际上是存储在这个变量中的,函数CVertex(VERTEX&
ver)把VERTEX结构的变量
      VERTEX m_vertex; 存入CObArray对象中。

      };

      class CSequence : public CObject
      { 这也是一个由CObject类派生的类,作用和刚才CVertex类一样,
      protected: 只不过Csequence类是用来存储实体中面的组成(点序)的。
      CSequence();
      DECLARE_DYNCREATE(CSequence)
      virtual ~CSequence();

      public:
      CSequence(SEQUENCE& sequ);
      SEQUENCE m_sequence;
      };

      声明好结构与类后,我们还需要建立一个.CPP文件,来定义几个函数。
      IMPLEMENT_DYNCREATE(CVertex,CObject)
      CVertex::CVertex()
      {
      }

      CVertex::~CVertex() 构造函数和销毁函数都是空的
      {
      }

      CVertex::CVertex(VERTEX& ver)
      { 这个函数的作用是:把一个VERTEX结构的数据存入变量m_vertex中
      m_vertex = ver; 它是这个类中最重要的一环。
      }

      IMPLEMENT_DYNCREATE(CSequence,CObject)
      CSequence::CSequence()
      {
      } Csequence类的定义与CVertex类的定义差不多,只是其中的参数
      m_sequence的类型和CVertex类中的参数my_vertex的类型不一样
      CSequence::~CSequence()
      {
      }

      CSequence::CSequence(SEQUENCE& sequ)
      {
      m_sequence=sequ;
      }

      然后用结构myVertex(如前所定义)定义一个指针*myData,目的在于根据模型中实体的多少来给指针分配合适的内存,使之成为结构数组。
      定义一个函数,用于确定模型中有多少个实体,函数的返回值就是实体的个数。
      int CJupiterView::getObjectNumber()
      {
      char str1[10],str2[10];
      char name[]="theFirst";
      int num;

      num=0;

      FILE* fp;
      fp=fopen("data.dxf","r"); 打开DXF文件,data.dxf
      while(! feof(fp) && ! ferror(fp)) 这个函数是根据实体的名字来判断实体的个数的
      { 所以函数只读取实体的名字,一旦出现新的实体名字,
      fscanf(fp,"%s\n",str1); 实体数就加一。
      if(strcmp(str1,"VERTEX")==0)
      {
      fscanf(fp,"%s\n",str2); 打开DXF文件,data.dxf
      fscanf(fp,"%s\n",str2) ;这个函数是根据实体的名字来判断实体的个数的
      if(strcmp(name,str2) != 0) 所以函数只读取实体的名字,一旦出现新的实体名字,
      {实体数就加一。
      strcpy(name,str2);
      num++;
      }
      }
      }
      fclose(fp);

      return num;
      }

      以下是读取实体点的坐标以及点序的程序代码,在这个程序中,读取了模型中点的坐标的最大值与最小值、实体的名字、点的坐标,以及点序。
      void CJupiterView::OnFileInput()
      {
      // TODO: Add your command handler code here
      FILE* fp,*fp2;
      int i,k,j;
      float tempX,tempY,tempZ;

      float xMin,yMin,zMin,xMax,yMax,zMax,Max;
      int lab;
      char str1[20],str2[20],str[20],HT;
      char myName[20];
      int myNumber;
      VERTEX tempVertex;
      SEQUENCE tempSequence;

      typedef struct {
      float x,y,z,max;
      }MAX;

      MAX max;
      HT=9;

      objectNumber=getObjectNumber();
      myData=new myVertex[objectNumber];

      fp=fopen(FileName,"r");

      i=0;
      j=0;
      k=0;

      myNumber=-1;
      strcpy(myName,"ObjectName");

      while(! feof(fp) && ! ferror(fp))
      {
      fscanf(fp,"%s\n",str);

      if(strcmp(str,"$EXTMIN")==0)
      {
      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&xMin);

      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&yMin);

      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&zMin);
      }

      if(strcmp(str,"$EXTMAX")==0)
      {
      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&xMax);

      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&yMax);

      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&zMax);

      max.x=max(abs(xMax),abs(xMin));
      max.y=max(abs(yMax),abs(yMin));
      max.z=max(abs(zMax),abs(zMin));
      max.max=max(max.x,max.y);
      max.max=max(max.max,max.z);


      }

      if(strcmp(str,"VERTEX") ==0)
      {
      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%s\n",str1);

      if(strcmp(myName,str1) != 0)
      {
      myNumber++;
      strcpy(myName,str1);
      strcpy((myData+myNumber)->obName,myName);
      }


      fscanf(fp,"%s\n",str2);
      fscanf(fp,"%f\n",&tempX);

      fscanf(fp,"%s\n",str2);
      fscanf(fp,"%f\n",&tempY);

      fscanf(fp,"%s\n",str2);
      fscanf(fp,"%f\n",&tempZ);

      fscanf(fp,"%d\n",&lab);
      fscanf(fp,"%d\n",&lab);

      if(lab == 192)
      {
      tempVertex.x=tempX / max.max;
      tempVertex.y=tempY / max.max;
      tempVertex.z=tempZ / max.max;
      (myData+myNumber)->Vertex.Add(new CVertex(tempVertex));


      }

      if(lab == 128)
      {
      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&tempX);

      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&tempY);

      fscanf(fp,"%s\n",str1);
      fscanf(fp,"%f\n",&tempZ);

      tempSequence.a=abs(tempX);
      tempSequence.b=abs(tempY);
      tempSequence.c=abs(tempZ);

      (myData+myNumber)->Sequence.Add(new CSequence(tempSequence));

      }

      }
      }
      fclose(fp);
      }

HEADER 区域

 
本节中描述的组码仅适用于 DXF 文件。
DXF 文件的 HEADER 区域包括与图形相关联的变量的设置。其中的每一个变量都通过组码 9 给出变量名,并由其后的组码提供变量值。注意:AutoCAD
命令参考中的附录 B“系统变量”中的一些变量不出现在 DXF 文件中。
通过执行函数 getvar,应用程序可以检索这些变量的值。
下面是 DXF 文件的 HEADER 区域的样例:
      0
      2HEADER 区域的开始

      9
      $
      
      对每个表头变量重复


      0HEADER 区域的结束

下表列出了保存在 DXF 文件中的变量。
 
DXF 系统变量
      变量组码说明
      $ACADMAINTVER70 
      $ACADVER1AutoCAD 图形数据库版本号:
      AC1006=R10,AC1009=R11 和 R12,
      AC1012=R13,AC1014=R14
      $ANGBASE500 角度的方向
      $ANGDIR701=角为顺时针方向,0=逆时针方向
      $ATTDIA70属性条目对话框:1=开,0=关
      $ATTMODE70属性可见性:0=无,1=普通,2=全部
      $ATTREQ70INSERT 期间的属性提示:1=开,0=关
      $AUNITS70角的单位格式
      $AUPREC70角的单位精度
      $BLIPMODE70如果非零,则“点标记”模式打开
      $CECOLOR62当前图元颜色代码:0=BYBLOCK,256=BYLAYER
      $CELTSCALE40当前图元线型比例
      $CELTYPE6图元线型名称,也可为 BYBLOCK 或 BYLAYER
      $CHAMFERA40第一个倒角距离
      $CHAMFERB40第二个倒角距离
      $CHAMFERC40倒角长度
      $CHAMFERD40倒角角度
      $CLAYER8当前图层名
      $CMLJUST70当前多线对正模式:0=顶端,1=中间,2=底端
      $CMLSCALE40当前多线比例
      $CMLSTYLE2当前多线样式名
      $COORDS70坐标显示方式:
      0=静态的,1=持续更新,2="d       $DELOBJ70控制是否删除对象:0=删除,1=保留
      $DIMALT70如果非零,则标注中执行换算单位
      $DIMALTD70换算单位小数位数
      $DIMALTF40换算单位比例因子
      $DIMALTTD70换算单位标注的公差值的十进制小数位数
      $DIMALTTZ70控制替换公差值的消零:
      0 = 清除零英尺并精确到零英寸
      1 = 包括零英尺并精确到零英寸
      2 = 包括零英尺并清除零英寸
      3 = 包括零英寸并清除零英尺
      $DIMALTU70所有标注样式族成员(不包括角度)换算单位的单位格式:
      1 = 科学;2 = 十进制;3 = 工程;
      4 = 建筑(堆叠);5 = 分数(堆叠);
      6 = 建筑;7 = 分数
      $DIMALTZ70控制换算单位标注值的消零:
      0 = 清除零英尺并精确到零英寸
      1 = 包括零英尺并精确到零英寸
      2 = 包括零英尺并清除零英寸
      3 = 包括零英寸并清除零英尺
      $DIMAPOST1替换标注后缀
      $DIMASO701 = 创建关联标注,0 = 绘制独立图元
      $DIMASZ40标注箭头的尺寸
      $DIMAUNIT70角度标注的单位格式:
      0 = 十进制度数;1 = 度/分/秒;2 = 百分度;3 = 弧度;
      4 = 勘测
      $DIMBLK1箭头块名
      $DIMBLK11第一箭头块名
      $DIMBLK21第二箭头块名
      $DIMCEN40中心标记/中心线的尺寸
      $DIMCLRD70尺寸线颜色:范围为 0=BYBLOCK,256=BYLAYER
      $DIMCLRE70尺寸界线颜色:范围为 0=BYBLOCK,256=BYLAYER
      $DIMCLRT70标注文字颜色:范围为 0=BYBLOCK,256=BYLAYER
      $DIMDEC70主单位标注公差值的小数位数
      $DIMDLE40尺寸线范围
      $DIMDLI40尺寸线增量
      $DIMEXE40尺寸界线范围
      $DIMEXO40尺寸界线偏移
      $DIMFIT70文本和箭头的放置;可能值:0 到 3(请参见 AutoCAD 命令参考中的附录 B“系统变量”)
      $DIMGAP40尺寸线的间距
      $DIMJUST70水平标注文字位置:
      0 = 在尺寸线上方且与尺寸界线间中心对正;
      1 = 在尺寸线上方且与第一尺寸界线相邻;
      2 = 在尺寸线上方且与第二尺寸界线相邻;
      3 = 在第一尺寸界线上方且与之中心对正;
      4 = 在第二尺寸界线上方且与之中心对正;
      $DIMLFAC40线型测量比例因子
      $DIMLIM70如果非零,则生成标注图形界限
      $DIMPOST1基本标注后缀
      $DIMRND40标注距离的舍入值
      $DIMSAH70如果非零,则使用单独的箭头块
      $DIMSCALE40全局标注比例因子
      $DIMSD170控制是否清除第一尺寸线:
      0 = 不清除;1 = 清除
      $DIMSD270控制是否清除第二尺寸线:
      0 = 不清除;1 = 清除
      $DIMSE170如果非零,则清除第一尺寸界线
      $DIMSE270如果非零,则清除第二尺寸界线
      $DIMSHO701 = 拖动后重新计算标注;
      0 = 拖动原图像
      $DIMSOXD70如果非零,则清除外部尺寸尺寸线
      $DIMSTYLE2标注样式名称
      $DIMTAD70如果非零,则文字在尺寸线上方
      $DIMTDEC70公差值的十进制数位数
      $DIMTFAC40标注公差显示比例因子
      $DIMTIH70如果非零,则文字在水平方向内
      $DIMTIX70如果非零,则强制文字在尺寸线之间
      $DIMTM40负公差
      $DIMTOFL70如果非零,则当文字在范围外时,强制直线范围在尺寸界线之间
      $DIMTOH70如果非零,则文字在水平方向之外
      $DIMTOL70如果非零,则生成标注公差
      $DIMTOLJ70公差值的垂直对正模式:
      0=顶端;1=中间;2=底端
      $DIMTP40正公差
      $DIMTSZ40标注标记尺寸:0=无标记
      $DIMTVP40文字垂直位置
      $DIMTXSTY7标注文字样式
      $DIMTXT40标注文字高度
      $DIMTZIN70控制公差值的消零:
      0 = 清除零英尺并精确到零英寸
      1 = 包括零英尺并精确到零英寸
      2 = 包括零英尺并清除零英寸
      3 = 包括零英寸并清除零英尺
      $DIMUNIT70所有的标注样式族成员(角度除外)的单位格式:
      1 = 科学;2 = 十进制;3 = 工程;
      4 = 建筑(堆叠);5 = 分数(堆叠);
      6 = 建筑;7 = 分数
      $DIMUPT70用户放置文字的光标功能:
      0 = 只控制尺寸线位置:
      1 = 同时控制尺寸线和文字位置
      $DIMZIN70控制主单位值的消零:
      0 = 清除零英尺并精确到零英寸
      1 = 包括零英尺并精确到零英寸
      2 = 包括零英尺并清除零英寸
      3 = 包括零英寸并清除零英尺
      $DISPSILH70控制线框图模式中体对象轮廓曲线的显示:
      0=关;1=开
      $DRAGMODE700=关;1=开;2=自动
      $DWGCODEPAGE3图形代码页;当新图形创建时,设置为系统代码页,但 AutoCAD 不作另外的维护。
      $ELEVATION40命令 ELEV 设置的当前标高
      $EXTMAX10, 20, 30图形的 X、Y 和 Z 延伸到右上角(在 WCS 中)
      $EXTMIN10, 20, 30图形的 X、Y 和 Z 延伸到左下角(在 WCS 中)
      $FILLETRAD40圆角半径
      $FILLMODE70如果非零,则“填充”模式打开
      $HANDLING70下一个可用句柄
      $HANDSEED5下一个可用句柄
      $INSBASE10, 20, 30命令 BASE 设置的插入基点(在 WCS 中)
      $LIMCHECK70当检查图形界限时非零
      $LIMMAX10, 20XY 图形界限延伸至右上角(在 WCS 中)
      $LIMMIN10, 20XY 图形界限延伸至左下角(在 WCS 中)
      $LTSCALE40全局线型比例
      $LUNITS70坐标和距离的单位格式
      $LUPREC70坐标和距离的单位精度
      $MAXACTVP70设置要生成的视口数目的最大值
      $MEASUREMENT70设置图形单位:0=英制;1=公制
      $MENU1菜单文件名
      $MIRRTEXT70如果非零,则镜像文字
      $ORTHOMODE70如果非零,则打开“正交”模式
      $OSMODE70运行对象捕捉模式
      $PDMODE70点显示模式
      $PDSIZE40点显示尺寸
      $PELEVATION40当前图纸空间标高
      $PEXTMAX10, 20, 30图纸空间的 X、Y 和 Z 延伸的最大值
      $PEXTMIN10, 20, 30图纸空间的 X、Y 和 Z 延伸的最小值
      $PICKSTYLE70控制编组选择集和关联填充选择集:
      0 = 无编组选择集和关联填充选择集;
      1 = 有编组选择集;
      2 = 有关联填充选择集;
      3 = 有编组选择集和关联填充选择集
      $PINSBASE10, 20, 30图纸空间插入基点
      $PLIMCHECK70如果非零,则在图纸空间中检查图形界限
      $PLIMMAX10, 20图纸空间中最大的 X 和 Y 图形界限
      $PLIMMIN10, 20图纸空间中最小的 X 和 Y 图形界限
      $PLINEGEN70管理二维多段线顶点周围的线型图案的生成:
      0 = 在多段线周围以连续图案生成线型;
      1 = 每段多段线都以虚线开始和结束
      $PLINEWID40缺省的多段线宽度
      $PROXYGRAPHICS70控制代理对象图像的保存
      $PSLTSCALE70控制图纸空间线型比例:
      0 = 无指定的线型比例;
      1 = 由视口比例控制线型比例
      $PUCSNAME2当前图纸空间的 UCS 名
      $PUCSORG10, 20, 30当前图纸空间的 UCS 原点
      $PUCSXDIR10, 20, 30当前图纸空间的 UCS X 轴
      $PUCSYDIR10, 20, 30当前图纸空间的 UCS Y 轴
      $QTEXTMODE70如果非零,则打开快速文字模式
      $REGENMODE70如果非零,则打开 REGENAUTO 模式
      $SHADEDGE700 = 面着色,边不突出显示;
      1 = 面着色,边以黑色突出显示;
      2 = 面不填充,边为图元颜色;
      3 = 面为图元颜色,边为黑色
      $SHADEDIF70环境/漫射光百分数,取值范围为 1-100,缺省值为 70
      $SKETCHINC40徒手画记录增量
      $SKPOLY700 = 徒手画线条;1 = 徒手画多段线
      $SPLFRAME70样条曲线控制多边形显示:1 = 开;0 = 关
      $SPLINESEGS70每个样条曲线片的线段数
      $SPLINETYPE70PEDIT 样条曲线的曲线类型
      $SURFTAB170在第一方向上的网格列表数目
      $SURFTAB270在第二方向上的网格列表数目
      $SURFTYPE70PEDIT 平滑着色的表面类型
      $SURFU70在 M 方向上的(PEDIT 平滑着色的)表面密度
      $SURFV70在 N 方向上的(PEDIT 平滑着色的)表面密度
      $TDCREATE40图形创建的日期/时间
      $TDINDWG40图形的累计编辑时间
      $TDUPDATE40图形最近一次更新的日期/时间
      $TDUSRTIMER40用户流逝计时器
      $TEXTSIZE40缺省文本高度
      $TEXTSTYLE7当前文字样式名
      $THICKNESS40命令 ELEV 设置的当前厚度
      $TILEMODE701 与早期版本兼容;0 不兼容
      $TRACEWID40缺省宽线宽度
      $TREEDEPTH70指定空间索引的最大深度
      $UCSNAME2当前 UCS 名
      $UCSORG10, 20, 30当前 UCS 原点(在 WCS 中)
      $UCSXDIR10, 20, 30当前 UCS X 轴的方向(在 WCS 中)
      $UCSYDIR10, 20, 30当前 UCS Y 轴的方向(在 WCS 中)
      $UNITMODE70低位设置 = 显示分数、英尺和英寸,以及输入格式中的检测角
      $USERI1 - 570供第三方开发者使用的五个整型变量
      $USERR1 - 540供第三方开发者使用的五个实型变量
      $USRTIMER700 =计时器关;1 =计时器开
      $VISRETAIN700 = 不保留外部参照依赖可见性设置;
      1 = 保留外部参照依赖可见性设置;
      $WORLDVIEW701 = 在 DVIEW/VPOINT 期间设置 UCS 为 WCS;
      0 = 不修改 UCS

 
下列表头变量出现在 R11 前的 AutoCAD 中,但现在对每个活动的视口都有单独的设置。当 DXFIN 从 DXF
文件中读取这些变量时,能识别它们。但如果带有 *ACTIVE 条目的 VPORT 符号表存在(任何由 R11 或更高版本的 AutoCAD 生成的 DXF
文件中都存在),VPORT 符号表条目中的值将替代这些表头变量。
 
修正的 VPORT 表头变量
      变量组码说明
      $FASTZOOM70如果非零,则启用快速缩放
      $GRIDMODE70如果非零,则打开“栅格”模式
      $GRIDUNIT10, 20栅格的 X 和 Y 间距
      $SNAPANG50捕捉栅格旋转角
      $SNAPBASE10, 20捕捉/栅格基点(在 UCS 中)
      $SNAPISOPAIR70等轴测平面:0 = 左边,1 = 上端,2 = 右边
      $SNAPMODE70如果非零,则打开“捕捉”模式
      $SNAPSTYLE70捕捉样式:0 = 标准;1 = 等轴测
      $SNAPUNIT10, 20捕捉栅格的 X 和 Y 间距
      $VIEWCTR10, 20屏幕上当前视图的 XY 中心
      $VIEWDIR10, 20, 30视图方向(来自 WCS 中目标的方向)
      $VIEWSIZE40视图高度

日期/时间变量($TDCREATE 和 $TDUPDATE)以如下实数格式输出:
  .
流逝计时器变量($TDINDWG 和 $TDUSRTIMER)具有相似的格式:
  .

TABLES 区域

 
本节描述的组码既出现在 DXF 文件中又被应用程序使用。TABLES 区域中包括多个表,每个表中条目数目可变。AutoLISP 和 ARX
应用程序在图元定义表中也使用这些组码。
如不作特殊说明,本节中所出现的组码都可以应用于 DXF 文件、AutoLISP 应用程序和 ARX 应用程序。当组码说明对于应用程序和 DXF
文件有所不同时(或只适用于其中之一),在组码的说明前会有如下提示符:
APP 用于应用程序的说明
DXF 用于 DXF 文件的说明
如果组码说明对 DXF 文件和应用程序都适用,那么没有提示符;否则将显示适当的提示符。
 
 
DXF 文件中的符号表
表的次序可以改变,但 LTYPE 表一般放在 LAYER 之前。每个表都由带有标签 TABLE 的组码 0
引入。其后是标识具体表(APPID、DIMSTYLE、LAYER、LTYPE、STYLE、UCS、VIEW、VPORT 或 BLOCK_RECORD)的组码 2
、组码 5(句柄)、组码 100(AcDbSymbolTable 子类标记)和组码
70(此组码用于指定其后表的最大条目数)。表名以大写字符形式输出。DIMSTYLE 句柄使用组码 105 而不是组码 5。
图形中的表可以包含已删除的条目,但这些条目不写入 DXF 文件,因此表头后的表条目数可能少于组码 70 所指定的数目。所以不要用组码 70
中的数字作为读取表的索引。读取 DXF 文件的程序会根据组码 70 中的数字分配一个足够大的数组来存储其后所有的表条目。
在每个表的表头后跟随着表条目。每个表条目包括指定条目类型的组码 0(与表名称相同,如 LTYPE 或 LAYER)、给出表条目名称的组码
2、指定与表条目相关的标志的组码 70 和其他给出表条目值的组码组成。每个表条目的结尾都由带有组值 ENDTAB 的组码 0 标记。
下面是一个 DXF 文件中的 TABLES 区域的样例:
      0
      2TABLES 区域的开始

      0
      2
      
      5
      

      70
      相同的表组码,
      对每一个条目重复




      0
      

      5
      

      .
      .
      .表条目数据,
      对每一个表记录重复



      0表结束
      0TABLES 区域的结束

符号表记录和符号表都是数据库对象。至少,在 AutoCAD 的所有主要用法中,这意味着符号表记录对象和符号表对象的组码 2 后都存在一个句柄。
DIMSTYLE 表是系统中唯一使用句柄组码 105 的记录类型(以前它也使用组码 5)。除非在 DIMSTYLE
表区域中,程序员一般不必留心此例外情况,因为只有在 DIMSTYLE 表区域中才会发生此例外情况。
 
 
 
符号表组码
下表列出了适用于所有符号表的组码:
适用于所有符号表的组码
      组码说明
      -1APP:图元名(每次打开图形时改变)
      0对象类型 (TABLE)
      2表名称
      5句柄
      100子类标记 (AcDbSymbolTable)
      70表中的最大条目数。

 
 
 
符号表条目的公用组码
下表显示了适用于所有符号表的组码,可选的组码以灰色显示。当用户通过图元类型引用组码表时,应注意表中不仅包括与特定图元关联的组码,也会包括下表列出的组码。
适用于所有符号表条目的组码
      组码说明
      -1APP:图元名(每次打开图形时改变)
      0图元类型(表名称)
      5句柄(除 DIMSTYLE 外的所有表)
      105句柄(只用于 DIMSTYLE 表)
      102应用程序定义的组码的开始 "{application_name"。
      例如,"{ACAD_REACTORS" 表示 AutoCAD Persistent reactors 组的开始
      application-defined
      codes组 102 中的组码和组值由应用程序定义
      102组结束 "}"
      100子类标记 (AcDbSymbolTableRecord)

下表列出了当 Persistent reactors 被附着到对象上时输出的组码:
 
 
ACAD_REACTORS 记录
      组码说明
      102"{ACAD_REACTORS" 表示 AutoCAD Persistent reactors 组的开始
      330指向所有者词典的软键指针标识符/句柄
      102组结束 "}"

下表列出了当扩展词典被附着到对象上时输出的组码:
 
 
ACAD_XDICTIONARY 记录
      组码说明
      102"{ACAD_XDICTIONARY" 表示扩展词典组码的开始
      360指向所有者词典的硬键指针标识符/句柄
      102组结束 "}"

 
 
公用组码 70 标志 - 位编码值的说明如下表。其他适用于 LAYER、STYLE 和 VIEW 表条目的组码 70 值则在另外的相关表中说明。
适用于所有表条目的组码 70 的位编码值
      位编码值说明
      16如果设置该位,表示表条目依赖于外部参照
      32如果此位和位 16 都被设置,则表示所依赖的外部参照已被成功融入。
      64如果设置该位,表示在上一次图形编辑时图形中至少有一个图元引用了该表条目。(此标志一般用于 AutoCAD 命令。大部分读取 DXF
      文件的程序将其忽略,对于写 DXF 文件的程序也无须设置它。)

 
 
APPID
下列组码适用于 APPID 符号表条目:
APPID 组码
      组码说明
      100子类标记 (AcDbRegAppTableRecord)
      2用户提供的应用程序名(用于扩展数据)。此表条目维护所有已注册的应用程序名。
      70标准标志值(请参见符号表条目的公用组码!AL(`XREF_30203_al_u05_c',1)。):
      1 = 如果设置,在执行SAVEASR12 时不写入 APPID 所关联的外部数据。

注意 因为在 R13 和 R14 的 AutoCAD 中 ASE 数据格式相同,所以 ASE 应用程序名 (ACADASER13) 也相同。
 
 
 
BLOCK_RECORD
下列组码适用于 BLOCK_RECORD 符号表条目。
BLOCK_RECORD 组码
      组码说明
      100子类标记 (AcDbBlockTableRecord)
      2块名称

 
 
DIMSTYLE
下列组码适用于 DIMSTYLE 符号表条目。关于 DIMSTYLE 符号表条目的详细信息,请参见 AutoCAD 命令参考中的附录 B“系统变量”。
DIMSTYLE 组码
      组码说明
      100子类标记 (AcDbDimStyleTableRecord)
      2标注样式名
      70标准标志值(请参见符号表条目的公用组码!AL(`XREF_30203_al_u05_c',1)。)
      3DIMPOST
      4DIMAPOST
      5DIMBLK
      6DIMBLK1
      7DIMBLK2
      40DIMSCALE
      41DIMASZ
      42DIMEXO
      43DIMDLI
      44DIMEXE
      45DIMRND
      46DIMDLE
      47DIMTP
      48DIMTM
      140DIMTXT
      141DIMCEN
      142DIMTSZ
      143DIMALTF
      144DIMLFAC
      145DIMTVP
      146DIMTFAC
      147DIMGAP
      71DIMTOL
      72DIMLIM
      73DIMTIH
      74DIMTOH
      75DIMSE1
      76DIMSE2
      77DIMTAD
      78DIMZIN
      170DIMALT
      171DIMALTD
      172DIMTOFL
      173DIMSAH
      174DIMTIX
      175DIMSOXD
      176DIMDLRD
      177DIMCLRE
      178DIMCLRT
      270DIMUNIT
      271DIMDEC
      272DIMTDEC
      273DIMALTU
      274DIMALTTD
      340被引用的 STYLE 对象的句柄(用于代替储存 DIMTXSTY 值)
      275DIMAUNIT
      280DIMJUST
      281DIMSD1
      282DIMSD2
      283DIMTOLJ
      284DIMTZIN
      285DIMALTZ
      286DIMALTTZ
      287DIMFIT
      288DIMUPT

 
 
LAYER
下列组码适用于 LAYER 符号表条目。
LAYER 组码
      组码说明
      100子类标记 (AcDbSymbolTableRecord)
      2图层名
      70标准标志。(清参见符号表条目的公用组码!AL(`XREF_30203_al_u05_c',1)。)
      除标准标志外,以下(位编码)值也适用于图层:
      1 = 冻结图层,否则图层解冻;
      2 = 在新视口中缺省设置为冻结图层;
      4 = 锁定图层;
      62颜色数(如果为负则图层被关闭)
      6线型名

在执行 DXFOUT 时输出依赖于外部参照的图层。对于这些图层,DXF 文件中的相关线型名始终为 CONTINUOUS。
 
 
 
LTYPE
下列组码适用于 LTYPE 符号表条目。
LTYPE 组码
      组码说明
      100子类标记 (AcDbLinetypeTableRecord)
      2线型名称。
      70标准标志(位编码值)。(请参见符号表条目的公用组码!AL(`XREF_30203_al_u05_c',1)。)
      3线型的描述文字。
      72对齐方式码;始终为 65(A 的 ASCII 码)。
      73线型元素数目。
      40图案总长度。
      49虚线、点或空间的长度(每个元素一个条目)。
      74复杂线型元素类型(每个元素一个条目):
      0 = 简单的;
      2 = 内嵌文字字符串;
      4 = 内嵌形;
      75复杂形的组码(如果组码 74 > 0,每个元素一个条目)
      如果组码 74 = 2,则值为 1。
      340STYLE 对象指针(如果组码 74 > 0,每个元素一个条目)。
      46S= 比例值(可选),可存在多个这样的条目。
      50R= 旋转值(可选),可存在多个这样的条目。
      44X= x 偏移值(可选),可存在多个这样的条目。
      45Y= y 偏移值(可选),可存在多个这样的条目。
      9文字字符串(如果组码 74 = 2,每个元素一个条目)。

执行函数 tblsearch 或 tblnext 时,并不返回组码 74、75、340、46、50、44、45 和 9 的值,因此用户需要使用函数
tblobjname 来获取这些组码的值。
 
 
 
STYLE
下列组码适用于 STYLE 符号表条目。
STYLE 组码
      组码说明
      100子类标记 (AcDbTextStyleTableRecord)
      2样式名称
      70标准标志值(请参见符号表条目的公用组码!AL(`XREF_30203_al_u05_c',1)。):
      1 = 如果设置,此条目描述一个形;
      4 = 垂直文本;
      40固定文字高度;如果高度不固定则值为 0。
      41宽度因子
      50倾斜角
      71文字生成标志:
      2 = 文字反向(X 轴方向镜像)
      4 = 文字倒置(Y 轴方向镜像)
      42最后使用的高度
      3主字体文件名
      4大字体文件名;如果没有则为空

STYLE 表条目也可用于记录命令 LOAD 所需要的形文件。此时组码 70 的第一位 (1) 被设置且只有组码 3
(形文件名)有意义(但仍输出所有其他组码)。
 
 
 
UCS
下列组码适用于 UCS 符号表条目。
UCS 组码
      组码说明
      100子类标记 (AcDbUCSTableRecord)
      2UCS 名称
      70标准标志值
      10原点(用 WCS 表示)。DXF:X 值;APP:三维点
      20, 30DXF:原点坐标的 Y 和 Z 值(用 WCS 表示)
      11X 轴方向(用 WCS 表示)。DXF:X 值;APP:三维矢量
      21, 31DXF:X 轴方向的Y 和 Z 值(用 WCS 表示)
      12Y 轴方向(用 WCS 表示)。DXF:Y 值;APP:三维矢量
      22, 32DXF:Y 轴方向的Y 和 Z 值(用 WCS 表示)

 
 
 
VIEW
下列组码适用于 VIEW 符号表条目。
VIEW 组码
      组码说明
      100子类标记 (AcDbViewTableRecord)
      2视图名
      70标准标志值(位编码值)
      1 = 如果设置,则为图纸空间视图。
      40视图高度(用 DCS 表示)
      10视图中点(用 DCS 表示)。DXF:X 值;APP:二维点
      20DXF:视图中点的 Y 值(用 DCS 表示)
      41视图宽度(用 DCS 表示)
      11以目标为起点的视图方向(用 WCS 表示):X 值;APP:三维矢量
      21, 31DXF:以目标为起点的视图方向的 Y 和 Z 值(用 WCS 表示)
      12目标点(用 WCS 表示)。DXF:X 值;APP:三维点
      22, 32DXF:目标点坐标的 Y 和 Z 值(用 WCS 表示)
      42镜头长度
      43前剪裁平面(与目标点的偏移)
      44后剪裁平面(与目标点的偏移)
      50扭曲角
      71视图模式(请参见 VIEWMODE 系统变量)

 
 
 
VPORT
下列组码适用于 VPORT 符号表条目。
VPORT 组码
      组码说明
      100子类标记 (AcDbViewportTableRecord)
      2视口名
      70标准标记值(请参见符号表条目的公用组码!AL(`XREF_30203_al_u05_c',1)。)
      10视口左下角点。: X 值;APP:二维点
      20DXF:视口左下角点坐标的 Y 值
      11视口右上角点。: X 值;APP:二维点
      21DXF:视口右上角点坐标的 Y 值
      12视图中点(用 DCS 表示)。DXF:X 值;APP:二维点
      22DXF:视图中点坐标的 Y 值(用 DCS 表示)
      13捕捉基点。DXF:X 值;APP:二维点
      23DXF:捕捉基点坐标的 Y 值
      14捕捉间距的 X 和Y 值。DXF:X 值;APP:二维点
      24DXF:捕捉间距 X 和Y 值中的 Y 值。
      15栅格间距的 X 和 Y 值。DXF:X 值;APP:二维点
      25DXF:栅格间距 X 和 Y 值中的 Y 值
      16以目标点为起点的视图方向(用 WCS 表示):X 值;APP:三维点
      26, 36DXF:以目标点为起点的视图方向的 Y 和 Z 值(用 WCS 表示)
      17视图目标点(用 WCS 表示)。DXF:X 值;APP:三维点
      27, 37DXF:视图目标点坐标的 Y 和 Z 值(用 WCS 表示)
      40视图高度
      41视口宽高比
      42镜头长度
      43前剪裁平面(与目标点的偏移)
      44后剪裁平面(与目标点的偏移)
      50捕捉旋转角
      51视图扭曲角
      68APP:状态字段(不保存在 DXF 中)
      69APP:ID(不保存在 DXF 中)
      71视图模式(请参见 VIEWMODE 系统变量)
      72圆缩放百分比
      73快速缩放设置
      74UCSICON 设置
      75捕捉状态:开/关
      76栅格状态:开/关
      77捕捉样式
      78捕捉 ISOPAIR

VPORT 表和其他表不同的是,它可以包含多个同名条目(表示一个多视口配置)。所有对应于活动视口配置的条目都具有 *ACTIVE
名称,其中第一个描述了当前视口

CLASSES 区域


本节描述的组码只出现在 DXF 文件中。
CLASSES 区域存储了应用程序定义的类的信息,这些类的实例将会出现在数据库的 BLOCKS、ENTITIES 和 OBJECTS
区域中。假定类定义在类的层次结构中是固定不变的。区域中的所有字段都是必需的。
下面是一个 DXF 文件中 CLASSES 区域的样例:
      0
      2CLASSES 区域的开始

      0
      1
      
      2
      
      3
      
      90
      
      
      对每个条目重复




      0CLASSES 区域的结束

下表列出了 CLASSES 区域中每个条目所包含的组码:
 
 
CLASSES 区域组码
      组码说明
      0DXF 记录类名。此名称必须唯一。指明 BLOCKS、ENTITIES 和 OBJECTS 区域的开始,如果两个对象类型声明了同名的 DXF
      类名,AutoCAD 会给它们加上不同的数字后缀,以使图形中的 DXF 类名唯一。
      1C++ 类名。用于绑定定义对象类行为的软件,此名称唯一。值得注意的是,同一个 C++ 类在不同的图形中的 DXF 名可能稍有不同。
      2应用程序名。如果当前未加载本区域中列出的类定义,则此名称将显示在“警告”框中。
      90类版本号。设置为最后一次存储该类实例时所加载类的版本号。
      280“是代理”标志。如果此DXF 文件创建时没有加载类,设置为 1;否则设置为 0。
      281“是图元”标志。如果此类是从 AcDbEntity 类继承下来的且其实例可出现在 BLOCKS 或 ENTITIES 区域中,它设置为
      1;如果为 0,则其实例只能出现在 OBJECTS 区域中。

BLOCKS 区域


本节描述的组码既出现在 DXF 文件中又被应用程序使用。对图形中每个块引用,在块区域中都有一个条目与之对应。
如不作特殊说明,本节中所出现的组码都可以同时应用于 DXF 文件、AutoLISP 应用程序和 ARX 应用程序。当应用程序中的组码描述与 DXF
文件中的组码描述不同(或只适用于其中之一)时,则在说明前有如下提示:
APP 应用程序特定说明
 
 
DXF 文件特定说明
如果组码描述对 DXF 文件和应用程序都适用,那么没有提示;否则将存在适当的提示。可选的组码以灰色显示。
 
DXF 文件中的块
DXF 文件中的 BLOCKS 区域包括所有的块定义,其中包含组成(图形中使用的)块(包括命令 HATCH 和关联标注生成的无名块)的图元。BLOCKS
区域中的图元格式与 ENTITIES 区域中的一样,且此区域中的所有图元都出现在 BLOCK 和 ENDBLK 图元之间。BLOCK 和 ENDBLK
图元只出现在 BLOCKS 区域中。虽然块定义可以包含插入图元,但块定义不允许被嵌套(即 BLOCK 和 ENDBLK 图元之间不允许出现另一对 BLOCK 和
ENDBLK 图元)。
通常外部参照将作为块定义写入 DXF 文件中,除非文件中已经包含了指定该外部参照的路径和文件名的字符串(组码 1)。
在每个块定义中,紧接着 BLOCK 记录出现的是块句柄和其他外部数据及 persistent reactors,此句柄包含了该 BLOCK
记录所储存的特定信息。因此每个块定义有如下记录次序:
下面是一个 DXF 文件中的 BLOCKS 区域的例子:
      0
      2BLOCKS 区域的开始

      0
      5
      
      8
      
      2
      
      70
      
      10
      
      20
      
      30
      
      3
      
      1
      开始每个块条目
      (一个块图元定义)













      0
      
      .. .块中每个图元定义均对应一个条目

      0
      5
      
      每个块条目的结束
      (ENDBLK 图元定义)
      0BLOCKS 区域的结束

 
 
BLOCK
下列组码适用于块图元。
Block 组码
      组码说明
      0图元类型 (BLOCK)
      5句柄
      102应用程序定义的组的开始 "{application_name",
      例如,"{ACAD_REACTORS" 表示 AutoCAD Persistent reactors 组的开始
      application-defined codes组 102 中的组码和组值由应用程序定义
      102组结束 "}"
      100子类标记 (AcDbEntity)
      8图层名
      100子类标记 (AcDbBlockBegin)
      2块名称
      70“块类型” 标志(位编码值,可被组合):
      1 = 这是一个由图案填充、关联标注、其他内部操作或应用程序生成的无名块;
      2 = 此块具有属性定义;
      4 = 此块是一个外部参照(xref);
      8 = 此块是一个外部参照覆盖;
      16 = 此块依赖于外部参照;
      32 = 是一个融入的外部参照或依赖于外部参照(输入时忽略之);
      64 = 此定义被外部参照引用(输入时忽略之);
      10基点。DXF:X 值;APP:三维点
      20, 30DXF:基点坐标的 Y 和 Z 值
      3块名称
      1外部参照路径名(可选,只有在块是一个外部参照时存在)

创建块定义后,原先有效的 UCS 变为适合于块定义中所有图元的 WCS。将移动这些图元的新原点以匹配块定义的基点,也将平移所有图元数据以适合新的 WCS。
*MODEL_SPACE 和 *PAPER_SPACE 块定义
现在,在 BLOCKS 区域中始终有两个额外的空定义,它们的标题分别为 *MODEL_SPACE 和
*PAPER_SPACE。这样实际上是将模型空间和图纸空间视为内部块定义。考虑到兼容性,这些定义包含的图元也会出现在 ENTITIES 区域中。
模型空间和图纸空间图元分离
由于改进了内部组织机构,模型空间和图纸空间之间的交错将不再发生,而是先输出图纸空间图元,再输出模型空间图元。区分这些图元的标志为组码 67。
 
 
ENDBLK
下列组码适用于 ENDBLK 对象
Endblk 组码
      组码说明
      0图元类型 (ENDBLK)
      5句柄
      102应用程序定义的组的开始 "{application_name"。
      例如,"{ACAD_REACTORS" 表示 AutoCAD Persistent reactors 组的开始
      application-defined codes组 102 中的组码和组值由应用程序定义
      102组结束,"}"
      100子类标记 (AcDbBlockEnd)

OBJECTS 区域


此节中的组码适用于非图形对象。这些出现在 DXF 文件的 OBJECTS 区域中的组码被图元定义表中的 AutoLISP 和 ARX 应用程序使用。
如不作特殊说明,本节中所出现的组码都可以应用于 DXF 文件、AutoLISP 应用程序和 ARX 应用程序。当应用程序中的组码描述与 DXF
文件中的组码描述不同(或只适用于其中之一)时,则在说明前有如下提示:
APP 应用程序特定说明
DXF DXF 文件特定说明
如果 DXF 文件中的组码描述与应用程序中的相同,那么没有提示,否则将存在适当的提示。可选的组码以灰色显示。
除了没有图形的或几何的意义外,对象与图元基本类似。所有那些非图元的,符号表记录的或符号表的对象都存储在此区域中。此区域通过所有关系描绘了一个具有对象的拓扑次序的同类堆,根据此关系,所有者始终出现在它们的所有对象的前面。
 
对象所有关系
出现在 OBJECTS
区域中的大多数对象的根所有者被称为对象词典,所以始终只有第一对象出现在此区域中。不被对象词典所有的对象归其他图元、对象或符号表条目所有。此区域中的对象可以被
AutoCAD 或被有权使用 ARX API 的应用对象定义。应用程序定义对象类型的 DXF 名称始终与一个 DXF 文件的 CLASS
区域中的类名称联合在一起,否则对象记录不能被加进将要解释它的应用程序中。
当使用其他词典时,命名对象词典记录由条目名称对和参照关联对象的硬键所有关系指针独立组成。
为避免对象间的名称冲突,开发者应始终使用已注册的这些图元的开发前缀。
 
DXF 文件中的对象组码
下面是 DXF 文件的对象区域的例子:
      0
      2OBJECTS 区域的开始
      0
      5
      
      命名对象词典的开始(根词典对象)
      3
      

      为每个条目重复
      0
      
      .
      .
      .对象数据组



      0OBJECTS 区域的结束


 
公用对象组码
下表显示的组码适用于所有实际的非图形图元(对象)。当用户通过图元类型引用组码表时,应注意表中不仅列出与特定图元关联的组码,也会列出下表所显示的组码。只当图元具有特性的非缺省值时,一些公用对象组码才被包括到图元中。当组码被忽略时,它的缺省值将出现在输入文件(当使用
DXFIN 时)的第三列上,如果组码值等于缺省值,在输出(使用 DXFOUT)时它将被忽略。
公用对象组码
      组码说明
      0对象类型
      5句柄
      102应用程序定义组码的开始 "{application_name"。例如,"{ACAD_REACTORS" 表示 AutoCAD
      Persistent reactors 组的开始
      application-defined codes应用程序定义的组 102 中的组码和组值
      102组的结束,"}"

如果 persistent reactors 已被附着到对象上,则下表显示的组码将被输出。
 
ACAD_REACTORS 记录
      组码说明
      102"{ACAD_REACTORS" 表示AutoCAD Ppersistent reactors 组的开始
      330所有着词典的软键指针标识符/句柄
      102组的结束,"}"

如果扩展词典已被附着到对象上,则下表显示的组码将被输出。
 
ACAD_XDICTIONARY 记录
      组码说明
      102"{ACAD_XDICTIONARY" 表示扩展词典组的开始
      360所有着词典的硬键指针标识符/句柄
      102组的结束,"}"

 
ACAD_PROXY_OBJECT
下列组码适用于 ACAD_PROXY_OBJECT 对象。
Acad_proxy_object 组码
      组码说明
      100DXF:子类标记 (AcDbProxyObject)
      90DXF:代理对象类 ID(始终为 499)
      91DXF:应用程序对象类 ID。类 ID 由 CLASSES 区域中的类的次序决定。第一个类的 ID 为 500,下一个为 501,依此类推。
      93DXF:以位表示的对象数据的大小
      310DXF:二进制对象数据(可在多个条目中出现)
      330 or 340 or 350 or 360DXF:对象 ID(可在多个条目中出现)
      94DXF:0(表示对象 ID 区域的结束)

字段 92 不用于 AcDbProxyObject。此类的对象没有图形。
 
DICTIONARY
下列组码由词典对象使用。
词典 组码
      组码说明
      100子类标记 (AcDbDictionary)
      3条目名称(适用于每个条目)
      350条目对象的句柄(适用于每个条目)

在词典中 AutoCAD 将诸如多线样式和组定义之类的条目作为对象来维护。下节描述在词典中被维护的 AutoCAD
对象组码。但如果合适,其他应用程序可自由地创建和使用它们自己的词典。注意:在 AutoCAD 应用程序使用时,应保留前缀 "ACAD_"。
 
 
DICTIONARYVAR
下列组码由 DICTIONARYVAR 对象使用。
DICTIONARYVAR 组码
      组码说明
      0对象名称 (DICTIONARYVAR)
      5句柄
      102persistent reactors 组的开始;始终为 "{ACAD_REACTORS"
      330所有者词典的软键指针标识符/句柄(ACDBVARIABLEDICTIONARY)。
      102persistent reactors 组的结束;始终为 "}"
      100子类标记(词典变量)
      280对象概要数(通常设置为 0)
      1变量值

在不需要向 DXF HEADER 区域中添加条目时,DICTIONARYVAR 对象被 AutoCAD 用来作为在数据库中存储命名值的方法以达到
setvar/getvar 的目的。通常作为 DICTIONARYVAR
对象存储的系统变量有:DIMADEC、DIMDSEP、INDEXCTL、PROJECTNAME 和 XCLIPFRAME。
 
 
GROUP
下列组码由 GROUP 对象使用。
GROUP 组码
      组码说明
      0对象名称 (GROUP)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"(persistent reactors
      组出现在除主词典之外的所有词典中)
      330所有者词典的软键指针标识符/句柄。对于 GROUP 对象,此码始终是命名对象词典的 ACAD_GROUP 条目。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbGroup)
      300(对象)组说明
      70“未命名”标志:1 = 未命名的;0 = 命名的;
      71可选择性标志:1 = 可选择的;0 = 不可选择;
      340(对象)组中图元的句柄(适用于每个对象的条目)

 
 
IDBUFFER
下列组码由 IDBUFFER 对象使用。
IDBUFFER 组码
      组码说明
      0对象名称 (IDBUFFER)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"。
      330所有者词典的软键指针标识符/句柄。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbIdBuffer)
      330参照图元的软键指针(可以存在多条目)。

IDBUFFER 对象是对象参照的表的使用使用工具对象。
 
 
IMAGEDEF
下列组码有 IMAGEDEF 对象使用。
IMAGEDEF 组码
      组码说明
      0对象名称 (IMAGEDEF)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"。
      330ACAD_IMAGE_DICT 词典的软键指针的标识符/句柄。
      330IMAGEDEF_REACTOR 对象的软键指针的标识符/句柄(多条目;适合于每个实例的条目)。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbRasterImageDef)
      90类版本。0=R14 版本
      1图像的文件名称
      10以像素点表示的图像大小。DXF:U 值;APP:二维点(U 和 V 值)
      20DXF:以像素点表示的图像大小的 V 值
      11AutoCAD 中一个像素的缺省大小。:U 值;APP:二维点(U 和 V 值)。
      12DXF:像素大小的 V 值。
      280“图像被加载”标志:0=为加载的;1=加载的;
      281分辨率单位:0=无单位;2=厘米;5=英寸;

 
 
 
IMAGEDEF_REACTOR
下列组码由 IMAGEDEF_REACTOR 对象使用。
IMAGEDEF_REACTOR 组码
      组码说明
      0对象名称 (IMAGEDEF_REACTOR)
      5句柄
      100子类标记 (AcDbRasterImageDefReactor)
      90类版本号。2=R14 版本
      330适于关联图像对象的对象 ID。

 
 
LAYER_INDEX
 
下列组码由 LAYER_INDEX 对象使用。
LAYER_INDEX 组码
      组码说明
      0对象名称 (LAYER_INDEX)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"。
      330所有者词典的软键指针的标识符/句柄。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbIndex)
      40时间标志(Julian 日期)
      100子类标记 (AcDbLayerIndex)
      8图层名称(可以存在多条目)。
      360IDBUFFER 的硬键从属参照(可以存在多条目)
      90在 IDBUFFER 中的条目数(可以存在多条目)

 
 
 
MLINESTYLE
下列组码由 MLINESTYLE 对象使用。
MLINESTYLE 组码
      组码说明
      0对象名称 (MLINESTYLE)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"(persistent reactors
      组出现在除主词典以外的所有词典中)
      330所有者词典的软键指针的标识符/句柄。对于 MLINESTYLE 对象,此组码始终为命名对象词典中的 ACAD_MLINESTYLE 条目。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbMlineStyle)
      2多线样式名称
      70标志(位编码):
      1 = 打开填充;
      2 = 显示斜接;
      16 = 开始矩形结束(直线)封口;
      32 = 开始内弧封口;
      64 = 开始圆(外弧)封口;
      256 = 结束矩形(直线)封口;
      512 = 结束内弧封口;
      1024 = 结束圆(外弧)封口;
      3样式说明(字符串,最大值为 255 字符)
      62填充颜色(整型,缺省值= 256)。可以存在多条目,适于每个元素的一个条目。
      51起始角度(实型,缺省值为 90 度)
      52结束角度(实型,缺省值为 90 度)
      71元素的数目
      49元素偏移(实型,无缺省值)。可以存在多条目,且为适于每个元素的一个条目。
      62元素颜色(整型,缺省值= 0)。可以存在多条目,且为适于每个元素的一个条目。
      6元素线型(字符串,缺省值= BYLAYER)。可以存在多条目,且为适于每个元素的一个条目。

多线图元和多线样式对象中的组码 2 是多余的字段。虽然可以安全的读取这些组码及其关联值,但这些组码在任何情况下都不能被修改。这些字段修改如下:
多线
  在相同对象中的组码 340 用于指定严格意义上的 MLINESTYLE 对象。
多线样式
  MLINESTYLE 词典中的组码 3 位于具有当前 MLINESTYLE 的图元名或句柄的组码 350 之前。
   
   
   
OBJECT_PTR
下列组码由 OBJECT_PTR 对象使用。
OBJECT_PTR 组码
      组码说明
      0对象名称 (OBJECT_PTR)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"。
      330所有者词典的软键指针的标识符/句柄。
      102persistent reactors 组的结束,始终为 "}"。
      1001开始 ASE 外部数据 (ACADASER13)

 
 
 
RASTERVARIABLES
下列组码由 RASTERVARIABLES 对象使用。
RASTERVARIABLES 组码
      组码说明
      0对象名称 (RASTERVARIABLES)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"。
      330所有者词典的软键指针标识符/句柄。对于 RASTERVARIABLES 对象,此组码始终为命名对象词典中的 ACAD_IMAGE_VARS
      条目。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbRasterVariables)
      90类版本。0=R14
      70“显示图像边框”标志:0=无边框;1=显示边框;
      71图像显示质量(只用于屏幕):0=草图;1=高分辨率;
      72插入图像的 AutoCAD 单位。 此 AutoCAD 单位适用于关联到分辨率的插入和缩放图像操作:
      0=无;1=毫米;2=厘米;3=米;4=公里;
      5=英寸;6=英尺;7=码;8=英里;

 
 
 
SPATIAL_INDEX
下列组码由 SPATIAL_INDEX 使用。
SPATIAL_INDEX 组码
      组码说明
      0对象名称 (SPATIAL_INDEX)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS" 。
      330所有者词典的软键指针标识符/句柄。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbIndex)
      40时间标志(Julian 日期)
      100子类标记 (AcDbSpatialIndex)

在写入 DXF 文件时,SPATIAL_INDEX 始终为空,所以此对象可被忽略。
 
 
 
 
SPATIAL_FILTER
下列组码由 SPATIAL_FILTER 对象使用。
SPATIAL_FILTER 组码
      组码说明
      0对象名称 (SPATIAL_FILTER)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"。
      330所有者词典的软键指针标识符/句柄(SPATIAL)。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbFilter)
      100子类标记 (AcDbSpatialFilter)
      70剪裁边界上的点数。2=矩形剪裁边界(左下角和右上角)
      大于 2=多线剪裁边界
      10剪裁边界定义点(在 OCS 中)(始终为 2 个或更多),由 1 的外部参照比例决定。DXF:X 值;APP:二维点;
      20DXF:剪裁边界定义点的 Y 值(始终为 2 个或更多)。
      210包含剪裁边界的平面的法向:DXF:X 值;APP:三维矢量。
      220, 230DXF:拉伸方向的 Y 和 Z 值。
      11用于定义剪裁边界的局部坐标系统的原点。:X 值;APP:三维点;
      21, 31DXF:用于定义剪裁边界的局部坐标系统的原点的 Y 和 Z 值。
      71启用剪裁边界显示标志:0=禁用的;1=启用的;
      72前剪裁平面标志:0=无;1=有;
      40前剪裁平面距离(如果组码 72 = 1)
      73后剪裁平面标志:0=无;1=有;
      41后剪裁平面距离(如果组码 73 = 1)
      40以主列次序写出的 4x3 变换矩阵。此矩阵是初始块引用(插入图元)变换的转置。当块引用重生成时,初始块引用变换适用于块中的所有图元(始终为 12
      个条目)。
      40以主列次序写出的 4x3 变换矩阵将点转换成剪裁边界的坐标系统(始终为 12 个条目)。

 
 
 
SORTENTSTABLE
下列组码由 SORTENTSTABLE 对象使用。
SORTENTSTABLE 组码
      组码说明
      0对象名称 (SORTENTSTABLE)
      5句柄
      102persistent reactors 组的开始,始终为 "{ACAD_REACTORS"。
      330所有者词典的软键指针标识符/句柄(ACAD_SORTENTS)。
      102persistent reactors 组的结束,始终为 "}"。
      100子类标记 (AcDbSortentsTable)
      330所有者的软键指针标识符/句柄(通常只是 *MODEL_SPACE 或 *PAPER_SPACE 块)
      331图元的软键指针标识符/句柄(可以存在零个或更多的条目)。
      5排序句柄(可以存在零个或更多的条目)。

如果设置 SORTENTS 重生成标志(位编码值 16),AutoCAD 将以上升句柄次序重生成图元。当使用命令 DRAWORDER 时,一个
SORTENTSTABLE 对象将以 ACAD_SORTENTS 的名称被附着到 *MODEL_SPACE 或 *PAPER_SPACE
块的扩展词典中。此词典涉及的 SORTENTSTABLE 对象通过各自的图元关联一个不同的句柄,这个句柄重新定义了图元的重生成次序。
 
 
 
XRECORD
下列组码是所有外部记录公用的组码。
外部记录 组码
      组码说明
      100子类标记 (AcDbXrecord)
      1-369 (except 5 and 105)这些值可以被应用程序以任何方式使用。

外部记录可以用来存储和处理任意的数据。它们由具有“普通对象”组(即“非外部数据”组码)的 DXF 组码组成,支持范围从 1 到
369。此对象的概念与外部数据的有些相似,但没有大小或次序的限制。
原则上从版本 R13c0 到 R13c3 的 AutoCAD 都能使用为外部数据设计的工作方式,但如果从 R13c4 版本前的 AutoCAD
文件中读取外部记录对象,此对象会消失。

ENTITIES 区域

      此节介绍的组码适用于图形对象。这些组码既出现在 DXF 文件的 ENTITIES 区域中,又在图元定义表中被 AutoLISP 和 ARX
      应用程序使用。
      如不作特殊说明,本节中所出现的组码都可以应用于 DXF 文件、AutoLISP 应用程序和 ARX 应用程序。当应用程序中的组码描述与 DXF
      文件中的组码描述不同(或只适用于其中之一)时,则在说明前有如下提示:
      APP 用于应用程序的说明
      DXF 用于 DXF 文件的说明
      如果组码描述对 DXF 文件和应用程序都适用,那么没有提示,否则将存在适当的提示。可选的组码以灰色显示。
      图形对象的公用组码
      下表列出的组码适用于所有图形对象。其中某些组码只有在其对应属性不是缺省值的图元中出现。当用户通过图元类型引用组码表时,应注意表中不仅包括与特定图元相关的组码,还会包括下表所列的组码。
      如果忽略了某组码,在(使用 DXFIN)输入 DXF 文件时将使用(出现在第三列的)它的缺省值;如果某组码的值为缺省值,则在(使用
      DXFOUT)输出时将忽略它。
      适用于所有图形对象的组码
            组码说明如果被忽略,
            则缺省值为...
            -1APP:图元名(在每次打开图形时改变)不能忽略
            0图元类型不能忽略
            5句柄不能忽略
            102应用程序定义的组的开始 "{application_name"。
            例如,"{ACAD_REACTORS" 表示 AutoCAD Persistent reactors 组的开始无缺省值
            application-defined codes组 102 中的组码和组值由应用程序定义无缺省值
            102组结束,"}"无缺省值
            100子类标记 (AcDbEntity)不被忽略
            67不赋值或值为 0 时表示图元在模型空间;
            1 表示图元在图纸空间(可选)0
            8图层名不能忽略
            6线型名(如果不为 BYLAYER 则存在)
            如果为 BYBLOCK 表示某不定线型
            (可选)BYLAYER
            62颜色代码(如果不为 BYLAYER 则存在)
            表示 BYBLOCK(不定)颜色;
            表示 BYLAYER;
            如果为负表示图层被关闭(可选);BYLAYER
            48线型比例(可选)1.0
            60对象可见性(可选):
            0 = 可见;1 = 不可见。0

      如果 Persistent reactors 被附着到对象上,将输出下表所列的组码。
      ACAD_REACTORS 记录
            组码说明
            102"{ACAD_REACTORS" 表示 AutoCAD Persistent reactors 组的开始
            330指向所有者词典的软键指针标识符/句柄
            102组结束,"}"

      如果扩展词典被附着到对象上,将输出下表所列的组码。
      ACAD_XDICTIONARY 记录
            组码说明
            102"{ACAD_XDICTIONARY" 表示扩展词典组码的开始
            360指向所有者词典的硬键指针标识符/句柄
            102组码的结束,"}"

      注意 尽管组码通常按照这些 DXF 组码表所列的顺序出现,但请不要使编写的程序依赖于这种顺序,因为在某些条件下或在后续版本的 AutoCAD
      中,可能会改变这种顺序。可以利用分支或表机制来处理控制图元的组码,这样即使组码次序不定,也能正确地处理每组组码。
      3DFACE
      下列组码适用于三维面图元。
      三维面组码
            组码说明
            100子类标记 (AcDbFace)
            10第一角点(用 WCS 表示)。DXF:X 值;APP:三维点
            20, 30DXF:第一角点坐标的 Y 和 Z 值(用 WCS 表示)
            11第二角点(用 WCS 表示)。DXF:X 值;APP:三维点
            21, 31DXF:第二角点坐标的 Y 和 Z 值(用 WCS 表示)
            12第三角点(用 WCS 表示)。DXF:X 值;APP:三维点
            22, 32DXF:第三角点坐标的 Y 和 Z 值(用 WCS 表示)
            13第四角点(用 WCS 表示)。如果只输入三个角点值,则第四角点与第三角点相同。:X 值;APP:三维点
            23, 33DXF:第四角点坐标的 Y 和 Z 值(用 WCS 表示)
            70不可见边标志(可选,缺省= 0):
            1 = 第一边不可见;
            2 = 第二边不可见;
            4 = 第三边不可见;
            8 = 第四边不可见;

      3DSOLID
      下列组码适用于三维实体图元。
      三维实体组码
            组码说明
            100子类标记 (AcDbModelerGeometry)
            70建模格式版本号(当前值 = 1)
            1私有数据(可有多行,每行少于 255 个字符)
            3私有数据的附加行(如果前面组码 1 的字符串有多于 255 个字符)

      ACAD_PROXY_ENTITY
      下面的组码适用于代理图元。
      Acad_proxy_entity 组码
            组码说明
            100DXF:AcDbProxyEntity
            90DXF:代理图元类 ID
            91DXF:应用程序图元类 ID。类 ID 由 CLASSES 区域中类的次序决定。第一个类的 ID 为 500,第二个类的 ID 为
            501,依此类推。
            92DXF:字节图形数据的大小
            310DXF:二进制图形数据(可出现多个条目)
            93DXF :位图元数据的大小
            310DXF:二进制图元数据(可出现多个条目)
            330 or 340 or 350 or 360DXF:一个对象 ID(可出现多个条目)
            94DXF:0(表示对象 ID 类结束)

      ARC
      下列组码适用于圆弧图元。
      圆弧组码
            组码说明
            100子类标记 (AcDbCircle)
            39厚度(可选,缺省值= 0)
            10圆心(用 OCS 表示)。DXF:X 值;APP:三维点
            20, 30DXF:圆心坐标的 Y 和 Z 值(用 OCS 表示)
            40半径
            100子类标记 (AcDbArc)
            50起始角
            51终止角
            210延伸方向(可选,缺省值 = 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:延伸方向的 Y 和 Z 值

      ATTDEF
      下列组码适用于属性定义图元。
      属性定义组码
            组码说明
            100子类标记 (AcDbText)
            39厚度(可选,缺省值= 0)
            10第一对齐点(用 OCS 表示)。:X 值;APP:三维点
            20, 30DXF:文本开始点坐标的 Y 和 Z 值(用 OCS 表示)
            40文字高度
            1缺省值(字符串)
            100子类标记 (AcDbAttributeDefinition)
            50文字旋转(可选,缺省值= 0)
            41关于 X 的比例因子(宽度)(可选,缺省值= 1)
            当文本使用“布满”类型时,将会调整此值
            51倾斜角(可选,缺省值= 0)
            7文字样式名(可选,缺省值= STANDARD)
            71文字生成标志(可选,缺省值= 0)请参见 TEXT
            72水平文字对正类型(可选,缺省值= 0)请参见 TEXT
            11第二对齐点(用 OCS 表示):X 值;APP:三维点
            只在组码 72 或 74 的值非零时才有意义
            21, 31DXF:第二对齐点坐标的 Y 和 Z 值(用 OCS 表示)
            210延伸方向(可选,缺省值= 0, 0, 1):X 值;APP:三维矢量
            220, 230DXF:延伸方向的 Y 和 Z 值
            100子类标记 (AcDbAttributeDefinition)
            3提示字符串
            2标签字符串
            70属性标志:
            1 = 属性不可见(不出现);
            2 = 这是一个常数属性;
            4 = 在输出此属性时需要验证;
            8 = 属性预置(插入时无提示);
            73字段长度(可选,缺省值= 0)(当前未使用)
            74垂直文字对正类型(可选,缺省值= 0)请参见 TEXT 中的组码 73

      如果组码 72 和(或) 74 的值非零,则将忽略第一对齐点的值,AutoCAD
      根据第二对齐点和文字字符串的长度和高度(在使用了文本样式之后)计算新值;如果没有组码 72 和 74 的值或其值为零,则第二对齐点无意义。
      ATTRIB
      下列组码适用于属性图元。
      属性组码
            组码说明
            100子类标记 (AcDbText)
            39厚度(可选,缺省值= 0)
            10文字起点(用 OCS 表示)。DXF:X 值;APP:三维点
            20, 30DXF:文本起点坐标的 Y 和 Z 值(用 OCS 表示)
            40文字高度
            1缺省值(字符串)
            100子类标记 (AcDbAttribute)
            2属性标记(字符串)
            70属性标志:
            1 = 属性不可见(不出现);
            2 = 这是一个常数属性;
            4 = 在输出此属性时需要验证;
            8 = 属性预置(插入时无提示);
            73字段长度(可选,缺省值= 0)(当前未使用)
            50文字旋转(可选,缺省值= 0)
            41关于 X 比例因子(宽度)(可选,缺省值= 1)
            当文字使用“布满”类型时,将会调整此值
            51倾斜角(可选,缺省值= 0)
            7文字样式名(可选,缺省值= STANDARD)
            71文字生成标志(可选,缺省值= 0)请参见 TEXT
            72水平文字对正类型(可选,缺省值= 0)请参见 TEXT.
            74垂直文字对正类型(可选,缺省值= 0)请参见 TEXT 中的组码 73
            11对齐点(用 OCS 表示)DXF:X 值;APP:三维点
            只在组码 72 或 74 存在且非零时存在
            21, 31DXF:对齐点坐标的 Y 和 Z 值(用 OCS 表示)
            210拉伸方向。只在图元的延伸方向不平行于 WCS 的 Z 轴时存在(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

      如果组码 72 和(或) 74 的值非零,将忽略文本插入点的值,AutoCAD
      根据文本对齐点和文字字符串长度(在应用了文本样式之后)计算新值;如果没有组码 72 和 74 的值或其值为零,则忽略文字对齐点,AutoCAD
      根据文字插入点和文字字符串的长度(在申请了文本样式之后)重新计算新值。
      BODY
      下列组码适用于体图元。
      体组码
            组码说明
            100子类标记 (AcDbModelerGeometry)
            70建模格式版本号(当前值= 1)
            1私有数据(可有多行,每行少于 255 个字符)
            3私有数据的附加行(如果前面组码 1 的字符串多于 255 个字符)

      CIRCLE
      下列组码适用于圆图元。
      圆组码
            组码说明
            100子类标记 (AcDbCircle)
            39厚度(可选,缺省值= 0)
            10圆心(用 OCS 表示)。DXF:X 值;APP:三维点
            20, 30DXF:圆心坐标的 Y 和 Z 值(用 OCS 表示)
            40半径
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

      DIMENSION
      标注图元定义数据包括适用于所有标注类型的组码,以及该类标注所特有的组码。
      公用标注组码
      下列组码适用于所有标注类型。
      公用标注组码
            组码说明
            100子类标记 (AcDbDimension)
            2包含组成标注的图元的块名称
            10标注点(用 WCS 表示)。DXF:X 值;APP:三维点。
            20, 30DXF:标注点坐标的 Y 和 Z 值(用 WCS 表示)
            11标注文本的中点(用 OCS 表示)。DXF:X 值;APP:三维点。
            21, 31标注文本的中点坐标的 Y 和 Z 值(用 OCS 表示)
            70标注类型:
            整数值 0 - 6 表示标注类型。
            位值 32、64 和 128 则添加到整数值后(在 R13 和更高版本中设置值 32)。
            0 = 转角标注、水平标注或垂直标注;1 = 对齐标注;
            2 = 角度标注;3 = 直径标注;4 = 半径标注;
            5 = 角度三点标注;6 = 坐标标注;
            32 = 表示块引用(组码 2)只被此标注引用;
            64 = 坐标标注类型,此位值(位 7)只与类型 6 一起使用,如果设置,坐标类型为 X 型,否则为 Y 型;
            128 = 如果标注文本位于用户指定的位置而不是缺省位置,此位值(位 7)将添加到其他的组码 70 的值中。
            1用户明确地输入了标注文字(可选,缺省值为测量结果)
            如果为空或"<>",以文字方式标注测量结果;
            如果为 " "(一个空格),禁止输出文字,其他情况下将作为文字绘制到图形中。
            53组码 53 可选,表示标注文字方向与其缺省方向之间的旋转角度(尺寸线的方向)。
            51所有标注类型都有可选组码
            51,此组码为标注图元表示了水平方向。它为水平标注、垂直标注及转角线性标注指定了标注文本和尺寸线的方向。组码值为 OCS X 轴与
            UCS X 轴间的角度的负值(始终在 OCS 的 XY 面中度量该角度)。
            210拉伸方向(可选,缺省值= 0, 0, 1):X 值;APP:3D 矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值
            3标注样式名

      属于应用程序 ID "ACAD"
      的扩展数据可以跟随在标注图元之后。这说明任何标注都能替代已被图元使用的标注。请参见标注样式替代!AL(`XREF_62386_al_u05_c',1)。
      对于所有的标注类型,下列组码表示三维 WCS 点:(10, 20, 30)、(13, 23, 33)、(14, 24, 34) 和 (15, 25,
      35)。对于所有的标注类型,下列组码表示三维 WCS 点:(11, 21, 31)、(12, 22, 32) 和 (16, 26, 36)。
      对齐、线性和转角标注组码
      下列组码适用于对齐、线性和转角标注。
      对齐、线性和转角标注组码
            组码说明
            100子类标记 (AcDbAlignedDimension)
            12标注复制的插入点 - 基线和连续标注(在 OCS 中)。
            DXF:X 值;APP:三维点
            22, 32DXF:标注复制的插入点 - 基线和连续标注的 Y 和 Z 值(在 OCS 中)。
            13线性标注和转角标注的定义点(在 WCS 中)。:X 值;APP:三维点
            23, 33DXF:线性标注和转角标注的定义点的 Y 和 Z 值(在 WCS 中)。
            14线性标注和转角标注的定义点(在 WCS 中)。:X 值;APP:三维点。
            24, 34DXF:线性标注和转角标注的定义点的 Y 和 Z 值(在 WCS 中)。


      点(13,23,33)指定第一尺寸界线的起点,点 (14,24,34) 指定第二尺寸界线的起点,点 (10,20,30) 指定尺寸线位置,点
      (11,21,31) 指定标注文字的中点。
      线性标注和转角标注组码
      下列组码适用于线性和转角标注。
      线性和转角标注组码
            组码说明
            50转角、水平和垂直标注的角度。
            52具有倾斜角度的线性标注类型有可选组码 52。当增加线性标注的旋转角(组码 50)时,组码 52 给出延长线的角度。
            100子类标记 (AcDbRotatedDimension)

       
      径标注和直径标注组码
      下列组码适用于半径和直径标注。
      半径和直径标注组码
            组码说明
            100子类标记(AcDbRadialDimension 或 AcDbDiametricDimension)。
            15直径、半径和转角标注的定义点(在 WCS 中)。:X 值;APP:三维点
            25, 35DXF:直径、半径和转角标注的定义点的 Y 和 Z 值(在 WCS 中)。
            40半径和直径标注的引线长度。


      点 (15,25,35) 指定圆/圆弧上的尺寸线的第一点,点 (10,20,30) 指定尺寸线的第二点,点 (11,21,31)
指定标注文字的中点。

      点 (15,25,35) 指定圆/圆弧上的尺寸线的第一点,点 (10,20,30) 指定圆/圆弧的圆心,点 (11,21,31)
指定标注文字的中点。
      度标注组码
      下列组码适用于角度标注。
      角度标注组码
            组码说明
            100子类标记 (AcDb3PointAngularDimension)
            13线性和角度标注的定义点(在 WCS 中)。DXF:X 值;APP:三维点。
            23, 33DXF:线性和角度标注的定义点的 Y 和 Z 值(在WCS 值)。
            14线性和角度标注的定义点(在 WCS 中)。DXF:X 值;APP:三维点。
            24, 34DXF:线性和角度标注的定义点的 Y 和 Z 值(在WCS 值)。
            15直径、半径和角度标注的定义点(在 WCS 中)。:X 值;APP:三维点
            25, 35DXF:直径、半径和角度标注的定义点的 Y 和 Z 值(在 WCS 中)。
            16角度标注的标注弧的定义点(在 OCS 中)。DXF:X 值;APP:3D 点。
            26, 36DXF:角度标注的标注弧的定义点的 Y 和 Z 值(在 OCS 中)。


      点 (13,23,33) 和点 (14,24,34) 指定第一尺寸界线的端点,点 (10,20,30) 和点 (15,25,35)
      指定第二尺寸界线的端点,点 (16,26,36) 指定标注弧线的位置,点 (11,21,31) 指定标注文字的中点.

      点 (15,25,35) 指定角的顶点,点 (13,23,33) 和点 (14,24,34) 指定尺寸界线的端点,点 (10,20,30)
      指定标注弧线的位置,点 (11,21,31) 指定标注文字的中点。
      标标注组码
      下列组码适用于坐标标注。
      坐标标注组码
            组码说明
            100子类标记 (AcDbOrdinateDimension)
            13线性和角度标注的定义点(在 WCS 中)。DXF:X 值;APP:三维点。
            23, 33DXF:线性和角度标注的定义点的 Y 和 Z 值(在 WCS 中)。
            14线性和角度标注的定义点(在 WCS 中)。DXF:X 值;APP:三维点。
            24, 34DXF:线性和角度标注的定义点的 Y 和 Z 值(在 WCS 中)。


      点 (13,23,33) 指定特征位置,点 (14,24,34) 指定引线和点,点 (11,21,31) 指定标注文字的中点,当创建标注时,点
      (10,20,30) 放置于当前 UCS 的原点。
      注样式替代
      标注样式替代可应用于标注、引线和公差图元。任何用于这些图元的替代都以扩展数据的形式存储在图元中。组码 1002
      中的控制字符串包含了被替代标注的变量组码和关联值。下面的例子显示了标注图元的扩展数据中的被替代的变量 DIMTOL 和 DIMCLRE。
        (setq diment (car (entsel))) ; 选择标注图元
        (setq elst (entget diment '("ACAD"))) ; 得到图元定义表
        (assoc -3 elst) ; 只获得外部数据
      代码返回如下:
        (-3 ("ACAD" 扩展数据的 ACAD APPID 部分开始
        (1000 . "DSTYLE") (1002 . "{") 标注样式子部分的开始
        (1070 . 177) (1070 . 3) DIMCLRE(组码 177)替代及关联值(3)
        (1070 . 71) (1070 . 1) DIMTOL(组码 71)替代及关联值(1)
        (1002 . "}") )) 标注样式子部分和 ACAD 部分结束
      LLIPSE
      下列组码适用于椭圆图元。
      椭圆组码
            组码说明
            100子类标记 (AcDbEllipse)
            10圆心(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:圆心的 Y 和 Z 值(在 WCS 中)
            11长轴的端点(相对于圆心的相对值)。DXF:X 值;APP:三维点。
            21, 31DXF:长轴的端点的 Y 和 Z 值,它们是相对于圆心的相对值。
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维点
            220, 230DXF:拉伸方向的 Y 和 Z 值
            40长轴与短轴的比例
            41起始参数(对于完整椭圆此值为 0.0)
            42结束参数(对于完整椭圆此值为 2pi)

       
      组码 41 和 42 为下面等式中的 u 的起始和结束值。组码 11,21,31 矢量的大小等于长轴值的 1/2,即下面等式中的 a 值。点
      10,20,30 是下面等式中的 c 值。知道了上述数值,即可计算出所需的 b 值,这样,下列方程式就完整了。
      ELLIPSE 命令中“参数”选项的说明
      ELLIPSE 命令中“参数”选项使用下面的方程式来定义一个椭圆弧。
        p(u)=c+a*cos(u)+b*sin(u)
      当用户为第一轴选定端点且为第二轴选定距离后,变量 a、b 和 c 值即被决定。a 的值为长轴长度 1/2 的负值,b 的值为短轴长度 1/2
      的负值,c 为椭圆的圆心(2-D)。
      因为此方程式是一个矢量方程且变量 c 具有 X 和 Y 值,所以它应该写成如下形式:
        p(u)=(Cx+a*cos(u))*i+(Cy+a*sin(u))*j
      此处
      Cx 是点 c 的 X 值
      Cy 是点 c 的 Y 值
      a 为 -(长轴长度的 1/2)
      b 为 -(短轴长度的 1/2)
      i 和 j 表示 X 和 Y 方向上的单位矢量
      在 AutoCAD 中,一旦确定了轴的端点和椭圆弧的起点及终点,那么椭圆也就确定了。
      当用户选定了“参数”选项中的起始参数和结束参数后,这些参数值将被带入方程式来求得椭圆的实际的起点和终点。椭圆的其他部分将从起点到终点以逆时针方向绘制。输入的
      u 值被转换成度数以求得 cos(u) 和 sin(u)。
      例如:
      轴端点 1 = 0,1
      轴端点 2 = 4,1
      另一个轴距= 2,0
      起始参数= 270
      结束参数= 0
      将生成起点位于 (2,2),终点位于 ( 0,1),以逆时针方向填充的椭圆。
      HATCH
      下列组码适用于图元填充。
      填充组 码
            组码说明
            100子类标记 (AcDbHatch)
            10标高点(在 OCS 中)。DXF:X 值= 0;APP:三维点(X 和 Y 值始终为 0,Z 表示标高)
            20, 30DXF:标高点的 Y 和 Z 值(在 OCS 中)。
            Y 值= 0,Z 表示标高。
            210拉伸方向(可选,缺省值= 0, 0, 1)。
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的Y 和 Z 值
            2填充图案名称
            70实体填充标志(实体填充= 1;图案填充= 0)
            71关联填充标志(关联的= 1;不关联的= 0)
            91边界路径(环)的数目
            varies边界路径数据。组码 91 指定重复次数。
            75填充样式:
            0 = 填充“奇数”区域(“普通”样式);
            1 = 只填充最外面的区域(“外部”样式);
            2 = 填充整个区域(“忽略”样式);
            76填充图案类型
            0 = 用户定义;
            1 = 预定义;
            2 = 自定义
            52填充图案角度(只用于图案填充)
            41填充图案比例或间距(只用于图案填充)
            77填充图案加倍标志(加倍= 1,不加倍= 0)(只用于图案填充)。
            78图案定义线的数目。
            varies图案线数据。由组码 78 指定重复次数。请参见图案数据!AL(`XREF_15719_al_u05_c',1)。
            47像素尺寸(可选)
            98种子点数目。
            10种子点(在 OCS 中)。DXF:X 值;APP:二维点。(多图元)
            20DXF:种子点的 Y 值(在 OCS 中)。(多图元)

      边界路径数据
      每个填充对象的边界由路径(或环)定义,该路径由一个或多个线段组成。路径段数据因组成路径的图元的类型而异。每个路径段由它自己的组码集定义。
      填充边界路径数据组码
            组码说明
            92边界路径类型标志(位码)
            0 = 缺省设置;
            1 = 外部的;
            2 = 多段线;
            4 = 导出的
            8 = 文本框;
            16 = 最外部的
            varies多段线边界类型数据(只当边界是多段线时)
            请参见下面的多段线边界数据表。
            93边界路径中的边数(只当边界不是多段线时)
            72边类型(只当边界不是多段线时):
            1 = 直线;
            2 = 圆弧;
            3 = 椭圆弧;
            4 = 样条曲线;
            varies边类型数据(只当边界不是多段线时)。请参见下面的边界数据表。
            97源边界对象的数目。
            330源边界对象引用(多图元)。

      多段线边界数据组码
            组码说明
            72有一个凸度标志
            73是关闭的标志
            93多段线顶点的数目
            10顶点位置(在 OCS 中)。DXF:X 值;APP:二维点(多图元)
            20DXF:顶点位置的 Y 值(在 OCS 中)。(多图元)
            42凸度(可选,缺省值= 0)

      直线边数据组码
            组码说明
            10起点(在 OCS 中)。DXF:X 值;APP:二维点。
            20DXF:起点的 Y 值(在 OCS 中)。
            11终点(在 OCS 中)。DXF:X 值;APP:二维点。
            21DXF:终点的 Y 值(在 OCS 中)。

       
      圆弧边数剧组码
            组码说明
            10圆心(在 OCS 中)。DXF:X 值;APP:二维点
            20DXF:圆心的 Y 值(在 OCS 中)。
            40半径
            50起始角度
            51结束角度
            73是反时针方向标志

       
      椭圆边数据组码
            组码说明
            10圆心(在 OCS 中)。DXF:X 值;APP:二维点。
            20DXF:圆心的 Y 值(在 OCS 中)。
            11相对于圆心坐标的长轴的端点(在 OCS 中)。:X 值;APP :二维点。
            21DXF:长轴端点的 Y 值(在 OCS 中)。
            40短轴的长度(以长轴长度的百分数表示)。
            50起始角度
            51结束角度
            73是反时针方向标志

       
      样条曲线边数据组码
            组码说明
            94度数
            73有理
            74周期性
            95结点数
            96控制点数
            40结点值(多图元)
            10中心点(在 OCS 中)。DXF:X 值;APP:二维点
            20DXF:中心点的 Y 值(在 OCS 中)。
            42权值(可选,缺省值= 1)

      案数据
      下列图案数据组码在每个图案定义线是重复的。
      填充图案数据组码
            组码说明
            53图案线角度
            43图案线基点,X 分量
            44图案线基点,Y 分量
            45图案线偏移,X 分量
            46图案线偏移,Y 分量
            79点划长度项目数
            49点划长度(多图元)

      MAGE
      下列组码适用于图像图元。
      图像组码
            组码说 明
            100子类标记 (AcDbRasterImage)
            90类版本
            10插入点(在 OCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:插入点的 Y 和 Z 值(在 OCS 中)。
            11单一像素的 U - 矢量(从插入点开始的沿着图像的视图底边的点)
            (在 OCS 中)。DXF:X 值;APP:三维点
            21, 31DXF:U - 矢量的 Y 和 Z 值(在 OCS 中)
            12单一像素的 V - 矢量(从插入点开始的沿着图像的视图左边的点)
            (在 OCS 中)。DXF:X 值;APP:三维点
            22, 32DXF:V - 矢量的 Y 和 Z 值(在 OCS 中)
            13以像素点表示的图像尺寸。DXF:U 值;APP:二维点(U 和 V值)
            23DXF:以像素点表示的图像尺寸的 V 值
            340图像定义对象的固定引用。
            70图像显示特性
            1 = 显示图像;
            2 = 显示非正交图像;
            4 = 显示剪贴图像;
            8 = 打开透明状态;
            280剪裁状态:0=关;1=开
            281亮度值(0 - 100;缺省值= 50)
            282对比度值(0 - 100;缺省值= 50)
            283褪色值(0 - 100;缺省值= 0)
            360Imagedef_reactor 对象的固定引用
            71剪裁边界类型:1 =矩形的;2 =多边形的
            91剪裁边界的顶点数
            14剪裁边界顶点(在 OCS 中)。DXF:X 值;APP:二维点(多图元)
            注意:对于矩形剪裁边界类型,必须指定两个对角点。缺省值为 (-0.5,-0.5),(图像尺寸的 x-0.5,图像尺寸的
            y-0.5)。对于多边形剪裁边界类型,必须指定三个或三个以上的顶点。必须依次列出顶点。
            24DXF:剪裁边界顶点的 Y 值(在 OCS 中)(多图元)

      INSERT
      下列组码适用于插入(块引用)图元。
      插入组码
            组码说明
            100子类标记 (AcDbBlockReference)
            66可变的“跟随属性”标志(可选,缺省值= 0)。如果跟随属性标志的值为 1,其后需要插入一连串的属性图元,到 seqend 图元终止。
            2块名称
            10插入点(在 OCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:插入点的 Y 和 Z 值(在 OCS 中)
            41X 比例因子(可选,缺省值= 1)
            42Y 比例因子(可选,缺省值= 1)
            43Z 比例因子(可选,缺省值= 1)
            50旋转角度(可选,缺省值= 0)
            70列数(可选,缺省值= 1)
            71行数(可选,缺省值= 1)
            44列间距(可选,缺省值= 0)
            45行间距(可选,缺省值= 0)
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

      LEADER
      下列组码适用于引线图元。
      引线组码
            组码说明
            100子类标记 (AcDbLeader)
            3标注样式名称
            71箭头标志:0 = 禁用;1 = 可用
            72引线路径类型:0 = 直线段;1 = 样条曲线
            73引线创建标志(缺省值= 3):
            0 = 与文本注释一起创建引线;
            1 = 与公差注释一起创建引线;
            2 = 与块引用注释一起创建引线;
            3 = 创建引线,没有任何注释;
            74钩线方向标志:
            0 = 钩线(或样条引线的切线结束)方向与水平矢量方向相反;
            1 = 钩线(或样条引线的切线结束)方向与水平矢量方向相同(请参见组码 75);
            75钩线标志:0 = 无钩线;1 = 有钩线
            40文字注释高度
            41文字注释宽度
            76引线中的顶点数(DXFIN 时被忽略)
            10顶点坐标(适用于每个顶点的条目)DXF:X 值;APP:三维点
            20, 30DXF:顶点坐标的 Y 和 Z 值
            77当引线的 DIMCLRD=BYBLOCK 时使用的颜色
            340关联注释的固定引用(多行文字,公差或插入图元)
            210法线矢量。DXF:X 值;APP:三维矢量
            220, 230DXF:法线矢量的 Y 和 Z 值
            211引线的“水平”方向。DXF:X 值;APP:三维矢量。
            221,231DXF:引线的“水平”方向的 Y 和 Z 值
            212块引用插入点距最终引线顶点的偏移。:X 值;APP:三维矢量
            222,232DXF:块引用插入点距最终引线顶点的偏移的 Y 和 Z 值。
            213注释位置点距最终引线顶点的偏移。DXF:X 值;APP:三维矢量
            223,233DXF:注释位置点距最终引线顶点的偏移的 Y 和 Z 值。

       
      属于应用程序 ID "ACAD"
      的扩展数据可以跟随在引线图元之后,这描述了已应用于图元任何标注替代。请参见标注样式替代!AL(`XREF_62386_al_u05_c',1)。
      LINE
      下列组码适用于直线图元。
      直线组码
            组码说明
            100子类标记 (AcDbLine)
            39厚度(可选,缺省值= 0)
            10起点(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:起点的 Y 和 Z 值(在 WCS 中)
            11终点(在 WCS 中)。DXF:X 值;APP:三维点
            21, 31DXF:终点的 Y 和 Z 值(在 WCS 中)
            210拉伸方向(可选,缺省值= 0, 0, 1)。
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

       
      LWPOLYLINE
      下列组码适用于优化多段线图元。
      优化多段线组码
            组码说明
            100子类标记 (AcDbPolyline)
            90顶点数
            70多段线标志(位码);缺省值为 0:
            1 = 关闭的;
            128 = 多段线生成
            43常量宽度(可选,缺省值= 0);当设置了变化的宽度(组码 40 和/或 41)时,不使用该组码
            38标高(可选,缺省值= 0)
            39厚度(可选,缺省值= 0)
            10顶点坐标(在 WCS 中)(多图元),每个顶点都有该条目。:X 值;APP:二维点
            20DXF:顶点坐标的 Y 值(在 WCS 中)(多图元);每个顶点都有该条目。
            40起始宽度(多图元,每个顶点都有该条目)(可选,缺省值= 0,多条目)。如果设置了常量宽度(组码 43),则不使用该组码。
            41结束宽度(多图元,每个顶点都有该条目)(可选,缺省值= 0,多条目)。如果设置了常量宽度(组码 43),则不使用该组码。
            42凸度(多图元,每个顶点都有该条目)(可选,缺省值= 0)。
            210拉伸方向(可选,缺省值= 0, 0, 1)。
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

      MLINE
      下列组码适用于多线图元。
      多线组码
            组码说明
            100子类标记 (AcDbMline)
            2字符串最长为 32 个字符,它是多线的样式名称。在 MLINESTYLE 词典中必须存在该样式的条目。
            注意:不要修改该字段。
            340MLINESTYLE 词典的指针句柄/ID
            40比例因子
            70对正:0=上;1=零;2=下
            71开放/闭合标记:1=开放;3=闭合
            72顶点数
            73MLINESTYLE 词典中的元素数
            10起点(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:起点的 Y 和 Z 值(在 WCS 中)
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值
            11顶点坐标(多条目;每个顶点都有该条目)。
            DXF:X 值;APP:三维点
            21, 31DXF:顶点坐标的 Y 和 Z 值
            12该顶点线段开始方向矢量(多条目;每个顶点都有该条目)。:X 值;APP:三维矢量
            22, 32DXF:该顶点线段开始方向矢量的 Y 和 Z 值
            13该顶点的斜接方向矢量(多条目;每个顶点都有该条目)。DXF:X 值;APP:三维矢量
            23, 33DXF:斜接方向矢量的 Y 和 Z 值
            74该元素的参数数目(线段中的每个元素都重复该组码)
            41元素参数(由前面的组码 74 决定重复次数)
            75该元素的区域填充参数的数目(线段中的每个元素都重复该组码)
            42区域填充参数(由前面的组码 75 决定重复次数)

      参数化组码 41 是一个实数列表,每个组码 41 对应一个实数,此列表可以包含零个或更多项。第一个组码 41
      的组值是从线段顶点到直线元素路径与斜接矢量交点的距离(沿斜接矢量方向),第二个组码 41 的组值是从第一个组码 41
      定义的点到直线元素实际起点的距离(沿直线元素路径方向),第三个组码 41 的组值是从直线元素起点到直线元素中第一个断点的距离。后续的组码 41
      的组值依次列出了该多线的线段中的起点和终点。线型不影响组码 41 列表。
      参数化组码 42 也是一个实数列表。与参数化组码 41 类似,它描述了此多线填充区域的参数化法。它们的组值与组码 41
      参数的解释相同,且在将所有多线中的直线元素当作一个整体时,它们定义了多线填充区域的边界。
      一个使用组码 42 机制的普通例子是,当未被填充的多线与已填充的多线相交时,使用 mledit
      使被填充的多线在相交区域显现出来,这将导致相互影响的多段线中每个直线元素的两个组码 42 发生变化,一个是填充开始的,一个是填充结束的。
      在多线图元和多线样式对象中组码 2 是多余的,尽管可以安全的读取和使用它们的关联值,但这些组码在任何情况下都不能被修改。可以修改的正确字段如下:
      多线
        在相同对象中的组码 340,它指定了正确的 MLINESTYLE 对象。
      多线样式
        MLINESTYLE 词典中的组码 3(位于组码 350 之前)的值有当前 MLINESTYLE 的图元名或句柄。
      MTEXT
      下列组码适用于多行文字图元。
      多行文字组码
            组码说明
            100子类标记 (AcDbMText)
            10插入点。DXF:X 值;APP:三维点
            20, 30DXF:插入点的 Y 和 Z 值
            40缺省文字高度
            41参考矩形宽度
            71附着点:
            1 = 左上;2 =中上;3 = 右上;
            4 = 左中;5 = 中间;6 = 右中;
            7 = 左下;8 = 中下;9 = 右下;
            72绘图方向:
            1 = 由左至右;2 = 由右至左;
            3 = 由上至下;4 = 由下至上;
            1文字字符串。如果文字字符串少于 250 个字符,所有的字符存放于组码 1 中;如果字符串多于 250 个字符,字符串被分为 250
            个字符的数据块,这些数据块存放在一个或多个组码 3 中。如果使用组码 3,最后的组码是组码 1,其中的数据组少于 250 个字符。
            3附加文字(总是存放于 250 个字符的数据块中)
            7文字样式名称(如果未提供则为 STANDARD)
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值
            11X 轴方向矢量(在 WCS 中)
            DXF:X 值;APP:三维矢量
            注意:当组码 50(弧度表示的转角)作为 DXF 的输入被传递时,它将被转化为等价的方向矢量(如果组码 50和组码 11、21、31
            都被传递,方向由最后一个决定)。提供此组码是为了方便从文字对象向多行文字对象的转化。
            21, 31DXF:X 轴方向矢量的 Y 和 Z 值(在 WCS 中)
            42组成多行文字的字符的水平宽度。(此值始终小于或等于组码 41 的值)。
            43组成多行文字的字符的垂直高度。
            50弧度表示的旋转角度。

      OLEFRAME
      下列组码适用于 OLE 边框图元。
      OLE边框组码
            组码说明
            100子类标记 (AcDbOleFrame)
            70OLE 版本号
            90二进制数据长度
            310二进制数据(多直线)
            1Ole 数据的结尾(字符串"OLE")

       
      OLE2FRAME
      下列组码适用于 OLE2 边框图元,该信息是只读的。在 DXFIN 时,这些值被忽略,因为它们是 OLE
二进制数据的一部分,且可通过访问函数来获得。
      OLE2 边框组码
            组码说明
            100子类标记 (AcDbOle2Frame)
            70OLE 版本号
            3二进制数据的长度
            10左上角(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:左上角的 Y 和 Z 值(在 WCS 中)。
            11右下角(在 WCS 中)。DXF:X 值;APP:三维点
            21, 31DXF:右下角的 Y 和 Z 值(在 WCS 中)
            71OLE 对象类型:1 = 链接;2 = 内嵌;3 = 静态
            72平铺模式描述:
            0 = 对象在一个平铺的模型空间视口中;
            1 = 对象在非平铺的空间视口中( 图纸空间或浮动模型空间);
            90二进制数据长度
            310二进制数据(多直线)
            1OLE 数据的结尾(字符串 "OLE")

      DXF 输出例子:
        OLE2FRAME
        5
        2D
        100
        AcDbEntity
        67
        1
        8
        0
        100
        AcDbOle2Frame
        70
        2
        3
        Paintbrush Picture
        10
        4.43116
        20
        5.665992
        30
        0.0
        11
        6.4188
        21
        4.244939
        31
        0.0
        71
        2
        72
        1
        90
        23680
        310 0155764BD60082B91140114B08C8F9A916400000000000000000506DC0D0D9AC
        310
        1940114B08C8F9A916400000000000000000506DC0D0D9AC194002303E5CD1FA
        310
        10400000000000000000764BD60082B9114002303E5CD1FA1040000000000000
        ...
        ...
      AutoLISP 函数 entnext 输出的样例:
        命令: (setq e (entget e3))
        ((-1 . <图元名: 7d50428>) (0 . "OLE2FRAME") (5 . "2D")
        (100 . "AcDbEntity") (67 . 1) (8 . "0") (100 . "AcDbOle2Frame")
        (70 . 2) (3 "Paintbrush Picture") (10 4.43116 5.66599 0.0)
        (11 6.4188 4.24494 0.0) (71 . 2) (72 . 1))
      POINT
      下列组码适用于点图元。
      点组码
            组码说明
            100子类标记 (AcDbPoint)
            10点位置(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:点位置的 Y 和 Z 值(在 WCS 中)
            39厚度(可选,缺省值= 0)
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值
            50当绘制点时,X 轴与起作用的 UCS 之间的角度(可选,缺省值= 0)(当 PDMODE 非零时使用该组码)

      POLYLINE
      下列组码适用于多段线。
      多段线组码
            组码说明
            100子类标记(AcDb2dPolyline 或 AcDb3dPolyline)
            10DXF:始终为 0;:一个“伪”点,X 和 Y 值始终为零,Z 值为多段线的标高(二维时在 OCS 中,三维时在 WCS 中)
            20DXF:始终为零
            30DXF:多段线的标高(二维时在 OCS 中,三维时在 WCS 中)
            39厚度(可选,缺省值= 0)
            70多段线标志(位编码);缺省值为 0:
            1 = 这是一个闭合的多段线(或在 M 方向闭合的多边形网格);
            2 = 曲线拟合添加了顶点;
            4 = 添加样条曲线拟合添加了顶点;
            8 = 这是一个三维多段线;
            16 = 这是一个三维多边形网格;
            32 = 在 N 方向闭合的多边形网格;
            64 = 多段线是多面网格;
            128 = 不断在此多段线顶点的周围生成线型图案;
            40缺省开始宽度(可选,缺省值= 0)
            41缺省结尾宽度(可选,缺省值= 0)
            71多边形网格的 M 顶点数(可选,缺省值= 0)
            72多边形网格的 N 顶点数(可选,缺省值= 0)
            73平滑表面 M 向的密度(可选,缺省值= 0)
            74平滑表面 N 向的密度(可选,缺省值= 0)
            75曲线和平滑表面类型(可选,缺省值= 0),整型编码,不是位码:
            0 = 无平滑表面拟合:
            5 = 二次 B 样条曲线表面;
            6 = 三次 B 样条曲线表面;
            8 = Bezier 表面
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

      具有 "AUTOCAD_POSTSCRIPT_FIGURE" 应用程序 ID 的扩展数据可以跟随在多段线图元后。其中包含的信息与
      PostScript 图像和 PostScript 填充的信息有关。
      多面网格
      在 DXF 中多面网格是多段线的一个变种。存在多面网格位标识(组码 70 中的 64 位)的多段线被识别为多面网格。组码 71
      指定网格中的顶点数,组码 72 指定面数。尽管这些数字对于所有由命令 PFACE
      创建的网格来说都是正确的,但应用程序不必将正确的值放入此字段中。多段线表头后是一个顶点图元序列,用于指定顶点坐标,其后是组成网格的面。
      AutoCAD
      图元结构为所给出的面图元指定的顶点数强加一个限制。用户可以通过将多边形分解成三角形楔体来表现更复杂的多边形,这些楔体的边应该是不可见的,这样可以防止拆分单元的可见人造边被绘制出来。命令
      PFACE 可以自动执行拆分,但当应用程序直接生成多面网格时,必须由应用程序亲自执行拆分。在拆分过成中,每个面的顶点数是关键参数。系统变量
      PFACEVMAX 提供了一个每个面具有顶点数的申请,该变量是只读的,其值为 4。
      命令 PFACE 创建多面网格时首先生成所有顶点坐标的图元,然后生成面定义图元。这种次序是根据 AutoCAD
      中处理多面网格的组码的要求决定的。虽然从 DXF 中读取多面网格的程序允许顶点和面的次序不固定,但在 DXF
      中生成多面网格的程序仍应该首先生成所有顶点,再生成所有的面。
      RAY
      下列组码适用于射线图元。
      射线组码
            组码说明
            100子类标记 (AcDbRay)
            10起点(在 WCS )。DXF:X 值;APP:三维点
            20, 30DXF:起点的 Y 和 Z 值(在 WCS)
            11单位方向矢量(在 WCS)。DXF:X 值;APP:三维点
            21, 31DXF:单位方向矢量的 Y 和 Z 值(在 WCS 中)

      REGION
      下列组码适用于面域图元。
      面域组码
            组码说明
            100子类标记 (AcDbModelerGeometry)
            70建模格式版本号(当前值= 1)
            1私有数据(有多行,每个少于 255 个字符)
            3私有数据的附加行(如果前面的组码 1 字符串多于 255 个字符)

       
      SEQEND
      下列组码适用于 seqend 图元。
      Seqend 组码
            组码说明
            -2APP:序列的开始图元名。此图元标记了多段线的顶点(顶点类型名称)的结束,或插入图元的属性图元(显示属性类型名称)的结束(该插入图元具有由组码
            66 (存在且非零)指定的属性)。:文件中不保存此组码。

       
      SHAPE
      下列组码适用于形图元。
      形组码
            组码说明
            100子类标记 (AcDbShape)
            39厚度(可选,缺省值= 0)
            10插入点(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:插入点的 Y 和 Z 值(在 WCS 中)
            40尺寸
            2形名称
            50旋转角度(可选,缺省值= 0)
            41相对 X 比例因子(可选,缺省值=1)
            51倾斜角(可选,缺省值=0)
            210拉伸方向(可选,缺省值= 0, 0, 1)。
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

       
      SOLID
      下列组码适用于实体图元。
      实体组码
            组码说明
            100子类标记 (AcDbTrace)
            10第一角点。DXF:X 值;APP:三维点
            20, 30DXF:第一角点的 Y 和 Z 值
            11第二角点。DXF:X 值;APP:三维点
            21, 31DXF:第二角点的 Y 和 Z 值
            12第三角点。DXF:X 值;APP:三维点
            22, 32DXF:第三角点的 Y 和 Z 值
            13第四角点。如果只输入三个角点来定义实体,则第四角点的坐标与第三角点相同。DXF:X 值;APP:三维点
            23, 33DXF:第四角点的 Y 和 Z 值
            39厚度(可选,缺省值= 0)
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维点
            220, 230DXF:拉伸方向的 Y 和 Z 值

      SPLINE
      此组码适用于样条曲线图元。
      样条曲线组码
            组码说明
            100子类标记 (AcDbSpline)
            210法线矢量(如果样条曲线不是平面图元,则会被忽略):X 值;APP:三维点
            220, 230DXF:法线矢量的 Y 和 Z 值
            70样条曲线标志(位编码):
            1 = 闭合的样条曲线;
            2 = 周期性样条曲线;
            4 = 有理样条曲线;
            8 = 平面;
            16 = 线性(平面位也被设置)
            71样条曲线的阶
            72结点数目
            73控制点数目
            74拟合点数目(如果存在)
            42结点公差(缺省值= 0.0000001)
            43控制点公差(缺省值= 0.0000001)
            44拟合公差(缺省值= 0.0000000001)
            12起始正切方向(在 WCS 中) - 可被忽略。:X 值;APP:三维点。
            22, 32DXF:起始正切方向(可被忽略)的 Y 和 Z 值(在 WCS 中)。
            13结束正切方向(在 WCS 中) - 可被忽略。:X 值;APP:三维点
            23, 33DXF:结束正切方向(可被忽略)的 Y 和 Z 值(在 WCS 中)
            40结点值(每个结点都有一个该条目)
            41权值(如果非 1);如果都不是 1 时,带多个组码对
            10控制点(在 WCS 中)每个控制点都有一个该条目。:X 值;APP:三维点
            20, 30DXF:控制点的 Y 和 Z 值(在 WCS 中)(每个控制点都有一个该条目)
            11拟合点(在 WCS 中)每个拟合点都有一个该条目。:X 值;APP:三维点
            21, 31DXF:拟合点的 Y 和 Z 值(在 WCS 中)(每个拟合点都有一个该条目)

      TEXT
      下列组码适用于文字图元。
      文字组码
            组码说明
            100子类标记 (AcDbText)
            39厚度(可选,缺省值= 0)
            10第一对齐点(在 OCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:第一对齐点的 Y 和 Z 值(在 OCS 中)
            40文字高度
            1缺省值(字符串本身)
            50文字旋转(可选,缺省值= 0)
            41X 向的相对比例因子 - 宽度(可选,缺省值= 1)
            当使用调整类型的文字时,需要调整此值。
            51倾斜角度(可选,缺省值= 0)
            7文字样式名称(可选,缺省值= STANDARD)
            71文本生成标志(可选,缺省值= 0)
            2 = 文本反向(在 X 方向上产生镜像);
            4 = 文本倒置(在 Y 方向上产生镜像);
            72水平文字对正类型(可选,缺省值= 0)(为整型码,不是位码):
            0 = 左;1=中心;2 = 右;
            3 = 对齐的(如果垂直对齐= 0);
            4 = 中央(如果垂直对齐 = 0);
            5 = 调整(如果垂直对齐= 0);
            具体信息请参见下表
            11第二对齐点(在 OCS 中) DXF:X 值;APP:三维点
            只有组码 72 或 73 的值非零时,此值才有意义(基线和左对齐除外)
            21, 31DXF:第二对齐点的 Y 和 Z 值(在 OCS 中)
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值
            100子类标记 (AcDbText)
            73垂直文字对正类型(可选,缺省值= 0)(整型编码,不是位码)
            0 = 基线;1 = 下;2 = 中;3 = 上;
            详细信息请参见下表

      下表更加详细地说明了组码 72(水平对齐)和组码 73(垂直对齐)。
      组码 72 和 73 整型编码
            组码 73组码 72     
            3 (上)左上中上右上   
            2 (中)72 或 73 的值非零时,此值才有意义(基线和左对齐除外)
            21, 31DXF:第二对齐点的 Y 和 Z 值(在 OCS 中)
            210拉伸方向(可选,缺省值= 0, 0, 1)
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值
            100子类标记 (AcDbText)
            73垂直文字对正类型(可选,缺省值= 0)(整型编码,不是位码)
            0 = 基线;1 = 下;2 = 中;3 = 上;
            详细信息请参见下表

      下表更加详细地说明了组码 72(水平对齐)和组码 73(垂直对齐)。
      组码 72 和 73 整型编码
            组码 73组码 72     
            3 (上)左上中上右上   
            2 (中)左中正中右中   
            1 (下)左下中下右下   
            0 (基线)左中心右对齐中央调整

      如果组码 72 和/或 73 的值非零,则忽略第一对齐点,AutoCAD
      将根据第二对齐点以及字符串本身的高度和宽度来计算新值(在应用了文字样式之后)。如果组码 72 和 73 为零或为空,则第二对齐点无意义。
      TOLERANCE
      下列组码适用于公差图元。
      公差组码
            组码说明
            100子类标记 (AcDbFcf)
            3标注样式名称
            10插入点(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:插入点的 Y 和 Z 值(在 WCS 中)
            210拉伸方向(可选,缺省值= 0, 0, 1)。
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值
            11X 轴方向矢量(在 WCS 中)。DXF:X 值;APP:三维矢量
            21, 31DXF:X 轴方向矢量的 Y 和 Z 值(在 WCS 中)

      TRACE
      下列组码适用于宽线图元。
      宽线组码
            组码说明
            100子类标记 (AcDbTrace)
            10第一角点(在 OCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:第一角点的 Y 和 Z 值(在 OCS 中)
            11第二角点(在 OCS 中)。DXF:X 值;APP:三维点
            21, 31DXF:第二角点的 Y 和 Z 值(在 OCS 中)
            12第三角点(在 OCS 中)。DXF:X 值;APP:三维点
            22, 32DXF:第三角点的 Y 和 Z 值(在 OCS 中)
            13第四角点(在 OCS 中)。DXF:X 值;APP:三维点
            23, 33DXF:第四角点的 Y 和 Z 值(在 OCS 中)
            39厚度(可选,缺省值= 0)
            210拉伸方向(可选,缺省值= 0, 0, 1)。
            DXF:X 值;APP:三维矢量
            220, 230DXF:拉伸方向的 Y 和 Z 值

       
      VERTEX
      下列组码适用于顶点图元。
      顶点组码
            组码说明
            100子类标记 (AcDbVertex)
            100子类标记(AcDb2dVertex 或 AcDb3dPolylineVertex)
            10位置点(二维时,在 OCS 中;三维时,在 WCS 中)。:X 值;APP:三维点
            20, 30DXF:位置点的 Y 和 Z 值(二维时在 OCS 中,三维时在 WCS 中)。
            40起始宽度(可选,缺省值为 0)
            41结束宽度(可选,缺省值为 0)
            42凸度(可选,缺省值为 0)。凸度是一段圆弧所包含的角度的 1/4 的正切,当弧从起点到终点为顺时针时,凸度为负值。0
            凸度表示直线段,1 凸度表示半圆。
            70顶点标志:
            1 = 拟合曲线创建的额外顶点;
            2 = 为此顶点定义的拟合切线方向。DXF 输出时 0 拟合切线方向可被忽略,但设置此位仍有意义;
            4 = 不被使用;
            8 = 样条曲线拟合创建的样条曲线顶点;
            16 = 样条曲线边框控制点;
            32 = 三维多段线顶点
            64 = 三维多边形网格;
            128 = 多面网格顶点;
            50曲线拟合切线方向。
            71多面网格顶点索引(可选,只在值非零时存在)
            72多面网格顶点索引(可选,只在值非零时存在)
            73多面网格顶点索引(可选,只在值非零时存在)
            74多面网格顶点索引(可选,只在值非零时存在)

      多面网格中的每个顶点都有它的顶点标志 128 位设置。如果图元提供了网格顶点的坐标,那么它的 64 位也被设置,且组码 10、20 和 30
      给出顶点坐标。顶点索引由顶点图元出现在多段线中的次序决定,第一个出现的顶点的索引为 1。
      如果顶点定义了网格的一个面,那么它的顶点标志组码只设置了 128 位,没有设置 64 位。此时,平面图元的组码 10、20 和
      30(位置)是不相关的且在 DXF 中始终记为 0。定义网格的顶点索引由组码 71、72、73 和 74
      给出,这些组码值指定了先前由索引定义的顶点中的一个。如果索引为负数,则以此索引指定的顶点开始的边不可见。第一个 0 顶点标记了平面顶点的结束。
      VIEWPORT
      下列组码适用于视口图元。
      视口组码
            组码说明
            100子类标记 (AcDbViewport)
            10中心点(在 WCS 中)。DXF:X 值;APP:三维点
            20, 30DXF:中心点的 Y 和 Z 值(在 WCS 中)
            40图纸空间单位中的宽度
            41图纸空间单位中的高度
            68视口字段:
            -1 = 打开,但完全关闭屏幕,或者由于当前状态时超过 $MAXACTVP 限制,一个视口被关闭。
            0 = 关闭;
            <正值> = 打开且激活。此值表示了视口的堆叠次序,此处 1 为激活的视口,2 是下一个视口,依此类推。
            69视口 ID。在每次打开图形时会发生变化。除了始终为 1 的图纸空间视口外,其他的都不保存。

       
      下表列出了可以附加到视口图元的扩展数据。与普通图元数据相比,扩展组码的次序十分重要。组码也可以多次出现。
      视口扩展数据组码
            组码说明
            1001应用程序 ID ("ACAD")。从此处开始是描述视口的扩展数据部分。
            1000开始视口数据,此字段始终为字符串 MVIEW,将来可能出现其他数据组。
            1002开始窗口描述符数据。此字段始终为字符串。
            1070扩展数据版本号,始终为整数 16。
            1010视图目标点(在 WCS 中)。DXF:X 值;APP:三维点。
            1020,1030DXF:视图目标点的 Y 和 Z 值(在 WCS 中)。
            1010视图方向矢量(在 WCS 中)。DXF:X 值;APP:三维矢量。
            1020,1030DXF:视图方向矢量的 Y 和 Z 值(在 WCS 中)。
            1040视图扭曲角。
            1040视图高度。
            1040视图中心点的 X 值(在 DCS 中)。
            1040视图中心点的 Y 值(在 DCS 中)。
            1040透视镜头长度。
            1040前剪裁平面的 Z 值。
            1040后剪裁平面的 Z 值。
            1070视图模式。
            1070圆缩放。
            1070快速缩放设置。
            1070UCSICON 设置
            1070捕捉 开/关
            1070栅格 开/关
            1070捕捉样式
            1070捕捉 ISOPAIR
            1040捕捉角度
            1040捕捉基点坐标的 UCS X 值。
            1040捕捉基点坐标的 UCS Y 值。
            1040捕捉 X 间距
            1040捕捉 Y 间距
            1040栅格 X 间距
            1040栅格 Y 间距
            1070在打印标志中消隐
            1002开始冻结图层表(可能为空)。此字段始终为字符串"{"。
            1003该视口中冻结图层的名称。此表可以包括依赖外部参照的图层。组码 1003 的任何数字可以在此出现。
            1002结束冻结图层表。此字段始终为字符串 "}"。
            1002结束视口数据。此字段始终为字符串 "}"。

      注意 因子 ZOOM XP 由下面的公式计算得出:组码 41/第二个组码 1040(或图纸空间高度/模型空间高度)。
      XLINE
      下列组码适用于参照线图元。
      参照线组 码
            组码说明
            100子类标记 (AcDbXline)
            10第一点(在 WCS 中)。DXF:X 值;APP:三维点。
            20, 30DXF:第一点的 Y 和 Z 值(在 WCS 中)。
            11单位方向矢量(在 WCS 中)。DXF:X 值;APP:三维矢量。
            21, 31DXF:单位方向矢量的 Y 和 Z 值(在 WCS 中)。

深入 DXF


此节讨论了涉及 DXF 组码的高级概念。
数据库对象
 
 
AutoCAD 图形主要由有组织的数据库对象的容器组成。每个数据库对象都有如下条目:
   句柄,对于图形/DXF 文件其值唯一,且在图形的生命周期中不变(常量)。从 AutoCAD 版本 10 起已存在此格式,但从 AutoCAD 版本 10
  开始,句柄始终被启用;
   可选的外部数据表,与图元一样从 AutoCAD 版本 11 起开始出现;
   可选的 Persistent reactor 表;
   可选的扩展词典的所有关系指针,此指针依次指向被应用程序放入词典的子对象;
符号表和符号表记录都是数据库对象,因此它们既可以有句柄,也可以在它们的 DXF 文件中具有外部数据和 Persistent reactors。
 
 
Persistent Inter-Object 引用句柄
组码范围集允许对象直接指定同一图形中其他对象的参照。伴随四种范围有四种关系类型可以被指定:
   软键指针句柄
   硬键指针句柄
   软键从属句柄
   硬键从属句柄
这些句柄类型在 AutoLISP 中作为图元名出现,在 ADSRX 作为 ads_name 出现,也可以作为源于 ARX 的 like-named
类出现。当其他对象的参照保持不变时,这些值始终被维护在插入、外部参照和写块操作中,以便更新那些(在被复制的集中的)对象间的参照,使它们指向被复制的对象。
同样,定义的“任意”句柄的组码范围允许方便的存储句柄值,这些句柄值不被转化成图元名,但在插入、外部参照或写块操作中被转换。
注意 如果使用外部数据组码 1005 存储句柄,则这些句柄被视为软键指针句柄,这意味着当对象组被复制或被插入另一个图形中时,有关对象间的参照将被转换。尽管在
AutoLISP 和 ADSRX 中外部数据条目 1005 始终作为句柄返回,但所有参照句柄组码范围都表示为“图元名”(在 AutoLISP 中)或
ads_name 结构(在 ADSRX 中)。
 
 
指针和所有关系参照
指针是一种只表示对象的用法但不占有对象或对其负有责任的参照。指针参照表示对象以某些方式使用其他对象,并分配获取其他对象路径。
所有关系参照表示所有者对象对具有所有者句柄的对象负有责任。所有关系参照指定完整的 DWG 和 DXF
文件的常用写入方式(例如少数关键根对象的开始)及所有者句柄的写入方式。
一个对象可以有任意多个指针参照与它相联系,但它只能有一个所有者。
 
 
硬键参照和软键参照
指针或从属的硬键参照都可以避免对象被清理,但软键参照却不行。
在 AutoCAD 中,块定义和复杂图元是它们的元素的硬键从属,符号表和词典是它们的元素的软键从属。多段线图元是它们的顶点和 seqend
图元的硬键从属,插入图元是它们的属性和 seqend 图元的硬键从属。
当建立另一个对象的参照类型时,应首先考虑此对象是否被保护起来,不受命令 PURGE 的影响。
任意句柄
任意句柄比较特殊,在 AutoCAD 内部,它们不被转化成永久任务标识符,在 AutoLISP
中,它们不被转化成图元名,诸如此类。它们被存储为句柄,当在图形合并操作过程中句柄值被转换时,任意句柄被忽略。
在所有环境下,任意句柄都能被函数 handent 转换成当前图形的图元名。在引用外部 DXF 和 DWG 文件中的对象时经常用到任意句柄。
 
 
 
组码 1005
外部数据组码 1005 与软键指针具有相同的特性和语义,这意味着无论主对象在何时被合并到另一个的图形中,它们都可以被转换,但在 AutoCAD
中不能转换成永久任务标识符,在 AutoLISP 和 ADSRX 中不能转换成图元名。此组码被存储为句柄。
 
 
 
 
子类标记
在为组数据流分类过程中的一个主要问题是一个单一对象可能由几个分类成员组成,不同的开发者可能根据不同的继承标准进行分类。因为每个继承标准都可以独立的发展,所以必须使类分类成员彼此隔离。
所有类分类成员都必须出现在它们的实例数据的指定类部分(组码 100 - “子类”标记,其后为类名称字符串) 之前。这并不影响定义对象状态,只是为 DXF
文件分析者提供了一种控制组码的方法以适应用软件。
例如,具有源自不同类的数据的对象表述如下:
  999
  FOOGRANDCHILD, defined by class AcDbSonOfSonOfFoo, which
  999
  is derived from AcDbSonOfFoo
  0
  FOOGRANDCHILD
  5
  C2
  100
  AcDbFoo
  999
  Uses 10/20/30 group codes
  10
  1.1
  20
  2.3
  30
  7.3
  100
  AcDbSonOfFoo
  999
  Also uses 10/20/30 group codes, for a different purpose
  10
  1.1
  20
  2.3
  30
  7.3
  100
  AcDbSonOfSonOfFoo
  999
  Also uses 10/20/30 group codes, for yet another purpose
  10
  13.2
  20
  23.1
  30
  31.2
  999
  Now for the Xdata
  1001
  APP_1
  1070
  45
  1001
  APP_2
  1004
  18A5B3EF2C199A
   
   
   
扩展词典和 Persistent Reactors
扩展词典是一个存储了词典对象句柄的可选序列,词典对象属于可以包含有序条目的当前对象。此功能模块承认任何数据对象的任意数据对象附件。任何图元或对象都可以拥有此区域。
Persistent reactors 是一个存储(在当前对象中注册它们自己为 reactors 的)对象的对象句柄。任何图元或对象都可以拥有此区域。
扩展数据
扩展数据是由 AutoLISP 或 ARX 应用程序创建的。如果图元包括扩展数据,则扩展数据将跟在普通定义数据之后。从 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 名称将被清理。每个 APPID
名称可以拥有一个附着到每个对象上的数据组。在应用程序的组码中,扩展数据组的序列及其含意由应用程序定义。
扩展数据组码的说明如下表:
扩展数据组码及其说明
      图元名组码说明
      字符串1000扩展数据中的字符串最长为 255 个字节(第 256 个字符将被保存为空字符)。
      应用程序名称1001
      也是字符串值字符串名称最长为 31 个字节(第 32 个字符将被保存为空字符)。
      注意:请不要向您的扩展数据中添加组码 1001,因为 AutoCAD 认为组码 1001 是新的应用程序扩展数据组的开始。
      控制字符串1002一个扩展数据控制字符串即可以是 "{" 也可以是
      "}"。这些大括号可以使应用程序通过把数据细分为表来组织它们的数据。左大括号开始表,右大括号结束最近的表。表可以被嵌套。
      当 AutoCAD 为应用程序读取扩展数据时,它首先检查大括号是否配对。
      图层名称1003与扩展数据相联系的图层的名称。
      二进制数据1004二进制数据被组织到可变长度的数据组 中。每个数据组最长为 127 个字节。在 ASCII DXF
      文件中,二进制数据被表示为十六进制数字字符串,每个二进制字节两个字符。
      数据库句柄1005图形数据库中的图元句柄。
      注意: 当使用 INSERT、INSERT *、XREF 绑定、XBIND 或部分 DXFIN
      将拥有句柄和扩展数据句柄的图形输入另一个图形时,扩展数据句柄将以某种方式转换成它们相对应的图元句柄,以此来维护它们的绑定。在 EXPLODE
      块操作或其他任何 AutoCAD 操作中也如此进行。当 AUDIT 检测到扩展数据句柄与图形文件中的图元句柄不匹配时,它认为这是一个错误。如果
      AUDIT 修复图元,它将设置句柄为 0。
      3 个实数1010, 1020, 1030 三个实数值的次序为 X、Y 和 Z。它们可被用于表示点或矢量记录。AutoCAD 不改变它们的值。
      世界空间位置1011, 1021, 1031与简单的三维点不同,世界空间坐标可被移动、缩放、旋转和连同属于扩展数据的上级图元一起产生镜像。当命令
      STRETCH 被用于上级图元且此点位于所选窗口中时,世界空间位置也可被拉伸。
      世界空间位移1012, 1022, 1032同样三维点也可被缩放,旋转和连同上级图元一起产生镜像(但不能被移动或拉伸)。
      世界方向1013, 1023, 1033同样三维点也可被旋转和连同上级图元一起产生镜像(但不能被移动、缩放或拉伸)。
      实数1040一个实数值
      距离1041一个可连同上级图元一起被缩放的实数值。
      缩放比例1042同样是一个可连同上级图元一起被缩放的实数值。与距离的区别在于此图元为应用程序定义的。
      Integer1070一个 16 位整数(有符号的或无符号的)。
      Long1071一个 32 位符号(长型)整数。

 
 
 
 
对象坐标系统 (OCS)
要在图形数据库中保存空间(在 DXF 文件中),与每个图元关联的点将以图元的自己的对象坐标系统(OCS)表示。在早先版本的 AutoCAD 中 OCS 被称作
ECS。在 OCS 中,描述三维空间中图元位置所需要的附加信息是描述 OCS 的 Z 轴的三维矢量和标高值。
如果给定 Z 轴(或拉伸)方向,可以通过平移三维空间中的原点和围绕 Z 轴旋转 X 和 Y 轴定义无穷多的坐标系。 但对于相同的 Z 轴方向,只有一个
OCS,它具有如下特性:
   它的原点与 WCS 原点一致;
   XY 平面中的 X 和 Y 轴方向以任意方式确定且一旦确定便固定不变。AutoCAD
  使用任意轴算法来确定此坐标系(请参见任意轴算法!AL(`XREF_24259_al_u05_c',1))。
对于一些图元,OCS 等同于 WCS 且所有点(DXF 组 10 - 37)以世界坐标表示,请参见下表:
与图元类型联系的坐标系统
      图元说明
      三维图元,如:直线、点、三维面、三维多段线、三维顶点、三维网格和三维网格顶点。这些图元不位于某一特别的平面中,所有的点都以世界坐标表示。在这些图元中只有直线和点可被拉伸,它们的拉伸方向可以不同于世界坐标系的
      Z 轴方向。
      二维图元图元,如:圆、圆弧、填充、宽线、文字、属性、属性定义、形、插入、二维多段线、二维顶点、优化多段线、图案填充和图像。这些图元本质上是平面的,所有的点都以对象坐标表示。这些图元都能被拉伸,它们的拉伸方向可不同于世界坐标系的
      Z 轴方向。
      标注一些标注点可以用 WCS 表示,一些标注点可以用 OCS 表示。
      视口以世界坐标系表示。

一旦 AutoCAD 为给定的图元确定 OCS,此 OCS 使用如下:
与图元存储在一起的标高值表示 XY 平面(与包含图元的平面重合)与 WCS 原点间的位移(沿 Z 轴方向),用户定义标高的大小并不重要。
任何 UCS 中二维点都被转换成相应的 OCS 中的二维点,这些点将依据 UCS 来平移和旋转。
转换过程中可能出现下列情况:
   当用户获得一个图元后,不能可靠地找出究竟是哪一个 UCS 在起作用;
   当用户按给定的 UCS 输入图元的 XY 坐标后,进行 DXFOUT 时,在 DXF 文件中可能不承认这些坐标,为了使用这些值,您必须知道 AutoCAD
  计算 X 和 Y 轴的方法。
   (与图元存储在一起的且被输出到 DXF 文件中的)标高值是 UCS 的 XY 面与 OCS 的 XY 平面的 Z
  坐标的总差值,此刻此图元的用户指定的标高值则被绘制。
   
   
   
   
任意轴算法
在 AutoCAD 内部使用任意轴算法为所有使用对象坐标系的对象生成对象坐标系。
利用给定的作为坐标系统 Z 轴的单位长度矢量,通过任意轴算法可以生成坐标系统的 X 轴,再根据右手法则确定 Y 轴。
此方法用来检查给定的 Z 轴(也被称作法向量),看它是否与世界坐标系的 Z 轴的正负半轴接近:如果接近,则用给定的 Z 轴叉积世界坐标系的 Y 轴来求取任意 X
轴;如果不接近,则用给定的 Z 轴叉积世界坐标系的 Z 轴来求取任意 X 轴。决定是否接近的边界值根据易于计算和便于在机器间交换数据的原则确定。该边界值现取值
1/64,此值正好既能用六个十进制分数数字表示也能用六个二进制分数位表示。
算法描绘如下(假定所有矢量都是用世界坐标系表示的三维矢量):
  设给定的法向量为 N;
  设世界坐标系的 Y 轴为 Wy,其值始终为 (0,1,0);
  设世界坐标系的 Z 轴为 Wz,其值始终为 (0,0,1);
设根据法向量 N 确定的任意 X 和 Y 轴为 Ax 和 Ay,N 也可被称为 Az(任意 Z 轴),它们的求取方法如下:
  如果 (abs (Nx) < 1/64) 且 (abs (Ny) < 1/64) 则
  Ax = Wy X N (此处 "X" 为叉积运算)。
  否则,
  Ax = Wz X N.
  调整 Ax 比例到单位长度。
求取 Ay 矢量的方法如下:
  Ay = N X Ax. 调整 Ay 比例到单位长度。

 

你可能感兴趣的:(AutoCAD,C/C++)