楊 洋,盧清平,徐華麗
(皖西學(xué)院信息工程學(xué)院,安徽 六安237012)
隨著鋼結(jié)構(gòu)工程的發(fā)展,鋼結(jié)構(gòu)CAD軟件的應(yīng)用越來(lái)越多,但是各種軟件都有自己專(zhuān)用的構(gòu)件文件格式,使得各軟件之間進(jìn)行數(shù)據(jù)交換變得困難。很多系統(tǒng)為了解決數(shù)據(jù)交換的問(wèn)題,都提供了通用的圖形數(shù)據(jù)交換文件格式。DXF(Drawing Exchange File)圖形交換文件是AutoCAD與其他鋼結(jié)構(gòu)設(shè)計(jì)軟件之間進(jìn)行數(shù)據(jù)交換的一種通用的圖形交換格式[1]。姚宜斌等[2]通過(guò)對(duì)DXF中實(shí)體數(shù)據(jù)存儲(chǔ)規(guī)則的研究,實(shí)現(xiàn)了多圖系圖件轉(zhuǎn)換過(guò)程中圖塊的整體轉(zhuǎn)換;文獻(xiàn)[3]在A(yíng)utoGIS中設(shè)計(jì)了對(duì)DXF與Shape文件的無(wú)損共享,李晨[4]研究了基于XML的工程圖形數(shù)據(jù)倉(cāng)庫(kù),李英琳等[5]設(shè)計(jì)與實(shí)現(xiàn)了服裝樣板數(shù)據(jù)的二進(jìn)制DXF文件交換格式及其轉(zhuǎn)換接口,鄭盛梓等[6]探討了三維曲面可視化及復(fù)雜曲面表示問(wèn)題,并實(shí)現(xiàn)DXF文件轉(zhuǎn)換與圖件的操作功能等。本文將采用JAVA技術(shù)解決鋼結(jié)構(gòu)構(gòu)件數(shù)據(jù)與DXF文件的轉(zhuǎn)換接口問(wèn)題。
DXF可以分為兩類(lèi):ASCII格式和二進(jìn)制格式,絕大多數(shù)CAD系統(tǒng)都能讀入或輸出DXF文件。ASCII格式的DXF文件可閱讀性強(qiáng),配合編碼頁(yè),可以被文本閱讀器讀出,顯示為文本的格式。ASCII格式DXF文件的基本組成包括標(biāo)題段(HEADER),包含圖形的基本信息;類(lèi)段(CLASSES),包含應(yīng)用程序定義的類(lèi)的信息;表段(TABLES);塊段(BLOCKS),包含構(gòu)成圖形中每個(gè)塊參照的塊定義和圖形圖元;實(shí)體段(ENTITIES),包含圖形中的圖形對(duì)象(圖元);對(duì)象段(OBJECTS),包含圖形中的非圖形對(duì)象;以及文件結(jié)束標(biāo)記EOF。其中每個(gè)段內(nèi)都由組(Group)構(gòu)成,每組里又分為組值和組碼,具體結(jié)構(gòu)如圖1。
圖1 DXF文件結(jié)構(gòu)圖
組碼用來(lái)標(biāo)識(shí)數(shù)據(jù)的意義,組值用來(lái)存放數(shù)據(jù)的具體數(shù)值。組值和組碼在DXF中由兩行定義[2],如下:
組碼是一個(gè)整數(shù),它的值說(shuō)明了組值的類(lèi)型,如為0~9,則組值表示為字符型,10~59表示為實(shí)型,60~99表示為整型,100表示為字符串等。組碼也表示了組值的具體含義,即組碼和組值的對(duì)應(yīng)關(guān)系,如表1。
表1 組碼和組值的對(duì)應(yīng)關(guān)系
DXF文件中圖元的主要信息存儲(chǔ)在ENTITIES段中,其中ENTITIES段包含以下圖元對(duì)象:點(diǎn)(POINT),直線(xiàn)(LINE),文字部分(TEXT),多義線(xiàn)(POLYLINE),多義線(xiàn)頂點(diǎn)(VERTEX),實(shí)體結(jié)束(ENDSEC),塊(BLOCK),插入(INSERT)等。
在鋼結(jié)構(gòu)構(gòu)件庫(kù)中包含有各種構(gòu)件的截面尺寸、截面面積、截面特性等參數(shù)[7]。鋼結(jié)構(gòu)住宅構(gòu)件截面形式有柱和梁兩種,細(xì)分為:H型鋼柱、窄翼十字型、丁字型組合柱、勁性混凝土柱、焊接箱型柱、冷彎—焊接箱型柱、鋼管柱等[8]。本文以H型鋼柱為例,它的對(duì)稱(chēng)截面包括截面高、截面寬、腹板厚、翼緣厚等數(shù)據(jù)。圖2是對(duì)稱(chēng)H型鋼柱的截面示意圖。
圖2 對(duì)稱(chēng)H型鋼柱的截面示意圖
參數(shù)截面高h(yuǎn)是指整個(gè)截面的最高度,截面寬b是指整個(gè)截面的最寬度,翼緣厚t是指翼緣板壁的厚度,腹板厚tw是指翼緣以下的豎向板的側(cè)壁。
H型鋼柱有若干個(gè)規(guī)格,每個(gè)規(guī)格都有自己的截面樣圖,可以將某個(gè)規(guī)格的截面樣圖存放在一個(gè)DXF文件中。在DXF文件的BLOCK段中存放組成截面的其他信息,本例中ENTITIES段中存放的圖元對(duì)象包括點(diǎn)(POINT)、直線(xiàn)(LINE)、上翼緣和下翼緣的4個(gè)頂點(diǎn)以及腹板和翼緣接觸的頂點(diǎn)定義為POINT圖元,X,Y軸坐標(biāo)均可由4個(gè)參數(shù)計(jì)算處理得到。上翼緣、下翼緣邊線(xiàn)和腹板邊線(xiàn)定義為L(zhǎng)INE圖元。下面以上翼緣的上邊線(xiàn)為例,進(jìn)行LINE圖元的接口設(shè)計(jì)。表2為上翼緣上邊線(xiàn)的LINE實(shí)體信息。
表2 上翼緣上邊線(xiàn)的LINE實(shí)體信息
實(shí)現(xiàn)DXF文件轉(zhuǎn)換的接口程序在JAVA開(kāi)發(fā)環(huán)境下完成,程序可以將鋼結(jié)構(gòu)構(gòu)件的DXF文件轉(zhuǎn)換成JPG等格式文件,并將構(gòu)件的圖形顯示在界面上,實(shí)現(xiàn)了DXF文件與其他圖形文件的數(shù)據(jù)轉(zhuǎn)換,界面如圖3所示。
圖3 DXF文件轉(zhuǎn)換界面
代碼編寫(xiě)時(shí),考慮設(shè)計(jì)了文件類(lèi)型對(duì)象file及其BufferedReader 對(duì) 象 reader,reader=new BufferedReader(new FileReader(file)),String類(lèi)型的groupCode[]表示組碼,以及String類(lèi)型的對(duì)象tempString,實(shí)現(xiàn)了對(duì)DXF文件ENTITIES段中LINE圖元的讀取功能。主要代碼如下:
本文針對(duì)鋼結(jié)構(gòu)構(gòu)件的特點(diǎn)并以H型鋼柱的LINE圖元信息格式為例,分析了鋼結(jié)構(gòu)構(gòu)件H型鋼柱信息的DXF文件存儲(chǔ)方式,并利用JAVA技術(shù)實(shí)現(xiàn)了DXF文件的LINE圖元格式轉(zhuǎn)換,為其他軟件文件與DXF文件設(shè)計(jì)了有效的接口,利用H型鋼柱數(shù)據(jù)驗(yàn)證了其可行性、有效性,為其他設(shè)計(jì)軟件與CAD之間建立了數(shù)據(jù)通道。
[1]郭瑞良,張輝.服裝CAD中的DXF文件格式及接口程序[J].北京服裝學(xué)院學(xué)報(bào),2007,27(1):34-40.
[2]姚宜斌,孔建.基于DXF文件的圖件轉(zhuǎn)換方法研究及程序?qū)崿F(xiàn)[J].大地測(cè)量與地球動(dòng)力學(xué),2011,31(1):117-121.
[3]孫曉莉,趙俊三.DXF文件到Shape文件無(wú)損轉(zhuǎn)換方法的研究[J].科學(xué)技術(shù)與工程,2011,11(14):3336-3341.
[4]李晨.用VC實(shí)現(xiàn)基于DXF文件的AutoCAD數(shù)據(jù)共享接口[J].工業(yè)控制計(jì)算機(jī),2010,23(4):76-77.
[5]李英琳,閆亦農(nóng),張鴻志.服裝樣板數(shù)據(jù)的二進(jìn)制DXF文件交換格式及其轉(zhuǎn)換接口[J].天津工業(yè)大學(xué)學(xué)報(bào),2007,26(5):36-39.
[6]鄭盛梓,姚涵珍,周桂英.復(fù)雜曲面三維建模及讀取數(shù)據(jù)方法的研究[J].天津科技大學(xué)學(xué)報(bào),2004,19(2):59-61.
[7]舒贛平,范圣剛.鋼結(jié)構(gòu)構(gòu)件設(shè)計(jì)的CAD技術(shù)[J].東南大學(xué)學(xué)報(bào),2000,30(4):54-58.
[8]陳紹藩.建筑鋼結(jié)構(gòu)設(shè)計(jì)規(guī)范 GB50017[S].2003-12.