DXF文件的打开

DXF文件的打开
DXF文件的打开

关于DXF文件的打开

1、DXF格式

DXF格式是AutoCAD图形文件中包含全部信息的标记数据的一种表示方法。

标记数据:为了分别每个数据,于是在每个数据前带一个名为“组码”的整数。不同的组码有不同的意义。

2、DXF文件的数据特点

DXF(Drawing Exchange File)文件即标准图形交换文件,是AutoCAD软件的一种ASCII 格式的文件。它由若干节组成,包括:

○1标题节(HEADER):存储图像的一般信息

○2类节(CLASSES):存储图形的类,这些类的事例会出现在块(BLOCKS)、实体(ENTITIES)和实体(OBJECTS)中。

○3表节(TABLES):包括块参照表、图层表、线形表等一系列表。

○4块节(BLOCKS):定义块和构成块的实体。

○5实体节(ENTITLES):包括图形中的图形对象或实体以及被看作插入实体的块参照。

○6对象节(OBJECKS):包括图形中的非图形对象。

3、我认为:

CAD图像的每一个点都包含改点的全部信息。那么这些信息存储在哪里呢?就是以DXF 为名的文件,即DXF文件包含了CAD图像的所有信息。而DXF文件的内容是数字或者成为组码。每个组码具有不同的意义。用程序翻译这些组码,就可以实现对CAD文件的读取或者转变。如把CAD图像转换成ArcGIS图形。参考:

4、打开程序如下

private void btOpen_Click(object sender, EventArgs e)

{

btDraw.Enabled = false;

LayerList.Clear();

LineList.Clear();

ArcList.Clear();

EllipseList.Clear();

LwopolylineList.Clear();

SplineList.Clear();

this.openFileDialog1.ShowDialog();

if (this.openFileDialog1.FileName.Trim() != "")//如果路径不为空

{

string path = this.openFileDialog1.FileName;

fs = new FileStream(path, FileMode.Open,

FileAccess.Read);

sr = new StreamReader(fs);

Read();

}

}

private void btDraw_Click(object sender, EventArgs e)

{

double width = Math.Ceiling(rightx) - Math.Ceiling(leftx) + 40;

double height = Math.Ceiling(righty) - Math.Ceiling(lefty) + 40;

Bitmap bmp = new Bitmap((int)width, (int)height);

Graphics gx = Graphics.FromImage(bmp);

double pw = width / (double)460;

double ph = height / (double)384;

for (int i = 0; i < LineList.Count; i++)

{

LINE temp = (LINE)LineList[i];

temp.Move(leftx, lefty, righty - lefty + 39);

temp.Draw(gx);

}

for (int i = 0; i < ArcList.Count; i++)

{

ARC temp = (ARC)ArcList[i];

temp.Move(leftx, lefty, righty - lefty + 39);

temp.Draw(gx);

}

for (int i = 0; i < EllipseList.Count; i++)

{

ELLIPSE temp = (ELLIPSE)EllipseList[i];

temp.Move(leftx + 1, lefty + 1);

temp.Draw(gx, height - 1, pw, ph);

}

for (int i = 0; i < LwopolylineList.Count; i++)

{

LWPOLYLINE temp = (LWPOLYLINE)LwopolylineList[i];

temp.Draw(gx, leftx, lefty, righty - lefty + 39);

}

for (int i = 0; i < SplineList.Count; i++)

{

SPLINE temp = (SPLINE)SplineList[i];

temp.Draw(gx, leftx - 10, lefty, righty - lefty + 39); }

this.pictureBox1.Image = bmp;

}

}

}

【笔记】

1.以上是两个控件的命令。

2.Trim()方法

返回一个字符串,它包含一个没有前导空格( LTrim)、没有尾随空格( RTrim) 或既

没有前导空格也没有尾随空格( Trim) 的指定字符串的副本。

3.FileStream(String, FileMode, FileAccess)构造函数

使用指定的路径、创建模式和读/写权限初始化 FileStream 类的新实例。

4.Math.Ceiling()方法

返回大于或等于指定数字的最小整数。

5、下面是对DXF的基本结构举一实例进行说明:

下面是对DXF的基本结构举一实例进行说明:

0 0后接SECTION SECTION表明这是一个段的开始

2 2后接的是段名HEADER说明该段是HEADER段(标题段)

9

$ACADVER文件是由AUTOCAD产生的

1

AC1008

9 9后接$UCSORG $UCSORG用户坐标系原点在世界坐标系中的坐标

10 10对应X 0.0X的值

20 20对应Y0.0Y的值

30 30对应Z 0.0Z的值

9 $UCSXDIR这是一段不太相关的部分,略去

10

1.0

.......

9 9后接$EXTMIN $EXTMIN说明三维实体模型在世界坐标系中的最小值

10 10对应X -163.925293X的值

20 20对应Y-18.5415860.0Y的值

30 30对应Z 78.350945Z的值

9 9后接$EXTMAN $EXTMAX说明三维实体模型在世界坐标系中的最大值

10 10对应X 202.492279X的值

20 20对应Y112.634300Y的值

30 30对应Z 169.945602Z的值

0 0后接ENDSEC ENDSEC说明这一段结束了

0 0后接SECTION SECTION表明这是一个段的开始

2 2后接的是段名TABLES说明该段是TABLES段(表段)............该段对我们不太相关,此处略去不进行说明

0 0后接ENDSEC ENDSEC说明这一段结束了

0 0后接SECTION SECTION表明这是一个段的开始

2 2后接的是段名ENTITIES说明该段是ENTITIES段(实体段)是要详细说明的段,该段包含了所有实体的POLYLINE点的坐标和组成面的点序。

0后接POLYLINE

8 表明以下数据是对于一个新的实体;

OBJECT018后接的字符串是这个实体的名称

66

1

70从66 1到70 64

64说明该实体是由许多小平面组成的

71

38 71 38说明该实体共有38个点

72

72 72 72说明该实体由72个三角形构成

00VERTEX

VERTEX表明后面紧跟着的是实体的数据

8

OBJECT01

10对应X坐标-163.925293X的值

20对应Y坐标-17.772665Y的值

30对应Z坐标128.929947Z的值

70 70 192

192表明上面的数据信息是点的坐标

0每一个从0VERTEX到70 192之间VERTEX的一小段是点的坐标

.........

70

192

VERTEX

8

OBJECT01

10

20

30

0 当70后跟128时,表明该实体的每个点的坐标数据已经记录70完了,下面紧跟着的是记录这些点是以什么样的方式组合成各128个三角形。

71 71、72、73后面跟着的值表明某一个三角形是第二个、第2一个、第四个点构成的,点的顺序是按照记入DXF文件的顺72序。当某一值为负数时,则表明该点到下一点的线不要画出,1如果要画三维实体的线型图,就必须使用这一特性,否则线条73将会出现紊乱。-4

VERTEX

............

0 0后接SEQEND表明该实体的数据已经全部记录完了

SEQEND

8

OBJECT01

POLYLINE0后接POLYLINE表明以下又是一个新的实体

............

ENDSEC0后接ENDSEC表明这是该段的结尾

EOF0后接EOF表明这个DXF文件结束了

6、文件读取说明

注意到上面每一段或每一节的区分都是以一个“数字”(字符型)加该段(节)的名字组成,所以在读取是可以用二维数组。str[0]存放“数字”,str[1]存放名字。见程序:

if (str[0] == "0" && str[1] == "LAYER")

{

LayerList.Add(newlayer);

return;

}

7、错误!关于ellipse,line,spline等报错

我在msdn中查找ellipse是椭圆类,它属于System.Windows.Shapes.Shape名空间。但是我添加上using System.Windows.Shapes;会报错:“命名空间“System.Windows”中不存在类型或命名空间名称“Shapes”。是否缺少程序集引用?”

DXF文件实际上是ASCII编码文件讲解

DXF文件实际上是ASCII编码文件,可以用记事本打开。 DXF 文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后的值的类型。使用这些组码和值对,可以将DXF 文件组织到由记录组成的区域中,这些记录由组码和数据项目组成。在DXF 文件中,每个组码和值都各占一行。 DXF 文件由多个段组成,每段都以一个0和后跟字符串SECTION 的组码开始,其后是组码2 和表示该段名称的字符串(例如,HEADER)。每段都由定义其元素的组码和值组成。每段都以一个0和后跟字符串ENDSEC 的组码结束。 完整的结构如下: HEADER 段。包含图形的基本信息。它由AutoCAD 数据库版本号和一些系统变量组成。每个参数都包含一个变量名称及其关联的值。 CLASSES 段。包含应用程序定义的类的信息,这些类的实例出现在数据库的BLOCKS、ENTITIES 和OBJECTS 段中。类定义在类的层次结构中是固定不变的。 TABLES 段。包含以下符号表的定义: APPID(应用程序标识表) BLOCK_RECORD(块参照表) DIMSTYLE(标注样式表) LAYER(图层表) LTYPE(线型表) STYLE(文字样式表) UCS(用户坐标系表) VIEW(视图表) VPORT(视口配置表) BLOCKS 段。包含构成图形中每个块参照的块定义和图形图元。 ENTITIES 段。包含图形中的图形对象(图元),其中包括块参照(插入图元)。一般屏幕上显示的图形对像如直线,圆,弧等都在ENTITIES 段 OBJECTS 段。包含图形中的非图形对象。除图元、符号表记录以及符号表以外的所有对象都存储在此段。OBJECTS 段中的条目样例是包含多线样式和组的词典。 THUMBNAILIMAGE 段。包含图形的预览图像数据。此段为可选 你所问的是立体(3DSOLID),它的编码比较复杂,建议你先把平面图元的DXF格式搞明白,再研究三维图

如何读取DXF格式文件

如何读取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 的值

DXF格式文件解析

dxf文件是AutoCad的交换文件,可以直接用AutoCad打开。dxf文件是明码文件,在vb环境下按顺序文件读取就可以了。 例如:在C盘根目录下有一个文件“1.dxf” 启动vb后,建立一个按钮:Command1 并双击此按钮,对其输入以下代码: Private Sub Command1_Click() Dim a As String '读取文件一行的内容 Dim i As Long '用于记录行数 Dim j As Long '用于记录用户如何响应提示 Open "c:\1.dxf" For Input As #1 i = 0 While Not EOF(1) Line Input #1, a i = i + 1 j = MsgBox("第 " & i & " 行内容为:" & a, vb OKCancel + vbInformation) '运行到此步时,如果用户输入“确定”则继续,如果用户输入“取消”则结束本程序 '用户可以在此输入处理代码,对读入的字串进行处理 If j = vbCancel Then End End If W end close #1 End Sub 读取DXF格式文件 OpenGL是美国SGI公司最新推出的一套开放式的三维图形软件接口,适用于广泛的计算机环境,从个人计算机到工作站,OpenGL都能实现高性能的三维图形功能。OpenGL本身不仅提供对简单图元的操作和控制,还提供了许多函数用于复杂物体的建模。但是,我们通常喜欢使用AutoCAD和3DS及3Dmax等工具来建立模型,并且我们已经有了很多这样的模型,那么我们如何才能资源共享,避免重复劳动呢?利用CAD图形标准数据交换格式—DXF 格式,我们就能很容易地实现资源共享,而不需要重复建模。

如何将地图及对象导出成dxf文件用来作为CAD底图新

如何将地图导出成dxf文件用来作为CAD底图 将地图导出成dxf文件只能在Windows客户端软件进行,并且需要VIP级别用户才可以执行此操作,且导出的底图像素大小和VIP级别有关,详见表1: 表1 将地图导出成dxf文件的具体操作步骤: (1)打开或者新建(点工具栏的图形按钮)一个需要导出成图片的地图图形,如图1: 图1 图形选择说明:图形可以是矩形,也可以是多边形、圆形、椭圆

形、扇形,还可以是轨迹生成的图型、搜索出来的行政区域图形。(2)点击图形,打开图像设置窗口(新建的图形会直接弹出图形设置窗口),设置该图形的线条宽度、线条不透明度、线 条颜色、填充不透明度、填充颜色,如图2: 图2 图形设置说明: 如果想要导出的图片显示该图形的轮廓,则建议将线条不透明度设置为50%,填充不透明度设置为1%,也可以根据需要适当的进行调整;如果用户不想显示该图形,则将线条不透明度也设置为1%。 地图下载说明: 导出地图前要先确保该区域所需级别的地图已下载,如果未下载齐全,导出的图片会显示不全;点【下载该区域地图】下载所需级别的地图,下载完成后再重新打开图形设置窗口。 部分地区的谷歌卫星图实际最高级别为18级,19级和20 级都是数码放大的,下载19级和20级的地图并不会比18级的地图清晰,因此不建议下载这些地区19级和20级的地图。(3)图形设置好了之后,点击【详细信息】,弹出图形详细信息窗口,如图3: 图3 (4)点击【导出成图片】按钮,弹出导出成图片-设置预览窗

口,选择地图级别,查看将要导出的图片信息,设置缩放比例,勾选【仅显示区域内的图片】、【在图片上显示奥维对象】选项,查看预览效果,如图4: 图4 地图级别:地图级别每高一级,导出的图片总像素值就会变大4倍,图片文件大小也跟着变大4倍;另外鉴于部分地区19级和20级卫星图都是数码放大的,因此不建议导出这两级的地图图片。 缩放比例:对当前预览的地图图片进行缩小比例保存,可以控制图片总像素数,一般情况下建议使用默认的不缩放,可使图片导出最佳效果。 仅显示区域内的图片:选中这项,矩形图形之外的其它图形如多边形,导出的底图不会显示多边形外边的地图及对象(见后面的例图5、例图6)。 在图片上显示奥维对象:选中这项,导出的图片将会显示奥维对象,包括区域图形本身和其它可见的奥维对象,所以要根据需要在步骤(2)的图形设置里设置好显示参数。 当前图片总共[384,813]像素:显示当前图片的总像素,可以通过设置地图级别或者通过设置缩放比例来改变当前图片总像素值。 保存成图片:需要VIP1:提示导出当前总像素的图片所需的VIP

dxf文件格式

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

Allegro导入dxf文件

Allegro导入DXF的方法 1.国内大部分结构工程师会默认给出DWG格式的文件,这种文件在Allegro中是不支持的,EDA 工程师可要求结构工程师给出DXF格式的文件。如果EDA工程师不想麻烦结构工程师,那么也可以自己下载合适的软件将DWG格式转为DXF格式。下图是打开的DXF文件。 2.将DXF文件导入Allegro之前,务必要做一个准备工作:将DXF文件与PCB设置为同样的单位。在我的工作经历中,结构工程师给出的DXF/DWG文件都是mm单位的,为了后续的导入过程顺利进行,强烈建议将DXF与PCB设置为相同的单位。EDA工程师采用的通常是mil单位,建议EDA 工程师首先将单位更改为mm。 3.在Allegro中点击Setup—>Design Parameters,并在弹出的Design Paramters Editor对话框中,点击Design标签,将User Units更改为Milimeter,最后点击OK确认。过程如下图。

4.点击File—>Import–>DXF,如下图。

5.找到欲导入的DXF文件。

6.此时需要注意,有一个非常重要的操作,就是勾选Incremental addtion,即在原有基础上新增。我看到网上有很多网友碰到这样的问题:导入DXF之后,PCB中原有的所有内容都消失了,就是因为没有勾选Incremental addtion。正确的方式如下图。 7.点击Lib…图标,将配置文件保存在合适的目录下,其实默认不做调整也是OK的。比较重要的操作是点击Edit/View layers…图标,选择需要导入的层。

C 读取DXF文件

using System; using System.Collections.Generic; using https://www.360docs.net/doc/033170575.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Collections; namespace DXF { public partial class Form1 : Form { private FileStream fs; private StreamReader sr; private ArrayList LayerList = new ArrayList(); private ArrayList LineList = new ArrayList(); private ArrayList ArcList=new ArrayList(); private ArrayList EllipseList = new ArrayList(); private ArrayList LwopolylineList = new ArrayList(); private ArrayList SplineList=new ArrayList(); private string[] str = new string[2]; private int count; private double leftx; private double lefty;

private double rightx; private double righty; public Form1() { InitializeComponent(); } private string[] ReadPair() { string code = sr.ReadLine().Trim(); string codedata = sr.ReadLine().Trim(); count += 2; string[] result = new string[2] { code, codedata }; return result; } private void Read() { while (sr.Peek() != -1) { str = ReadPair(); if (str[1] == "SECTION") { str = ReadPair(); switch (str[1])

如何将地图及对象导出成dxf文件用来作为CAD底图-新

如何将地图导出成dxf文件用来作为CAD底图将地图导出成dxf文件只能在Windows客户端软件进行,并且需要VIP级别用户才可以执行此操作,且导出的底图像素大小和VIP级别有关,详见表1: (1) 1: 图1 图形选择说明:图形可以是矩形,也可以是多边形、圆形、椭圆形、扇形,还可以是轨迹生成的图型、搜索出来的行政区域图形。 (2)点击图形,打开图像设置窗口(新建的图形会直接弹出图形设置窗口),设置

该图形的线条宽度、线条不透明度、线条颜色、填充不透明度、填充颜色,如图2: 图2 图形设置说明: 如果想要导出的图片显示该图形的轮廓,则建议将线条不透明度设置为50%,填 下载19级和 (3): (4) 查看将要导出的图片信息,设置缩放比例,勾选【仅显示区域内的图片】、【在图片上显示奥维对象】选项,查看预览效果,如图4: 图4 地图级别:地图级别每高一级,导出的图片总像素值就会变大4倍,图片文件大小也跟着变大4倍;另外鉴于部分地区19级和20级卫星图都是数码放大的,因此不

建议导出这两级的地图图片。 缩放比例:对当前预览的地图图片进行缩小比例保存,可以控制图片总像素数,一般情况下建议使用默认的不缩放,可使图片导出最佳效果。 仅显示区域内的图片:选中这项,矩形图形之外的其它图形如多边形,导出的底图不会显示多边形外边的地图及对象(见后面的例图5、例图6)。 参数。 升级 。保存成 升级 (5) 图5 (6)点击【我已获得授权】弹出‘DXF文件选项’窗口,如图6: 图6 图块分块 图块最大块:导出的图块如果未超出VIP上限将不被分割,以最大块输出,偏差较大。

DXF文件读取

DXF文件读取 作者:不忍之刃 He_zhiyuan EMAIL:cb2688he2688@https://www.360docs.net/doc/033170575.html, 2010-10-14 近来因为要做个项目,涉及到要做个DXF文件的读取。网上搜索DXF文件的文件结构,还搜索到一篇讲读取DXF文件的文章,相信来搜索读取DXF方面的人,一定会搜索到这篇文章的。但这篇文章里面附的源代码是有问题的。我用AUTOCAD可以导出3种版本的DXF 文件。我先用AUTOCAD画个简单的长方体, 然后用记事本打开导出来的三种版本的文件,发现很不一样,跟那篇文章里面描述的也不一样,用那篇文章里面源代码的方法是没办法读取的。然后我又用3DMAX导出DXF文件,才有正常的实体的“顶点”系列,实体的面系列,“面”里面记录的面上各个顶点在顶点系列中的位置。但我用3DMAX导出来的DXF文件里面,面是有4个顶点组成的四边形,而不是三角面片,所以这也跟那篇文章讲的不一样。 鉴于这么多,我自己写了个类来实现DXF文件的读取。且使用了OPENGL来做显示模型。列出如下: //CLoadDXF.h #include struct VERTEX { float x,y,z; }; //结构VERTEX用来存储点的坐标 struct SEQUENCE { int a,b,c,d; }; //结构SEQUENCE用来存储实体的面的组成,记录的是4个顶点在顶点序列《vertexArray》中的位置 struct ENTITY { int V ertexNumber;//实体顶点在顶点序列中开始开始的位置 int SequenceNumber;//实体在面系列中开始的位置 }; class CLoadDXF { public: void ShowDXF(float x,float y,float z,float size,float R,float G,float B); void OnFileInput(char* filename); CLoadDXF(); virtual ~CLoadDXF(); private: void norm(GLfloat v1[], GLfloat v2[], GLfloat v3[], GLfloat *nor);

用C语言程序读取CAD的dxf文件里的实体语言

wold line-dxf(FILE *fp,char layer[2],float x1,floal y1, float x2,float y2) fprintf(fp,"0\nLINE\n 8\n%s\n",1ayer); fprintf(fp,"10\n%f\n 20\n%f\n",x1,y1); fprintf(fp,"l1\n%f\n 2l\n%f\n",x2,y2); } #include ; #include < stdio.h>; #include "acad -dxf.c" main() {float r1,r2,11,12,13 x[100],y[37].Z[37]; float beta.beta1,fq,dz,w; int i; float xl,x1,y1,z1,x2,z2,x3,z3 ,x4 ,z4,xs,zs,Xe, ze; FILE*fp 摘要:本文简要介绍了一下DXF文件的组成。重点讲述了怎样使用C语言来读取DXF文件中的实体信息。 关键字:C、DXF

Abstract: The paper present the basic parts of DXF file. And focus on how to use C read the entity’s information from DXF file. Key Words: C, DXF DXF是Drawing eXchange File的缩写,意思为图形交换文件,在工程制图中有广泛的应用,掌握了DXF文件的读写对编写CAD软件时的图形信息的交换有重要意义。它有两种格式:一种是ASCII DXF 格式;一种是二进制DXF格式。ASCII DXF文件格式是ASCII 文字格式的AutoCAD图形的完整表示,这种文件格式易于被其它程序处理。二进制格式的DXF文件与ASCII格式的DXF文件包含的信息相同,但格式上二进制格式比ASCII格式更精简,能够节省百分之二十五的文件空间。AutoCAD能够更快地对其执行读写操作(通常能快五倍)。这可能是对ASCII格式的DXF文件操作时有ASCII与二进制形式的转换,因而花费时间较多。本文主要讨论ASCII格式的DXF 文件,因为它可读性强。 一、ASCII格式的DXF文件的组成

DXF文档详解

DXF文档详解 DXF的基本惯例 DXF格式是特定版本AutoCAD图形文件中所包含的全部信息的标记数据的一种表示方法。 标记数据的意思是指在每个数据元素前都带一个称为组码的整数。组码的值表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意。实际上,图形文件中所有用户指定的信息都能够以DXF文件格式表示。在AutoLISP和ARX应用程序中使用的DXF格式与上述格式基本相同,只是在某些数据组上存在着细微的差别。 如不作特殊说明,本节中所出现的组码都可以应用于DXF文件、AutoLISP应用程序和ARX应用程序。当组码说明对于应用程序和DXF文件有所不同时(或只适用于其中之一),在组码的说明前有如下提示符: APP只用于应用程序的说明 DXF只用于DXF文件的说明 如果组码说明对DXF文件和应用程序都适用,那么没有提示符;否则将显示适当的提示符。 组码范围 组码将与组码关联的值(组值)定义为整型、浮点数型或字符串型。具体说明如下表: 组码范围组码范围组值类型 0-9 字符串(最多255个字符,对于UNICODE字符串则更少) 10-59 双精度三维点 60-79 16位整数值 90-99 32位整数值 100 字符串(最多255个字符,对于UNICODE字符串则更少) 102 字符串(最多255个字符,对于UNICODE字符串则更少) 105 表示十六进制句柄值的字符串 140-147 双精度标量浮点值 170-175 16位整数值 280-289 8位整数值 300-309 任意文字字符串 310-319 表示二进制数据组的十六进制值的字符串 320-329 表示十六进制句柄值的字符串 330-369 表示十六进制对象标识符的字符串 999 注释(字符串) 1000-1009 字符串(最多255个字符;对于UNICODE字符串则更少) 1010-1059 浮点值 1060-1070 16位整数值 1071 32位整数值 按数字次序排列的组码 下表给出了组码(或组码范围)及其说明。在表中,“固定”表示该组码的用途固定不变,非固定组码的用途将随上下文变化。 按数字次序排列的图元组码 组码说明 -5APP:persistentreactor链表 -4APP:条件运算符(仅用于ssget) -3APP:扩展数据(XDA TA)标记(固定) -2APP:图元名引用(固定) -1APP:图元名。每次打开图形时它都改变,且不被保存。(固定) 0 表示图元类型的文字字符串(固定) 1 图元的主要文字值 2 名称(属性标记、块名称等) 3-4 其他的文字值或名称值

相关主题
相关文档
最新文档