您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页基于dxflib库的dxf格式文件读取和写入方法研究

基于dxflib库的dxf格式文件读取和写入方法研究

来源:好走旅游网
CULTURE区域治理

基于dxflib库的dxf格式文件读取和写入方法研究梁小锋1,张海洋2

1.江门市江海区自然资源信息中心;2.广东省海洋地质调查院

摘要:dxf格式文件是一种采用度较高的通用图形格式,本文基于可移植性高的dxflib库,通过构建的图元对象完成了dxf文件读取和写入操作该方法基于开源C++库,具有很大的灵活性,能满足不同用户对dxf文件使用的需求。关键词:dxflib;dxf中图分类号:U692.4+2

󰀃

文献标识码:A

󰀃

󰀃

文章编号:2096-4595(2020)41-0292-0001

进行保存。为此需要定义图元对象,以直线图元LINE为例,构造图元LINE的对象为LineObj,包括了图元数据DL_LineData的字段,以及图元通用属性DL_Attributes类型的变量atribute。构建好图元对象之后,需构建块表图元BLOCK的对象BlockObj,包括了图元数据DL_BlockData中的字段,以及BLOCK中包含的各种图元的集合,以直线图元LINE为例,dxflines是LINE对象LineObj的集合,用以保存BLOCK中包含的所有LINE类型的图元。定义好了数据结构之后,就可以进行dxflib库的调用,首先建立DL_CreationAdapter类派生类MyDxfFilter,然后在派生类中MyDxfFilter覆写addPoint、addCircle和addPolyline等添加图元对象的虚方法。图1为dxflib库中向一个BLOCK中添加指定类型图元的流程。

以多段线图元POLYLINE为例,说明使用dxflib库保存图元对象的过程,添加多段线共使用到两个方法addPolyline和addVertex,其中addPolyline用来保存多段线,addVertex用来保存多段线的顶点。文件流中的所有图元都通过对应的图元对象进行保存。当文件流读完后,dxfblocks里也就保存了所有BLOCK图元,以及BLOCK图元里包含的POLYLINE,CIRCLE等图元。

利用dxflib库对dxf文件进行读取并保存图元到图元对象后,dxf的写入就相对简单了,提取图元对象中的图元属性和图层等信息后,按照dxf格式要求写入文件即可。

四、实验结果与分析

本文选用dxflib库中demo.dxf文件为研究对象,该文件包含由多种类型图元构成的块,包含常见的多段线,圆等图元,通过本程序对该文件进行了读取和写入。

五、总结

本文先是对dxf文件格式和dxflib库进行了介绍,给出了创建和保存图元对象的方法,实现了对常见的图元进行了提取和写入。

参考文献

[1]汪晓宇.DXF图形文件的坐标转换[J].地理空间信息,2018,16(6):108-111.

[2]石鑫.AutoCAD环境下DXF文件格式分析与处理[D].沈阳:沈阳航空航天大学,2015.

dxf格式文件是常见图形交换格式之一,在多行业中都得到广泛应用[1-2],但是由于其数据结构复杂,解析dxf文件还是相对繁琐的。dxflib库是一个开源的C++库,使用dxflib库进行dxf文件的读写,可以很方便进行移植到自己的程序中去。

一、dxf格式文件介绍

dxf文件是一种开放的矢量数据格式,由多个SECTION组成,每个SECTION依次记录了文件的四至、图层、块表、实体等信息。为嵌套结构,本文主要对BLOCK段和ENTITIES段进行了研究。其中BLOCK段记录了块表信息,包含了该块中的包含的点、多段线、圆等图元信息。在dxf文件中,模型空间和布局都也是作为一个块表保存。

二、dxflib库介绍

dxflib库是一个开源的c++库,方便进行调用。该库中的核心类为dl_dxf和dl_creationinterface,此外还对图元数据进行了定义,如直线图元数据定义为DL_LineData结构体,保存直线的起点和端点坐标。圆图元数据定义为DL_CircleData结构体,保存圆心坐标和半径。

dl_dxf类对dxf文件进行了解析,构建了dxf文件读取和写入的模块,对各个图元的读取都给出了定义,并调用dl_creationinterface类中的可供覆写的虚函数供用户保存。dl_creationinterface类中定义了虚函数,供用户定义的派生类进行覆写,用户可以根据要提取的实体进行覆写。

三、利用dxflib库对dxf格式文件进行读写

dxflib库虽然对dxf文件进行了图元提取,并定义了图元的属性以及图元的数据,但是并没有定义图元对象,仅定义了保存图元的虚函数,因此并不能对提取的图元

图1 BLOCK图元保存流程

作者简介:梁小锋,生于1992年,本科,测绘助理工程师,研究方向为国土空间规划,地理空间数据的开发与应用相关工作。

292

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务