计算机应用
ComputerApplications
Vol.26June2006
文章编号:1001-9081(2006)06Z-0051-03
CAD文件转换为SVG文件的探讨
柳 玲,李百战,杨明宇
(1.重庆大学软件学院,重庆400044; 2.重庆大学城市建设与环境工程学院,重庆400044)
(liuling@cqu.edu.cn)
摘 要:详细剖析了CAD的图形交换格式———DXF文件的结构,分析了SVG文件的框架元素和图形元素,建立了CAD中的对象、DXF文件中的实体和SVG中的元素三者之间的对应表,并对转换中遇到的难点问题提出了解决方案,最后,通过编程实现验证了方法的可行性。关键词:CAD;DXF文件;SVG文件;矢量图形中图分类号:TP391.41 文献标识码:A1,2
2
2
0 引言
目前CAD技术已广泛应用于建筑设计、机械设计、城市
规划、交通等领域,由其主流软件AutoCAD或在之基础上二次开发的软件生成的图纸层出不穷。SVG(ScalableVectorGraphics,可缩放的矢量图形)基于XML标准,既具有开放性,文件较小,显示放缩不损失质量等优点,又有强大的动画交互功能和丰富的滤镜效果。尽管现在已有一些SVG图形的生成工具,但为了充分共享已有的CAD文件,使之能运用于WebGIS或图形发布,因此有必要探讨将CAD文件有效地转换为SVG文件的问题。
AutoCAD的主要图形格式为DWG文件和DXF文件,AutoCAD公司直今未公开DWG文件格式,如要直接读取DWG文件,就需要分析其二进制数据,破译其格式,这种工作相对很困难。另一种方法是利用AutoCAD的二次开发技术,使用如ADS、ObjectARX、VBA、VisualLisp等开发语言直接访问AutoCAD提供的一组ActiveX接口,获取图形文件中各个图形对象的有用信息,然后使用SVG中相应的元素来描述这些图形对象[2]。但这种方法不能完全脱离AutoCAD平台,应用不够灵活。现在国外对DWG格式的研究也有很多,较为著名的是OpenDWG协会的ODT软件包,该软件包为直接操作DWG文件提供了丰富的函数。但要利用此软件包必须是会员,并且需要缴费,在非盈利条件下可以免费使用。DXF是AutoCAD提供的图形交换格式,它以ASCII码格式存储文件,可以用记事本编辑,简单易读,应用广泛[3]。DXF在表现图形的大小方面十分精确,本文主要探讨了DXF文件转换到SVG文件的一系列问题。
。图2是
DXF文件中的HEADER区域。一个DXF文件可以只包含七个区域中的若干个区域,而不是全部区域。七个区域中,最重要的是ENTITIES区域。一个最简单的DXF文件可以只包含ENTITIES区域,而不需要包含其他任何区域,这样就大大降低了DXF文件编写的难度。
0,后跟组值为字符串EOF作为文件的结束标志
HEADER区域CLASSES区域TABLES区域BLOCKS区域ENTITIES区域OBJECTS区域
THUMBNAILIMAGE区域
[3]
图1 DXF文件的组织结构
0SECTION2HEADER9
HEADER区域的开始
$<变量>
<组码><值>
0ENDSEC
重复每一头部变量
HEADER区域结束
图2 DXF文件中的HEADER区域
1 DXF格式剖析
DXF格式是标记AutoCAD图形文件中所包含的全部信
息的一种表示方法,最小组成单位是组,每组占两行,第一行是组码,是一个整数,表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意;第二行是组值,数据类型根据组码的数值可以是字符串型、整型或浮点数型等。一个DXF文件分为七个区域(如图1),每个区域均由多个组组成。每个区域都是以组码0开始,其后跟随着字符串SECTION,接着是组码2和表示区域名称的字符串(例如HEADER),当出现组码0,其后跟随字符串ENDSEC时表示该区域结束。所有区域都结束后,在DXF文件的最后是组码
DXF文件完整的组织结构说明如下:
HEADER区域:包含图形的基本信息,由一个AutoCAD数据库版本号和许多系统变量组成。
CLASSES区域:包含有关应用程序定义类的信息,这些类的实例包含在BLOCKS区域、ENTITIES区域和OBJECTS
[3]
区域的数据库中。
TABLES区域:包含一系列符号表的定义。这些符号表包括:APPID(应用程序标识表)、BLOCK_RECORD(块引用表)、DIMSTYLE(标注样式表)、LAYER(图层表)、LTYPE(线型表)、STYLE(文本样式表)、UCS(用户坐标系表)、VIEW(视图表)和VPORT(视口配置表)。
BLOCKS区域:包括块定义和组成图形中每个块引用的
收稿日期:2005-10-19;修订日期:2006-02-20 基金项目:教育部高等学校博士学科点科研基金资助项目(20030611013) 作者简介:柳玲(1970-),女,重庆人,讲师,博士研究生,主要研究方向:GIS、CAD、软件工程; 李百战(1957-),男,教授,博士生导师,主要研究方向:建筑信息化; 杨明宇(1972-),男,贵州遵义人,博士研究生,主要研究方向:建筑信息化.
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
52 计算机应用2006年
图形图元。
ENTITIES区域:包含图形中的所有图形对象(包括点、线、面、插入块,注记文字等实体),其中包括块引用。
OBJECTS区域:包含图形中的非图形对象。THUMBNAILIMAGE区域:包含图形中的预览图像。
2 SVG文件的结构分析
SVG矢量图形具有很多优点,与目前网络流行的点阵图像格式GIF和JPEG相比,SVG能任意对图形显示进行放缩
接写入图像的二进制信息,也可以链接指向某个图像文件,还可以用滤镜中的 3 DXF文件转换为SVG文件 分析DXF文件和SVG文件,发现两者在表示方式上有一定的相似之处,两者均是文本文件,通过记录图形的特征数据来描述矢量图形,比如圆,两者均记录了圆心、半径等数据。但在有些图形的描述上,记录的特征数据是不同的,比如椭圆等。所以,实现CAD文件到SVG文件的转换,不仅要分析AutoCAD中的每一类型的二维矢量图形对象在DXF文件中的对应实体描述,以及SVG中对应于DXF文件中的实体的元素,而且应针对DXF记录的特征数据利用相应的公式推导出SVG需要的数据。经过详细深入的分析,得到AutoCAD中的对象、DXF文件中的实体和SVG中的元素之间的对应如表1所示。 表1 AutoCAD中的对象、DXF文件中的实体和SVG中的元素对应表 AutoCAD中的图形对象 DXF文件中的实体LWPOLYLINECIRCLEELLIPSELINEARCELLIPSESPLINEBLOCK、INSERTTEXT、MTEXTIMAGEMLINEHATCHXLINEDIMENSION SVG中对应的元素polylineCircleellipse、rotatelinepathpathpathdefs、g、use等textimagepolylinedefs、g、use等line defs、g、use等 而保证图像质量,不会出现点阵图常见的锯齿边缘,文件容量 相对较小,存储效率高,下载速度快;与矢量动画软件Flash制作的图形相比,也具有一些优势,比如Flash的文件仅能用Flash软件编辑,不利于文档的更改和维护,而SVG图形能用任意的文本编辑工具编辑;Flash的文件与通用的标准技术间缺乏互操作性,如缺乏与HTML页面或CSS表单互动的机制,而SVG能嵌入到HTML页面中,支持事件编程,能通过XSL或CSS的方法添加各种样式等。 SVG是XML的扩展,在语法和格式上是XML规范的一部分,但不属于XML所能解释的范畴。SVG文档区分大小写,具有XML的基本属性[1]: 1)所有的标记都有开始标记和结束标记,否则必须注明为空标记。空标记用反斜杠结束,如 2)标记必须正确嵌套。如果一个标记在另一个标记中开始,那么它也必须在那个标记中结束。 3)文档必须只有一个根。一个元素包含了一个SVG文档的所有内容。 4)文档应该以XML声明开始。 5)文档应该包含一个DOCTYPE声明,该声明指向一个允许元素的列表。SVG1.0文档的DOCTYPE声明是: w3. org/TR/2001/REC2SVG220010904/DTD/ 矩形、多边形、多段线 圆椭圆直线圆弧椭圆弧样条曲线图块和块引用文字图像多线图案填充参照线尺寸 。框架元素能够包 含图形元素和其他框架元素,如: