发明内容
有鉴于此,本发明要解决的技术问题是提供一种能够实时预览施工图纸效果的施工图纸在线预览方法及其装置,进而减少对AutoCAD制图的依赖,提高设计效率,节省成本。
为了实现上述目的,现提出如下解决方案:
一方面,提供一种施工图纸预览方法,包括:
后端通过解析施工图纸,获取所述施工图纸图纸空间的各个视图信息,并将所述各个视图信息保存至第一数据结构中;其中,所述图纸空间用以模拟所述施工图纸的平面空间;
后端通过解析所述施工图纸,获取所述施工图纸模型空间的各个元素信息,并将所述各个元素信息保存至第二数据结构中;其中,所述模型空间用以模拟所述施工图纸的实体空间;
根据所述第一数据结构以及所述第二数据结构生成第一文件,并将所述第一文件发送至前端;
前端解析所述第一文件的第一数据结构以及第二数据结构,获取各个视图信息以及各个元素信息;
根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出。
优选地,所述第一数据结构为Layout数据结构,所述第二数据结构为Model数据结构,所述第一文件为JSON文件;所述前端解析所述第一文件的第一数据结构以及第二数据结构具体包括:根据所述Layout数据结构以及所述Model数据结构生成JSON文件,并发送至前端进行解析。
优选地,所述根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出之前,还包括:分别遍历Layout数据结构以及Model数据结构;
所述根据预设坐标映射算法,将相应的元素和视图映射到SVG坐标空间,并进行图形输出具体包括:
确定Model数据结构中属于所述视图的元素,并根据所述预设坐标映射算法,将元素和视图映射到所述SVG坐标空间,并调用API画出对应图形进行输出。
优选地,所述根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出具体包括:所述模型空间的坐标通过如下公式进行到SVG坐标空间的映射:
其中,modelPoint为所述模型空间需要转换的坐标点,modelCenter为所述模型空间的中心点,svgCenter为所述SVG坐标空间的中心点,paperWidth为所述图纸空间的宽度,paperHeight为所述图纸空间的高度,svgWidth为所述SVG坐标空间的宽度,svgHeight为所述SVG坐标空间的高度,svgPoint为与modelPoint对应的所述SVG坐标空间的坐标点,scale为模型空间到图纸空间的缩放比例。
优选地,所述根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出具体包括:所述图纸空间的坐标通过如下公式进行到SVG坐标空间的映射:
其中,paperPoint为所述图纸空间需要转换的坐标点,paperCenter为所述图纸空间的中心点,svgCenter为所述SVG坐标空间的中心点,paperWidth为所述图纸空间的宽度,paperHeight为所述图纸空间的高度,svgWidth为所述SVG坐标空间的宽度,svgHeight为所述SVG坐标空间的高度,svgPoint为与paperPoint对应的所述SVG坐标空间的坐标点。
优选地,所述图纸空间可以选取所述模型空间的元素信息进行显示。
优选地,解析的所述施工图纸为DWG文件格式,所述方法还包括:前端发送解析DWG文件格式的施工图纸的请求给后端。
另一方面,还提供了一种施工图纸预览系统,包括:
第一数据解析模块,用于通过解析所述施工图纸,获取所述施工图纸图纸空间的各个视图信息,并将所述各个视图信息保存至第一数据结构中;其中,所述图纸空间用以模拟所述施工图纸的平面空间;
第二数据解析模块,用于通过解析所述DWG文件格式的施工图纸,获取所述施工图纸模型空间的各个元素信息,并将所述各个元素信息保存至第二数据结构中;其中,所述模型空间用以模拟所述施工图纸的实体空间;
数据生成模块,用于根据所述第一数据结构以及所述第二数据结构生成第一文件;
第三数据解析模块,用于接收所述第一文件并解析所述第一文件中的第一数据结构以及第二数据结构,获取各个视图信息以及各个元素信息;
映射模块,用于根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出。
优选地,解析的所述施工图纸为DWG文件格式,所述第一数据结构为Layout数据结构,所述第二数据结构为Model数据结构,所述第一文件为JSON文件。
优选地,还包括:数据遍历模块,用于分别遍历Layout数据结构以及Model数据结构;
所述映射模块具体用于,确定Model数据结构中属于所述视图的元素,并根据所述预设坐标映射算法,将元素和视图映射到所述SVG坐标空间,并调用API画出对应图形进行输出。
本发明的实施例具有以下有益效果:
上述方案中,有效的提出了一种Web版施工图纸的在线预览方法及其系统,后端通过解析家装设计软件输出的DWG文件格式的施工图纸,获取所述施工图纸图纸空间的各个视图信息,并将所述各个视图信息保存至第一数据结构中;其中,所述图纸空间用以模拟所述施工图纸的平面空间;后端通过解析所述DWG文件格式的施工图纸,获取所述施工图纸模型空间的各个元素信息,并将所述各个元素信息保存至第二数据结构中;其中,所述模型空间用以模拟所述施工图纸的实体空间;根据所述第一数据结构以及所述第二数据结构生成即JSON文件,并发送至前端;前端解析所述JSON中的第一数据结构以及第二数据结构,获取各个视图信息以及各个元素信息;根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出。应用此方法的施工图纸预览工具在后台中产生并解析DWG文件数据,并转化成设计师等家装设计用户预览工具能够识别的JSON数据,因此DWG文件对于设计师等家装设计用户来说是无感知的,并不需要安装AutoCAD通过预览工具便可以看到AutoCAD的显示效果,随时可以预览施工图纸进而进行修改。是对现有的在线家装设计软件的一个有益的补充,可以让在线家装设计软件提供一站式的解决方案给家装设计用户,使用户摆脱对AutoCAD的依赖,提高设计效率,节省成本。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
由于现今家装设计软件最终的输出是DWG文件,也就是施工图纸,但家装设计软件自动产生的施工图纸是有缺陷的,设计师等家装设计用户需要随时调整设计,所以为了让设计师等家装设计用户能随时看到施工图纸的效果,就需要预览工具,可以实现不安装AutoCAD的前提下依然可以看到AutoCAD的显示效果。
如图1所示,为本发明实施例提供的一种施工图纸预览方法步骤流程图。本发明实施例提供一种施工图纸预览方法,包括:
S101:后端通过解析施工图纸,获取所述施工图纸图纸空间的各个视图信息,并将所述各个视图信息保存至第一数据结构中;其中,所述图纸空间用以模拟所述施工图纸的平面空间。具体地,本发明实施例中解析的施工图纸为DWG文件格式,进而实现DWG文件对于设计师等家装设计用户来说是无感知的。其它文件格式的施工图纸只要能转化为中间的JSON文件,均可以应用本发明实施例提供的预览方法实现预览功能,并不做具体限制。
具体地,可以使用AutoCAD SDK ObjectARX对DWG文件进行解析。获取DWG文件图纸空间的各个视图信息,其中,视图信息包括:视图名称、图纸空间中心点信息、图纸空间长度、图纸空间宽度、模型空间原点、缩放比例,以及图纸空间的Text(文本),Leader(引线)等信息。具体地,本发明实施例中第一数据结构为Layout数据结构,即将获取到的图纸空间的各个视图信息存储到Layout数据结构中。
S102:后端通过解析所述DWG文件格式的施工图纸,获取所述施工图纸模型空间的各个元素信息,并将所述各个元素信息保存至第二数据结构中;其中,所述模型空间用以模拟所述施工图纸的实体空间。
具体地,模型空间各个元素信息包括:元素名称、位置、字体大小、文字、图层、旋转角度等信息,这些基本元素包括Line(线)、Dimension(尺寸标注)、Block(块)、Arc(圆弧)、Hatch(图案填充)、PolyLine(多线条)、Text(文本)、Leader(引线)、Symbol(符号)等。本发明实施例中,第二数据结构为Model数据结构,即将上述获取到的模型空间的各个元素信息存储到Model数据结构中。
如图2(a)所示,为本发明实施例提供的一种在线家装设计示意图。当设计师等家装设计用户需要对设计的施工图纸进行修改等操作之前可以对施工图纸进行预览,应用本发明实施例提供的施工图纸预览方法得到如图2(b)所示的本发明实施例提供的一种施工图纸预览效果示意图。其中,施工图纸模型空间是针对图形实体的空间,是放置几何模型的坐标空间(在家装设计中所有的模型,如床、桌子、门、墙等)。如图2(c)为本发明实施例提供的一种施工图纸预览效果进行放大后的示意图,在图2(c)中,最内侧灰色矩形框内的是模型空间内元素显示的效果,这个内侧灰色矩形框表示的是viewport(视口)(图2(d)是对图2(c)的一个局部放大,可以更清晰的表示模型空间的显示效果),两个灰色矩形框中间的部分表示的是图纸空间,在这部分空间通常放一些标题、引线等信息。
优选地,所述图纸空间可以选取所述模型空间的元素信息进行显示。
通俗的讲,模型空间用来放置各种模型的信息,图纸空间会通过一个视口把模型空间的信息显示在图纸空间,在这个基础上在补充一些标题、图例、作者、日期、缩放比例等形成了完整的图纸空间。因此这个视口需要指定把模型空间的哪一部分显示到图纸空间,这就需要指定5个数据(图纸空间的中心点、长度、宽度、图纸空间中心点所对应的模型空间的原点以及缩放比例)。
S103:根据所述第一数据结构以及所述第二数据结构生成第一文件,并将所述第一文件发送至前端;具体地,即本发明实施例中,根据存储各个视图信息的Layout数据结构以及存储各个元素信息的Model数据结构预览工具能够识别的JSON文件。
具体地,如图3所示,为本发明实施例提供的一种JSON文件格式示意图。本发明实施例中的JSON文件的数据格式,主要分三个结构:
1.Meta数据结构描述元数据信息,unit表示单位信息,designid对应的设计文档ID;
2.Model用于描述模型空间的元素,所有的元素放在entities下面;
3.Layout用于描述图纸空间,一个Layout可以由多个view(视图)构成,view与AutoCAD的viewport(视口)相对应,view决定了哪些模型空间的元素属于这个Layout。同时一个Layout也可以显示一些元素,这些元素可以是Line,Block,PolyLine,Text,Leader,Symbol,只是这些元素的坐标都对应的是图纸空间的坐标。
S104:前端解析所述第一文件的第一数据结构以及第二数据结构,获取各个视图信息以及各个元素信息。即前端解析JSON文件中Layout数据结构以及Model数据结构。
其中,本发明实施例中提及的后端和前端为本领域技术人员所公知的b/s结构中后端和前端,也就是后端对应的是服务器端,前端对应的是浏览器端。
具体地,前端解析JSON文件中Layout数据结构,获得各个视图信息,即视图名称、图纸空间中心点信息、图纸空间长度、图纸空间宽度、模型空间原点、缩放比例,以及图纸空间的Text(文本),Leader(引线)等信息。前端解析JSON文件中Model数据结构,获得各个元素信息,以及根据视图的坐标和Model数据结构中元素的坐标来确定元素与视图的关系。具体实例说明,视口viewport的坐标信息确定了一个四边形,基本元素如一条线它有起始和结束两个点,这条线要在这视口viewport中显示,就意味着这两个点的坐标都在视口这个四边形内。即通过判断点是否在多边形内,来决定这个基本元素是否被显示。
S105:根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出。优选地,步骤S105之前,还包括:S1041(未示出):分别遍历Layout数据结构以及Model数据结构;则步骤S105为:确定Model数据结构中属于所述视图的元素,并根据所述预设坐标映射算法,将元素和视图映射到所述SVG坐标空间,并调用API画出对应图形进行输出。具体地,外层循环遍历Layout数据结构得到视图信息,然后在内层循环遍历Model数据结构,判断model中哪些基本元素属于这个视图,把属于这个视图的调用预设模型空间坐标映射算法,映射到SVG坐标空间,并调用API画出来。同时对于Layout中的基本元素主要是Text和Leader调用图纸空间的坐标映射算法映射到SVG坐标空间,并调用API画出来。
具体地,根据预设坐标映射算法即预设模型空间坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出具体包括:所述模型空间的坐标通过如下公式进行到SVG坐标空间的映射:
其中,modelPoint为所述模型空间需要转换的坐标点,modelCenter为所述模型空间的中心点,svgCenter为所述SVG坐标空间的中心点,paperWidth为所述图纸空间的宽度,paperHeight为所述图纸空间的高度,svgWidth为所述SVG坐标空间的宽度,svgHeight为所述SVG坐标空间的高度,svgPoint为与modelPoint对应的所述SVG坐标空间的坐标点,scale为模型空间到图纸空间的缩放比例(即图纸空间的1个单位对应模型空间的多少单位)。
具体地,根据预设坐标映射算法即预设图纸空间坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出具体包括:所述图纸空间的坐标通过如下公式进行到SVG坐标空间的映射:
其中,paperPoint为所述图纸空间需要转换的坐标点,paperCenter为所述图纸空间的中心点,svgCenter为所述SVG坐标空间的中心点,paperWidth为所述图纸空间的宽度,paperHeight为所述图纸空间的高度,svgWidth为所述SVG坐标空间的宽度,svgHeight为所述SVG坐标空间的高度,svgPoint为与paperPoint对应的所述SVG坐标空间的坐标点。
具体地,根据预设坐标映射算法即预设模型空间长度映射算法,模型空间长度采用如下公式映射到SVG空间长度:
其中,modelLength为模型空间需要转换的长度,paperWidth为图纸空间的宽度,svgWidth为SVG坐标空间的宽度,scale为模型空间和图纸空间的缩放比例,svgLength为modelLength转换后对应SVG空间的长度。
具体地,根据预设坐标映射算法即预设图纸空间长度映射算法,图纸空间长度采用如下公式映射到SVG空间长度:
其中,paperLength为图纸空间需要转换的长度,paperWidth为图纸空间的宽度,svgWidth为SVG坐标空间的宽度,svgLength为paperLength转换后对应SVG空间的长度。
优选地,本发明实施例提供的一种施工图纸预览方法,在步骤S101之前还包括:S100(未示出):前端发送解析DWG文件格式的施工图纸的请求给后端。
应用本发明实施例提供的预览方法的施工图纸预览工具在后台中产生并解析DWG文件数据,并转化成设计师等家装设计用户预览工具能够识别的JSON数据,因此DWG文件对于设计师等家装设计用户来说是无感知的,并不需要安装AutoCAD通过预览工具便可以看到AutoCAD的显示效果,随时可以预览施工图纸进而进行修改。是对现有的在线家装设计软件的一个有益的补充,可以让在线家装设计软件提供一站式的解决方案给家装设计用户,使用户摆脱对AutoCAD的依赖,提高设计效率,节省成本。
另一方面,如图4所示,为本发明实施例提供的一种施工图纸预览系统示意图。本发明实施例提供的施工图纸预览系统包括:
第一数据解析模块401,用于通过解析施工图纸,获取所述施工图纸图纸空间的各个视图信息,并将所述各个视图信息保存至第一数据结构中;其中,所述图纸空间用以模拟所述施工图纸的平面空间;具体地,本发明实施例中解析的施工图纸为DWG文件格式,进而实现DWG文件对于设计师等家装设计用户来说是无感知的。
第二数据解析模块402,用于通过解析所述施工图纸,获取所述施工图纸模型空间的各个元素信息,并将所述各个元素信息保存至第二数据结构中;其中,所述模型空间用以模拟所述施工图纸的实体空间;
数据生成模块403,用于根据所述第一数据结构以及所述第二数据结构生成第一文件;
第三数据解析模块404,用于接收所述第一文件并解析所述第一文件中的第一数据结构以及第二数据结构,获取各个视图信息以及各个元素信息;
映射模块405,用于根据预设坐标映射算法,将相应的元素信息和视图信息映射到SVG坐标空间,并进行图形输出。
具体地,可以使用AutoCAD SDK ObjectARX对DWG文件进行解析。获取DWG文件图纸空间的各个视图信息,其中,视图信息包括:视图名称、图纸空间中心点信息、图纸空间长度、图纸空间宽度、图纸空间原点、缩放比例,以及图纸空间的Text(文本),Leader(引线)等信息。具体地,本发明实施例中第一数据结构为Layout数据结构,即将获取到的图纸空间的各个视图信息存储到Layout数据结构中。
具体地,模型空间各个元素信息包括:元素名称、位置、字体大小、文字、图层、旋转角度等信息,这些基本元素包括Line(线)、Dimension(尺寸标注)、Block(块)、Arc(圆弧)、Hatch(图案填充)、PolyLine(多线条)、Text(文本)、Leader(引线)、Symbol(符号)等。本发明实施例中,第二数据结构为Model数据结构,即将上述获取到的模型空间的各个元素信息存储到Model数据结构中。
优选地,第一文件为预览工具能够识别的JSON文件。即本发明实施例中,根据存储各个视图信息的Layout数据结构以及存储各个元素信息的Model数据结构生成JSON文件。
具体地,本发明实施例提供的施工图纸预览系统还包括:数据遍历模块4040(未示出),用于分别遍历Layout数据结构以及Model数据结构。
具体地,映射模块405具体用于,确定Model数据结构中属于所述视图的元素,并根据所述预设坐标映射算法,将元素和视图映射到所述SVG坐标空间,并调用API画出对应图形进行输出。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
此说明书中所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同物理上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
在本发明各方法实施例中,所述各步骤的序号并不能用于限定各步骤的先后顺序,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,对各步骤的先后变化也在本发明的保护范围之内。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。