APP下载

建筑CAD墙体识别与剪裁算法设计

2014-08-16王志勃毕艳茹

网络安全与数据管理 2014年13期
关键词:中轴线起点工程量

王志勃 ,毕艳茹

(1.江苏省电子产品装备与制造中心,江苏 淮安 223003;2.淮安信息职业技术学院,江苏 淮安 22300)

近年来,随着计算机技术和信息技术的迅猛发展,建筑工程概预算领域中出现了大量的预算软件,但这些软件只是在人工读图并计算出工程量的基础上完成定额套用、调整、费用计算、报表编制等工作,工程量计算工作还停留在由预算师人工识别图纸的阶段。因此,如何实现工程量的自动计算是目前建筑工程概预算领域研究的主要热点之一,而建筑工程图的自动识别问题是制约工程量计算自动化水平提高的主要瓶颈。本文模仿人工识图的思路与方法,以建筑AutoCAD中墙体识别建模为例,设计出一套有效识别墙体、裁剪建模的算法,解决AutoCAD与工程量计算的接口问题,为实现建筑工程量计算的自动化提供参考。

1 AutoCAD矢量文件研究与墙体元素提取

AutoCAD采用矢量数据格式文件DXF存储图形信息[1]。DXF是一种被多数图形设计软件接受的文件存储格式,其实际上已经成为一种行业标准。随着AutoCAD的新版本不断推出,对DXF文件格式作了进一步调整,但基本框架保持不变。DXF文件按先后顺序分为7大段,其中实体段是研究的主要目标,在实体段中保存着所有离散的 图形图元[1],这些实体有 Point、Line、Circle、Arc、Trace、Solid、Polyline、Vertex 和 3Dface 等 图 形 图 元 。每段由键值对组成,键(通常称为组码)表明其后的值的类型,使用这些键值对可以将AutoCAD图形元素组织到由记录组成的区域中。

本文在对建筑墙体识别之前,首先将DXF格式文件转化为可读性更好、被软件普遍接受的XML格式文件[2-4]。DXF格式文件转换成XML格式文件后的数据格式如图1所示。从 DXF文件中读取的信息还处于离散状态,之间没有任何联系,在进行墙体识别、裁剪、建模之前要对这些离散数据进行必要的预处理,使其满足识别需要。在房屋建筑制图统一标准[5]中,对建筑制图中的各种图形元素画法都作出了非常具体的规定,其中墙体具有以下特点。

(1)任何一段墙体都构成一个封闭的区域,并且构成墙体的线段数要大于或等于4;

(2)每段墙体之间通过门、窗等建筑构件相连接;

(3)通常按照建筑中墙体的外型,可以将墙体分为L型、T型、C型、+型、直线型和复杂的不规则类型等。建筑图中墙体的常见形状如图2所示。

图1 DXF转换成XML后的数据格式

图2 建筑图中墙体的常见形状

构成墙体的主要图元就是线段,墙体是由若干条线段形成的一个封闭区域。对于墙体的数据提取,可以采用深度优先遍历方法[6-7],在已读出的大量线段中任意选取一条作为起始点,根据线段两端的坐标去匹配下一条线段,直到回到起点。

根据以上特点,设计用于在离散数据中识别提取墙体的算法1。

算法1:墙体识别提取算法

(1)∀line⊂{linei|i≥1}。

(2)提取 l1起点坐标 S{x,y,z}。

(3)提取 l1终点坐标 P{x,y,z},与{linei|i≥1}中其他线段起点坐标匹配。

(4)匹配成功,得到 l2,存储 l1,l1=l2。

(5)LOOP 重复步骤(3)~步骤(4),循环计数器 count

经过算法1处理后,从众多离散线段中识别、提取出墙体集合{walli|i≥1}⊆{linei|i≥1}。

2 墙体图形裁剪算法设计

在成功获取墙体集合后,采用提取墙体中轴线的方法建立墙体数学模型,但对于形式复杂的墙体造型,若直接提取中轴线会造成建筑工程量计算的重复,导致数据偏差,所以还要对墙体进行进一步的细分。本文提出了基于凹点多边形墙体裁剪算法[8-11],将复杂墙体分割成相对简单的墙体单元。

针对平面直角坐标系中墙体构造的多边形,判断凹点及采集算法如下。

算法2:凹点判断与墙体裁剪算法

在建筑CAD中绝大多数墙体都是水平或铅直的,同时存在有一定角度或弧形的墙体。对于水平和铅直类墙体,可以使用比较法判断凹点;对于有一定角度的墙体,拐点可以采用斜率法进行判断;对于弧形墙体,将进行特殊处理,不在本文讨论范围内。

(1)对于水平铅直墙体的凹点判断与裁剪算法。

①从墙体集合 {walli|i≥1}中选取一组封闭墙体数据,以x分量最小的点作为起点。

②严格按照顺时针方向遍历墙体线段。

定义:起始线段 li(i=1),起点坐标 s(xi,yi),终点坐标 e(xi,yi),顺时针邻接线段为 li+1,起点坐标 s(xi+1,yi+1),终点坐标 e(xi+1,yi+1),两线段交点为P,即 e(xi,yi)=s(xi+1,yi+1)。

简单来说,从起点开始,x、y坐标变化满足下面规律就是最简墙体;否则,若存在凹点,就延长线段交于墙体线段集合中的某条线段,并分离出一段墙体。

裁剪算法过程演示如图3所示。在图3(a)中,选出A为遍历起点。遍历过程为:AB(Y↑)→BC(X↑)→CD(Y↓)→DE(X↓)→EF(Y↑)→FG(X↓),在 EF-FG 线段交点处出现凹点,记录F点信息,向墙体集合中添加辅助线段 FX,并将 EF延长到 X,即用 EX代替 DF,并将CD、DE、EX、XC从墙体集合中分离出来形成单独集合。重复以上算法,对剩余墙体集合继续遍历,任何一段复杂的墙体集合通过该算法都能分解成为最简墙体,即得到墙体的最简形式。

图3 水平铅直墙体剪裁过程

(2)使用斜率判定非水平铅直墙体的凹点。

3 墙体数据模型构建

图纸识别的最终目的是要建立起墙体的数学模型,并在此基础上实现对建筑工程量的估算[12]。模型是全面反映墙体形状和结构的基础,并附加以必要的属性。墙体的中轴线是确定墙体的核心数据,利用分解后的简单墙体中平行的两长边端点信息,可以确定中轴线两端点坐标,并将该段墙体的厚度等设计参数一并存入中轴线数据结构中,形成一个关于墙体中轴线链表。设墙体的两条平行边为l1和l2,起点为s,终点为e,则中轴线两端点坐标为:

可以用链表构造其内部存储结构,链表的节点定义如图4所示。

图4 链表节点意义

有了以上轴线抽象模型,可以方便、准确地计算墙体的长度,重构墙体轮廓,方便后期建筑工作量提取[13]。

本文在对AutoCAD矢量数据文件大量研究的基础上,以建筑工程中墙体为例,设计了墙体深度优先识别提取算法;针对提取的复杂墙体,设计了基于凹点分割的墙体裁剪算法,并以墙体中轴线模型加属性的方式重构墙体,为工程量计算提供有效支持。在算法设计过程中注重与具体问题相结合,加入识别裁剪过程中的辅助因素,降低了通用算法的复杂度,使算法简洁而高效。

参考资料

[1]Autodesk Inc.DXF Reference.http://www.autodesk.com/techpubs/autocad/acadr14/dxf/.

[2]王志勃.基于 DXF文件格式的读取与 XML转换[J].新学术,2007(6):240-243.

[3]刘传亮,陆建德.AutoCAD DXF文件格式与二次开发图形软件编程[J].微机发展,2004(9):101-104.

[4]舒飞.中文版 AutoCAD 2004二次开发标准教程[M].上海:上海科学普及出版社,2004.

[5]GB/T 50001-2001.房屋建筑制图统一标准[S].

[6]DOSCH P H,MASINI G.Reconstruction of the 3D structure of a building from the 2D Drawings of its Floors[J].Proceedings of the 5th International Conference on DocumentAnalysis and Recognition, Bangalore (India),1999:487-490.

[7]Yu Yuhong,SAMAL A.A system for recognizing a large class of engineering drawings[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1997,19(8): 868-890.

[8]宋晓眉,程昌秀,周成虎.简单多边形顶点凹凸性判断算法综述[J].国土资源遥感,2011,90(3):25-30.

[9]陈炳发,钱志峰,廖文和.简单多边形凸凹性自识别算法[J].计算机辅助设计与图形学学报,2002(3):214-218.

[10]FEITO F, TORRES JC, URENA A.Orientation,simplicity, and inclusion testforplanarpolygons[J].Computers&Graphics,1995,19(4):595-600.

[11]DORI D,Liu Wenyin.Automated CAD conversion with the machine drawing under standing system:Concepts algorithm and performance[J].IEEE Transaction on System,Man and Cybernetics, part A: System and Humans, 1999,29(4):411-416.

[12]孙静波,侯秀萍,郑虹.建筑图数字化存贮与工程量计算模型的实现[J].计算机工程与应用,2003(10):222-225.

[13]陆再林,张树有,谭建荣.基于图形理解的预算工程量提取算法[J].计算机辅助设计与图形学学报,2002(5):442-446.

猜你喜欢

中轴线起点工程量
漫画北京中轴线(三)
《穿越北京中轴线》简介
行走中轴线 寻找城市灵魂
弄清楚“起点”前面有多少
起点
EXCEL在零星工程量计算中的应用
我的“新”起点
工程量清单在公路工程招投标中的应用
新年的起点
造价预算中工程量清单编制的应用分析