一种Web中显示dwg格式图纸的方法及系统与流程

文档序号:33709599发布日期:2023-03-31 23:08阅读:904来源:国知局
一种Web中显示dwg格式图纸的方法及系统与流程
一种web中显示dwg格式图纸的方法及系统
技术领域
1.本发明涉及数据处理技术领域,具体涉及一种web中显示dwg格式图纸的方法及系统。


背景技术:

2.在工程作业实践中,设计院、建筑公司、甲方与业主之间通常会使用autocad软件默认的dwg格式进行沟通交流,不会用到dxf格式。各方仅会保存供审批、存档的纸质图纸以及供交流的dwg图纸。随着办公用房、公租房数字化监管需求的不断提出,需要在web端进行dwg图纸的功能。因dwg为二进制格式,javascript脚本无法正常解析,因此,目前在web端展示cad的dwg图纸的基本做法是先安装cad插件,浏览器再从服务器下载cad图纸并利用插件进行显示。但是插件的数据量一般为40m左右,用户需要等待接近20秒的时间才能完成cad插件的安装,再加上dwg图纸的解析与加载,用户需要等待的时间一般介于25-30秒之间。
3.为了解决上述问题,申请号为2016101863905的发明专利申请揭示了一种在web端无插件展示cad图纸的方法及装置,所述方法包括:服务器将客户端请求的cad图纸文件读出并解析,分析出cad图纸中包含的所有cad对象及其属性值,解析完成后将所有对象数据封装成json数据/xml数据格式发送给客户端;客户端采用javascript脚本解析出所述json数据/xml数据中的所述所有cad对象及其属性值,并将所述cad对象的坐标转换为本地canvas控件的坐标,在canvas控件中绘制出cad图纸。本发明实现了web端无插件展示cad图纸,可兼容目前所有主流的浏览器、操作平台和系统,易于开发、推广。分析现有技术的申请文件可知,现有技术中以经预先将cad图纸转换为了dxf(drawing interchange format时或者drawing exchange format,绘图交换格式)文件并上传到服务器,dxf文件为javascript脚本可读的矢量文件。然后服务器将被封装为json(javascript object notation,javascript对象表示法)文件的dxf文件发送至web端。web端再解读json文件以显示dwg图纸中的各个对象。但是,现有技术中并未公开如何将dwg图纸转换为dxf格式的过程,现有技术本质上是一种dxf文件的web端显示,如果此时用户并无处理好的dxf文件时是无法在web端显示dwg图纸的。
4.发明人调研后得知,目前dxf文件的来源有两种:第一种是使用autocad软件直接转换而来,这种转换方法的输出结果准确,且可以直接使用。但是,autocad软件只能部署在pc(personal computer,个人电脑)端。也就是说,使用现有技术需要先在pc端将dwg图纸转换为dxf文件,然后将dxf文件导入到服务端,然后客户端再向服务端发起数据请求实现dwg图纸在web端的显示,导致流程较为复杂,如果图纸数量较多时,会极大的增加工作量以及出错的风险。而且,web服务的部署架构一般为“客户端-服务器”,其服务器绝大多数都部署在linux系统上,linux系统上无法运行autocad,无法转换dwg为dxf。因此,使用部署在服务端的第三方软件将dwg图纸转换为dxf格式文件是一个较为理想的选择。但是,使用第三方软件将dwg图纸转换为dxf文件,但是在转换时会存在较多的乱码。因此,在没有dxf文件的情况下,如何在服务端将dwg图纸转换为无乱码的dxf文件,进而实现将dwg图纸在web端直
接显示是亟待解决的技术问题。


技术实现要素:

5.在实际运用中,目前行业上房地产交付清单内,cad图都是dwg格式的,本发明所要解决的技术问题在于用户并无处理好的dxf文件时,将dwg图纸在web端直接显示。
6.本发明通过以下技术手段实现解决上述技术问题的:
7.本发明提供了一种web中显示dwg格式图纸的方法,应用于服务端,所述方法包括:
8.s1:获取dwg文件,使用中文编码将dwg图纸中的中文字符转换为第一解析结果,使用可变长度字符编码将第一解析结果转换为第二解析结果,其中,所述中文编码包括:gb2312编码;
9.s2:将第二解析结果封装为dxf文件,将dxf文件并发送至web端,所述web端用于将所述dxf文件转换为json文件,并根据json文件绘制图纸。.
10.可选的,所述s1步骤包括:
11.获取dwg图纸,解析dwg图纸对应的版本号是否为早期版本,其中,所述早期版本包括:cad2004版本以及cad2004以前的版本;
12.若是,使用预设中文编码将dwg图纸中的中文字符转换为第一解析结果,再使用可变长度字符编码将第一解析结果转换为第二解析结果,所述可变长度字符编码包括:utf-8编码;
13.若否,使用可变长度字符编码将dwg图纸中的中文字符转换为第二解析结果。.
14.本发明还提供了一种web中显示dwg格式图纸的方法,应用于web端,所述方法包括:
15.接收如上述的服务端发送的dxf文件;
16.解析所述dxf文件并转换为json文件,并根据json文件将dwg图纸在web端显示。
17.可选的,所述根据json文件将dwg图纸在web端显示,包括:
18.使用threejs工具绘制json文件中的线条信息;
19.使用canvas工具创建图片纹理,使用系统字体将json文件中的标注信息标注在图片纹理中;
20.根据房间特征识别出cad图纸中房间对应的多边形,将标注后的图片纹理贴图贴在对应房间的多边形中。
21.可选的,所述使用threejs工具绘制json文件中的线条信息,包括:
22.使用threejs工具读取出json文件中包含的各个线条的图层信息,根据所属图层类别对各个线条进行分类处理,得到线条分类;
23.针对每一个线条分类,创建专属图层并为所述专属图层赋予z坐标值,将所述线条分类中的每一个线条绘制在所述专属图层上,且任意两个专属图层的z坐标值之差大于或者小于零,z轴垂直于屏幕所在平面。
24.可选的,在使用threejs工具绘制json文件中的线条信息时,所述方法还包括:
25.生成置顶图层,将所述多边形的线条复制在所述置顶图层上,且所述置顶图层对应的z坐标值为所有z坐标值的最大值,其中,所述置顶图层为透明图层或者半透明图层;
26.捕捉用户针对房间的点击事件,获取用户所点击房间,将所述房间渲染显示。
27.可选的,所述使用系统字体将json文件中的标注信息标注在图片纹理中,包括:
28.获取dwg中标注信息的线条信息,以及对应的标注信息;
29.使用threejs工具绘制json文件中的线条信息绘制在贴图上,使用canvas工具将标注信息绘制在所述贴图上,将所述贴图做作为图片纹理使用。
30.可选的,所述使用系统字体将json文件中的标注信息标注在图片纹理中,包括:
31.解析json文件中的标注信息,根据用户的视觉焦点区域分布,获取用户针对dwg图纸中各个标注信息的查看时长以及查看顺序,按照顺序将各个标注信息进行排序,得到第一标注信息序列;
32.针对所述第一标注信息序列中的每一个目标标注信息,查看第一标注信息序列中位于目标标注信息之后是否存在相同的标注信息,若是,将与目标标注信息相同的标注信息合并至目标标注信息中,得到第二标注信息序列;
33.针对第二标注信息序列中的每一个标注信息,根据所述标注信息对应的查看时长、查看顺序以及分别对应的权重,计算出每一个标注信息的重要性得分值,并根据所述重要性得分值对标注信息进行排序得到目标标注信息序列;
34.针对所述目标标注信息序列,生成一个转换器,并使用所述转换器将目标标注信息序列中的标注信息按顺序写入到图片纹理中。
35.可选的,所述将标注后的图片纹理贴图贴在对应房间的多边形中,包括:
36.将标注后的图片纹理的分辨率调低至预设值,得到缩小图像;再根据缩小图像的顶点与对应房间的多边形顶点之间映射关系将缩小图像进行尺寸放大,并将尺寸放大后的图片纹理贴图至所述多边形中;
37.或者,
38.在对应房间的多边形中生成标注框,且标注框位于所述多边形内部;将标注后的图片纹理的分辨率调低至预设值,得到缩小图像;再根据缩小图像的顶点与标注框顶点之间映射关系将缩小图像进行尺寸放大,并将尺寸放大后的图片纹理贴图至所述标注框中。
39.本发明还提供了一种web中显示dwg格式图纸的系统,所述系统包括:服务端和web端,其中,
40.所述服务端用于执行如权利要求1或2所述的方法;
41.所述web端用于执行如权利要求3-9任一项所述的方法。
42.本发明的优点在于:
43.应用本发明实施例,发明人出人意料的发现,先将dwg图纸中的中文字符强制转换为gb2312编码得到第一解析结果;再将第一解析结果转换为utf-8编码格式,得到第二解析结果;将第二解析结果封装为dxf文件可以解决全部的乱码问题。
附图说明
44.图1为本发明实施例提供的一种web中显示dwg格式图纸的方法的流程示意图;
45.图2为本发明实施例提供的一种web中显示dwg格式图纸的方法的原理示意图;
46.图3为本发明实施例提供的一种web中显示dwg格式图纸的方法的另一种原理示意图;
47.图4为本发明实施例提供的web中显示dwg图纸的系统结构示意图。
具体实施方式
48.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.实施例1
50.图1为本发明实施例提供的一种web中显示dwg格式图纸的方法的流程示意图,图2为本发明实施例提供的一种web中显示dwg格式图纸的方法的原理示意图,如图1和图2所示,应用于服务端,所述方法包括:
51.s1:获取dwg文件,使用中文编码将dwg图纸中的中文字符转换为第一解析结果,使用可变长度字符编码将第一解析结果转换为第二解析结果,其中,所述中文编码包括:gb2312编码。
52.发明人在实际图纸转换过程中发现,常见的dwg图纸为二进制格式,其格式为:0x12 0x21 0bf之类;dxf文件使用坐标点进行数据表示,其数据格式为:
53.point
54.12
55.23
56.32
57.dwg格式与dxf格式为两种不同的数据格式,格式的不同导致在使用第三方转换文件将dwg图纸转后在web端显示时,会在dwg文件的标注信息部分以及块部分产生乱码,例如,在dwg文件中的构件名称标注,以及引线标注出现乱码。根据数据解析流程,具体出现乱码的环节为dwg图纸到dxf文件,以及dxf文件到json文件。另外,由于构件名称标注以及引线标注中均包含中文字符,因此,发明人猜测可能是中文编码的问题导致了web端从服务端获取数据以实现dwg时出现乱码。基于此,发明人强制将所有的dwg图纸中的中文字符强制转换为gb2312编码下的字符,在web端进行dwg图纸显示时发现可以解决部分乱码的问题,并不能完全解决web端显示dwg图纸中的所有乱码。
58.后来发明人出人意料的发现,先将dwg图纸中的中文字符强制转换为gb2312编码得到第一解析结果;再将第一解析结果转换为utf-8编码格式,得到第二解析结果;将第二解析结果封装为dxf文件可以解决全部的乱码问题。
59.s2:将第二解析结果封装为dxf文件,将dxf文件并发送至web端,所述web端用于将所述dxf文件转换为json文件,并根据json文件绘制图纸。
60.本发明实施例s2步骤可以使用现有的web解析与现实算法实现,本发明实施例在此不再进行赘述。
61.应用本发明实施例1,发明人出人意料的发现,先将dwg图纸中的中文字符强制转换为gb2312编码得到第一解析结果;再将第一解析结果转换为utf-8编码格式,得到第二解析结果;将第二解析结果封装为dxf文件可以解决全部的乱码问题。
62.实施例2
63.基于本发明实施例1,实施例2在实施例1的基础上对s1步骤进行了细化处理:
64.s101(图中未示出):获取dwg图纸,解析dwg图纸对应的版本号是否为早期版本,其
中,所述早期版本包括:cad2004版本以及cad2004以前的版本;若是,执行步骤s102;若否,执行步骤s103。
65.经过分析,发明人意外的发现,使用第三方软件时,产生标注信息乱码的图纸均出现在2004及之前版本的dwg图纸中。经过深入研究调研,发现设计规范“open design specification for dwg files(dwg图纸开放设计规范)”中使用“codepage”字段存储dwg图纸所使用的字符集类型。进一步的,发明人对文件源码进行解析后发现,dwg文件中使用诸如“936”之类的字符表示使用的字符集类型,但是,设计规范中仅规定了“codepage”字段的长度以及存储位置,并未给出dwg文件使用的数字与字符集类型之间的对应关系。由于字符集的种类有数百种,导致诸如libdxfrw等第三方工具不能正确解析出“codepage”字段存储的dwg图纸所用字符集类型与实际字符集类型之间的关系,因此,libdxfrw只能使用相似字符集或者使用默认字符集,而且,发明人发现第三方工具默认字符集大多为欧洲字符集,欧洲字符集与中文编码存在较大差异使用欧洲字符集解析中文字符会导致中文乱码。
66.而2007及之后的版本使用的是unicode编码,unicode编码在转换时不会出现乱码,进而在进行dwg图纸进行转换时容易在2004及之前的版本的图纸标注信息中出现乱码。可以理解的是,每一种编码方式对应一种字符集类型。
67.s102(图中未示出):使用预设中文编码将dwg图纸中的中文字符转换为第一解析结果,再使用可变长度字符编码将第一解析结果转换为第二解析结果,所述可变长度字符编码包括:utf-8编码。.
68.本技术中先使用libdxfrw工具将cad2004版本以及cad2004以前的版本dwg图纸中的中文字符转换为gb2312编码格式,得到第一解析结果。在web端进行dwg图纸显示时发现这样处理可以解决部分乱码的问题,并不能完全解决web端显示dwg图纸中的所有乱码。
69.然后,再使用libdxfrw工具将第一解析结果转换为utf-8编码格式得到第二解析结果;将第二解析结果与libdxfrw工具解析出的线条信息封装为dxf文件可以解决全部的乱码问题。
70.s103(图中未示出):使用可变长度字符编码将dwg图纸中的中文字符转换为第二解析结果。
71.具体的,2007及之后的版本使用的是unicode编码,unicode编码可以与任何编码格式实现无损转换,可以将dwg图纸中的中文字符直接转换为utf-8编码格式。
72.应用本发明实施例2,相对于本发明实施例1中对全部版本进行转换的方法,实施例2中仅针对cad2004版本以及cad2004以前的版本dwg图纸中的中文字符转换为gb2312编码格式,再转换为utf-8格式,也就是说,仅针对较老版本的dwg图纸中的中文字符进行两次编码格式转换,相对于实施例1将所有的版本的dwg图纸中的中文字符进行两次编码格式转换,所需转换的图纸数量更少,运算量更少,执行效率更高。
73.实施例3
74.与实施例1或实施例2相对应,本发明实施例3提供了一种web中显示dwg格式图纸的方法,应用于web端。图3为本发明实施例提供的一种web中显示dwg格式图纸的方法的另一种原理示意图,如图3所示,接收如实施例1或实施例2所述的服务端发送的dxf文件;
75.解析所述dxf文件并转换为json文件,并根据json文件将dwg图纸在web端显示。
76.web端将文本格式的dxf文件转换为json文件,常见的json文件的数据格式为:
77.json:
78.{
79.type:"point",
80.x:23,
81.y:32
82.}
83.然后,浏览器web端读取json文件,根据json文件绘制线条与标注信息。
84.应用本发明实施例,根据不同版本的dwg图纸采用不同的处理方式,进而在进行标注信息转换时使用正确的字符集,可以在服务端将dwg图纸转换为无乱码的dxf文件,进而使服务器可以直接接收dwg图纸,可以在无dxf文件的情况下,在web端无乱码的显示出dwg格式的图纸。
85.进一步的,可以使用threejs工具读取出json文件中包含的各个线条的图层信息,根据所属图层类别对各个线条进行分类处理,得到线条分类;即,将归属于同一个图层的线条划分到同一个线条分类中。
86.针对每一个线条分类,创建专属图层并为所述专属图层赋予z坐标值,将所述线条分类中的每一个线条绘制在对应的专属图层上,且任意两个专属图层的z坐标值之差的绝对值大于零,即二者z坐标值之差可以为正值也可以为负值,且z轴垂直于屏幕所在平面。
87.例如,墙体构造线被划分到了线条分类1,门窗构造线被划分到了线条分类2,依此类推。
88.然后,将线条分类1中所有的线条绘制在图层1中,并为图层1赋予z坐标值0.1;将线条分类2中所有的线条绘制在图层2中,并为图层2赋予z坐标值0.2;将线条分类3中所有的线条绘制在图层3中,并为图层3赋予z坐标值0.3,依此类推,得到多个图层,任意两个图层的z坐标值不相等。
89.然后在web界面中构造三维空间,然后根据z坐标值将各个图像分层显示。在dwg图纸为二维图纸时,以俯视图的角度将三维空间展示给用户。在dwg图纸为不同图层分布在不同z坐标值高度位置的三维图纸时,可以直接绘制。
90.应用本发明实施例,可以使用三维方法构造出二维dwg图像的同时,还在进行三维图像构造时,仅需改变赋值规则即可,便于根据二维图像构造三维图像,无需另行新开发代码,进而提高了工作效率。
91.进一步的,可以为每一个楼层赋第一值,同时为该楼层的dwg图纸中的图层赋第二值,第一值比第二值大至少一个数量级,例如,一楼对应的第一值为1,则一楼的dwg图纸中的图层的取值可以为0.1、0.2、0.3,或者0.01、0.02、0.03等。归属于同一楼层的各个图层之间的z坐标值不重复。这样就可以把归属为同一楼层的图层的z坐标值划分为同一取值簇中,进而使同一楼层的图层之间的相互距离更加接近,避免混乱。在用户选择观察整个楼栋的图纸时,将每一个楼层的图层压缩到同一个图层中显示;在用户选择了其中一个楼层的图纸时,隐藏其他楼层的图纸,然后向用户展示该楼层对应三维空间的俯视图,其中,三维空间的构造过程如前所述。这样可以避免因为同时显示整栋楼的图纸以及每一层的不同图层导致线条标注信息过多导致的混乱,提高用户体验。
92.应用本发明实施例,可以根据二维图像构造三维图像,向用户展示图像时,可以使
用户更加直观的观看到每一个楼层的空间位置以及各楼层中各房间的空间位置。
93.进一步的,还可以在web页面的侧边栏显示各个图层的显隐图标,当用户点击显隐图标时控制三维空间中各个图层的显隐状态。
94.实施例4
95.本发明实施例4在实施例3的基础上增加了以下步骤:
96.发明人发现,在3d场景中绘制二维dwg图纸的过程中,在web端根据json文件进行线条与标注信息的绘制时,偶尔也会出现乱码,发明人分析发现,其原因是web端读取json文件之后,html5 canvas工具在3d场景中不能使用系统字体,进而导致在字符绘制时出现错误。现有技术中通常是使用适用于3d场景的官方字符集解决此问题,一方面字符集数据量约20-30m下载需要占用带宽,另一方面即使利用官方字符集进行标注信息的字符绘制时也会存在乱码。
97.为了解决上述问题,本发明实施例中使用threejs工具绘制json文件中的线条信息;使用canvas工具创建图片纹理,使用系统字体将json文件中的标注信息标注在图片纹理中;根据房间特征识别出cad图纸中房间对应的多边形,将标注后的图片纹理贴图贴在对应房间的多边形中。
98.具体的,使用threejs工具绘制json文件中的线条信息;再使用html5 canvas工具创建一个内存位图,然后将json文件中标注信息文字绘制在内存位图中;在内存位图中绘制文字可以使用系统字体,最后将内存位图作为纹理图像贴在dwg图中上对应位置,如房间对应的多边形中。
99.纹理是图像中一个重要而又难于描述的特性,习惯上把局部不规则而宏观有规律的特性称之为纹理。以纹理特性为主导的图像,常称为纹理图像,以纹理特性为主导特性的区域,常称为为区域。纹理作为一种区域特性,只有在图像的一定区域上才能反映或者测量出来。
100.应用本发明实施例,使用canvas在内存中创建了图片纹理,在图片纹理上绘制标注信息,再将图片纹理贴到房间的多边形上,不但达到了房间标注的功能,还解决了在dxf文件转换以及json文件读取过程中标注信息乱码的问题,还可以避免下载3d场景下的官方字符集导致的带宽占用以及时间消耗的问题。
101.进一步的,在使用系统字体将json文件中的标注信息标注在图片纹理中的过程中,可以解析json文件中的标注信息,得到由文字组成的每一个标注信息,该标注信息可以为词组、语句、段落中的一种或组合。针对每一个标注信息,获取用户查看每一个标注信息的开始时刻、结束时刻,进而得到用户查看每一个标注信息的时长以及查看顺序。具体来说,可以跟踪用户眼球的运动轨迹定位出用户查看的位置,或者跟踪用户鼠标的运动轨迹进而得到用户在每一个标注信息上的停留时长以及停留顺序,将停留时长作为查看时长,将停留顺序作为查看顺序。应用本发明上述实施例,根据用户的查看顺序进行标注信息的优先显示,可以在满足用户需求的同时,尽可能的减少渲染过程耗时对用户体验的影响。
102.按照顺序将各个标注信息进行排序,得到第一标注信息序列,如标注信息1、标注信息2、标注信息3、标注信息4、标注信息5、标注信息6、标注信息7、标注信息8、标注信息9、标注信息10、...。
103.针对所述第一标注信息序列中的每一个目标标注信息,以目标标注信息为“标注
信息1”为例,查看第一标注信息序列中位置在“标注信息1”之后的其他标注信息是否存在字符完全一致的标注信息,例如,“标注信息6”、“标注信息8”中的字符与“标注信息1”的字符完全一致,将“标注信息6”、“标注信息8”与“标注信息1”合并,则可以将第一标注信息序列转换为第二标注信息序列:
104.标注信息1、标注信息2、标注信息3、标注信息4、标注信息5、标注信息7、标注信息9、标注信息10、...。应用本发明上述实施例,将相同的标注信息进行合并,对第一标注信息序列进行简化,这样可以避免重复的生成相同的标注信息,进而提高了显示速度。
105.针对第二标注信息序列中的每一个标注信息,根据所述标注信息对应的查看时长、查看顺序、用户历史查看次数等以及分别对应的权重,计算出每一个标注信息的重要性得分值。在实际应用中,查看顺序的权重权重最大。根据所述重要性得分值对标注信息进行排序得到目标标注信息序列,因此,在得到目标标注信息序列时,第二标注信息序列与第一标注信息序列中各个标准信息的顺序并不会发生太大变化,避免了二次排序,同时兼顾了用户的查看习惯。
106.针对所述目标标注信息序列,生成一个转换器,并使用所述转换器将目标标注信息序列中的标注信息按顺序写入到图片纹理中。现有技术中通常是识别出一个标注信息就生成一个转换器,然后使用该转换器进行标注信息写入。如果存在790个标注信息则生成790个转换器,每生成一个转换器耗时0.01秒,则总耗时为7.9秒,延迟较高。本发明实施例中仅生成一个转换器,利用一个转换器进行标注信息的写入,可以节约出其他转换器的生成时间,进而提高了效率。
107.进一步的,还可以生成两个转换器,将目标标注信息序列裁切为两端,将排序在目标标注信息序列中前40%的标注信息分别交替分配至两个转换器进行写入,对于其他的标注信息随机分配至任一个转换器进行写入。这样可以提高重要性得分较高的标注信息的写入速度。
108.更进一步的,在进行合并后的标注信息的渲染显示时,根据合并的标注信息中各个标注信息在第一标注信息序列中的顺序进行渲染显示。例如,标注信息6与标注信息5合并为一个标注信息a,则针对标注信息a进行转换后进行写入操作时,先写入标注信息5,再写入标注信息6;类似的,注信息7与标注信息8合并为标注信息b,则针对标注信息b进行转换后进行写入操作时,先写入标注信息7,再写入标注信息8。这样可以降低写入时的并发,同时还可以兼顾到用户的查看顺序,保证了用户体验。
109.为了进一步降低图片纹理对内存的占用,将标注后的图片纹理的分辨率调低至预设值,得到缩小图像,缩小图像的分辨率降低后,其对应的数据量也得到了极大的压缩;再根据缩小图像的顶点与对应房间的多边形顶点之间映射关系将缩小图像进行尺寸放大,并将尺寸放大后的图片纹理贴图至所述多边形中。尺寸放大的过程仅仅进行像素点的放大,并不会增加数据量。
110.或者,在对应房间的多边形中生成标注框,且标注框位于所述多边形内部;将标注后的图片纹理的分辨率调低至预设值,得到缩小图像;再根据缩小图像的顶点与标注框顶点之间映射关系将缩小图像进行尺寸放大,并将尺寸放大后的图片纹理贴图至所述标注框中。
111.实施例5
112.基于本发明实施例1-4任一项,本发明实施例5增加了以下步骤:
113.在向用户展示了每一个楼层的dwg图纸时,根据房间特征识别出cad图纸中房间对应的多边形。具体来说,预先根据建筑图纸绘制规范中规定的房间线条的绘制要求,人工提取出对应的房间特征,建立房间特征与房间之间的映射关系。然后再在人机交互界面的房间特征输入表单中输入用户需要的房间特征,web端自动根据房间特征,参照前述映射关系提取出各楼层中的符合筛选条件房间的线条。在实际应用中,本发明实施例所述的房间是指,可以用于办公储物的设有门窗等隔档的封闭或半封闭区域,电梯井、电缆井等不能被计入房间的范畴。
114.然后,生成透明的置顶图层,将所述多边形的线条复制在所述置顶图层上,且所述置顶图层对应的z坐标值为所有z坐标值的最大值。在实际应用中,每一个楼层的图层的顶部均可以设置一个置顶图层,该置顶图层的z坐标值取值规则与该楼层的其他图层的z坐标值的取值规则相同,本发明实施例在此不再进行赘述。
115.然后,使用系统字体将json文件中的标注信息标注在图片纹理中,以方便用户根据标注信息了解房间的尺寸、用途、水电布设等信息。
116.最后,在向用户展示了该楼层的三维构造的俯视图之后,web端空间不断监听用户的点击事件,进而捕捉用户针对房间的点击事件,获取用户所点击房间,将所述房间渲染显示,例如,可以对用户选中的房间的多边形填充比较醒目的颜色进行显示。
117.应用本发明实施例,通过将房间的多边形复制在透明的置顶图层上显示,由于是俯视的角度显示三维构造空间,因此,当用户点击时会点击到透明的置顶图层,置顶图层上仅有多边形,并不含有其他线条,置顶图层隔绝了用户点击下方其他图层线条的可能,因此,在用户能够观察到其他线条的同时不会错选其他线条,方便用户点击,提高了用户体验。
118.进一步的,本发明实施例中,还可以在用户选择多边形区域中向用户展示附加贴图区域,并将用户输入的房间标注信息绘制在附加贴图区域中。
119.在本发明实施例5中,在透明图层生成完成之后就将多边形对应的线条复制渲染到透明图层上,这样会在用户于web端打开dwg图纸时形成运算量的集中执行,进而导致对设备运行压力较大的缺点。
120.为了解决上述问题,在本发明实施例的进一步改进技术方案中,在用户于web端打开dwg图纸时,仅生成各个图层的线条以及标注信息并向用户展示;在各图层线条及标注信息生成完成后生成透明的置顶图层。
121.然后,实时跟踪用户鼠标或者手指的移动速度,实时获取当前时刻时用户鼠标或者手指的当前坐标,根据当前坐标确定包含了当前坐标的目标多边形,将目标多边形对应的线条复制渲染到透明图层上;当用户点击了目标多边形,利用醒目的颜色填充目标多边形包围的区域。
122.应用本发明上述实施例,可以根据用户鼠标或者手指的移动轨迹进行多边形的渲染,可以避免渲染运算的集中运行导致的卡顿,或者设备硬件压力较大的问题,进而提高了dwg图纸在web端的显示速度。另外,由于向用户显示dwg图纸时,显示屏的法线方向平行于各图层的的z轴方向,因此,用户观察到的线条都是重叠的,即使在用户打开dwg图纸时候进行置顶图层上的多边形的渲染,用户也感受不到,也就是说,当用户的鼠标或者手指移动到
多边形上再进行多边形的渲染,并不会影响用户的视觉体验。
123.更进一步的,在本发明实施例的另一种具体实施方式中,生成各个图层中的线条的具体过程可以包括以下步骤:
124.从dxf文件转换得到的json文件中读取出每一个房间对应的所有线条以及标注信息;针对每一个房间的每一条边,获取该边对应的所有线条,从所有线条中抽取长度不短于该边长度的线条加入到优先渲染集合中;将所有房间的标注信息加入到优先渲染集合中。
125.在用户打开dwg图纸时,根据优先渲染集合中的内容进行线条以及标注信息的渲染。然后,实时跟踪用户鼠标或者手指的移动速度,实时获取当前时刻时用户鼠标或者手指的当前坐标,根据当前坐标确定包含了当前坐标的目标多边形,将目标多边形对应的线条复制渲染到透明图层上;当用户点击了目标多边形,利用醒目的颜色填充目标多边形包围的区域。
126.应用本发明上述实施例,相对于前一个实施例,可以进一步减少渲染运算的集中运行导致的卡顿,降低设备硬件压力,进一步提高dwg图纸在web端的显示速度。
127.实施例6
128.基于本发明实施例5,本发明实施例6增加了以下步骤:
129.发明人发现,现有技术中无法绘制出dwg图纸中的部分标注信息,例如长度标注、弧度标注等。本发明实施例中先将标注信息拆分,得到线条信息以及对应的标注信息,其中,标注信息为文字;使用threejs工具在贴图中绘制json文件中的线条信息,并使用实施例4中记载的方法,用canvas工具将标注信息绘制在贴图上,将贴图作为纹理图像使用。然后将所述线条信息与贴图组合为标注组合对象并显示在web界面中的对应位置。
130.应用本发明实施例,利用canvas工具结合纹理图像技术可以绘制出dwg图纸中的标注信息。
131.进一步的,由于标注信息中的文字部分尺寸比较小,使用纹理图像时由于顶点与被贴图的多边形区域顶点之间的吸合,导致问题图像填充了整个多边形,产生标注信息相对于线条的比例失真,进而导致用户体验下降。本发明实施例以房间内标注信息为例,在对应房间的多边形中生成标注框,且标注框位于所述多边形内部或者外部;标注框的尺寸相对于整张dwg图纸的比例等于实体dwg图纸中标注信息所占比例。然后将标注后的图片纹理的分辨率调低至预设值,得到缩小图像;再根据缩小图像的顶点与标注框顶点之间映射关系将缩小图像进行尺寸放大,并将尺寸放大后的图片纹理贴图至所述标注框中。
132.应用本发明实施例,通过约束标注框的尺寸实现纹理图像尺寸的约束,进而使标注信息的比例处于合理的范围。
133.实施例7
134.对应于实施例1-4任一项,本发明还提供了一种web中显示dwg格式图纸的方法,所述方法包括:
135.s1:获取dwg文件,使用中文编码将dwg图纸中的中文字符转换为第一解析结果,使用可变长度字符编码将第一解析结果转换为第二解析结果,其中,所述中文编码包括:gb2312编码;
136.s2:将第二解析结果封装为dxf文件,将dxf文件并发送至web端,所述web端用于将所述dxf文件转换为json文件,并根据json文件绘制图纸;
137.web端接收如实施例1-4任一项所述的服务端发送的dxf文件;
138.解析所述dxf文件并转换为json文件,并根据json文件将dwg图纸在web端显示。
139.实施例8
140.图4为本发明实施例提供的web中显示dwg图纸的系统结构示意图,如图4所示,本发明还提供了一种web中显示dwg格式图纸的系统,所述系统包括:所述系统包括:服务端20和web端10,其中,
141.所述服务端20用于执行如权利要求1或2所述的方法;
142.所述web端10用于执行如权利要求3-9任一项所述的方法。
143.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1