汪晴晴 楊秀芝 藺玉璞
(1.山東建筑大學(xué) 信息與電氣工程學(xué)院,濟(jì)南 250101;2.山東省建筑設(shè)計研究院有限公司,濟(jì)南 250001)
將2D圖紙轉(zhuǎn)換成BIM模型時,傳統(tǒng)的方法是手工鼠標(biāo)點擊菜單欄上的工具或命令進(jìn)行建模操作,此方法效率低且容易出錯。一些翻模插件[1-3]能夠加快建模的速度,通過用戶選擇二維圖紙中的圖層和輸入標(biāo)高等信息,自動生成三維BIM模型。
本文提出一種在自動圖層識別算法基礎(chǔ)上依據(jù)平面圖分析和列表信息分析創(chuàng)建結(jié)構(gòu)信息模型的方法,該方法需要用戶進(jìn)行的操作更少、效率更高。
DWG文件是AutoCAD創(chuàng)立的一種圖紙保存格式文件。DWG文件是一種二進(jìn)制文件,一般由Header(頭文件)、Entities(實體部)、Tables(表段)、Blocks(塊實體部)以及Contingrny Header(應(yīng)急頭部)組成[4]。本文在Revit中調(diào)用Teigha組件實現(xiàn)了DWG文件的讀取[5]。
結(jié)構(gòu)施工圖紙按照圖層進(jìn)行組織管理,本文采用圖層自動識別算法[6]進(jìn)行圖層的識別。對CAD圖紙有以下標(biāo)準(zhǔn)要求:
(1)要求CAD圖紙、圖層、構(gòu)件不能是一整個圖塊。如果CAD圖紙是一整個圖塊或者圖層、構(gòu)件是一整個圖塊的話,將無法利用算法進(jìn)行圖層自動識別,需要將圖紙進(jìn)行炸開處理,使得圖紙中的各類構(gòu)件均是由基本圖元(線、弧、圓等)組成;
(2)對于圖紙中包含天正圖元的情況,需要將圖紙轉(zhuǎn)換到t3版本;
(3)要求同類構(gòu)件的圖元必須放置于同一圖層,如柱線圖元均放置于柱圖層,柱標(biāo)注圖元均放置于柱標(biāo)注層。識別從搜索每一個圖層的特征元素(FE)開始,如墻的FE為線,墻標(biāo)注的FE為文本。其次,檢查FE的屬性(Attr)是否符合某些條件,根據(jù)屬性對識別結(jié)果的影響程度將屬性分為必要條件(NC)和充分條件(SC)。其中NC必須滿足,如梁標(biāo)注必須含有字符“L”。如果某圖層沒有識別到字符“L”,則該圖層不是梁標(biāo)注層,但對于梁標(biāo)注中的字符“-”不是必須存在的,因此為SC。SC滿足時,識別為梁標(biāo)注的可能性更高。接下來搜索與FE有關(guān)系約束的相關(guān)元素(RE),并檢查其屬性和與FE的拓?fù)潢P(guān)系(Rel)。FE-RE結(jié)構(gòu)如圖1所示,在判斷某圖層是否為目標(biāo)層時,先檢查圖層的FE和RE的NC是否都滿足,然后檢查FE和RE的SC,并按照公式(1)進(jìn)行計算得分,最后通過公式(2)計算總得分,得分最高的層即為目標(biāo)層。
圖1 FE-RE結(jié)構(gòu)
(1)
(2)
其中,Score為每個圖層的FE與目標(biāo)圖層的匹配度得分,NC代表匹配必要條件,SC代表匹配充分條件,N(SC==True)為符合匹配條件的SC的數(shù)目; N(SC)為識別某圖層FE-RE結(jié)構(gòu)的充分條件的個數(shù)。Total score為總匹配度得分,F(xiàn)E為特征元素,N(FE)為特征元素的個數(shù)。
以《混凝土結(jié)構(gòu)施工圖平面整體表示方法制圖規(guī)則和構(gòu)造詳圖(現(xiàn)澆混凝土框架、剪力墻、梁、板)》(16G101-1)[7]中的構(gòu)件注寫方式為依據(jù),根據(jù)圖紙中構(gòu)件的幾何約束和拓?fù)潢P(guān)系,應(yīng)用圖層自動識別算法識別各圖層。以梁圖層的自動識別為例,梁結(jié)構(gòu)局部平面圖如圖2所示。
梁圖層的識別存在以下難點:
難點一:梁是由平行且相互重疊的線組成,但是,在CAD圖紙中,存在同樣由平行線構(gòu)成的其他結(jié)構(gòu)構(gòu)件,如墻和柱;
難點二:復(fù)雜平面圖中,各種干擾線條比較多,比如尺寸線、引線和標(biāo)高線。
針對以上難點設(shè)計識別梁圖層的FE-RE結(jié)構(gòu),如圖3所示。FE為線,F(xiàn)E的RE(1)為線,RE(1)與FE同圖層且平行,RE(1)與FE的距離為200mm~800mm,這個距離是通過對大量圖紙的觀察得到的。又由于常用的結(jié)構(gòu)出圖軟件,如T20天正結(jié)構(gòu)軟件,其能繪制的梁寬的范圍為100mm~1000mm可知,存在不屬于200mm~800mm范圍的梁,因此,此屬性為識別梁線的一個SC。
圖2 梁結(jié)構(gòu)平面圖局部
圖3 梁圖層的FE-RE結(jié)構(gòu)
另外,針對難點二,圖紙中存在的干擾線條比較多,因此將梁圖層的識別側(cè)重于梁線的端部。主梁一般與柱或墻相連,因此需要在識別出柱圖層或墻圖層的前提下,進(jìn)行梁圖層識別的設(shè)計。FE的RE(2)是柱或墻封閉輪廓的某一條邊線,F(xiàn)E與RE(2)相交,由于次梁一般與主梁相連,因此存在梁線不與柱或墻邊線相交的情況,因此此拓?fù)錀l件為SC??紤]到梁的集中標(biāo)注一般會通過一條引線從梁線中引出,因此在識別出梁的集中標(biāo)注圖層的前提下,進(jìn)行梁圖層的設(shè)計。將引線作為FE的RE(3)RE(3)與FE垂直,又因為集中標(biāo)注必須含有字符“L”,因此,將字符“L”作為RE(4)。由于梁的編號一般為三個字符組成,可設(shè)置字符“L”與引線的距離為小于等于三個字符的寬度。
除此之外,梁軸線也可以作為FE的一個RE,為RE(5)。在一般情況下,RE(5)與FE的距離為RE(1)與FE距離的一半。由于圖紙中存在偏軸線的梁,故此條件為SC。
綜上,NC的數(shù)量為N(NC)=9,SC的數(shù)量為N(SC)=3。
需要識別的目標(biāo)層有軸網(wǎng)層、標(biāo)高表層、構(gòu)件列表層、柱圖層、柱標(biāo)注層、墻圖層、墻標(biāo)注圖層、梁圖層、梁標(biāo)注圖層、板標(biāo)注圖層及圖紙名稱說明層。由于柱的輪廓多位于軸線的周圍,柱的圖層識別相對容易,且對后續(xù)其他圖層的識別可以起到輔助作用,因此先識別柱層,再識別墻層和梁層,對于提高識別精度具有重要意義。
圖層識別順序為:標(biāo)高表層、圖紙名稱說明層、構(gòu)件列表層、軸網(wǎng)層、柱標(biāo)注層、柱圖層、墻標(biāo)注圖層、墻圖層、梁標(biāo)注圖層、梁圖層及板注圖層。
2.1.1 構(gòu)件截面輪廓的識別
通過圖層自動識別算法可以獲取到有用的圖層信息。接下來,在識別得到的圖層基礎(chǔ)上對構(gòu)件截面輪廓進(jìn)行識別。在過去的研究中,有學(xué)者對墻體識別開展研究[8,9]。李昌華[8]采用自適應(yīng)分塊的墻體輪廓提取算法,依據(jù)墻線連通規(guī)則找出墻圖層中所有封閉輪廓,實現(xiàn)墻體識別。本文選擇李昌華[8]提出的墻體檢測方法結(jié)合自動圖層識別結(jié)果對墻構(gòu)件截面輪廓進(jìn)行識別。柱也是由一組封閉的輪廓線組成,因此對柱構(gòu)件的識別方法與墻類似。關(guān)于梁構(gòu)件和板構(gòu)件的識別,采用Bin Yang等人[10]提出的方法,首先修改不連續(xù)的梁線,將一定距離內(nèi)的平行梁線分組即可識別梁; 對于變截面或偏心梁,采用連續(xù)梁中心線生成算法識別出梁; 對于板的識別,是在已識別柱、墻、梁的前提下通過分割而生成每一塊樓板。
2.1.2 構(gòu)件截面輪廓與其標(biāo)注的匹配
構(gòu)件截面輪廓與標(biāo)注存在有引線連接和無引線連接兩種情況。對于有引線連接的情況,以引線為關(guān)鍵點,引線可以由一條直線組成,也可以由多條直線連接組成,最重要的是如何正確找到引線。引線所在的圖層為構(gòu)件標(biāo)注層,對引線的搜索只需要在構(gòu)件標(biāo)注層進(jìn)行搜索即可,可以避免圖紙中其他線的干擾,如尺寸線,如圖4(c)所示。而對于無引線連接的構(gòu)件截面輪廓和其標(biāo)注之間的匹配較為復(fù)雜,本文采用“多閾值+雙向匹配算法”。
圖4 結(jié)構(gòu)平面布置圖局部
(1)有引線時的匹配算法
對于標(biāo)注引線起始線的一端在構(gòu)件截面輪廓內(nèi)或與構(gòu)件截面輪廓的其中一條邊相交的情況,如圖4(a)所示,采用以下方法實現(xiàn):
1)通過直線在構(gòu)件截面輪廓內(nèi)或直線與構(gòu)件截面輪廓的某一邊相交,確定起始線的一個端點;
2)以起始線的一端在構(gòu)件截面輪廓內(nèi)的端點為起始點,或以起始線與構(gòu)件截面輪廓某一條邊相交的端點為起始點,采用順時針旋轉(zhuǎn)的深度優(yōu)先搜索算法,去訪問該線段的終點坐標(biāo),然后以該線段的終點坐標(biāo)作為下一條線段的起始點,去訪問下一條線段的終點坐標(biāo),以此類推,直到訪問不到為止,圖4(a)左側(cè)的柱標(biāo)注為引線由兩條直線組成,圖4(a)右側(cè)的柱標(biāo)注為引線由一條直線組成;
3)通過步驟2)找到組成引線的所有直線,根據(jù)最后一條直線與標(biāo)注的距離小于標(biāo)注字符高度的一半,實現(xiàn)構(gòu)件截面輪廓與其標(biāo)注的匹配。
對于標(biāo)注引線起始線的一端不與構(gòu)件截面輪廓的任何一邊相交的情況,如圖4(b)所示。采用以下方法實現(xiàn):
1)以截面圖元的中心點或中心線為中心,定義閾值為W的文本搜索區(qū)域Rm;
2)搜索與Rm相交的引線L:L∩Rm≠?,以起始線的一端在包圍框B內(nèi)的端點為起始點,采用順時針旋轉(zhuǎn)的深度優(yōu)先搜索算法,去訪問該線段的終點坐標(biāo),然后以該線段的終點坐標(biāo)作為下一條線段的起始點去訪問下一條線段的終點坐標(biāo),以此類推,如果訪問不到,說明引線只有一條直線組成;
3)通過步驟2)找到組成引線的所有直線,根據(jù)最后一條直線與標(biāo)注的距離小于標(biāo)注字符高度的一半實現(xiàn)構(gòu)件截面輪廓與其標(biāo)注的匹配。
(2)無引線時的匹配算法
對于構(gòu)件截面輪廓與其標(biāo)注之間沒有引線的情況,處理起來比較復(fù)雜。本文采用“雙閾值+雙向匹配算法”進(jìn)行構(gòu)件截面輪廓與其標(biāo)注的匹配。算法的整個實現(xiàn)流程如圖5所示。之所以定義雙閾值是因為閾值的大小很難確定:若閾值范圍過小,可能找不到與構(gòu)件截面輪廓匹配的標(biāo)注;若閾值范圍過大,搜索到的構(gòu)件截面輪廓附近的標(biāo)注可能不止一個。鑒于此,本文選擇定義兩個閾值,一個閾值W1為圖紙中構(gòu)件標(biāo)注的中心點與構(gòu)件截面輪廓中心點或中心線的最大距離; 另一個閾值W2為圖紙中構(gòu)件標(biāo)注的中心點與構(gòu)件截面輪廓中心點或中心線的最小距離,這兩個距離是通過觀察圖紙得到的。其中,標(biāo)注的中心點為P,P是通過標(biāo)注的包圍框B計算得到的。在這里,只要滿足閾值范圍掃過標(biāo)注包圍框,則被掃過的標(biāo)注即可作為候選標(biāo)注存儲,不需要整個標(biāo)注的包圍框B都在閾值范圍內(nèi),下文會通過一個實例對此進(jìn)行解釋。
圖5 雙閾值+雙向匹配算法
另外,從構(gòu)件截面輪廓出發(fā)的搜索結(jié)果與從標(biāo)注中心出發(fā)搜索的結(jié)果不同,如圖6所示。以標(biāo)注YJZ9的中心點為中心,閾值為W2的范圍內(nèi)搜索得到的截面圖形有①和③; 反過來,以截面輪廓③的中心點為中心,閾值為W2的范圍內(nèi)搜索得到的標(biāo)注只有YJZ9。因此,本文設(shè)計雙向匹配算法,在以標(biāo)注中心點為中心、W2為閾值搜索得到兩個截面輪廓的情況下,可以考慮以截面輪廓中心點為中心、W2為閾值去搜索標(biāo)注。同樣,對于以截面中心點為中心、W2為閾值搜索得到兩個標(biāo)注的情況下,也可以以標(biāo)注中心點為中心、W2為閾值去搜索截面輪廓,不管從哪個方向進(jìn)行搜索,只要能使搜索的結(jié)果為唯一的即可實現(xiàn)匹配?!半p閾值+雙向匹配算法”的具體應(yīng)用可以通過圖6得以體現(xiàn)。
圖6 剪力墻、柱平面布置圖局部
圖中有三個柱截面輪廓,給它們編號為①②③,以截面輪廓①的中心點為中心,在閾值W1范圍內(nèi)進(jìn)行搜索,由于只要滿足閾值范圍掃過標(biāo)注包圍框,即可將閾值范圍掃過的標(biāo)注作為該截面輪廓的候選標(biāo)注,因此截面輪廓①在閾值W1范圍內(nèi)找到了三個標(biāo)注,分別為YAZ3、YYZ9、YJZ9,由于閾值W1范圍內(nèi)存在另一柱的截面輪廓②,以截面輪廓②的中心點為中心,在閾值為W2的范圍內(nèi)搜索到一個標(biāo)注YAZ3,則截面輪廓②與標(biāo)注YAZ3完成匹配。由于閾值W1范圍內(nèi)不存在截面輪廓③,因此以標(biāo)注YYZ9的中心點P為中心,閾值為W2的范圍內(nèi)搜索截面輪廓,找到一個截面輪廓①,則標(biāo)注YYZ9與截面輪廓①完成匹配。以標(biāo)注YJZ9的中心點P為中心,在閾值W2范圍內(nèi)搜索截面輪廓,找到截面輪廓①和截面輪廓③,搜索結(jié)果不為1,再以截面輪廓③為中心點,閾值為W2范圍內(nèi)搜索標(biāo)注,找到一個標(biāo)注YJZ9,則截面輪廓③與標(biāo)注YJZ9完成匹配。
結(jié)構(gòu)構(gòu)件平法施工圖的表示方法,除了采用截面注寫方式,有時也會采用另一種注寫方式,即表格注寫方式[7]。將構(gòu)件的屬性信息存儲在列表中,通過構(gòu)件列表來提取構(gòu)件的屬性,由于構(gòu)件列表對于構(gòu)件信息的表達(dá)相對于截面注寫方式更加清晰,因此對構(gòu)件列表的識別可以在很大程度上提高構(gòu)件識別的準(zhǔn)確率。另外,平面圖僅給出構(gòu)件的二維信息,而構(gòu)件的高度信息則在樓層標(biāo)高表中給出,標(biāo)高表的識別可為各樓層各種構(gòu)件提供高度信息,分析樓層表自動獲取樓層高度信息,減少二維圖紙轉(zhuǎn)換成BIM模型過程中高度信息的人工輸入。因此,對于表格信息的提取與識別也極為重要,以下對列表分析的方法進(jìn)行介紹。
圖7左側(cè)為列表分析流程。首先,分析表格的表頭排列方向是橫向的還是縱向的; 然后,分析表頭的內(nèi)容,如果表頭排列方向是橫向的,通過分析表頭的內(nèi)容來辨別表格的類型,如通過表頭是否含有“層號”、“標(biāo)高”、“層高”這三個字符串判斷表格是否為結(jié)構(gòu)樓層標(biāo)高表; 如果表格類型為結(jié)構(gòu)樓層標(biāo)高表,提取表頭上方數(shù)據(jù)進(jìn)行存儲,如表1(a)所示; 如果表頭含有“墻厚”字符串,則可以判斷該表格為墻構(gòu)件表,根據(jù)墻構(gòu)件表的表頭排列方式為橫向排列,對表頭的下方數(shù)據(jù)進(jìn)行提取并存儲,如表1(b)所示; 如果表頭排列是縱向的,分析表頭內(nèi)容,然后分析表頭右側(cè)數(shù)據(jù); 對于即存在縱向排列的表頭,又存在橫向排列的表頭,如表1(b)所示,縱向排列的有“Q1”和“Q2”兩個表頭,橫向排列的有“編號”、“標(biāo)高”、“水平分布筋”、“垂直分布筋”、“拉筋(矩形)”等表頭,對于這種情況,先根據(jù)橫向排列的表頭讀取下側(cè)數(shù)據(jù),然后根據(jù)縱向排列的表頭讀取右側(cè)數(shù)據(jù); 如表1(b)所示,同一編號為Q1的墻,標(biāo)高不同,對應(yīng)的墻厚屬性也不同,因此需要對不同標(biāo)高、相同編號的墻構(gòu)件信息進(jìn)行讀取。
圖7 平面圖分析和列表分析流程圖
表1 部分列表
(b)墻表
《混凝土結(jié)構(gòu)施工圖平面整體表示方法制圖規(guī)則和構(gòu)造詳圖(現(xiàn)澆混凝土框架、剪力墻、梁、板)》(16G101-1)[7]規(guī)定墻、柱平法施工圖可以采用兩種注寫方式表達(dá),一種是截面注寫方式,一種是平面注寫方式。對于采用截面注寫方式表達(dá)的構(gòu)件,其平面施工圖中詳細(xì)標(biāo)注了構(gòu)件的幾何信息和鋼筋信息,僅通過分析平面圖即可得到構(gòu)件的信息; 而對于采用列表注寫方式表達(dá)的構(gòu)件,其平面施工圖中只表達(dá)了構(gòu)件的幾何信息和名稱信息,而具體的構(gòu)件配筋信息是通過獨立表格的形式給出。因此,對于采用列表注寫方式表達(dá)的構(gòu)件,提出平面圖分析和構(gòu)件列表分析相結(jié)合的方式。
通過上文介紹的圖層自動識別算法可以得到圖紙名稱所在的圖層,分析圖紙名稱可以得到圖紙中各構(gòu)件所在的樓層信息或者樓層標(biāo)高信息。因此,將平面圖分析得到的構(gòu)件的符號信息和樓層標(biāo)高信息與通過構(gòu)件列表分析得到的符號信息和樓層標(biāo)高信息進(jìn)行匹配。通過匹配,平面圖中未標(biāo)注鋼筋信息屬性的構(gòu)件的鋼筋信息可從構(gòu)件列表中獲取。
此方法的目的是充分利用二維圖紙中的信息,不僅可以得到構(gòu)件的幾何信息,而且可以得到構(gòu)件的鋼筋屬性信息。對于平法施工圖表示的構(gòu)件的識別,不局限于構(gòu)件是采用截面注寫方式表達(dá),還是采用列表注寫方式表達(dá),均能實現(xiàn)識別,且能識別出構(gòu)件的完整信息,避免二維圖紙在轉(zhuǎn)換為三維BIM模型的過程中出現(xiàn)信息丟失的問題。
利用自動圖層識別算法,獲取到了軸網(wǎng)圖層,根據(jù)軸線之間的相交情況可以確定圖紙的局部坐標(biāo)系,構(gòu)件的二維位置通過軸網(wǎng)和尺寸線給出,對于生成BIM模型還缺少標(biāo)高信息,接下來討論如何獲得三維坐標(biāo)系。
二維CAD圖紙轉(zhuǎn)換成BIM模型的過程中,為了減少高度信息的輸入,提高自動化程度,將樓層結(jié)構(gòu)標(biāo)高表與平面圖相結(jié)合。根據(jù)已識別的標(biāo)高表可以得到樓層的標(biāo)高數(shù)據(jù)。在每個平面圖上,都有相同的軸網(wǎng)。通過軸網(wǎng)和樓層高度可以獲得構(gòu)件在三維坐標(biāo)系中的位置。因此,可以構(gòu)建3D坐標(biāo)系以集成平面圖和樓層標(biāo)高,如圖8(a)所示; 圖8(c)中顯示了從樓層標(biāo)高中獲取的樓層高度進(jìn)行的平面圖布置。
柱、墻的以本樓層的標(biāo)高為底標(biāo)高,以高一層的標(biāo)高為頂標(biāo)高; 如無特殊標(biāo)注,梁、板以本樓層標(biāo)高為頂標(biāo)高。根據(jù)標(biāo)注的語義分析得出梁寬、板厚,通過計算得到對應(yīng)的底標(biāo)高。
在軸網(wǎng)左下角設(shè)置三維坐標(biāo)系基點為(0,0, 0)其中標(biāo)記為1的網(wǎng)格線和標(biāo)記為A的網(wǎng)格線相交并且標(biāo)高為零,如圖8(b)所示。三維坐標(biāo)系中的坐標(biāo)軸方向與網(wǎng)格線向右側(cè)和向上的方向一致。平面圖中某點的三維坐標(biāo)可以通過公式(3)計算:
圖8 三維坐標(biāo)系
(3)
其中,Xcd、Ycd為CAD系統(tǒng)坐標(biāo),Pscale是用于在真實世界和工程圖之間轉(zhuǎn)換尺寸的比例,Elevation(floor)為樓層的高度,原點是標(biāo)為1的軸線和標(biāo)為A的軸線相交的點。
基于Teighafor.dwg讀取DWG文件,并對讀取的數(shù)據(jù)進(jìn)行識別之后,可以得到用于生成BIM模型的全部結(jié)構(gòu)信息,然后分類存儲起來,用于寫入到Revit平臺中去。Autodesk Revit軟件沒有完整的信息存儲數(shù)據(jù)庫模塊,存儲數(shù)據(jù)能力較弱,導(dǎo)致工作效率低。因此,對基于Revit的結(jié)構(gòu)模型自動生成功能來說,必須要進(jìn)行數(shù)據(jù)庫的開發(fā),本文選擇在Revit中嵌入SQLite數(shù)據(jù)庫提高Revit數(shù)據(jù)存儲能力。
首先創(chuàng)建SQLite數(shù)據(jù)庫,通過.NET C#語言,只需引入命名空間using System.Data.SQLite,就能夠很容易地在程序中創(chuàng)建SQLite數(shù)據(jù)庫文件,然后進(jìn)行數(shù)據(jù)表結(jié)構(gòu)的設(shè)計,考慮到不同構(gòu)件的幾何信息中的數(shù)據(jù)值比較統(tǒng)一,而鋼筋信息差別較大,因此,按照結(jié)構(gòu)幾何信息和結(jié)構(gòu)鋼筋信息進(jìn)行分類設(shè)計。
關(guān)于幾何信息表的設(shè)計如表2所示。梁、墻、板、柱構(gòu)件可以通過Point1、Point2、Point3、Point4、dimension、length、Level等表示幾何屬性。添加如構(gòu)件ID(主鍵)、端點、截面尺寸、長度、高度及標(biāo)高等幾何數(shù)據(jù)信息字段。
表2 幾何表字段屬性
不同構(gòu)件類型的配筋信息相差較大,需要根據(jù)不同構(gòu)件類型的配筋來分別設(shè)計鋼筋信息表,如表3所示。
表3 不同構(gòu)件類型的鋼筋表字段屬性
基于Revit軟件平臺,采用C#語言和Visual Studio2017開發(fā)工具,基于Revit提供的函數(shù)庫進(jìn)行二次開發(fā),結(jié)合上文獲取的結(jié)構(gòu)數(shù)據(jù)信息,編寫結(jié)構(gòu)建模程序,實現(xiàn)Revit中自動生成結(jié)構(gòu)BIM模型。通過以下四個步驟實現(xiàn):
(1)結(jié)構(gòu)族文件的導(dǎo)入
本文采用RevitAPI中的Autodesk.Revit.DB.Document類中提供的LoadFamily(string)方法導(dǎo)入結(jié)構(gòu)族,只需要提供族文件的路徑名即可。 由于板和墻屬于系統(tǒng)族,項目中存在這兩種類型的族文件,因此不需要導(dǎo)入墻和板族文件。
(2)構(gòu)件類型的創(chuàng)建
將構(gòu)件族文件導(dǎo)入到Revit項目中后,接下來需要根據(jù)從圖紙中讀到的構(gòu)件信息來創(chuàng)建構(gòu)件類型; 通常是根據(jù)寬和高兩個參數(shù)值來創(chuàng)建梁和柱構(gòu)件的類型,根據(jù)不同厚度來創(chuàng)建墻和板構(gòu)件的類型; 對于梁和柱構(gòu)件,首先調(diào)用API獲取其族樣式,然后獲取他們的參數(shù),通過改變寬度和高度的值來創(chuàng)建構(gòu)件類型; 對于墻和板構(gòu)件,首先通過調(diào)用API獲取構(gòu)件類型,比如板類型和墻類型,然后獲取組合結(jié)構(gòu),最后再修改組合結(jié)構(gòu)層厚度。
(3)構(gòu)件實體的創(chuàng)建
構(gòu)件類型創(chuàng)建完后,接下來進(jìn)行構(gòu)件實體的創(chuàng)建; 對于外部導(dǎo)入族,如柱和梁,使用NewFamilyInstance創(chuàng)建族實例; 對于系統(tǒng)族,如墻和板,可以使用特定的API方法創(chuàng)建實例; 生成不同構(gòu)件類型實體模型的API如表4所示。
表4 構(gòu)件創(chuàng)建方法
(4)添加鋼筋信息
結(jié)構(gòu)BIM模型除了由三維幾何模型構(gòu)成,還包括構(gòu)件的鋼筋屬性信息, 通過以下兩步驟可以將構(gòu)件鋼筋信息添加到對應(yīng)的構(gòu)件模型當(dāng)中:第一步是首先給構(gòu)件添加參數(shù)名,對于外部族元素如柱和梁,利用族文檔中的管理器FamilyManager為構(gòu)件添加參數(shù)名; 對于系統(tǒng)族元素如墻和板,通過添加共享參數(shù)方法為構(gòu)件添加參數(shù)名; 第二步是對第一步添加的各構(gòu)件參數(shù)進(jìn)行賦值。經(jīng)過以上處理,在Revit中創(chuàng)建的模型就包含鋼筋信息。
為了驗證本文提出的在圖層自動識別算法基礎(chǔ)上整合平面圖和列表進(jìn)行結(jié)構(gòu)BIM模型自動建模方法的準(zhǔn)確性及有效性,采用面向?qū)ο蠹夹g(shù)的C#語言,使用Visual Studio2017進(jìn)行代碼編寫,在Autodesk Revit 2016中進(jìn)行測試。由于我國缺乏CAD圖紙相關(guān)制圖標(biāo)準(zhǔn),各設(shè)計院和不同設(shè)計師的CAD圖紙制圖方法差異較大,因此,為了使轉(zhuǎn)換更加準(zhǔn)確,在轉(zhuǎn)換之前需對圖紙進(jìn)行預(yù)處理。檢查圖紙、圖層是否是一整個圖塊,如果是的話需要炸開; 表達(dá)同類構(gòu)件的圖元是否在同一圖層,如果不是,修改圖層,使圖紙分層變得清晰、準(zhǔn)確。
案例研究之一是一層剪力墻結(jié)構(gòu),其標(biāo)準(zhǔn)平面圖的局部如圖9所示,從圖中我們可以看到柱(包含異形柱)和墻的名稱標(biāo)注信息,但是沒有詳細(xì)的鋼筋標(biāo)注信息,因此需要結(jié)合構(gòu)件列表的分析才能得到墻和柱(包含異形柱)的配筋信息,然后再結(jié)合樓層標(biāo)高表信息即可生成三維BIM模型。
(a)剪力墻局部圖紙
另一個案例是復(fù)雜的拆遷保障住房工程剪力墻結(jié)構(gòu),包含柱(包含異形柱)、墻、梁、板構(gòu)件,其剪力墻平面圖局部如圖10所示,結(jié)合從梁平面圖我們可以獲取梁的幾何信息和配筋信息,然后再結(jié)合板平面圖和樓層標(biāo)高表,生成如圖11所示的BIM模型。生成的各構(gòu)件模型明細(xì)表如表5所示。目前,利用本文提到的方法進(jìn)行轉(zhuǎn)換的工程還有鋼筋混凝土框架結(jié)構(gòu)。
圖10 剪力墻局部平面圖
圖11 剪力墻BIM模型
表5 生成構(gòu)件模型明細(xì)表
本文通過分析平面圖和列表,充分利用二維圖紙信息實現(xiàn)結(jié)構(gòu)BIM模型的自動生成,闡述了圖層自動識別算法、平面圖分析算法、列表分析算法以及平面圖與列表的結(jié)合。為了避免人工手動選擇構(gòu)件圖層,本文在自動圖層分類算法的基礎(chǔ)上,根據(jù)構(gòu)件的特征和構(gòu)件與其標(biāo)注的匹配算法對平面圖進(jìn)行分析; 為了解決人工手動添加高度信息的問題,本文對結(jié)構(gòu)樓層標(biāo)高表進(jìn)行分析; 結(jié)合平面圖分析和列表分析所得數(shù)據(jù),利用RevitAPI自動生成BIM模型。通過實例驗證,本方法能夠快速、準(zhǔn)確地實現(xiàn)從CAD圖紙到BIM模型的自動轉(zhuǎn)換。
目前僅實現(xiàn)柱(包含異形柱)、常規(guī)墻、常規(guī)梁和板構(gòu)件的轉(zhuǎn)換,而異形墻、異形梁構(gòu)件尚未進(jìn)行驗證。對于其他構(gòu)件,如門窗、樁、承臺等構(gòu)件,其實現(xiàn)思路和柱、梁、墻等構(gòu)件類似。通過圖層自動識別算法自動識別出門窗、樁、承臺所在的圖層,然后對門窗、樁、承臺所在圖層的圖元數(shù)據(jù)進(jìn)行讀取和分析,最后通過門窗、樁、承臺的構(gòu)件生成實體模型API來生成門和窗模型。此類構(gòu)件的轉(zhuǎn)換將在后續(xù)工作中進(jìn)行完善。
另外,本文基于二維CAD圖紙生成的結(jié)構(gòu)BIM模型除了包含三維幾何信息,還包含結(jié)構(gòu)構(gòu)件的鋼筋信息,而鋼筋的轉(zhuǎn)換本文并未進(jìn)行研究。由于生成的結(jié)構(gòu)BIM模型中存儲了結(jié)構(gòu)構(gòu)件的鋼筋信息,因此,關(guān)于鋼筋模型的生成可以通過提取構(gòu)件的鋼筋信息來生成構(gòu)件的鋼筋模型,關(guān)于鋼筋模型的生成將在后續(xù)工作中進(jìn)行完善。