張維錦,李至平(華東交通大學(xué)土木建筑學(xué)院,江西 南昌330013)
?
網(wǎng)架結(jié)構(gòu)三維建模方法的研究
張維錦,李至平
(華東交通大學(xué)土木建筑學(xué)院,江西南昌330013)
摘要:由于傳統(tǒng)的二維CAD圖紙表達(dá)建筑信息不夠直觀,尤其是當(dāng)結(jié)構(gòu)為網(wǎng)架結(jié)構(gòu)時(shí),由于結(jié)構(gòu)的復(fù)雜性,需要采用大量的網(wǎng)架剖面圖才能清楚表達(dá)結(jié)構(gòu)信息。本文針對(duì)該方法的不足,提出一種新的網(wǎng)架結(jié)構(gòu)三維建模的方法,通過提取二維剖面圖中的節(jié)點(diǎn)坐標(biāo)信息、桿件節(jié)點(diǎn)編號(hào)以及桿件截面尺寸信息等,將二維的剖面施工圖紙轉(zhuǎn)化為真實(shí)的三維模型。實(shí)驗(yàn)結(jié)果表明,采用該方法能更快速的建出網(wǎng)架三維模型,并且通過模型能更直接的表達(dá)網(wǎng)架結(jié)構(gòu)信息。
關(guān)鍵詞:表格;坐標(biāo);字符;鏈表;數(shù)組
聯(lián)合國全球地理信息管理德清論壇部分采用了飄帶式網(wǎng)架結(jié)構(gòu),圖1為論壇的效果圖,中間部分是飄帶式網(wǎng)架。設(shè)計(jì)院給出了網(wǎng)架結(jié)構(gòu)三維模型及剖面圖,圖2所示為網(wǎng)架的三維模型,其中桿件只是普通的CAD線段,沒有截面尺寸信息以及連接件的信息,而這些信息通過圖以及表格的形式存放在圖紙中,由于網(wǎng)架結(jié)構(gòu)非常復(fù)雜,設(shè)計(jì)院將網(wǎng)架結(jié)構(gòu)按x方向、y方向以及z方向進(jìn)行剖切,形成了60多張CAD剖面施工圖紙。
圖1 論壇效果圖Fig. 1 Grid effect diagram
圖2 網(wǎng)架CAD三維模型Fig. 2 Grid CAD 3D model
CAD圖紙文件格式有DWG、DWS、DWT、DXF等,其中DXF(data exchange format)是CAD軟件生成的數(shù)據(jù)交換文件,可以從DXF格式的施工圖紙?zhí)崛?chǔ)存在文件中的各類參數(shù)。
針對(duì)提取DXF文件數(shù)據(jù)有一些相關(guān)研究:譚超,張群會(huì)根據(jù)DXF格式文件的數(shù)據(jù)結(jié)構(gòu)特點(diǎn)提出基于AutoCAD的DXF格式文件讀寫的方法[1];張成才,孫喜梅等分析了DXF文件數(shù)據(jù)轉(zhuǎn)換接口,并提出了Auto-CAD的DXF文件格式及其轉(zhuǎn)換接口的研究[2];張維錦,汪雷通過分析暗柱構(gòu)件的特點(diǎn)提出了識(shí)別暗柱方法[3];梁海濤,馬軍林,等提出DXF模型的數(shù)據(jù)讀取方法[4]。對(duì)于DXF文件中表格的提取相關(guān)研究:石學(xué)榮,汪雷提出了識(shí)別GS柱表和PKPM柱表的方法[5];劉英,尚文利提出了智能識(shí)別工程圖中明細(xì)表標(biāo)題欄線框的方法[6];劉冰,江早提出了表格文件圖像邏輯結(jié)構(gòu)提取方法[7];謝亮提出了表格識(shí)別預(yù)處理技術(shù)與表格字符提取算法[8]。
由于網(wǎng)架剖面施工圖紙過多,導(dǎo)致不能直接表達(dá)網(wǎng)架結(jié)構(gòu)。針對(duì)該問題,提出了一套關(guān)于提取網(wǎng)架剖面圖紙中節(jié)點(diǎn)坐標(biāo)信息、桿件節(jié)點(diǎn)編號(hào)以及桿件截面尺寸信息的方法,將二維的剖面施工圖紙轉(zhuǎn)化為真實(shí)的三維模型,直接的表達(dá)了網(wǎng)架結(jié)構(gòu)信息。
在所給的網(wǎng)架剖面結(jié)構(gòu)施工圖中,設(shè)計(jì)者用2張表:網(wǎng)架節(jié)點(diǎn)坐標(biāo)表,桿件截面尺寸表;2個(gè)剖面:桿件節(jié)點(diǎn)編號(hào)、桿件截面尺寸,來表達(dá)網(wǎng)架結(jié)構(gòu)信息。通過桿件節(jié)點(diǎn)編號(hào)圖得到桿件節(jié)點(diǎn)的編號(hào),由網(wǎng)架節(jié)點(diǎn)坐標(biāo)表得到三維坐標(biāo),通過桿件截面尺寸的剖面圖得到桿件的截面。表1為施工圖紙中的網(wǎng)架節(jié)點(diǎn)坐標(biāo)表,表2為桿件截面尺寸表。網(wǎng)架節(jié)點(diǎn)坐標(biāo)表總共有4列,分別是節(jié)點(diǎn)編號(hào)、節(jié)點(diǎn)x坐標(biāo)、節(jié)點(diǎn)y坐標(biāo)以及節(jié)點(diǎn)z坐標(biāo),桿件截面表總共2列,分別為編號(hào)以及截面尺寸。如圖3所示為某個(gè)剖面的網(wǎng)架節(jié)點(diǎn)編號(hào),該剖面圖用CAD線段表示桿件,桿件端點(diǎn)的編號(hào)在線段端點(diǎn)附近處,這個(gè)剖面對(duì)應(yīng)的桿件截面尺寸編號(hào)如圖4所示,同樣桿件也是用CAD線段表示,桿件的編號(hào)在線段的正上方。
表1 網(wǎng)架節(jié)點(diǎn)坐標(biāo)表Tab.1 Grid node coordinate
表2 桿件截面尺寸表Tab.2 Bar section size
圖3桿件節(jié)點(diǎn)編號(hào)Fig. 3 Bar node number
圖4 桿件截面編號(hào)Fig. 4 Bar section size member
通過分析發(fā)現(xiàn),上述2張表及2幅圖都是以線段和文字構(gòu)成的,要建立三維的實(shí)體網(wǎng)架結(jié)構(gòu)模型,首先提取剖面施工圖中線段端點(diǎn)坐標(biāo)、字符坐標(biāo)、字符文本信息等,可以將網(wǎng)架剖面施工圖紙保存為DXF格式,獲得DXF文件中的參數(shù)。
DXF格式是AutoCAD一種開放的矢量數(shù)據(jù)格式,如表3所示為DXF文件中一條直線的代碼:直線的起點(diǎn)坐標(biāo)x,y,z表示為10,20,30;直線的終點(diǎn)坐標(biāo)x,y,z表示為11,21,31;x,y,z方向的分量表示為210,220,230;代碼39表示直線的厚度。DXF文件中的字符信息通過字符的子類數(shù)據(jù)標(biāo)記,圖層,坐標(biāo),高度,文字信息等參數(shù)儲(chǔ)存如表4所示。只需要將DWG格式的施工圖紙保存為DXF格式,通過提取DXF文件中儲(chǔ)存的線段以及字符的信息參數(shù),就能得到施工圖紙中線段和文字的信息。
表3 DXF文件中直線儲(chǔ)存的代碼Tab.3 Code for line storage in DXF file
表4 DXF文件中字符儲(chǔ)存的代碼Tab.4 Code for character storage in DXF file
網(wǎng)架結(jié)構(gòu)是由多根桿件按照一定的網(wǎng)格形式通過節(jié)點(diǎn)連結(jié)而成的空間結(jié)構(gòu),設(shè)計(jì)者通過60多張CAD剖面施工圖來表達(dá)該網(wǎng)架,通過分析網(wǎng)架結(jié)構(gòu)剖面施工圖可知,網(wǎng)架結(jié)構(gòu)由連接節(jié)點(diǎn)及不同尺寸的桿件組成的,所以可以把網(wǎng)架三維建模分為2部分,第1部分為網(wǎng)架連接點(diǎn)的三維建模,第2部分為網(wǎng)架桿件的三維建模,只需要將這2兩部分實(shí)現(xiàn),即可以實(shí)現(xiàn)空間網(wǎng)架結(jié)構(gòu)的三維建模。
2.1 網(wǎng)架連接點(diǎn)的三維建模
網(wǎng)架連接點(diǎn)的三維坐標(biāo)通過“網(wǎng)架節(jié)點(diǎn)坐標(biāo)表”表達(dá),所以要對(duì)“網(wǎng)架節(jié)點(diǎn)坐標(biāo)表”的內(nèi)容進(jìn)行提取,首先把施工圖紙的格式轉(zhuǎn)成DXF格式,通過分析表格的結(jié)構(gòu)特點(diǎn)提取表格信息,框選所要提取的表格,把選框中的表格線段保存在鏈表LineList中,同時(shí)把字符保存在鏈表BzList中,表格的線段有單段直線也可能有多段線(幾條線段構(gòu)成的一條連續(xù)線條),若為多段線則分解為單段線。然后根據(jù)鏈表LineList中儲(chǔ)存的直線端點(diǎn)坐標(biāo)信息,找到選框中的表格線段交點(diǎn)最小值x1,y1和最大值x2,y2,并將x坐標(biāo)按從小到大存放在x[i]數(shù)組中,數(shù)組中的個(gè)數(shù)則為表格的列數(shù),同樣將y坐標(biāo)按從小到大存放在y[i]數(shù)組中,數(shù)組中的個(gè)數(shù)則為表格的行數(shù)。通過判斷y[i]數(shù)組個(gè)數(shù)得到所需要提取的文字行數(shù),然后從y[0]行進(jìn)行字符提取,將每一行當(dāng)做一個(gè)字符串存放在數(shù)組m_z[i]中保存,提取的字符串中第一個(gè)字符為節(jié)點(diǎn)編號(hào),而后分別為x,y,z坐標(biāo)。這樣一來就能快速得到桿件節(jié)點(diǎn)編號(hào)對(duì)應(yīng)的三維坐標(biāo),施工單位投標(biāo)報(bào)價(jià)時(shí),網(wǎng)架連接點(diǎn)的半徑按桿件截面半徑的1.5倍估算,通過加入網(wǎng)架節(jié)點(diǎn)的半徑就能建立三維的“球節(jié)點(diǎn)”。
2.2 網(wǎng)架桿件的三維建模
2.2.1 提取桿件端點(diǎn)坐標(biāo)
要實(shí)現(xiàn)三維的實(shí)體網(wǎng)架桿件建模,首先要得到桿件兩端點(diǎn)三維坐標(biāo)及截面,連接點(diǎn)的坐標(biāo)就是桿件兩端點(diǎn)的坐標(biāo)。而桿件端點(diǎn)坐標(biāo)通過“桿件節(jié)點(diǎn)編號(hào)剖面圖”和“節(jié)點(diǎn)坐標(biāo)表”共同表達(dá),通過剖面圖可以獲取桿件端點(diǎn)編號(hào),再根據(jù)坐標(biāo)表就能找到桿件端點(diǎn)編號(hào)對(duì)應(yīng)的三維坐標(biāo)。
但是桿件端點(diǎn)編號(hào)表示在桿件端點(diǎn)附近處,所以需要將編號(hào)與桿件端點(diǎn)進(jìn)行對(duì)應(yīng)。通過分析剖面圖可知,編號(hào)對(duì)應(yīng)的桿件端點(diǎn)在線段交點(diǎn)最近處,可以根據(jù)編號(hào)字符坐標(biāo)距離線段交點(diǎn)的遠(yuǎn)近去確定對(duì)應(yīng)關(guān)系,框選該剖面圖,對(duì)該剖面圖中的線段信息進(jìn)行提取,找到框選中線段的交點(diǎn),通過交點(diǎn)找到離交點(diǎn)最近的字符,并將交點(diǎn)的坐標(biāo)賦值予該編號(hào)字符。
這樣一來就實(shí)現(xiàn)了編號(hào)與桿件端點(diǎn)對(duì)應(yīng),提取完成后將編號(hào)和線段變成虛線表示已經(jīng)提取,如果網(wǎng)架節(jié)點(diǎn)編號(hào)剖面圖中出現(xiàn)編號(hào)重疊、缺失等問題,需要先對(duì)剖面圖中的字符進(jìn)行移動(dòng)、添加等方法進(jìn)行處理,處理后再進(jìn)行上述步驟進(jìn)行提取。
2.2.2 提取桿件截面尺寸
在網(wǎng)架剖面圖中,設(shè)計(jì)者用桿件截面尺寸表以及桿件編號(hào)圖共同表達(dá)桿件截尺寸面信息,在桿件編號(hào)圖中桿件尺寸用桿件編號(hào)來表示,而桿件編號(hào)對(duì)應(yīng)的尺寸在桿件尺寸信息表中,所以需要將桿件編號(hào)替換成截面尺寸。
在替換信息前,先提取網(wǎng)架桿件尺寸信息表,過程原理與提取網(wǎng)架節(jié)點(diǎn)坐標(biāo)表相同,提取完后通過框選桿件截面尺寸編號(hào)圖的方式,將選框中的編號(hào)字符替換為表中對(duì)應(yīng)的尺寸字符,替換后字符的坐標(biāo)不變,只是將文本內(nèi)容進(jìn)行替換。
通過分析替換后的桿件編號(hào)圖可知,字符坐標(biāo)點(diǎn)到線段垂直距離小的為該桿件的截面尺寸,所以在提取桿件尺寸信息時(shí),可以通過字符坐標(biāo)離線段的遠(yuǎn)近判斷是否為該桿件的截面尺寸,通過該判斷就可以得到桿件對(duì)應(yīng)的截面尺寸。
在替換后的桿件截面尺寸剖面圖中,如果出現(xiàn)字符缺失、重疊等問題,需對(duì)剖面圖中的字符進(jìn)行添加、移動(dòng)等方法進(jìn)行處理,處理后再進(jìn)行上述步驟進(jìn)行替換。
2.2.3 生成三維桿件
要完成桿件三維建模,需要有桿件尺寸和桿件端點(diǎn)坐標(biāo)信息,通過前兩步方法得到處理后的桿件節(jié)點(diǎn)編號(hào)圖以及桿件截面尺寸圖,將2個(gè)處理過后的剖面圖拼接,這樣在同一個(gè)桿件剖面圖上就同時(shí)擁有了桿件節(jié)點(diǎn)坐標(biāo)信息和桿件截面尺寸信息。
框選拼接后的剖面圖,對(duì)選框中的CAD線段提取數(shù)據(jù),通過線段兩端點(diǎn)處的編號(hào)得到桿件端點(diǎn)對(duì)應(yīng)的坐標(biāo),再通過提取線段上方的尺寸字符得到桿件的截面尺寸信息,有了這些數(shù)據(jù)就能實(shí)現(xiàn)這片網(wǎng)架的三維建模,提取生成三維桿件后自動(dòng)刪除CAD線段。
如果由于字符重疊、缺失等問題,導(dǎo)致個(gè)別桿件沒提取成功,則CAD線段保留,此時(shí)我們可以單獨(dú)對(duì)這根桿件進(jìn)行建模,通過手工輸入桿件的起點(diǎn)編號(hào)、終點(diǎn)編號(hào)以及桿件截面尺寸,就可以解決個(gè)別桿件無法生成的問題。
由于設(shè)計(jì)者用了60多個(gè)剖面圖對(duì)網(wǎng)架結(jié)構(gòu)進(jìn)行表達(dá),實(shí)現(xiàn)了1個(gè)網(wǎng)架剖面的三維建模后,我們只需要按同樣的方法,對(duì)其它網(wǎng)架剖面圖進(jìn)行上述步驟的處理,最終就能生成真實(shí)的三維網(wǎng)架結(jié)構(gòu)模型。
將該方法編寫成計(jì)算機(jī)算法,通過VC++6.0進(jìn)行編譯,并在維錦真三維軟件平臺(tái)上對(duì)該算法進(jìn)行調(diào)試。
把圖紙導(dǎo)入到維錦真三維軟件平臺(tái)上,對(duì)圖紙中的節(jié)點(diǎn)坐標(biāo)進(jìn)行提取,框選網(wǎng)架節(jié)點(diǎn)坐標(biāo)表,點(diǎn)擊轉(zhuǎn)成三維球節(jié)點(diǎn)坐標(biāo)按鈕,軟件根據(jù)坐標(biāo)及半徑繪制出三維的球節(jié)點(diǎn)。
對(duì)網(wǎng)架桿件兩端的編號(hào)進(jìn)行提取,框選桿件節(jié)點(diǎn)編號(hào)圖如圖3所示,提取后網(wǎng)架剖面圖中的CAD線段以及字符變成虛線,離交點(diǎn)處最近的字符移動(dòng)到交點(diǎn)處如圖5所示。
對(duì)網(wǎng)架的桿件尺寸編號(hào)圖如圖4所示進(jìn)行替換,框選桿件截面尺寸表,點(diǎn)擊賦值命令后,再框選截面尺寸編號(hào)圖,這樣就能將桿件編號(hào)與桿件截面尺寸表中對(duì)應(yīng)的尺寸進(jìn)行替換,如圖6所示為替換后的桿件截面編號(hào)。
圖5 提取后的桿節(jié)點(diǎn)編號(hào)Fig.5 Bar node number after extracting
圖6 替換后的桿件截面編號(hào)Fig. 6 Bar section size information after being replaced
將提取后的桿截節(jié)點(diǎn)編號(hào)圖與桿截面尺寸信息圖進(jìn)行拼接,再對(duì)網(wǎng)架二維剖面圖進(jìn)行三維生成,框選拼接后的剖面圖,最終得到這片三維實(shí)體網(wǎng)架如圖7所示,最后對(duì)每個(gè)網(wǎng)架剖面進(jìn)行重復(fù)操作,最終形成三維的空間網(wǎng)架如圖8所示。
圖7 一片三維網(wǎng)架Fig.7 A piece of 3D grid
圖8 實(shí)際三維網(wǎng)架Fig.8 Actual 3D grid
本文通過對(duì)飄帶式網(wǎng)架結(jié)構(gòu)CAD圖紙?zhí)攸c(diǎn)分析,提出了建立真實(shí)的三維飄帶式網(wǎng)架結(jié)構(gòu)模型,通過試驗(yàn)得到以下結(jié)論:
1)通過該方法建模后能得到三維實(shí)體的網(wǎng)架結(jié)構(gòu)模型;
2)建立的三維模型能夠更直接的表達(dá)網(wǎng)架結(jié)構(gòu)信息,避免了用多張剖面圖紙去表達(dá);
3)加快了網(wǎng)架結(jié)構(gòu)三維建模速度,提高了三維建模工作效率。
參考文獻(xiàn):
[1]譚超,張群會(huì).基于AutoCAD的DXF格式文件讀寫方法研究[J].計(jì)算機(jī)與網(wǎng)絡(luò),2009(21):46-49.
[2]張成才,孫喜梅,朱陶業(yè). AutoCAD的DXF文件格式及其轉(zhuǎn)換接口研究[J].微型電腦應(yīng)用,2001,17(8):54-55.
[3]張維錦,汪雷.結(jié)構(gòu)施工圖中暗柱識(shí)別算法研究[J].華東交通大學(xué)學(xué)報(bào),2015,32(2):117-122.
[4]梁海濤,馬軍林.基于DXF模型的數(shù)據(jù)讀取與分析方法[J].空軍工程大學(xué)學(xué)報(bào),2007,8(2):46-48.
[5]石學(xué)榮,汪雷. GS柱表和PKPM柱表的識(shí)別方法研究[J].四川建筑,2015(2):281-283
[6]劉英,尚文利,張嘉易.工程圖中明細(xì)表標(biāo)題欄線框圖形的智能識(shí)別[J].計(jì)算機(jī)工程,2011,37(9):207-209.
[7]劉冰,江早.表格文件圖象邏輯結(jié)構(gòu)提取方法[J].中國圖象圖形學(xué)報(bào),2000,5(8):678-682.
[8]謝亮.表格識(shí)別預(yù)處理技術(shù)與表格字符提取算法的研究[D].廣州:中山大學(xué),2005.
(責(zé)任編輯 姜紅貴)
Research on 3D Modeling of Grid Structure
Zhang Weijin,Li Zhiping
(School of Civil Engineering and Architecture, East China Jiaotong University, Nanchang 330013, China)
Abstract:Because the traditional 2D CAD drawings can not express the construction information intuitively, especially when the structure is a grid structure a large number of sectional drawings are needed to express the structural information. In this paper, a new 3D modeling method of the grid structure is proposed in response to the problem of traditional approach. The 3D model is transformed into a real 3D model by extracting the node coordinates, the node number and the section size information of the bar. Experimental results show that the proposed method can be used to build a 3D model more quickly and the information of the grid structure can be expressed more directly through the model.
Key words:table; coordinate; character; list; array
中圖分類號(hào):TU398
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1005-0523(2016)03-094-06
收稿日期:2015-11-27
作者簡介:張維錦(1962—),男,副教授,研究領(lǐng)域?yàn)槿SCAD及算量軟件開發(fā)與應(yīng)用。