通用DWG图纸快速拆分方法与流程

文档序号:14594643发布日期:2018-06-05 04:05阅读:2152来源:国知局

本发明涉及一种通用DWG图纸快速拆分方法。



背景技术:

目前的DWG图纸拆分方法需要提前预设图纸信息,确定各图框坐标时,提前预设了限定信息,建立图签的特征关键字及其在所述图纸中的位置的图签特征模板,依赖于图层,依赖于图签,依赖于块信息。

而各设计院的绘图规范是不统一的,每个设计院都有自己的设计习惯,都有自己的图纸规范,无法做到各设计院图纸拆分的通用化。

因此,目前DWG图纸拆分方法无法实现通用,需要提前预设图纸信息,需要提前规定各设计院的绘图规范。



技术实现要素:

为了克服上述问题,本发明的目的在于提供一种不提前预设各种信息,依据几何关系确定图纸中的各图框坐标,做到不同设计习惯的各设计院通用的通用DWG图纸快速拆分方法。

为了解决上述问题,本发明采用以下技术方案:一种通用DWG图纸快速拆分方法,其特征在于,它包括如下步骤:

S1、遍历当前图纸的模型空间,找出属性为多段线的实体;

S2、从找出的多段线中筛选出全是由直线组成的闭合的多段线;

S3、判断多段线是否为矩形,并计算所有矩形多线段的面积;

S4、将所有矩形多线段按照面积从小到大排序;

S5、根据包含与被包含的关系,筛选出所有不被包含的矩形多线段;

S6、选择不被包含的矩形多线段内的实体作为选择集,拆分出新的图纸。

进一步的,步骤S3中,判断多线段为矩形的方法为:首先判断多线段顶点的个数是否为四个,若为四个,获取多段线各端点坐标,按顺序组成向量组;判断向量组中相邻向量是否两两垂直,如果出现一对相邻向量不垂直时,跳出此循环,说明该多段线不是矩形。

进一步的,步骤S5包括:将步骤S4中按照面积从小到大排序好的多线段组中的前一个矩形多线段,与后面所有矩形多线段比较,当出现被其他矩形多线段包含时,跳出此循环,将该矩形多线段排除,然后下一个矩形多线段进行上述比较,以此类推;筛选出不被所有其它矩形多线段包含的矩形多线段。

进一步的,判断一个矩形多线段被其他矩形多线段包含的方法是:将其中一个矩形多线段的顶点遍历,看该顶点是否出现在另一个矩形多线段的内部,当一个顶点出现在另一矩形多线段内部时,此矩形被另一个矩形多线段包含,不符合条件,只有所有顶点都在另一个矩形多线段外部时,此矩形多线段才不被另一矩形多线段包含。

进一步的,步骤S6包括:获取所有不被包含的矩形多线段两个对角的坐标点,进行存储;每个矩形多线段根据两个对角的坐标点,以窗交选择模式框选出矩形多线段内的实体作为选择集。

更进一步的,在选择矩形多线段内的实体前,对矩形多线段内的实体进行局部缩放,以保证所有实体位于矩形多线段内。

进一步的,针对每一个图纸信息,将选择集中包含的实体以写块的形式输出到一个临时图形数据库中,创建新的数据库,插入临时图形数据库,将新建的数据库以saveAs的形式存储为新的图纸。

本发明的有益效果如下:

本发明针对一张DWG图纸中有多幅图的情况下,进行快速拆分成多张DWG,不需要对图纸中图框做限定图层,图块等,也不预设各种图框坐标,完全根据几何关系自动识别图框并快速拆分多个DWG图纸,同时不修改图纸任何元素,不进行块的炸开,增强了图纸拆分的通用性,并且拆分速度快,提高了工作效率。

拆分时,不管当前视口中各图框之间的距离,以及视口中世界坐标跨度,与比例、图框大小无关,对各图框实体选择时模拟人工局部缩放,能够精确选中实体,做到准确拆分。

本发明不提前预设各种信息,依据几何关系确定图纸中的各图框坐标,做到了不同设计习惯的各设计院的通用。

附图说明

图1为本发明的流程图;

图2为一个DWG图纸示意图。

具体实施方式

下面结合附图对本发明的具体实施例做详细说明:

如图1所示,本发明首先获取图纸上所有矩形多线段,并计算其面积,具体的,获取矩形多线段并计算面积的方法如下:遍历当前图纸的模型空间,找出属性为多段线的实体;从找出的多段线中筛选出全是由直线组成的闭合的多段线;判断多段线是否为矩形,判断多线段为矩形的方法为:首先判断多线段顶点的个数是否为四个,若为四个,获取多段线各端点坐标,按顺序组成向量组;判断向量组中相邻向量是否两两垂直,如果出现一对相邻向量不垂直时,跳出此循环,说明该多段线不是矩形。计算所有矩形多线段的面积。

然后,将所有矩形多线段按照面积从小到大排序。

将排列好的矩形多线段根据包含与被包含的关系,筛选出所有不被包含的矩形多线段。具体的,按照面积从小到大排序好的多线段组中的前一个矩形多线段,与后面所有矩形多线段比较,当出现被其他矩形多线段包含时,跳出此循环,将该矩形多线段排除,然后下一个矩形多线段进行上述比较,以此类推;筛选出不被所有其它矩形多线段包含的矩形多线段。判断一个矩形多线段被其他矩形多线段包含的方法是:将其中一个矩形多线段的顶点遍历,看该顶点是否出现在另一个矩形多线段的内部,当一个顶点出现在另一矩形多线段内部时,此矩形被另一个矩形多线段包含,不符合条件,只有所有顶点都在另一个矩形多线段外部时,此矩形多线段才不被另一矩形多线段包含。

通过获取矩形多线段的两个相对角的坐标,选择不被包含的矩形多线段内的实体,并对实体进行局部缩放后,拆分出新的图纸。具体的,获取所有不被包含的矩形多线段两个对角的坐标点,进行存储;每个矩形多线段根据两个对角的坐标点,以窗交选择模式框选出矩形多线段内的实体。在选择矩形多线段内的实体前,对矩形多线段内的实体进行局部缩放,以保证所有实体位于矩形多线段内。

下面,结合附图2对本发明的具体实施例做详细描述:

图2为一个DWG图纸,包括两幅图A和B。

遍历图2中图纸的模型空间,经查验,图2的A幅图中有8个实体元素,其中,元素5是椭圆,其余都是多线段。B幅图中有7个实体元素,其中,元素12是椭圆,元素13为直线,其余都是多线段。因此,当前图纸中的多段线为除了元素5、12和13之外的其他元素,因为元素6不是全部由直线组成,因此被排除。元素2、7、11、14和15顶点个数不为4且不闭合被排除,因此,符合属性为多段线的实体、定点为四个、且闭合条件的元素只有元素1、3、4、8,9、10。此时,从数据库中获取当前符合要求的多段线的各点坐标,顺时针存储。根据向量是否垂直,判断4不符合垂直要求,因此,元素1、3、8,9、10为符合矩形要求的多段线。

依据上一步中的方法,获取所有矩形,计算各自矩形多段线的面积并存储。将矩形多线段按照面积从小到大排序。

在所有获取的矩形多线段中,形成矩形组。根据包含与被包含的关系,筛选出所有不被包含的图框。依次将前一个矩形多线段,与后面所有矩形多线段比较,当出现被其他矩形多线段包含时,跳出此循环,此矩形多线段不是合适的外包框,只有不被所有其它矩形多线段包含的时候,才是符合条件的矩形多线段。判断两个矩形多线段包含与被包含算法是将其中一个矩形多线段的顶点遍历,看该顶点是否出现在另一个矩形多线段的内部,当一个顶点出现在另一矩形多线段内部时,此矩形多线段被另一个矩形多线段包含,不符合条件,只有所有顶点都在另一个矩形多线段外部时,此矩形多线段才不被另一矩形多线段包含。

一个点是否在矩形多线段内的判断:假设P为待判断点,矩形多线段四个顶点P1,P2,P3,P4,只需要判断如下表达式:

|P2P|X|P1P2|*|P3P|X|P3P4|<=0And|P1P|X|P1P4|*|P2P|X|P2P3|<=0(计算叉乘),此表达式成立时表明点P在矩形内部。

通过上述方法,找到合适矩形多线段为元素1和元素9,获取元素1和元素9两个对角的坐标点,x值最小点且y值最小点以及x值最大点且y值最大点(即左下角和右上角坐标)并进行存储。如图2中A的左下角和右上角坐标(X1,Y1)和(X2,Y2)。B的左下角和右上角坐标(X3,Y3)和(X4,Y4)。

由于附幅图A中元素2的局部位于元素1外部,因此,对元素2进行缩放,使其全部位于元素1内。

在当前未被拆分图纸上的图形窗口中,A幅图和B幅图根据左下角点和右上角点,以窗交选择模式框选出元素1和元素9内的选择集。

针对每一个图纸信息,将选择集中包含的实体以写块的形式输出到一个临时图形数据库中,创建新的数据库,插入临时图形数据库,将新建的数据库以saveAs的形式存储为新的图纸。遍历包含图纸信息的数组,从而获得拆分后的一系列的图纸。

以上所述结合附图对本发明的优选实施方式和实施例作了详述,但是本发明并不局限于上述实施方式和实施例,对于本技术领域的普通技术人员来说,在不脱离本发明本质和基本原理的前提下,还可以做出符合本领域公知常识的基本改进,这些改进和变型也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1