DXFLib开发包注解

DXF格式文件时AutoCAD绘图交换文件,用于其他平台或者程序与CAD进行数据交互用的一种格式文件,在工程中十分常见。DXFLib是解析DXF格式图元的开源库文件,用C++实现。通过定义和实现了几个类及其方法来读取、解析和分类原CAD图形文件中的几乎所有元素(图层、点、直线、圆、标注、线型、线宽等)。结合DXFLib,网上已有许多开源代码用于实现程序对CAD文件的读取,但很少分析DXFLib里的结构流程的。笔者这段时间恰好开发完成这一模块,简单做个总结。

  • 1.DXF文件格式

HEADERS——文件头域,表示图的总体信息,包括AutoCAD的文件版本号和一些系统变量;
CLASSES——类域,有关应用程序定义类的信息;
TABLES——表域,符号表的信息;
BLOCKS——块域,块定义和组成图形中每个块引用的图形图元;
ENTITIES——实体域,这部分是绘图实体,即图形中的图元,保存了真实的几何实体,还包括块引用,是DXF文件的主题部分;
OBJECTS——对象域,包括非图形对象的数据,可以使用AutoLISP或objectARx等二次开发程序读取;
THUMBNAILJMAGE——图形的预览信息;
EOF——表示DXF文件的结尾;

  • 2.各类头文件及其作用

DL_Codes——定义各类常量,如版本、点、颜色等;
DL_Attributes——DXF文件属性,如图层、颜色、线宽、线型等;
DL_Entities——定义每个元素(直线、点、圆弧、圆等)的具体数据(结构体);
DL_Element——定义DXF中每个元素(类)
定义每个类的枚举变量及索引,如DL_Block, DL_Layer等;
属性private:DL_Type EleType; //元素类型
int indexofBlock; //元素所在块的索引
int indexofDXFlist; //DXFList中元素的索引值
DL_CreationInterface——抽象基类,定义各种方法接口(虚函数,不实现),如addLine(), addLayer(), addPoint()等;
DL_CreationAdapter——覆写DL_CreationInterface提供的接口(但同样不实现)
DL_Dxf——读写dxf文件,读取dxf文件中所有数据,分类添加到DXFList中;
用户自定义类:
DL_Data——覆写DL_CreationAdapter提供的接口,定义实现
定义方法:addtoList(): 添加元素到列表DXFList
addtoBlockList()
定义属性:
元素索引值:numofInset, numofPoint, numofLine, numofArc等;
元素列表:QList<DL_Element*> DXFlist;
QList<DL_Block*>DXFBlockList;(Qt里开发的,用上了Qt自带的结构QList)

  • 3.元素类型定义
typedef int DLType;	//Element类型
#define  DLUnkown		0
#define  DLLayer		1
#define  DLBlock		2
#define  DLPoint		3
#define  DLLine			4
#define  DLArc			5
#define  DLCircle		6
#define  DLEllipse		7
#define  DLPolyline		8
#define  DLVertex		9
#define  DLSpline		10
#define  DLControlPoint 11
#define  DLKnot			12
#define  DLInsert		13

  • 4.读取DXF文件程序流程

变量定义:
DL_Data *dxfdata = new DL_Data(); //用户自定义类DL_Data
DL_Dxf *dxf = new DL_Dxf();
这里写图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐