一种DXF文件有效图元转换JSON数据的方法与流程

文档序号:15271825发布日期:2018-08-28 22:31阅读:3982来源:国知局
本发明涉及cad工程制图和互联网相融合的各类
技术领域
:。本技术实现dxf文件有效图元转换成json数据,有利于本地dxf文件互联网化,实现cad图形的在线预览。
背景技术
::cad工程制图是一个传统的计算机辅助设计过程,其在工程建筑,机械制造,产品设计等诸多领域都有着广泛的应用。cad工程制图包括dxf,dwg,dwf,sxf等多种文件格式,其中dxf文件格式是最常用的一种本地cad文件交换格式。经过几十年的发展,cad领域积累了海量的以dxf文件格式存在的cad图元数据,这些文件数据可以较方便的在本地预览,但随着互联网特别是移动互联的兴起,传统cad领域也面临转型的契机,而作为cad领域最常用的文件交换dxf格式,其单纯的本地预览行为显然不符合互联网转型的需求,而必须能够实现在服务器端存储,在客户浏览器端在线预览的模式。dxf文件本身以组码表示各种cad图元信息,其形式复杂难于解析,且内含较多的冗余信息,真正有效的图元信息仅占一小部分,而互联网数据传输多以高效易读的json数据进行封装,因此,如何将dxf文件中有效的图元信息转换成易于互联网传输的json数据,这是互联网时代cad领域亟待解决的一个问题。技术实现要素:本发明的目的是提供一种dxf文件有效图元转换json数据的方法解决本地dxf文件中有效图元提取和用于网络传输的问题。本发明的技术解决方案是:一种dxf文件有效图元转换json数据的方法,包含dxf文件读取模块,dxf信息分块模块,有效图元信息提取模块,数据组织存储模块,json数据转换生成模块共五个主要模块;分为原始dxf文件打开和读取,dxf信息逐级分块,分离出有效图元信息,逐层按键值对和链表存储有效信息,直接转换成json数据共五个主要步骤进行。本发明的具体实现流程为:利用操作系统平台相关的文件io接口打开和读取dxf文件,在内存中开辟一块连续的缓存区,按照整体读入的方式将原始dxf信息全部复制到缓存区。对读入的整体dxf信息进行逐级分块操作,首先按照dxf中段的分块组码endsec来划分六个主要的段,进行一级分块,得到六个段分块,分别为header,classes,tables,objects,entities和blocks;然后对图元信息所在的段entities按照图元间的分块组码0来划分各个不同的图元信息块,同时对图层信息所在的段tables按照属性间的分块组码0来划分不同的图层信息和随层属性,进行二级分块,得到所有不同的图元块及其相应的图层和随层属性。考虑到dxf与互联网融合以及互联网数据传输对数据容量的特殊要求,dxf原始信息中其它段的信息按照冗余信息的原则被摈弃,达到处理有效图元信息和减少数据量的目的。处理具体的图元信息时,不再采用原始dxf格式中复杂难懂的组码形式,而是按照键值对的形式,把单个图元的各个属性按照属性和属性值一一对应的关系来组织存储第一层数据,也即单个图元数据,其中图元的属性对应键值对中的键,从原来的组码变换成代表实际意义的字符串,而图元具体的属性值对应键值对中的值,直接使用dxf中实际图元的属性值,以此,对于单个图元,其键值对的数据形式变得简单易懂。不同的图元各自的内部属性信息按照键值对存储,而相同的一类图元则按照链表来先后排列,而不同图元之间任然按照键值对来组织,形成第二层数据,也即每一种图元对应一个键值对的键,而相应的一类图元信息组成的链表对应键值对的值,同时其它随层属性和图层分布也按照键值对数据形式并列于前述不同类的图元,存储在第二层数据中。所有图元和图层数据链表再以键值对来组织第三层数据,形成整体的有效图元键值对和链表数据结构。按照键值对组织的图元信息数据,与实际的json数据形式非常接近,可以通过手动添加json的分隔符来将键值对数据直接生成json格式的数据,或者直接转换成json格式文件存储到外存中。本发明的具体实现可以在任意支持文件io的操作系统中进行,可以使用任意编程平台,最终实现的方法即可作为独立存在的实体转换软件存在,也可以作为中间件嵌入到其它软件系统中使用。本发明的有益效果是:本地dxf文件有效图元转换成json数据,可以将dxf文件中真正有效的信息提取出来,避免原始dxf文件中冗余信息的干扰;本地dxf文件有效图元信息从复杂的组码形式转换成结构清晰,含义明确的json数据形式,将图元的属性值从数值组码转换成实际的属性说明,可以提高转换后数据的可读性,同时更加适合于互联网数据的传输,并且能够方便的与客户端浏览器集成,实现cad数据互联网化和在线预览。附图说明图1是本发明实施例一种dxf文件有效图元转换json数据的方法的模块框架和数据流走向的说明框图。图2是本发明实施例中信息分块模块的实施流程的说明框图。图3是本发明实施例中组织存储模块的实施流程的说明框图。图4是本发明实施例应用于dxf文件网络远程显示的说明框图。具体实施方式下面结合附图详细说明本发明的优选实施例。如图1所示,一种dxf文件有效图元转换json数据的方法,dxf文件101由文件读取模块102打开和读取转变为dxf信息103存储于内存中,dxf信息103由信息分块模块104经过逐级分块转变为两级分块信息105,分块信息105由图元提取模块106摈弃冗余信息剩下有效图元107,有效图元107由组织存储模块108按照三层键值对和链表存储109,最后经json转换模块110直接生成json数据111。如图2所示,所述信息分块模块的实施流程为:dxf信息201按照字符串的方式进行逐行测试202;判断是否是endsec203,如果不是204,返回,继续进行逐行测试202,如果是205,则进入段分块206;分别得到header207,classes208,blocks209,tables210,objects211,entities212六个一级段分块;对tables进行二级分块,逐行测试213;判断是否是0214,如果不是215,返回,继续进行逐行测试213,如果是216,则进入图层分块217;分别得到线宽219,颜色220,以及其它各种图层属性二级分块221;对entities进行二级分块,逐行测试222;判断是否是0223,如果不是224,返回,继续进行逐行测试222,如果是225,则进入图元分块226;分别得到直线228,圆弧229,以及其它各种图元信息二级分块230。如图3所示,所述组织存储模块的实施流程为:从图元信息301中筛选出单个图元,以直线图元为例302;直线图元的属性和属性值形成键值对303,参照说明图例304,按照(起点:起点坐标值)和(终点:终点坐标值)的键值对来组织第一层数据;单个图元的键值对数据插入链表305;判断是否处理完毕所有的图元306,如果未处理完毕307,则返回,重新筛选和处理其它图元,如果处理完毕308,则不同图元及其链表数据形成键值对309,参照说明图例310,按照(直线:直线链表)和(圆弧:圆弧链表)的键值对来组织第二层数据;从图层信息311中筛选出单个图层属性,以线宽为例312;线宽的属性和属性值形成键值对313,参照说明图例314,按照(颜色:rgb值)的键值对来组织第一层数据;单个图层属性的键值对数据插入链表315;判断是否处理完毕所有的图层属性316,如果未处理完毕317,则返回,重新筛选和处理其它图层属性,如果处理完毕318,则不同图层属性及其链表数据形成键值对319,参照说明图例320,按照(线宽:线宽链表)和(颜色:颜色链表)的键值对来组织第二层数据;图元数据和图层属性数据形成键值对321,参照说明图例322,按照(图元:各种图元链表)和(图层:各种图层属性链表)的键值对来组织第三层数据。以dxf文件网络远程显示应用为例,如图4所示:服务器端401拥有一个dxf文件库403,同时实施本发明的解决方案;客户端402能够远程选取需要预览的dxf文件406,通过网络传输409反馈回服务器端405;服务器端401收到客户端的反馈后,从dxf文件库403中选择dxf文件404,经由读取dxf文件407,dxf文件有效图元转换json数据的方法408之后生成json数据411,通过网络传输409到客户端402;客户端402接收到有效图元的json数据后可以进行远程显示预览410。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1