CAD文件转换为SVG文件的探讨 (2)

  SVG图形包括框架元素和图形元素。框架元素能够包含图形元素和其他框架元素,如:<svg>、<g>、<defs>、<symbol>、<clipPath>、<mask>、<pattern>、<marker>、<a>和<switch>。<g>元素是编组元素,能分组图形对象,便于管理和使用,如对组进行变换或提供一个公共属性。<defs>元素定义可重用部件,以后可在图形主体中调用,这种重用技术最大限度地利用了HTTP的缓存功能,避免了数据的重复下载。调用<defs>元素定义的项有两种方式,一种是定义的项通过其本地URL(或URI)引用;第二种是使用<use/>元素。

  例如: <use xlink:href="#block1"/>

  图形元素包含路径<path>、文字<text>、图像<image>、<use>和六种基本形状:矩形<rect>、圆<circle>、椭圆<ellipse>、线<line>、折线<polyline>、多边形<polygon>,简单图形直接由基本形状构建,每个基本形状都带有位置、大小、颜色、轮廓等属性。复杂图形可以用路径<path>来描述,路径是一系列命令,用来创建作为图像一部分精确定义的形状,该形状可以是开放的或闭合的,并可以包含一条或多条线、曲线和线段,其中曲线可用圆弧、三次或两次的Bezier曲线绘制。SVG提供了对嵌入图像的支持,可以在<image>直接写入图像的二进制信息,也可以链接指向某个图像文件,还可以用滤镜中的<feImage>引入外部图像文件加以处理。SVG在字体处理上采用了CSS 2中的字体显示核心技术Web Font,保证在任何情况下看到的字体相同。SVG通过<transform>可以实现坐标转换,实现图形放缩、旋转、镜像、倾斜等效果。

3 DXF文件转换为SVG文件

  分析DXF文件和SVG文件,发现两者在表示方式上有一定的相似之处,两者均是文本文件,通过记录图形的特征数据来描述矢量图形,比如圆,两者均记录了圆心、半径等数据。但在有些图形的描述上,记录的特征数据是不同的,比如椭圆等。所以,实现CAD文件到SVG文件的转换,不仅要分析AutoCAD中的每一类型的二维矢量图形对象在DXF文件中的对应实体描述,以及SVG中对应于DXF文件中的实体的元素,而且应针对DXF记录的特征数据利用相应的公式推导出SVG需要的数据。经过详细深入的分析,得到AutoCAD中的对象、DXF文件中的实体和SVG中的元素之间的对应如表1所示。

表1 AutoCAD中的对象、DXF文件中的实体和SVG中的元素对应表

 AutoCAD中的图形对象   DXF文件中的实体
   SVG中对应的元素  
 矩形、多边形、多段线    LWPOLYLINE    polyline  
 圆    CIRCLE    Circle  
 椭圆    ELLIPSE    ellipse、rotate  
 直线    LINE    line  
 圆弧    ARC    path  
 椭圆弧    ELLIPSE    path  
 样条曲线    SPLINE    path  
 图块和块引用    BLOCK、INSERT    defs、g、use等  
  文字    TEXT、MTEXT    text  
 图像    IMAGE    image  
 多线    MLINE    polyline  
 图案填充    HATCH    defs、g、use等  
 参照线    XLINE    line  
 尺寸    DIMENSION    defs、g、use等  

  在转换的过程中,会遇到一些难点,下面提出具体的解决方案:

3.1 坐标系统

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgdyyz.html