李昌華,田思敏,周方曉
西安建筑科技大學(xué) 信息與控制工程學(xué)院,西安 710055
建筑信息模型(building information modeling,BIM)在建筑領(lǐng)域發(fā)展異常迅猛,受到國(guó)內(nèi)外學(xué)者和業(yè)界的普遍關(guān)注[1]。其包含了建筑的全部信息,不僅可以提供形象可視的二維和三維圖紙,而且可以提供工程量清單、施工管理、虛擬建造、造價(jià)估算等更加豐富的信息,便于項(xiàng)目各個(gè)部門的相互溝通、協(xié)同工作[2-4]。在BIM技術(shù)中,主要應(yīng)用的設(shè)計(jì)軟件是Autodesk公司開發(fā)的Autodesk Revit。Revit軟件除了自身功能強(qiáng)大之外,也提供了豐富的API(application programming interface),為在程序編制技術(shù)上加強(qiáng)Revit的功能提供了可能[5-6]。
目前,國(guó)內(nèi)大多數(shù)BIM模型的建造依然是根據(jù)CAD圖紙,手工搭建BIM模型,其工作量龐大,使得效率低下成為阻礙BIM推廣使用的障礙之一[7-8]。如何提高BIM建模效率,是當(dāng)前人們迫切需要解決的問題。本文通過讀取CAD圖紙生成的DXF文件,提取出圖紙中的數(shù)據(jù)信息,提出一種基于自適應(yīng)分塊的墻體輪廓提取算法,對(duì)墻體數(shù)據(jù)進(jìn)行處理。利用Revit強(qiáng)大的二次開發(fā)接口,開發(fā)自動(dòng)翻模插件,實(shí)現(xiàn)墻體快速建模。本文流程框圖如圖1所示。
Fig.1 Flow chart of this paper圖1 課題流程框圖
AutoCAD是美國(guó)Autodesk公司開發(fā)的計(jì)算機(jī)輔助設(shè)計(jì)軟件,可以用于二維和三維的設(shè)計(jì)和繪制,應(yīng)用于建筑、機(jī)械等多個(gè)不同領(lǐng)域。
當(dāng)前AutoCAD的二次開發(fā)工具主要有VisualLisp、VBA、ObjectARX和.NET API等[9]。C#.NET應(yīng)用程序迅速,語(yǔ)言簡(jiǎn)潔,方便連接數(shù)據(jù)庫(kù)和AutoCAD,是一個(gè)完全的面向?qū)ο蟮恼Z(yǔ)言,其功能強(qiáng)大,且支持結(jié)構(gòu)化異常處理。因此,本文將使用C#語(yǔ)言對(duì)Auto-CAD進(jìn)行二次開發(fā)。
DXF(drawing exchange format)是Autodesk公司開發(fā)的用于AutoCAD與其他軟件之間進(jìn)行CAD數(shù)據(jù)交換的文件格式[10]。DXF分為兩類:一類是ASCII格式;一類是二進(jìn)制格式。二進(jìn)制格式具有占用的空間小、讀取速度快的特點(diǎn),但是可讀性較差;ASCII雖占用的空間較大,但具有良好的可讀性,能夠用文本編輯器打開、修改,并且易于被其他程序處理,因此選用的建筑平面圖是由ASCII碼組成的DXF文件格式[11]。
AutoCAD圖紙繪制中,圖層是標(biāo)準(zhǔn)的幾何體分類與分組工具,每個(gè)圖層上都繪制了不同類型的圖形對(duì)象[12]。本文所選用的建筑平面圖紙均是嚴(yán)格按照繪圖標(biāo)準(zhǔn)來繪制的。
在DXF文件中,組碼8對(duì)應(yīng)的組值即為圖層名[13]。由于圖紙的幾何數(shù)據(jù)都在ENTITIES段中,因此只對(duì)ENTITIES段的內(nèi)容進(jìn)行讀取即可。對(duì)DXF文件中的數(shù)據(jù)信息進(jìn)行提取,算法流程如圖2所示。
根據(jù)上述算法流程,對(duì)圖3的建筑平面圖進(jìn)行數(shù)據(jù)提取。在圖紙中,墻體主要是由直線構(gòu)成。在獲取直線數(shù)據(jù)中,需要獲得兩個(gè)主要信息:一是直線所在的圖層;二是直線的兩個(gè)端點(diǎn)的坐標(biāo)。獲取的數(shù)據(jù)如圖4所示,數(shù)據(jù)的內(nèi)容分別為編號(hào)、對(duì)象名、圖層、行號(hào)以及直線的起止端點(diǎn)。
Fig.2 Flow chart of algorithm for extracting DXF data圖2 DXF數(shù)據(jù)提取算法流程圖
Fig.3 Floor plan圖3 建筑平面圖紙
Fig.4 Getting data from DXF file圖4 獲取DXF文件的數(shù)據(jù)
在建筑平面圖的三維重建過程中,建筑構(gòu)件的識(shí)別是非常重要的。而墻體是建筑結(jié)構(gòu)中最重要的建筑構(gòu)件,是整個(gè)建筑的主體。墻體表達(dá)了整個(gè)建筑的框架信息,其他建筑構(gòu)件都與墻體直接連接。墻體的識(shí)別是識(shí)別其他建筑對(duì)象的基礎(chǔ),因此首先對(duì)直線墻體進(jìn)行識(shí)別,然后在此基礎(chǔ)上對(duì)門窗進(jìn)行識(shí)別。
建筑構(gòu)件的繪制方法在《建筑制圖標(biāo)準(zhǔn)》中都有具體的規(guī)定,其中墻體具有以下特點(diǎn):任何一段墻體都是一個(gè)封閉的區(qū)域,并且構(gòu)成墻體的線段數(shù)大于或等于4的偶數(shù)。
在大多數(shù)的建筑平面圖中,構(gòu)成墻體的主要圖元是直線,由于墻線占有單獨(dú)的圖層,即Wall層,可以通過圖層的名稱將所有墻線從直線中分離出來,并提取所有線段的起止坐標(biāo)點(diǎn)。但是,墻線和墻體有本質(zhì)的區(qū)別,在建筑平面圖中,墻線只是一條線,而墻體則是由墻線組成的,因此需對(duì)直線墻體進(jìn)行識(shí)別。
本文首先將提取到的坐標(biāo)數(shù)據(jù)進(jìn)行鏈?zhǔn)浇Y(jié)構(gòu)的保存,然后根據(jù)提取到的線段坐標(biāo)數(shù)據(jù),選取任意一條線段的坐標(biāo)點(diǎn)為起點(diǎn)坐標(biāo),采用順時(shí)針旋轉(zhuǎn)的深度優(yōu)先遍歷算法,去訪問該線段的終點(diǎn)坐標(biāo),以該終點(diǎn)坐標(biāo)為下一條線段的起始坐標(biāo)去訪問下一個(gè)終點(diǎn)坐標(biāo),依次類推直到訪問到最初的起點(diǎn)坐標(biāo)。此時(shí)圍成的環(huán)路徑若為大于等于4的偶數(shù),則此環(huán)為墻體。墻體識(shí)別的算法流程如圖5所示。
窗戶的識(shí)別相對(duì)比較簡(jiǎn)單,一般都把窗戶畫成4條等長(zhǎng)的平行線,平行線的長(zhǎng)度為窗戶的長(zhǎng)度,窗戶處在墻體之間,且4條平行線的間距與墻體的厚度相同,如圖6所示。在大多數(shù)的平面圖中,門和窗戶都在同一個(gè)圖層Window中,因此不能把窗戶所在圖層的所有線都認(rèn)為是窗線,必須通過窗戶的特點(diǎn)來判斷。
Fig.6 Common drawing of window圖6 窗的常見畫法
通過上述的分析,可以將窗戶的識(shí)別分為兩部分:首先找出圖層中所有的直線;然后得到直線端點(diǎn)的坐標(biāo),選出能組成同一個(gè)窗戶的所有直線。窗戶識(shí)別的步驟如下:
步驟1在塊信息中找到圖層為Window的所有線段。
步驟2獲取這些線段的端點(diǎn)。
步驟3對(duì)線段起止端點(diǎn)中的x、y坐標(biāo)各自進(jìn)行比較,若起止端點(diǎn)的坐標(biāo)同時(shí)滿足x坐標(biāo)相同,y坐標(biāo)不同,則可判斷為平行線段。若為4條平行線,并且y坐標(biāo)的最大值與最小值之差與墻體的厚度一致,則可判定為水平方向的窗戶。
對(duì)線段起止端點(diǎn)中的x、y坐標(biāo)各自進(jìn)行比較,若起止端點(diǎn)的坐標(biāo)同時(shí)滿足y坐標(biāo)相同,x坐標(biāo)不同,則可判斷為平行線段。若為4條平行線,并且x坐標(biāo)的最大值與最小值之差與墻體的厚度一致,則可判定為豎直方向的窗戶。
若有部分線段的一個(gè)端點(diǎn)的x、y坐標(biāo)相同,而線段另一個(gè)端點(diǎn)都不相同,此時(shí)可判定為直角窗戶,這類窗戶一般在陽(yáng)臺(tái)出現(xiàn)。
步驟4根據(jù)步驟3判斷完墻體后,剩下的線段則為繪制門的直線,便于之后門的識(shí)別。
一般情況下,標(biāo)準(zhǔn)的門是由一條線段和一個(gè)90°的圓弧畫成的,圓弧的圓心為線段的一個(gè)端點(diǎn),另一個(gè)端點(diǎn)與圓弧的一端相連。因此可根據(jù)這個(gè)特征對(duì)門進(jìn)行識(shí)別。
在3.2節(jié)中,由于門窗處于同一個(gè)圖層Window中,在識(shí)別完窗戶后,該圖層中剩余的線段則為繪制門的線段,而處于該圖層中的弧線則為繪制門的弧線。當(dāng)弧線的一端點(diǎn)與線段的一端點(diǎn)相交,并且圓弧的半徑與該相交線段的長(zhǎng)度差不多,則可判定組成的圖塊為門。
定義1設(shè)M=(xM,yM)和N=(xN,yN)為xy平面內(nèi)任意不同的兩點(diǎn),-----→為由M指向N的有向線段,所在的直線把平面分為兩個(gè)半平面。求z軸的單位矢量與-----→的叉積,得到的矢量所指向的半平面稱為的左半平面,而另一個(gè)稱為的右半平面。如果用齊次坐標(biāo)表示直線和點(diǎn),則可以很容易地判斷出點(diǎn)與直線的位置關(guān)系。
例如,M和N用齊次坐標(biāo)表示為:
設(shè)U=(x,y,1)為平面內(nèi)任一點(diǎn),計(jì)算U與的點(diǎn)積,可得點(diǎn)與直線的位置判斷函數(shù):
根據(jù)F的正負(fù)號(hào)可以判斷V與的相對(duì)位置關(guān)系,如圖7所示。
(1)如果F>0,U在的左半平面內(nèi);
(2)如果F=0,U在所在的直線上;
(3)如果F<0,U在-----→的右半平面內(nèi)。
Fig.7 Judgement of relative position of point and line圖7 點(diǎn)與直線相對(duì)位置判斷
利用3.1節(jié)中的墻體識(shí)別算法對(duì)建筑平面圖中的墻體進(jìn)行識(shí)別,將得到如圖8所示的墻體,此時(shí)發(fā)現(xiàn)外墻的線段是斷開的。然而在實(shí)際生活中,外墻是一個(gè)封閉的圖形,而門窗是鑲嵌在墻體中。因此本文提出一種基于自適應(yīng)分塊的墻體輪廓提取算法,對(duì)墻體數(shù)據(jù)進(jìn)行處理,快速提取到墻體的外輪廓及其中的坐標(biāo)點(diǎn)。
Fig.8 Effect map of wall recognition圖8 墻體識(shí)別效果圖
數(shù)據(jù)分塊的基本思想是把離散點(diǎn)數(shù)據(jù)劃分成許多大小相同的格網(wǎng),為便于管理,將對(duì)離散點(diǎn)的操作轉(zhuǎn)換為對(duì)格網(wǎng)的操作,并且格網(wǎng)的數(shù)量遠(yuǎn)遠(yuǎn)小于坐標(biāo)點(diǎn)的數(shù)目,從而降低了工作量,提高了效率。文獻(xiàn)[14]提出了一種基于格網(wǎng)管理離散點(diǎn)來選取參與凸包構(gòu)建子集的方法。首先根據(jù)x、y坐標(biāo)最大最小值確定離散點(diǎn)的矩形區(qū)域,將區(qū)域中的x軸和y軸方向分為m、n等份,從而形成一個(gè)m×n的格網(wǎng),將離散點(diǎn)投入到格網(wǎng)中。雖然提高了效率,但是只適用于均勻分布的離散點(diǎn)。
一般情況下,建筑平面圖中坐標(biāo)點(diǎn)的分布很不均勻,因此本文把格網(wǎng)的大小設(shè)置成一個(gè)動(dòng)態(tài)變化的值。但是格網(wǎng)過大會(huì)導(dǎo)致格網(wǎng)中的點(diǎn)數(shù)太多,格網(wǎng)過小會(huì)導(dǎo)致許多格網(wǎng)無坐標(biāo)點(diǎn)或者格網(wǎng)中的坐標(biāo)點(diǎn)過少,會(huì)導(dǎo)致合并次數(shù)太多,這都將增加查詢次數(shù),降低輪廓提取的效率。因此,每個(gè)格網(wǎng)中如何選擇適當(dāng)數(shù)量的坐標(biāo)點(diǎn)成為自適應(yīng)分塊的關(guān)鍵問題。本文獲取到的墻體坐標(biāo)點(diǎn),如圖9所示。
Fig.9 Coordinate points of wall圖9 墻體坐標(biāo)點(diǎn)
墻體輪廓提取算法的步驟如下:
步驟1計(jì)算每個(gè)格網(wǎng)中的最佳平均坐標(biāo)點(diǎn)數(shù)量M。
給定點(diǎn)集Q,首先分別求出橫坐標(biāo)、縱坐標(biāo)的最大最小值Wmax、Wmin、Hmax、Hmin圍成一個(gè)矩形,將橫縱坐標(biāo)的大小差作為矩形的寬和高,如式(4):
在進(jìn)行自適應(yīng)分塊區(qū)域劃分時(shí),由于平面圖中坐標(biāo)點(diǎn)不均勻,無法計(jì)算每個(gè)格網(wǎng)中平均坐標(biāo)點(diǎn)數(shù),以下假設(shè)點(diǎn)數(shù)據(jù)是隨機(jī)均勻分布的情況,則滿足:
其中,ρ表示坐標(biāo)點(diǎn)的密度期望;n為點(diǎn)集Q中所有的坐標(biāo)點(diǎn)數(shù)量。
本文根據(jù)文獻(xiàn)[15]中搜索圓的公式,逆推得到M:
其中,A為點(diǎn)集Q的最小矩形面積,即A=W×H。
由式(7)可得搜索圓的外接正方形面積:
最終求得每個(gè)格網(wǎng)中最佳平均坐標(biāo)點(diǎn)數(shù)M:
步驟2對(duì)墻體坐標(biāo)數(shù)據(jù)進(jìn)行自適應(yīng)分塊。
將點(diǎn)集Q的矩形區(qū)域分為4個(gè)相等的子空間,求得每個(gè)子空間的坐標(biāo)點(diǎn)數(shù)S。
若S≤M,則停止對(duì)該子空間的再次分割;
若S>M,則繼續(xù)將該子空間區(qū)域劃分為4個(gè)相等的子空間,依次遞歸,直到滿足條件。此時(shí),整個(gè)點(diǎn)集S的塊都將全部生成。
步驟3找極值點(diǎn)對(duì)數(shù)據(jù)進(jìn)行區(qū)域劃分。
根據(jù)文獻(xiàn)[14]的定義,在步驟1圍成的矩形中求出墻體坐標(biāo)點(diǎn)的8個(gè)極值點(diǎn)。分別為N1(Xmin,ymax)、N2(Xmin,ymin)、N3(Xmaxymax)、N4(Xmax,ymin)、N5(xmin,Ymin)、N6(xmax,Ymin)、N7(xmin,Ymax)、N8(xmax,Ymax)。其中N1、N2分別為Xmin子集中,y坐標(biāo)最小和最大的兩個(gè)點(diǎn);N3、N4分別為Xmax子集中,y坐標(biāo)最小和最大的兩個(gè)點(diǎn);N5、N6分別為Ymin子集中,x坐標(biāo)最小和最大的兩個(gè)點(diǎn);N7、N8分別為Ymax子集中,x坐標(biāo)最小和最大的兩個(gè)點(diǎn)。這8個(gè)點(diǎn)必定在墻體輪廓上。將這8個(gè)極值點(diǎn)沿順時(shí)針方向連接成有向線段,將矩形大致分為5個(gè)區(qū)域I~V,如圖10所示。
Fig.10 Dividing from adaptive block zone圖10 自適應(yīng)分塊區(qū)域劃分
步驟4對(duì)各個(gè)區(qū)域的數(shù)據(jù)進(jìn)行處理。
將圖10中連線所經(jīng)過的網(wǎng)格中的坐標(biāo)點(diǎn)以及I~I(xiàn)V子集內(nèi)的坐標(biāo)點(diǎn)進(jìn)行保存,圖中陰影所示的區(qū)域內(nèi)的坐標(biāo)點(diǎn)肯定不在輪廓上,故可以直接刪除,從而減少參加輪廓構(gòu)建的點(diǎn)數(shù),減少計(jì)算量。
步驟5處理剩余坐標(biāo),提取墻體輪廓。
將步驟4中保留的坐標(biāo)點(diǎn),用快速排序算法按x坐標(biāo)遞增的方向進(jìn)行排序。若存在多個(gè)點(diǎn)有相同的x坐標(biāo),則只保留具有最大和最小y坐標(biāo)的兩個(gè)點(diǎn),且兩點(diǎn)按y坐標(biāo)增加的方向排列。排序完成后,可得到坐標(biāo)點(diǎn)集中最左點(diǎn)ML和最右點(diǎn)MR,很顯然ML和MR兩點(diǎn)在墻體的輪廓上。
步驟6墻體輪廓線的提取。
將步驟5中得到的左右兩點(diǎn)連線為L(zhǎng)R,將整個(gè)點(diǎn)集劃分為上下區(qū)域,分別為L(zhǎng)U和LD。設(shè)Q為排列好的坐標(biāo)點(diǎn)中的任意一點(diǎn),對(duì)點(diǎn)Q與線段MLR相對(duì)應(yīng)子集內(nèi)的有向線段進(jìn)行判斷。根據(jù)定義1,做出如下判斷:
若F>0,則表示在線段LR的左邊,此時(shí)將該點(diǎn)劃入LU區(qū)域;
若F<0,則表示在線段LR的右邊,此時(shí)將該點(diǎn)劃入LD區(qū)域;
若F=0,則表示坐標(biāo)點(diǎn)在線段LR上,則刪除點(diǎn)Q。
將LU區(qū)域中的點(diǎn)按x坐標(biāo)遞增的順序連接起來,再將LD區(qū)域中的點(diǎn)按x坐標(biāo)遞減的順序連接起來,即得到墻體的輪廓。
步驟7根據(jù)提取的輪廓提取其平行線。
墻體線是一對(duì)平行線段,此時(shí)求出的輪廓邊界則為最外的一條線,根據(jù)墻體的厚度,得到另一條平行線,將相交的點(diǎn)保存在鏈表中,便于后續(xù)的翻模。根據(jù)上述流程,可得到圖11所示的墻體輪廓圖。可看到,圖8中斷開的外墻線段已經(jīng)被連接,并且實(shí)現(xiàn)了墻體外部輪廓的提取。
Fig.11 Extracted wall contour圖11 提取出的墻體輪廓圖
創(chuàng)建墻時(shí),給定的坐標(biāo)軸是三維的,但一般民用住宅是沒有對(duì)應(yīng)的三視圖數(shù)據(jù)的,只有建筑平面圖,高度則是按標(biāo)準(zhǔn)的民用住宅高度來設(shè)置的,因此此處的高度z設(shè)為2 800 mm。并且在生成一面墻時(shí),形狀必須是閉合的,否則會(huì)拋出異常,導(dǎo)致創(chuàng)建失敗。
以下是墻體建模的算法,步驟如下:
步驟1將獲取到的所有直線線段存放在一個(gè)集合中,對(duì)其進(jìn)行遍歷。
步驟2任意選取一條直線,得到起始點(diǎn)坐標(biāo)(x1,y1),終點(diǎn)坐標(biāo)(x2,y2),設(shè)置高度z為2 800 mm。
步驟3若x1=x2,y1≠y2時(shí),設(shè)構(gòu)成墻體的坐標(biāo)數(shù)組為XYZ[]vertexes=newXYZ[]{newXYZ(x1,y1,0),newXYZ(x1,y2,0),newXYZ(x1,y2,2 800),newXYZ(x1,y1,2 800)};
若x1≠x2,y1=y2時(shí),設(shè)構(gòu)成墻體的坐標(biāo)數(shù)組為XYZ[]vertexes=newXYZ[]{newXYZ(x1,y1,0),newXYZ(x2,y1,0),newXYZ(x2,y1,2 800),newXYZ(x1,y1,2 800)};
若x1≠x2,y1≠y2時(shí),設(shè)構(gòu)成墻體的坐標(biāo)數(shù)組為XYZ[]vertexes=newXYZ[]{newXYZ(x1,y1,0),newXYZ(x2,y2,0),newXYZ(x2,y2,2 800),newXYZ(x1,y1,2 800)}。
步驟4根據(jù)步驟3得到的坐標(biāo)數(shù)組,對(duì)其進(jìn)行循環(huán),長(zhǎng)度為vertexes.Length,使用Line.CreateBound()函數(shù)創(chuàng)建墻體。
墻屬于門窗的宿主對(duì)象,在創(chuàng)建門窗時(shí),有以下方法[16]:
(1)給定一個(gè)標(biāo)高
NewFamilyInstance(XYZlocation,Family Symbol symbol,Element host,Level level,StructuralType structruralType)
(2)不給定標(biāo)高
NewFamilyInstance(XYZlocation,Family Symbol symbol,Element host,StructuralType structruralType)
(3)給定一個(gè)朝向
NewFamilyInstance(XYZlocation,Family Symbol symbol,XYZreferenceDirection,Element host,Structural-Type structruralType)
本文是基于Revit 2014版本,在.NET 4.5的運(yùn)行環(huán)境下進(jìn)行二次開發(fā),創(chuàng)建平臺(tái)為Visual Studio 2012,基于的模板為類庫(kù)。主要開發(fā)工具為Visual Studio 2012、Revit API(application programming interface)和Revit SDK。開發(fā)語(yǔ)言為C#,并結(jié)合了Revit 2014提供的對(duì)外接口(add-in manager),實(shí)現(xiàn)在Revit 2014中建筑平面圖的三維重建功能。大致路線如圖12所示。
本文實(shí)驗(yàn)所使用的PC機(jī)的基本配置是Windows 7/64位,酷睿i5處理器,2.93 GHz主頻,英偉達(dá)1G獨(dú)立顯卡,8 GB內(nèi)存。本機(jī)配置基本滿足實(shí)驗(yàn)的運(yùn)行要求。
本文在對(duì)墻體三維建模前,對(duì)墻體數(shù)據(jù)進(jìn)行了處理。圖13(a)顯示的是提取前的模型圖,可以看出墻體與墻體之間沒有連接,是斷開的,而實(shí)際上,墻體與墻體應(yīng)該是無縫連接,顯然提取前的模型圖不符合生活中實(shí)際情況。相比圖13(a),圖13(b)為提取墻體輪廓后在進(jìn)行建模的三維模型效果圖,可以看出,圖13(b)中斷開的墻體連接完好,很好地解決了墻體斷開的問題。
Fig.12 Flow chart of 3D reconstruction based on Revit圖12 基于Revit三維重建路線圖
Fig.13 3D model of wall圖13 墻體的三維模型
在墻體輪廓提取的過程中,為證明劃分格網(wǎng)的數(shù)量影響輪廓提取的效率,在已知平面圖中所有坐標(biāo)點(diǎn)數(shù)的情況下,對(duì)每個(gè)格網(wǎng)中的平均坐標(biāo)點(diǎn)數(shù)量進(jìn)行了研究。本文在之前提取算法中,利用公式計(jì)算每個(gè)格網(wǎng)中最佳的平均坐標(biāo)點(diǎn)數(shù),為了證明該計(jì)算結(jié)果的準(zhǔn)確性,使用實(shí)際的建筑平面圖中的坐標(biāo)點(diǎn)數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù)。在Matlab平臺(tái)上,分別使用了坐標(biāo)點(diǎn)大約為500,1 000,2 000,3 000,5 000,7 000,10 000,15 000,20 000,30 000,50 000個(gè)不同的建筑圖紙,隨機(jī)擬定幾個(gè)不同的平均坐標(biāo)點(diǎn)數(shù),與計(jì)算得出的最佳平均坐標(biāo)點(diǎn)數(shù)分別進(jìn)行自適應(yīng)分塊,從而進(jìn)行墻體輪廓提取的效率對(duì)比,如表1所示。
Table 1 Comparing efficiency of different number of expected coordinates表1 不同平均坐標(biāo)點(diǎn)數(shù)的效率對(duì)比
由表1可以看出,平均坐標(biāo)點(diǎn)數(shù)量影響輪廓提取的時(shí)間,即劃分格網(wǎng)的數(shù)量對(duì)輪廓提取有影響。隨著平面圖中坐標(biāo)點(diǎn)數(shù)的增加,提取時(shí)間也隨之增加,但由計(jì)算得出的最佳平均坐標(biāo)點(diǎn)數(shù)在輪廓提取時(shí)的效率仍然是最高的,因此可以判定在算法中計(jì)算得出的最佳平均坐標(biāo)點(diǎn)數(shù)是較為準(zhǔn)確的。
文獻(xiàn)[14]采用數(shù)據(jù)分塊的思想,而本文則對(duì)數(shù)據(jù)分塊的思想進(jìn)行改進(jìn),提出自適應(yīng)分塊的方法。為了比較改進(jìn)前后的效果,利用這兩種算法對(duì)墻體進(jìn)行輪廓提取,兩種算法的提取時(shí)間如表2所示。
Table 2 Comparing efficiency of improved algorithm表2 算法改進(jìn)前后效率比較
由表2可以看出,改進(jìn)后的算法效率能夠提高大約40%,尤其是坐標(biāo)點(diǎn)數(shù)越多時(shí)效果越明顯。與文獻(xiàn)[14]算法相比,改進(jìn)后算法的效率有一定的提高,說明本文提出的自適應(yīng)分塊墻體輪廓提取算法用來提高輪廓提取效率是可行的。
使用Autodesk Revit 2014軟件對(duì)平面圖中的墻體、門窗進(jìn)行三維重建,效果圖如圖14所示。
Fig.14 3D model of floor plan圖14 建筑平面圖的三維模型
本文算法主要用于直線墻體、門窗的識(shí)別與重建,為了證明本文算法具有較強(qiáng)的適應(yīng)性,進(jìn)行了大量的實(shí)驗(yàn)研究。實(shí)驗(yàn)結(jié)果證明,本文算法可滿足大多數(shù)的建筑平面圖紙進(jìn)行建筑構(gòu)件的識(shí)別、直線墻體輪廓的提取以及三維重建,具有比較廣泛的適用性。
本文通過對(duì)建筑平面圖數(shù)據(jù)的讀取、建筑構(gòu)件的識(shí)別與Revit二次開發(fā)技術(shù),實(shí)現(xiàn)了建筑平面圖紙的三維重建。闡述了建筑平面圖紙?zhí)崛?shù)據(jù)的算法流程,提取其中所需數(shù)據(jù),并主要對(duì)直線墻體、門窗進(jìn)行識(shí)別。為了避免提取到外墻間斷坐標(biāo)數(shù)據(jù)生成錯(cuò)誤的三維模型,本文提出自適應(yīng)分塊的墻體輪廓提取算法,計(jì)算最佳平均坐標(biāo)點(diǎn),來達(dá)到該算法的最高效率,并與文獻(xiàn)中所提算法進(jìn)行效率的對(duì)比。最后將生成三維模型的過程制作成Revit插件,達(dá)到自動(dòng)翻模的效果,避免重復(fù)工作,節(jié)省時(shí)間。
在墻體識(shí)別及輪廓提取的研究中,僅考慮了直線墻體,由于建筑構(gòu)件的多樣性,后續(xù)將對(duì)弧線墻體以及其他建筑構(gòu)件的識(shí)別、提取進(jìn)行研究。在三維重建研究中,本文僅考慮構(gòu)件嚴(yán)格按標(biāo)準(zhǔn)規(guī)劃圖層的建筑平面矢量圖紙,并未考慮掃描圖或無圖層信息的矢量圖紙,在圖紙的選擇方面帶來了局限性,并且重建的構(gòu)件均為默認(rèn)類型,如何做到更換多種類型,在后續(xù)將會(huì)做進(jìn)一步研究。
[1]Yue Jie.BIM technology and its application in architectural design[J].Sichuan Building Materials,2011,37(5):270-271.
[2]Jardim-Goncalves R,Grilo A.Building information modeling and interoperability[J].Automation in Construction,2010,19(4):387.
[3]Cao Yi.Present situation and development of BIM standard[J].Technology Innovation andApplication,2012(8):256.
[4]Goldberg H E.The building information model[J].Cadalyst,2004,33(1):32-40.
[5]Guo Hongling,Li Heng,Skitmore M.Life-cycle management of construction projects based on virtual prototyping technology[J].Journal of Management in Engineering,2010,26(1):41-47.
[6]Ma Cheng,Lu Xiaolong,Wang Dejiang.The method of generating axis net on BIM model based on CAD plans[J].Journal of Information Technology in Civil Engineering andArchitecture,2016,8(1):43-47.
[7]Wang Jianyu,Wang Xiyan.Research on modeling technology from AUTOCAD to REVIT[J].Journal of Information Technology in Civil Engineering and Architecture,2015,7(3):111-115.
[8]Li Tingting,Wu Xian,Yin Li,et al.Research on the application of BIM technology in engineering construction project[J].Journal of Information Technology in Civil Engineering andArchitecture,2014,6(1):92-95.
[9]Noac R.Converting CAD drawings to product models[D].Stockholm:Royal Institute of Technology,2001.
[10]Wang Qing,Wu Yijie,Xia Guanhua.Three-dimensional CAD/CAM system to secondary development[J].Jiangsu Machine Building&Automation,2001(4):183-185.
[11]Han Qingyao,Gao Suwei.Research on data retrieve technique in AutoCAD three-dimensions graphics[J].Machinery Design&Manufacture,2010(6):199-201.
[12]Xu Jinxin,Yang Songlin,Zhang Gang.Study on auto discrimination technology of AutoCAD three-dimensional graphics based on unit test mode[J].Machinery Design&Manufacture,2011(12):75-77.
[13]Zhai Rui.Reading,recognition and 3D reconstruction of AutoCAD architectural drawings[D].Hangzhou:Hangzhou Normal University,2011.
[14]Jiang Hongfei.Study on fast convex hull algorithm of planar point set[J].Computer Engineering and Applications,2002,38(20):48-49.
[15]Li Yuan,Feng He.The modeling of discrete point grid based on search circle[J].Science&Technology Vision,2013(27):85.[16]Autodesk Asia Pte Ltd.Basic course of the secondary development based on Autodesk Revit[M].Shanghai:Tongji University Press,2015.
附中文參考文獻(xiàn):
[1]岳杰.BIM技術(shù)及其在建筑設(shè)計(jì)中的應(yīng)用[J].四川建材,2011,37(5):270-271.
[3]曹毅.BIM標(biāo)準(zhǔn)的現(xiàn)狀及其發(fā)展[J].科技創(chuàng)新與應(yīng)用,2012(8):256.
[6]馬成,陸小龍,汪德江.基于CAD圖紙的BIM模型軸網(wǎng)生成方法研究[J].土木建筑工程信息技術(shù),2016,8(1):43-47.
[7]王建宇,王昕妍.二次開發(fā)實(shí)現(xiàn)從AUTOCAD到REVIT快速翻模技術(shù)研究[J].土木建筑工程信息技術(shù),2015,7(3):111-115.
[8]李亭亭,吳獻(xiàn),尹莉,等.BIM技術(shù)在工程建設(shè)項(xiàng)目中的應(yīng)用研究[J].土木建筑工程信息技術(shù),2014,6(1):92-95.
[10]王青,鄔義杰,夏冠華.三維CAD/CAM系統(tǒng)二次開發(fā)技術(shù)[J].江蘇機(jī)械制造與自動(dòng)化,2001(4):183-185.
[11]韓慶瑤,高素威.AutoCAD三維圖形數(shù)據(jù)提取方法研究[J].機(jī)械設(shè)計(jì)與制造,2010(6):199-201.
[12]徐金鑫,楊松林,張鋼.單元測(cè)試模式的AutoCAD三維圖形自動(dòng)判別技術(shù)研究[J].機(jī)械設(shè)計(jì)與制造,2011(12):75-77.
[13]翟銳.AutoCAD建筑工程圖的讀取、識(shí)別與三維重建[D].杭州:杭州師范大學(xué),2011.
[14]蔣紅斐.平面點(diǎn)集凸包快速構(gòu)建算法的研究[J].計(jì)算機(jī)工程與應(yīng)用,2002,38(20):48-49.
[15]李源,馮賀.基于搜索圓的離散點(diǎn)格網(wǎng)化建模[J].科技視界,2013(27):85.
[16]Autodesk Asia Pte Ltd.Autodesk Revit二次開發(fā)基礎(chǔ)教程[M].上海:同濟(jì)大學(xué)出版社,2015.