文档库 最新最全的文档下载
当前位置:文档库 › 基于VB6_0和OpenGL的DXF文件读取与交互控制

基于VB6_0和OpenGL的DXF文件读取与交互控制

基于VB6_0和OpenGL的DXF文件读取与交互控制
基于VB6_0和OpenGL的DXF文件读取与交互控制

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格式搞明白,再研究三维图

HALCON如何读取DXF文件

HALCON如何读取DXF文件 read_contour_xld_dxf (Contours, 'D:/D1.dxf', [], [], DxfStatus) 读入DXF文件装载到Contours中 disp_obj (Contours, 200000) 显示读入的内容 segment_contours_xld (Contours, ContoursSplit, 'lines_circles', 50, 40, 20) 分割圆和直线 count_obj (ContoursSplit, Number) for i := 1 to Number by 1 select_obj (ContoursSplit, ObjectSelected, i) get_contour_global_attrib_xld (ObjectSelected, 'cont_approx', Attrib) if(Attrib==1) fit_circle_contour_xld (ObjectSelected, 'ahuber', -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder) gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, rad(360), 'positive', 1.0) dev_display (ContCircle) write_string (200000, 'R:'+Radius) else * fit_line_contour_xld (ContCircle, 'tukey', -1, 0, 5, 2,

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

C# 读取DXF文件 (2)

u s i n g S y s t e m; using using https://www.wendangku.net/doc/b27763866.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using 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]) { case"HEADER": ReadHeader(); break;

DXF数据文件格式及接口

每个CAD系统都有自己的数据文件,数据文件分图形数据文件、几何模型文件和产品模型文件几种。数据文件的格式与每个CAD系统自己的内部数据模式密切相关,而每个CAD系统自己内部的数据模式一般是不公开的,也是各不相同的。由于用户使用的需要,就有数据交换文件概念的出现。 DXF为AutoCAD系统的图形数据文件,DXF虽然不是标准,但由于AutoCAD系统的普遍应用,使得DXF成为事实上的数据交换标准。DXF是具有专门格式的ASCII 码文本文件,它易于被其它程序处理,主要用于实现高级语言编写的程序与AutoCAD系统的连接,或其它CAD系统与AutoCAD系统交换图形文件。 1 、DXF文件结构 一个完整的DXF文件是由四个段和一个文件结尾组成的。其顺序如下: (1)标题段,记录AutoCAD系统的所有标题变量的当前值或当前状态。这些标题变量记录了AutoCAD系统的当前工作环境。例如,AutoCAD版本号、插入基点、绘图界限、SNAP捕捉的当前状态、珊格间距、式样、当前图层名、当前线型和当前颜色等; (2)表段,包含了四个表,每个表又包含可变数目的表项。按照这些表在文件中出现的顺序,它们依次为线型表、图层表、字样表和视图表; (3)块段,记录定义每一块时的块名、当前图层名、块的种类、块的插入基点及组成该块的所有成员。块的种类分为图形块、带有属性的块和无名块三种。无名块包括用HATCH命令生成的剖面线和用DIM命令完成的尺寸标注; (4)元素段,记录了每个几何元素的名称、所在图层的名称、线型名、颜色号、基面高度、厚度以及有关几何数据; (5)文件结束,标识文件结束。 DXF文件每个段由若干个组构成,每个组在DXF文件中占有两行。组的第一行为组代码,它是一个非零的正整数,相当于数据类型代码,每个组代码的含义是由AutoCAD系统约定好的,以FORTRAN “I3”格式(即向右对齐并且用三字符字段填满空格的输出格式)输出。组的第二行为组值,相当于数据的值,采用的格式取决于组代码指定的组的类型。组代码和组值合起来表示一个数据的含义和它的值。组代码范围见下表。需要注意的是,在AutoCAD系统中组代码既用于指出如下表所示的组值的类型,又用来指出组的一般应用。组代码的具体含义取决于实际变量、表项或元素描述,但“固定”的组代码总具有相同的含义,如组代码“8”总表示图层名。 组代码范围跟随值的类型 0-9 串 10-59 浮点 60-79 整数 210-239 浮点 999 注释 1000-1009 串 1010-1059 浮点 1060-1079 整数 表6.3 组代码范围 一个DXF文件的框架如下:

C#读取DXF文件

using System; using System.Collections.Generic; using https://www.wendangku.net/doc/b27763866.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格式文件解析

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 格式,我们就能很容易地实现资源共享,而不需要重复建模。

在AutoCAD中正确应用DXF图形文件格式

在AutoCAD中正确应用DXF图形文件格式 一、DXF文件格式分析 DXF文件由标题段、表段、块段、实体段和文件结束段5部分组成,其内容如下。 ☆标题段(HEADER)标题段记录AutoCAD系统的所有标题变量的当前值或当前状态。标题变量记录了AutoCAD系统的当前工作环境,如SNAP捕捉当前状态、栅格间距式样、当前图层层名及线型、颜色等。 ☆表段(TABLES)表段共包含4个表,每个表又包含可变数目的表项。这些表在文件中出现的顺序是线型表(LTYPE)、图层表(LAYER)、字样表(STYLE)、视图表(VIEW)。 ☆块段(BLOCK)块段记录了所用块的块名,当前图层层名、块的种类、块的插入基点及组成该块的所有成员。块的种类分为图形块、带有属性的块和无名块三种。无名块包括用HATCH 命令生成的剖面线和用DIM命令所完成的尺寸标准。 ☆实体段(ENTITIES)实体段记录了每个实体的名称、所在图层及其名字、线型、颜色等。☆文件结束段(EOF OF FILE)DXF文件的结束标志。 一个DXF文件由若干个组构成,每个组占两行,第一行为组的代码,第二行为组值。组代码相当于数据类型的代码,它由CAD图形系统所规定,而组值为具体的数值,二者结合起来表示一个数据的含义和值。例如,代码10代表一个点的X坐标,占一行,而其第二行4.5425则是点X坐标的具体数值,二者结合表示一点,其X坐标值为4.5425。 (1)组代码和组值的类型组代码为一个非负的不超过三位的整数,而组值由组代码的类型决定。例如: 代码0~9组值类型为字符型。 代码10~59组值类型为实型。 代码60~79组值类型为整型。 代码999表示解释行。 (2)组代码的含义每个组代码均有规定的含义,有些代码含义是固定的,而有些组代码则因应用场合不同而有多个含义,应具体分析。另外,一些代码是备用的,目前版本尚未用到,现将他们的含义举例介绍如下。 0:表示一个事物的开始,如一个块、表、图层、实体等。 1:字符型数据的值,如TEXT的字符串、文件名、属性值等。 2:一个事物的名字,如段、表、块、线型、视图等的名字。 3~5:字符型数据的值,如文件名、线型说明等。 6:线型名(固定类型)。 8:图层名(固定类型)。 关于实体的坐标与相应的组代码10~18、20~28、30~38的用法应根据实体所用到点的数量,按组代码个位的0、1、2、……的顺序使用。例如LINE的起点组代码为10、20、30,而11、21、31为其终点。其他类似。 DXF文件的结构相当复杂,完整读取DXF文件也是一项异常繁琐的工程。在实际应用中,为了提取图形的实体信息,可以省略DXF文件中的许多项,只要获取其中的层表、块段和实体段,就可以完成相应几何图形的描述。在层表中说明每一层的颜色、线型,在块段中说明块所在的层、属性及其在图形中的位置,在实体段中说明直线的起点、终点及圆的圆心、半径等几何信息和各实体所在的层。根据实体所在的层,在层表中搜索每一层的颜色、线型并将其添加到实体对象中。在利用CAD进行绘图时,需将变量参数DIMASO设为ON,以保证块段中定义的尺寸块为一个整体,并可被正确无误地获取。根据尺寸类型名、尺寸定义的起点、终点坐标与实体类型名、实体空间坐标是否匹配,对实体对象进行尺寸附加。在绘图时,如对自定义的粗糙度、形位公差等块不进行“EXPLODE”炸开操作,也可通过增加相应读取函数提取其属性。 下面举例说明实体段在DXF文件中的格式。 圆弧(ARC)

如何将地图及对象导出成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文件格式读取(VC例子)

Download demo project - 167 Kb Introduction What is DXF? Drawing Interchange Format (DXF) files enable the interchange of drawings between AutoCAD and other programs. DXF files can be either ASCII or binary formats. Because ASCII DXF files are more common than the binary format, CadLib uses ASCII DXF format. What is CadLib? The CadLib is not a Computer Aided Design (CAD) program. It is a tool for creating DXF files that are used in the CAD programs. It consists of two parts. One of them is a Dynamic Link Library to create the DXF file. The other part is the programming interface. It is a class that integrates the cadio.dll functions. It can be used in Microsoft Visual C++ projects. In addition, the cadio.dll can be used in other Win32 programs. Why use CadLib? In some programs, it is needed to create a drawing output for use in other programs such as AutoCad. For example, in a "Building Detail Sheet Generator Program", the program needs to create a drawing output. And the most standard format for communicating drawing data is 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

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…图标,选择需要导入的层。

读取dxf文件的vb代码

读取dxf文件的vb代码 ' ReadDXF从DXF文件中提取指定代码/值对。 ' 该函数需要4个字符串参数,一个有效的DXF文件名、 ' 一个DXF区域名称、一个在该区域中对象的名称以及 ' 一个列出代码的逗号分隔符。 ' Function ReadDXF( _ ByVal dxfFile As String, ByVal strSection As String, _ ByVal strObject As String, ByVal strCodeList As String) Dim tmpCode, lastObj As String Open dxfFile For Input As #1 ' 获得第一个代码/值对 codes = ReadCodes ' 在整个文件中循环直到找到"EOF"行 While codes(1) <> "EOF" ' 如果该组码为"0"并且其值为"SECTION" .. If codes(0) = "0" And codes(1) = "SECTION" Then ' 这必定是一个新的区域,所以获取下一个代码/值对 codes = ReadCodes() ' 如果该区域为所要寻找的区域.. If codes(1) = strSection Then ' 取得下一代码/值对并且.. codes = ReadCodes ' 在该区域中循环直到找到"ENDSEC" While codes(1) <> "ENDSEC" ' 在这个区域中,所有"0"代码表示一个对象。 ' 如果发现"0"就可保存对象名以便以后使用。 If codes(0) = "0" Then lastObj = codes(1) ' 如果该对象是所需要的对象 If lastObj = strObject Then ' 在代码的前后加上逗号 tmpCode = "," & codes(0) & "," ' 如果该代码为列表中的代码.. If InStr(strCodeList, tmpCode) Then ' 添加它的返回值。

DXF文件分析

DXF文件分析 一、DXF文件数据总览 DXF是AutoCAD的一种绘图交换文件,可以与其他软件进行数据较换的一种文件格式。 DXF是一种开放的矢量数据格式,可以分为两类:ASCII格式和二进制格式;ASCII具有可读性好的特点,但占有空间较大;二进制格式则占有空间小、读取速度快。 DXF文件是由很多的“代码”和“值”组成的“数据对”构造而成,这里的代码称为“组码”(group code),指定其后的值的类型和用途。每个组码和值必须为单独的一行的。 DXF文件被组织成为多个“段”(section),每个段以组码“0”和字符串“SECTION”开头,紧接着是组码“2”和表示段名的字符串(如HEADER)。段的中间,可以使用组码和值定义段中的元素。段的结尾使用组码“0”和字符串“ENDSEC”来定义。 二、DXF文件数据格式分析 图1.1为DXF文件数据格式的总体框图 图2.1DXF数据格式框图 由图1.1可知,DXF的数据格式有HEADER(标题段)、CLASSES(类段)、TABLES (表段)、BLOCKS(块段)、ENTITIES(实体段)、OBJECTS(对象段)、EOF(结束)。出了这七个段之外还有一个THUMBNAILIMAGE段。

类/子类,组码,组值的格式如下: 类/子类 组码 组值 比如: AcDbCircle ARC的子类 10 组码,起点的X坐标 2860.382264303673 组值X的坐标为2860.382264303673 组码比起类/子类以及组值有一个空格的缩进。 2.1 HEADER(标题段) DXF 文件的HEADER 段包含与图形关联的变量的设置。它由AutoCAD 数据库版本号和一些系统变量组成。每个变量由给出变量名称的组码9 指定,其后是提供变量值的组。下面给出了HEADER段的一般格式。 0 HEADER 段的开始 SECTION 2 HEADER 9 变量名称标识符(仅在DXF 文件的HEADER 段中使用) 为每个标题变量重复一次 $<变量> <组码> <值> 0 HEADER 段的结束 ENDSEC 2.2 CLASSES(类段) CLASSES 段。包含应用程序定义的类的信息,这些类的实例出现在数据库的BLOCKS、ENTITIES 和OBJECTS 段中。类定义在类的层次结构中是固定不变的。

解析DXF图形文件格式

解析DXF图形文件格式 一、DXF文件格式分析 DXF文件由标题段、表段、块段、实体段和文件结束段5部分组成,其内容如下。 ☆标题段(HEADER)标题段记录AutoCAD系统的所有标题变量的当前值或当前状态。标题变量记录了AutoCAD系统的当前工作环境,如SNAP捕捉当前状态、栅格间距式样、当前图层 层名及线型、颜色等。 ☆表段(TABLES)表段共包含4个表,每个表又包含可变数目的表项。这些表在文件中出现的顺序是线型表(LTYPE)、图层表(LAYER)、字样表(STYLE)、视图表(VIEW)。 ☆块段(BLOCK)块段记录了所用块的块名,当前图层层名、块的种类、块的插入基点及组成该块的所有成员。块的种类分为图形块、带有属性的块和无名块三种。无名块包括用HATCH

命令生成的剖面线和用DIM命令所完成的尺寸标准。 ☆实体段(ENTITIES)实体段记录了每个实体的名称、所在图层及其名字、线型、颜色等。 ☆文件结束段(EOF OF FILE)DXF文件的结束标志。 一个DXF文件由若干个组构成,每个组占两行,第一行为组的代码,第二行为组值。组代码相当于数据类型的代码,它由CAD图形系统所规定,而组值为具体的数值,二者结合起来表示一个数据的含义和值。例如,代码10代表一个点的X坐标,占一行,而其第二行4.5425则是点X坐标的具体数值,二者结合表示一点,其X坐标值为4.5425。 (1)组代码和组值的类型组代码为一个非负的不超过三位的整数,而组值由组代码的类型决 定。例如: 代码0~9组值类型为字符型。 代码10~59组值类型为实型。 代码60~79组值类型为整型。 代码999表示解释行。 (2)组代码的含义每个组代码均有规定的含义,有些代码含义是固定的,而有些组代码则因应用场合不同而有多个含义,应具体分析。另外,一些代码是备用的,目前版本尚未用到, 现将他们的含义举例介绍如下。 0:表示一个事物的开始,如一个块、表、图层、实体等。 1:字符型数据的值,如TEXT的字符串、文件名、属性值等。 2:一个事物的名字,如段、表、块、线型、视图等的名字。 3~5:字符型数据的值,如文件名、线型说明等。 6:线型名(固定类型)。 8:图层名(固定类型)。 关于实体的坐标与相应的组代码10~18、20~28、30~38的用法应根据实体所用到点的数量,按组代码个位的0、1、2、……的顺序使用。例如LINE的起点组代码为10、20、30, 而11、21、31为其终点。其他类似。 DXF文件的结构相当复杂,完整读取DXF文件也是一项异常繁琐的工程。在实际应用中,为了提取图形的实体信息,可以省略DXF文件中的许多项,只要获取其中的层表、块段和实体

DXF文件读取

DXF文件读取 作者:不忍之刃 He_zhiyuan EMAIL:cb2688he2688@https://www.wendangku.net/doc/b27763866.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);

如何将地图及对象导出成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上限将不被分割,以最大块输出,偏差较大。

用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文件的结构很清楚,具体如下: 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 0 对应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 坐标

相关文档