DXF文档详解.doc

上传人:w****2 文档编号:6575078 上传时间:2020-02-29 格式:DOC 页数:59 大小:191KB
返回 下载 相关 举报
DXF文档详解.doc_第1页
第1页 / 共59页
DXF文档详解.doc_第2页
第2页 / 共59页
DXF文档详解.doc_第3页
第3页 / 共59页
点击查看更多>>
资源描述
DXF文档详解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:persistentreactor链表-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.ENDOFFILE(文件结束)下面是对DXF的基本结构举一实例进行说明:00后接SECTIONSECTION表明这是一个段的开始22后接的是段名HEADER说明该段是HEADER段(标题段)9$ACADVER文件是由AUTOCAD产生的1AC100899后接$UCSORG$UCSORG用户坐标系原点在世界坐标系中的坐标1010对应X0.0X的值2020对应Y0.0Y的值3030对应Z0.0Z的值9$UCSXDIR这是一段不太相关的部分,略去101.0.99后接$EXTMIN$EXTMIN说明三维实体模型在世界坐标系中的最小值1010对应X-163.925293X的值2020对应Y-18.5415860.0Y的值3030对应Z78.350945Z的值99后接$EXTMAN$EXTMAX说明三维实体模型在世界坐标系中的最大值1010对应X202.492279X的值2020对应Y112.634300Y的值3030对应Z169.945602Z的值00后接ENDSECENDSEC说明这一段结束了00后接SECTIONSECTION表明这是一个段的开始22后接的是段名TABLES说明该段是TABLES段(表段).该段对我们不太相关,此处略去不进行说明00后接ENDSECENDSEC说明这一段结束了00后接SECTIONSECTION表明这是一个段的开始22后接的是段名ENTITIES说明该段是ENTITIES段(实体段)这是我们要详细说明的段,该段包含了所有实体的POLYLINE点的坐标和组成面的点序。0后接POLYLINE8表明以下数据是对于一个新的实体;OBJECT018后接的字符串是这个实体的名称66170从66 1到70 6464说明该实体是由许多小平面组成的7138 71 38说明该实体共有38个点7272 72 72说明该实体由72个三角形构成00VERTEXVERTEX表明后面紧跟着的是实体的数据8OBJECT0110对应X坐标-163.925293X的值20对应Y坐标-17.772665Y的值30对应Z坐标128.929947Z的值70 70 192192表明上面的数据信息是点的坐标0每一个从0VERTEX到70 192之间VERTEX的一小段是点的坐标.701920VERTEX8OBJECT01100200300当70后跟128时,表明该实体的每个点的坐标数据已经记录70完了,下面紧跟着的是记录这些点是以什么样的方式组合成各128个三角形。7171、72、73后面跟着的值表明某一个三角形是第二个、第2一个、第四个点构成的,点的顺序是按照记入DXF文件的顺72序。当某一值为负数时,则表明该点到下一点的线不要画出,1如果要画三维实体的线型图,就必须使用这一特性,否则线条73将会出现紊乱。-40VERTEX.00后接SEQEND表明该实体的数据已经全部记录完了SEQEND8OBJECT010POLYLINE0后接POLYLINE表明以下又是一个新的实体.0ENDSEC0后接ENDSEC表明这是该段的结尾0EOF0后接EOF表明这个DXF文件结束了在DXF文件中,我们最关心的是如何得到模型上各个点的坐标,并且用这些点连成许多个三用形,构成面,进而绘制出整个模型。在DXF文件的结构中,我们已经看到,DXF文件先叙述实体上各个点的坐标,然后叙述实体上有多少个面,每个面由哪些点构成。这样,我们至少需要2个数组来存储一个实体的信息,一个用于存储点的坐标,一个用于存储点序,我们可以把这2个数组放到一个结构中,如果模型中实体的数目不止一个是,我们就用这个结构来定义一个数组。在本文中,我们使用VisualC+6.0来写一个读取DXF文件的小程序。在实际应用中,模型中实体的数目以及实体中点和面的数目都是不定的,为了有效地利用内存,我们选择MFC类库中的聚合类CobArray类所创建的对象vertex,sequence来存储和管理实体的点坐标和点序。CObArray类是一个用来存放数组类的聚合类,它能根据要存进来的数组(或结构)多少自动进行自身大小的高速,而且这个类本身具有的成员函数使得我们对它的对象的操作更加方便、快捷,用它编的程序也易于读懂。三维实体模型的模型信息中的一部分信息可以在标题段中读出,通过读取变量名为UCSORG的三个变量,可以得到三维实体在世界坐标系中自身所定义的用户坐标系原点的三维坐标。通过读取EXTMAX,EXTMIN可以获知三维实体在世界坐标系中的范围,而其它部分的信息只有读完了全部DXF文件后才可以通过计算确定。对于三维实体模型的全部点坐标、点序,可以在实体段中按照前面介绍的DXF文件基本结构读出。现在我们开始写这个程序。先建立一个头文件HEAD.H定义如下的结构:VERTEX,SEQUENCE和类CVertex,Csequence。typedefstructfloatx,y,z;VERTEX;/结构VERTEX用来存储点的坐标typedefstructinta,b,c;SEQUENCE;/结构SEQUENCE用来存储实体的面的组成typedefstructcharobName20;/*定义结构myVertex来存储实体的名字,点的坐标以及面的组成,CObArrayVertex;其中,点的坐标和面的组成是由聚合类CObArray定义的对象来CObArraySequence;在存储的,我们可以把VERTEX结构和SEQUENCE结构加入到这两个对象中保存*/myVertex;classCVertex:publicCObject因为CObArray类的对象中只能加入由CObject派生的对象,所以protected:我们还需要建立一个由CObject类派生的CVertex类。在CVertex类CVertex();中有一个VERTEX结构的变量:m_vertex,信息实际上是存储在这DECLARE_DYNCREATE(CVertex)个变量中的。virtualCVertex();/Attributespublic:我们还需要建立一个由CObject类派生的CVertex类。在CVertex类CVertex(VERTEX&ver);中有一个VERTEX结构的变量:m_vertex,信息实际上是存储在这个变量中的,函数CVertex(VERTEX&ver)把VERTEX结构的变量VERTEXm_vertex;存入CObArray对象中。;classCSequence:publicCObject这也是一个由CObject类派生的类,作用和刚才CVertex类一样,protected:只不过Csequence类是用来存储实体中面的组成(点序)的。CSequence();DECLARE_DYNCREATE(CSequence)virtualCSequence();public:CSequence(SEQUENCE&sequ);SEQUENCEm_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,目的在于根据模型中实体的多少来给指针分配合适的内存,使之成为结构数组。定义一个函数,用于确定模型中有多少个实体,函数的返回值就是实体的个数。intCJupiterView:getObjectNumber()charstr110,str210;charname=theFirst;intnum;num=0;FILE*fp;fp=fopen(data.dxf,r);打开DXF文件,data.dxfwhile(!feof(fp)&!ferror(fp)这个函数是根据实体的名字来判断实体的个数的所以函数只读取实体的名字,一旦出现新的实体名字,fscanf(fp,%sn,str1);实体数就加一。if(strcmp(str1,VERTEX)=0)fscanf(fp,%sn,str2);打开DXF文件,data.dxffscanf(fp,%sn,str2);这个函数是根据实体的名字来判断实体的个数的if(strcmp(name,str2)!=0)所以函数只读取实体的名字,一旦出现新的实体名字,实体数就加一。strcpy(name,str2);num+;fclose(fp);returnnum;以下是读取实体点的坐标以及点序的程序代码,在这个程序中,读取了模型中点的坐标的最大值与最小值、实体的名字、点的坐标,以及点序。voidCJupiterView:OnFileInput()/TODO:AddyourcommandhandlercodehereFILE*fp,*fp2;inti,k,j;floattempX,tempY,tempZ;floatxMin,yMin,zMin,xMax,yMax,zMax,Max;intlab;charstr120,str220,str20,HT;charmyName20;intmyNumber;VERTEXtempVertex;SEQUENCEtempSequence;typedefstructfloatx,y,z,max;MAX;MAXmax;HT=9;objectNumber=getObjectNumber();myData=newmyVertexobjectNumber;fp=fopen(FileName,r);i=0;j=0;k=0;myNumber=-1;strcpy(myName,ObjectName);while(!feof(fp)&!ferror(fp)fscanf(fp,%sn,str);if(strcmp(str,$EXTMIN)=0)fscanf(fp,%sn,str1);fscanf(fp,%fn,&xMin);fscanf(fp,%sn,str1);fscanf(fp,%fn,&yMin);fscanf(fp,%sn,str1);fscanf(fp,%fn,&zMin);if(strcmp(str,$EXTMAX)=0)fscanf(fp,%sn,str1);fscanf(fp,%fn,&xMax);fscanf(fp,%sn,str1);fscanf(fp,%fn,&yMax);fscanf(fp,%sn,str1);fscanf(fp,%fn,&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,%sn,str1);fscanf(fp,%sn,str1);if(strcmp(myName,str1)!=0)myNumber+;strcpy(myName,str1);strcpy(myData+myNumber)-obName,myName);fscanf(fp,%sn,str2);fscanf(fp,%fn,&tempX);fscanf(fp,%sn,str2);fscanf(fp,%fn,&tempY);fscanf(fp,%sn,str2);fscanf(fp,%fn,&tempZ);fscanf(fp,%dn,&lab);fscanf(fp,%dn,&lab);if(lab=192)tempVertex.x=tempX/max.max;tempVertex.y=tempY/max.max;tempVertex.z=tempZ/max.max;(myData+myNumber)-Vertex.Add(newCVertex(tempVertex);if(lab=128)fscanf(fp,%sn,str1);fscanf(fp,%fn,&tempX);fscanf(fp,%sn,str1);fscanf(fp,%fn,&tempY);fscanf(fp,%sn,str1);fscanf(fp,%fn,&tempZ);tempSequence.a=abs(tempX);tempSequence.b=abs(tempY);tempSequence.c=abs(tempZ);(myData+myNumber)-Sequence.Add(newCSequence(tempSequence);fclose(fp);HEADER区域本节中描述的组码仅适用于DXF文件。DXF文件的HEADER区域包括与图形相关联的变量的设置。其中的每一个变量都通过组码9给出变量名,并由其后的组码提供变量值。注意:AutoCAD命令参考中的附录B“系统变量”中的一些变量不出现在DXF文件中。通过执行函数getvar,应用程序可以检索这些变量的值。下面是DXF文件的HEADER区域的样例:0SECTION2HEADER区域的开始9$对每个表头变量重复0HEADER区域的结束=下表列出了保存在DXF文件中的变量。=DXF系统变量变量组码说明$ACADVER1AutoCAD图形数据库版本号:AC1006=R10,AC1009=R11和R12,AC1012=R13,AC1014=R14,AC1018=?$ACADMAINTVER7076$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=da格式$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$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设置的当前标高$EXTMIN10,20,30图形的X、Y和Z延伸到左下角(在WCS中)$EXTMAX10,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当前图纸空间的UCSX轴$PUCSYDIR10,20,30当前图纸空间的UCSY轴$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当前UCSX轴的方向(在WCS中)$UCSYDIR10,20,30当前UCSY轴的方向(在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区域的样例:0SECTION2TABLES区域的开始0TABLE2570相同的表组码,对每一个条目重复05.表条目数据,对每一个表记录重复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/表示AutoCADPersistentreactors组的开始/application-defined codes组102中的组码和组值由/应用程序定义/102组结束100子类标记(AcDbSymbolTableRecord)下表列出了当Persistentreactors被附着到对象上时输出的组码:ACAD_REACTORS记录组码说明102ACAD_REACTORS表示AutoCADPersistentreactors组的开始330指向所有者词典的软键指针标识符/句柄102组结束下表列出了当扩展词典被附着到对象上时输出的组码:ACAD_XDICTIONARY记录组码说明102ACAD_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)。)3DIMPOST4DIMAPOST5DIMBLK6DIMBLK17DIMBLK240DIMSCALE41DIMASZ42DIMEXO43DIMDLI44DIMEXE45DIMRND
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 临时分类 > 人文社科


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!