《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 建筑CAD墻體識(shí)別與剪裁算法設(shè)計(jì)
建筑CAD墻體識(shí)別與剪裁算法設(shè)計(jì)
2014年微型機(jī)與應(yīng)用第13期
王志勃1,,2,,畢艷茹2
1.江蘇省電子產(chǎn)品裝備與制造中心,2.淮安信息職業(yè)技術(shù)學(xué)院,,江蘇 淮安
摘要: 以建筑AutoCAD矢量圖形文件為研究載體,,以墻體為主要研究對(duì)象,設(shè)計(jì)了墻體數(shù)據(jù)深度優(yōu)先探測(cè)提取算法,。根據(jù)提取出的墻體數(shù)據(jù)集合,,設(shè)計(jì)了基于凹點(diǎn)分割的墻體裁剪算法,該算法已在實(shí)踐中進(jìn)行了反復(fù)驗(yàn)證,,高效可靠,。在此基礎(chǔ)上提出了以中軸線+屬性形式代替墻體的設(shè)計(jì)思想,構(gòu)建墻體抽象模型,,為建筑工程量自動(dòng)計(jì)算提供數(shù)據(jù)支持,。
Abstract:
Key words :

  摘  要: 以建筑AutoCAD矢量圖形文件為研究載體,以墻體為主要研究對(duì)象,,設(shè)計(jì)了墻體數(shù)據(jù)深度優(yōu)先探測(cè)提取算法,。根據(jù)提取出的墻體數(shù)據(jù)集合,設(shè)計(jì)了基于凹點(diǎn)分割的墻體裁剪算法,,該算法已在實(shí)踐中進(jìn)行了反復(fù)驗(yàn)證,,高效可靠。在此基礎(chǔ)上提出了以中軸線+屬性形式代替墻體的設(shè)計(jì)思想,,構(gòu)建墻體抽象模型,,為建筑工程量自動(dòng)計(jì)算提供數(shù)據(jù)支持。

  關(guān)鍵詞DXF,;墻體識(shí)別,;凹點(diǎn)判定;剪裁算法

  近年來,,隨著計(jì)算機(jī)技術(shù)和信息技術(shù)的迅猛發(fā)展,,建筑工程概預(yù)算領(lǐng)域中出現(xiàn)了大量的預(yù)算軟件,但這些軟件只是在人工讀圖并計(jì)算出工程量的基礎(chǔ)上完成定額套用,、調(diào)整,、費(fèi)用計(jì)算,、報(bào)表編制等工作,工程量計(jì)算工作還停留在由預(yù)算師人工識(shí)別圖紙的階段,。因此,,如何實(shí)現(xiàn)工程量的自動(dòng)計(jì)算是目前建筑工程概預(yù)算領(lǐng)域研究的主要熱點(diǎn)之一,而建筑工程圖的自動(dòng)識(shí)別問題是制約工程量計(jì)算自動(dòng)化水平提高的主要瓶頸,。本文模仿人工識(shí)圖的思路與方法,,以建筑AutoCAD中墻體識(shí)別建模為例,設(shè)計(jì)出一套有效識(shí)別墻體,、裁剪建模的算法,,解決AutoCAD與工程量計(jì)算的接口問題,為實(shí)現(xiàn)建筑工程量計(jì)算的自動(dòng)化提供參考,。

  1 AutoCAD矢量文件研究與墻體元素提取

  AutoCAD采用矢量數(shù)據(jù)格式文件DXF存儲(chǔ)圖形信息[1],。DXF是一種被多數(shù)圖形設(shè)計(jì)軟件接受的文件存儲(chǔ)格式,其實(shí)際上已經(jīng)成為一種行業(yè)標(biāo)準(zhǔn),。隨著AutoCAD的新版本不斷推出,,對(duì)DXF文件格式作了進(jìn)一步調(diào)整,但基本框架保持不變,。DXF文件按先后順序分為7大段,,其中實(shí)體段是研究的主要目標(biāo),在實(shí)體段中保存著所有離散的圖形圖元[1],,這些實(shí)體有Point,、Line、Circle,、Arc,、Trace、Solid,、Polyline,、Vertex和3Dface等圖形圖元。每段由鍵值對(duì)組成,,鍵(通常稱為組碼)表明其后的值的類型,使用這些鍵值對(duì)可以將AutoCAD圖形元素組織到由記錄組成的區(qū)域中,。

  本文在對(duì)建筑墻體識(shí)別之前,,首先將DXF格式文件轉(zhuǎn)化為可讀性更好、被軟件普遍接受的XML格式文件[2-4],。DXF格式文件轉(zhuǎn)換成XML格式文件后的數(shù)據(jù)格式如圖1所示,。從DXF文件中讀取的信息還處于離散狀態(tài),之間沒有任何聯(lián)系,,在進(jìn)行墻體識(shí)別,、裁剪,、建模之前要對(duì)這些離散數(shù)據(jù)進(jìn)行必要的預(yù)處理,使其滿足識(shí)別需要,。在房屋建筑制圖統(tǒng)一標(biāo)準(zhǔn)[5]中,,對(duì)建筑制圖中的各種圖形元素畫法都作出了非常具體的規(guī)定,其中墻體具有以下特點(diǎn),。

 ?。?)任何一段墻體都構(gòu)成一個(gè)封閉的區(qū)域,并且構(gòu)成墻體的線段數(shù)要大于或等于4,;

 ?。?)每段墻體之間通過門、窗等建筑構(gòu)件相連接,;

 ?。?)通常按照建筑中墻體的外型,可以將墻體分為L(zhǎng)型,、T型,、C型、+型,、直線型和復(fù)雜的不規(guī)則類型等,。建筑圖中墻體的常見形狀如圖2所示。

001.jpg

  構(gòu)成墻體的主要圖元就是線段,,墻體是由若干條線段形成的一個(gè)封閉區(qū)域,。對(duì)于墻體的數(shù)據(jù)提取,可以采用深度優(yōu)先遍歷方法[6-7],,在已讀出的大量線段中任意選取一條作為起始點(diǎn),,根據(jù)線段兩端的坐標(biāo)去匹配下一條線段,直到回到起點(diǎn),。

  根據(jù)以上特點(diǎn),,設(shè)計(jì)用于在離散數(shù)據(jù)中識(shí)別提取墻體的算法1。

  算法1:墻體識(shí)別提取算法

 ?。?)?坌l(wèi)ine?奐{linei|i≥1},。

  (2)提取l1起點(diǎn)坐標(biāo)S{x,,y,,z}。

 ?。?)提取l1終點(diǎn)坐標(biāo)P{x,,y,z},與{linei|i≥1}中其他線段起點(diǎn)坐標(biāo)匹配,。

 ?。?)匹配成功,得到l2,,存儲(chǔ)l1,,l1=l2。

 ?。?)LOOP重復(fù)步驟(3)~步驟(4),,循環(huán)計(jì)數(shù)器count

  IF P{x,y,,z}==S{x,,y,z},,存儲(chǔ)所有墻體線段,;

  IF count>i,放棄所有線段,,重新探測(cè),。

  經(jīng)過算法1處理后,從眾多離散線段中識(shí)別,、提取出墻體集合{walli|i≥1}{linei|i≥1},。

  2 墻體圖形裁剪算法設(shè)計(jì)

  在成功獲取墻體集合后,采用提取墻體中軸線的方法建立墻體數(shù)學(xué)模型,,但對(duì)于形式復(fù)雜的墻體造型,,若直接提取中軸線會(huì)造成建筑工程量計(jì)算的重復(fù),導(dǎo)致數(shù)據(jù)偏差,,所以還要對(duì)墻體進(jìn)行進(jìn)一步的細(xì)分,。本文提出了基于凹點(diǎn)多邊形墻體裁剪算法[8-11],將復(fù)雜墻體分割成相對(duì)簡(jiǎn)單的墻體單元,。

  針對(duì)平面直角坐標(biāo)系中墻體構(gòu)造的多邊形,,判斷凹點(diǎn)及采集算法如下。

  算法2:凹點(diǎn)判斷與墻體裁剪算法

  在建筑CAD中絕大多數(shù)墻體都是水平或鉛直的,,同時(shí)存在有一定角度或弧形的墻體,。對(duì)于水平和鉛直類墻體,可以使用比較法判斷凹點(diǎn),;對(duì)于有一定角度的墻體,,拐點(diǎn)可以采用斜率法進(jìn)行判斷;對(duì)于弧形墻體,,將進(jìn)行特殊處理,不在本文討論范圍內(nèi),。

 ?。?)對(duì)于水平鉛直墻體的凹點(diǎn)判斷與裁剪算法,。

  ①?gòu)膲w集合{walli|i≥1}中選取一組封閉墻體數(shù)據(jù),,以x分量最小的點(diǎn)作為起點(diǎn),。

  ②嚴(yán)格按照順時(shí)針方向遍歷墻體線段,。

  定義:起始線段li(i=1),,起點(diǎn)坐標(biāo)s(xi,yi),,終點(diǎn)坐標(biāo)e(xi,,yi),順時(shí)針鄰接線段為li+1,,起點(diǎn)坐標(biāo)s(xi+1,,yi+1),終點(diǎn)坐標(biāo)e(xi+1,,yi+1),,兩線段交點(diǎn)為P,即e(xi,,yi)=s(xi+1,,yi+1)。

  IF (e|yi>s|yi) and (e|xi+1>e|xi) THEN P為凸點(diǎn),;

  IF (e|yi>s|yi) and (e|xi+1<e|xi) THEN P為凹點(diǎn),;

  IF (e|yi<s|yi) and (e|xi+1<e|xi) THEN P為凸點(diǎn);

  IF (e|yi<s|yi) and (e|xi+1>e|xi) THEN P為凹點(diǎn),;

  簡(jiǎn)單來說,,從起點(diǎn)開始,x,、y坐標(biāo)變化滿足下面規(guī)律就是最簡(jiǎn)墻體,;否則,若存在凹點(diǎn),,就延長(zhǎng)線段交于墻體線段集合中的某條線段,,并分離出一段墻體。

002.jpg

  裁剪算法過程演示如圖3所示,。在圖3(a)中,,選出A為遍歷起點(diǎn)。遍歷過程為:AB(Y↑)→BC(X↑)→CD(Y↓)→DE(X↓)→EF(Y↑)→FG(X↓),,在EF-FG線段交點(diǎn)處出現(xiàn)凹點(diǎn),,記錄F點(diǎn)信息,向墻體集合中添加輔助線段FX,并將EF延長(zhǎng)到X,,即用EX代替DF,,并將CD、DE,、EX,、XC從墻體集合中分離出來形成單獨(dú)集合。重復(fù)以上算法,,對(duì)剩余墻體集合繼續(xù)遍歷,,任何一段復(fù)雜的墻體集合通過該算法都能分解成為最簡(jiǎn)墻體,即得到墻體的最簡(jiǎn)形式,。

 ?。?)使用斜率判定非水平鉛直墻體的凹點(diǎn)。

  定義:d為相鄰兩條線段的斜率差,,由于墻體線段不在水平鉛直狀態(tài),,無需考慮分母為零的情況。

  IF(e|yi>s|yi)

  IF d>0 THEN P為凹點(diǎn)

  IF d<0 THEN P為凸點(diǎn)

  IF(e|yi>s|yi)

  IF d>0 THEN P為凸點(diǎn)

  IF d<0 THEN P為凹點(diǎn)

  3 墻體數(shù)據(jù)模型構(gòu)建

  圖紙識(shí)別的最終目的是要建立起墻體的數(shù)學(xué)模型,,并在此基礎(chǔ)上實(shí)現(xiàn)對(duì)建筑工程量的估算[12],。模型是全面反映墻體形狀和結(jié)構(gòu)的基礎(chǔ),并附加以必要的屬性,。墻體的中軸線是確定墻體的核心數(shù)據(jù),,利用分解后的簡(jiǎn)單墻體中平行的兩長(zhǎng)邊端點(diǎn)信息,可以確定中軸線兩端點(diǎn)坐標(biāo),,并將該段墻體的厚度等設(shè)計(jì)參數(shù)一并存入中軸線數(shù)據(jù)結(jié)構(gòu)中,,形成一個(gè)關(guān)于墻體中軸線鏈表。設(shè)墻體的兩條平行邊為l1和l2,,起點(diǎn)為s,,終點(diǎn)為e,則中軸線兩端點(diǎn)坐標(biāo)為:

  _5PHX[TNP3@3BWN03%JS7[Y.jpg

  可以用鏈表構(gòu)造其內(nèi)部存儲(chǔ)結(jié)構(gòu),,鏈表的節(jié)點(diǎn)定義如圖4所示,。

003.jpg

  有了以上軸線抽象模型,可以方便,、準(zhǔn)確地計(jì)算墻體的長(zhǎng)度,,重構(gòu)墻體輪廓,方便后期建筑工作量提取[13],。

  本文在對(duì)AutoCAD矢量數(shù)據(jù)文件大量研究的基礎(chǔ)上,,以建筑工程中墻體為例,設(shè)計(jì)了墻體深度優(yōu)先識(shí)別提取算法,;針對(duì)提取的復(fù)雜墻體,,設(shè)計(jì)了基于凹點(diǎn)分割的墻體裁剪算法,,并以墻體中軸線模型加屬性的方式重構(gòu)墻體,為工程量計(jì)算提供有效支持,。在算法設(shè)計(jì)過程中注重與具體問題相結(jié)合,,加入識(shí)別裁剪過程中的輔助因素,,降低了通用算法的復(fù)雜度,,使算法簡(jiǎn)潔而高效。

  參考資料

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

  [2] 王志勃.基于DXF文件格式的讀取與XML轉(zhuǎn)換[J].新學(xué)術(shù),,2007(6):240-243.

  [3] 劉傳亮,,陸建德.AutoCAD DXF文件格式與二次開發(fā)圖形軟件編程[J].微機(jī)發(fā)展,2004(9):101-104.

  [4] 舒飛.中文版AutoCAD 2004二次開發(fā)標(biāo)準(zhǔn)教程[M].上海:上??茖W(xué)普及出版社,,2004.

  [5] GB/T 50001-2001. 房屋建筑制圖統(tǒng)一標(biāo)準(zhǔn)[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 Document Analysis 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] 宋曉眉,程昌秀,,周成虎.簡(jiǎn)單多邊形頂點(diǎn)凹凸性判斷算法綜述[J].國(guó)土資源遙感,,2011,90(3):25-30.

  [9] 陳炳發(fā),,錢志峰,,廖文和.簡(jiǎn)單多邊形凸凹性自識(shí)別算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2002(3):214-218.

  [10] FEITO F,, TORRES J C,, URENA A. Orientation, simplicity,, and inclusion test for planar polygons[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] 孫靜波,侯秀萍,,鄭虹.建筑圖數(shù)字化存貯與工程量計(jì)算模型的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,,2003(10):222-225.

  [13] 陸再林,,張樹有,譚建榮.基于圖形理解的預(yù)算工程量提取算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),,2002(5):442-446.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。