高 策,韓廣暉,李 淼,陳冰洋
(中鐵工程設(shè)計(jì)咨詢集團(tuán)有限公司橋梁工程設(shè)計(jì)研究院,北京 100055)
圖紙是工程設(shè)計(jì)成果的主要表達(dá)形式,繪圖工作量大是橋梁設(shè)計(jì)工作的重要特點(diǎn)。從經(jīng)濟(jì)性、通用性等角度出發(fā),原鐵道部及國(guó)鐵集團(tuán)編制了大量的通用參考圖,這在一定程度上減少了設(shè)計(jì)工作量,但是由于工程條件千差萬(wàn)別,通用圖無(wú)法做到面面俱到,需要單獨(dú)繪制圖紙的工作在具體設(shè)計(jì)中仍占有較大的比例,繪圖工作常常成為制約設(shè)計(jì)進(jìn)度的瓶頸。
對(duì)于橋梁設(shè)計(jì)企業(yè)管理者而言,如何減少繪圖工作量、降低設(shè)計(jì)人員勞動(dòng)強(qiáng)度,提高工作效率,把有限的人力投入到專業(yè)性更強(qiáng)、技術(shù)水平更高的設(shè)計(jì)研究工作中去,這是需要思考的現(xiàn)實(shí)問(wèn)題。另一方面,通過(guò)編程等方法減少重復(fù)勞動(dòng)、有利于身體健康、有利于技術(shù)進(jìn)步,這對(duì)于工程師而言也具有很強(qiáng)的吸引力。
目前國(guó)內(nèi)土建行業(yè)主要采用AutoCAD軟件繪圖。AutoCAD(Autodesk Computer Aided Design)是Autodesk(歐特克)公司開(kāi)發(fā)的自動(dòng)計(jì)算機(jī)輔助設(shè)計(jì)軟件,是土木工程師們最熟悉的繪圖軟件。
一般而言,Autodesk公司開(kāi)發(fā)AutoCAD軟件是一次開(kāi)發(fā),由AutoCAD的用戶們開(kāi)發(fā)的、在AutoCAD程序界面上應(yīng)用的插件程序即為二次開(kāi)發(fā)。其本質(zhì)就是針對(duì)繪圖、計(jì)算規(guī)則明確、可分類、可標(biāo)準(zhǔn)化的結(jié)構(gòu),通過(guò)各種計(jì)算機(jī)語(yǔ)言編制程序,將這些程序加載在AutoCAD軟件中,使用程序?qū)崿F(xiàn)繪圖及計(jì)算等功能。在使用時(shí),只需一個(gè)或幾個(gè)命令就可以運(yùn)行程序,自動(dòng)完成繪圖、計(jì)算過(guò)程。顯而易見(jiàn),這不僅提高了設(shè)計(jì)效率,也提高了準(zhǔn)確性。
AutoCAD的二次開(kāi)發(fā)方式包括AutoLISP/Visual LISP、VBA、ObjectARX等,各種開(kāi)發(fā)方式的比較見(jiàn)圖1。其中,ObjectARX擁有與AutoCAD自身幾乎相同的編程接口和控制能力,是目前最為強(qiáng)大的二次開(kāi)發(fā)方式。這種開(kāi)發(fā)方式難度大,但是程序運(yùn)行的效率最高、運(yùn)行速度較快[1-5]。一般采用C++或C#語(yǔ)言進(jìn)行ObjectARX二次開(kāi)發(fā),主要介紹基于C++[6-8]的ObjectARX二次開(kāi)發(fā)。
圖1 各種開(kāi)發(fā)方式的比較[1]
ObjectARX二次開(kāi)發(fā)程序后綴一般為“arx”。除了前述的運(yùn)行效率高、速度快的特點(diǎn)外,ObjectARX二次開(kāi)發(fā)程序與AutoCAD版本存在對(duì)應(yīng)關(guān)系。要針對(duì)不同的使用場(chǎng)景分別編譯生成32位、64位及不同AutoCAD版本的ARX文件。
一般一個(gè)DWG文件即可認(rèn)為是一個(gè)圖形數(shù)據(jù)庫(kù),這個(gè)圖形數(shù)據(jù)庫(kù)的組成見(jiàn)圖2。圖2中的實(shí)體即是各種圖元,如直線、圓弧、文字等。由于通過(guò)程序生成各種實(shí)體需要使用塊表及塊表記錄,所以塊表和塊表記錄是編程中經(jīng)常使用的部分。每個(gè)圖元都有對(duì)應(yīng)的ID,可以通過(guò)ID找到相應(yīng)的圖元獲取或修改圖元的信息,如坐標(biāo)、顏色等。
圖2 圖形數(shù)據(jù)庫(kù)的組成
需要加載及使用編譯完成的ObjectARX應(yīng)用程序時(shí),可以用APPLOAD命令彈出對(duì)話框后選擇相應(yīng)ARX文件,也可選中相應(yīng)ARX文件后按住拖放至AutoCAD窗口,之后在AutoCAD命令行鍵入對(duì)應(yīng)的ARX命令即可開(kāi)始使用。
基于C++的ObjectARX開(kāi)發(fā)的工具和軟件包括AutoCAD、Microsoft Visual Studio、ObjectARX開(kāi)發(fā)包(Software Development Kit即SDK),這3部分之間的版本存在一定的對(duì)應(yīng)關(guān)系。其中SDK是由Autodesk公司提供的,可以在Autodesk的官方網(wǎng)站上下載,它包含各種庫(kù)文件、頭文件、幫助文件及程序示例等。SDK中的庫(kù)文件、頭文件是由Autodesk的軟件工程師們已經(jīng)開(kāi)發(fā)好的各種成熟的類、函數(shù)或子程序。對(duì)于一般開(kāi)發(fā)者而言,只需在項(xiàng)目文件中包含并使用這些庫(kù)文件即可,避免了花費(fèi)大量時(shí)間研究基礎(chǔ)層面的功能實(shí)現(xiàn),大大提高了編程效率,這也是二次開(kāi)發(fā)的主要特點(diǎn)。
對(duì)于Microsoft Visual Studio,一般需要在項(xiàng)目的選項(xiàng)“VC++目錄-包含目錄”、“VC++目錄引用目錄”、“C++-常規(guī)-附加包含目錄”、“連接器-附加庫(kù)目錄”中設(shè)置包含文件或庫(kù)文件。
MFC(Microsoft Foundation Classes)是微軟基礎(chǔ)類庫(kù)的簡(jiǎn)稱,是微軟公司提供的C++類庫(kù),主要封裝了大部分的Windows API函數(shù),對(duì)于ObjectARX 二次開(kāi)發(fā)而言,如果需要建立可視化操作界面會(huì)用到MFC[8]。
ARX程序的命令是使用程序的入口,命令可以通過(guò)命令助手添加,也可手動(dòng)在acrxEntryPoint.cpp中添加,與其他C++程序相同,命令的字母需要區(qū)分大小寫。
根據(jù)一般繪圖習(xí)慣,結(jié)構(gòu)輪廓線、鋼筋采用不同的顏色,通過(guò)設(shè)定的打印樣式(.ctp文件)打印為不同線寬。不同顏色的線分別位于不同圖層。同理,實(shí)線、虛線、點(diǎn)劃線、文字等也分別位于不同圖層。程序加載后,對(duì)當(dāng)前DWG文件圖層進(jìn)行初始化,根據(jù)可能使用到的所有線型、顏色創(chuàng)建多種圖層并將圖層分別命名。
程序生成相關(guān)線條及文字時(shí),各圖元均默認(rèn)隨圖層設(shè)置(Bylayer),讀入圖層名參數(shù),即可完成顏色、線型的設(shè)置。
比例尺是繪圖的重要參數(shù)。程序一般默認(rèn)為A3或A2圖紙,讀入主要輪廓尺寸后,按照正視圖,側(cè)視圖、俯視圖、數(shù)量表等4部分布置,圖紙內(nèi)容所占高度即為正視圖與俯視圖豎向尺寸之和、水平長(zhǎng)度即為正視圖與側(cè)視圖之和,在此之外再適當(dāng)考慮各部分之間的空隙和標(biāo)注所占空間,即可基本確定圖紙內(nèi)容的范圍。
程序設(shè)有“Scale”參數(shù),此參數(shù)為0時(shí)即自動(dòng)識(shí)別比例,輸入其他數(shù)值即為自定義比例尺,如輸入80,即表示比例尺為1∶80。比例尺確定后,程序按比例尺生成對(duì)應(yīng)的文字樣式、標(biāo)注樣式并命名,后續(xù)程序生成的全部文字和標(biāo)注都采用相應(yīng)文字樣式、標(biāo)注樣式。另外,引線、鋼筋圓點(diǎn)繪制也要引用比例尺參數(shù),使其顯示效果與圖幅匹配。
群樁承臺(tái)基礎(chǔ)是鐵路橋梁最為常見(jiàn)的基礎(chǔ)形式,本程序可以繪制單層矩形、雙層矩形、單層切角、雙層切角4種類型的承臺(tái)鋼筋圖。
本程序采用填數(shù)據(jù)卡模式,數(shù)據(jù)卡為TXT格式文件,各數(shù)據(jù)在數(shù)據(jù)卡文件中的順序是固定的并配有說(shuō)明書。使用時(shí)鍵入SDPC命令(命令為Steel Drawing of Pile Cap的縮寫),激活打開(kāi)文件對(duì)話框,使用該對(duì)話框打開(kāi)任意路徑下已經(jīng)填好的TXT數(shù)據(jù)卡文件,瞬間即可完成承臺(tái)鋼筋圖繪制。
程序可以通過(guò)一次運(yùn)行命令實(shí)現(xiàn)多種類型的多個(gè)承臺(tái)鋼筋批量繪制,底面鋼筋根據(jù)受力需要可單肢、雙肢、單雙肢交錯(cuò)以及單層、多層布置,繪圖成果見(jiàn)圖3、圖4。
圖3 程序繪制的單層矩形承臺(tái)鋼筋圖(部分)(單位:mm)
圖4 程序繪制的雙層承臺(tái)(下層切角)鋼筋圖(部分)(單位:mm)
對(duì)于不同類型的承臺(tái)分別采用參數(shù)KC控制,為了便于理解,KC取值分別為14、24、18、24,其中10位數(shù)1或2表示單層或雙層承臺(tái),個(gè)位數(shù)4或8表示4邊(矩形)或8邊(矩形切角)承臺(tái)。
程序讀入承臺(tái)長(zhǎng)、寬、高等尺寸后繪制承臺(tái)構(gòu)造。根據(jù)不同的承臺(tái)類型梳理為7或11種類型鋼筋[9-11],其中單層承臺(tái)為7種鋼筋、雙層承臺(tái)為11種鋼筋,依次讀入每種鋼筋的直徑、間距、彎鉤長(zhǎng)度參數(shù)及保護(hù)層參數(shù)后依次繪制各類型鋼筋。其中考慮到規(guī)范的更新[12]及工程具體條件的不同,程序?qū)iT提供了可供使用者輸入的鋼筋彎鉤長(zhǎng)度參數(shù)。
三視圖的布置圖繪制完畢后進(jìn)入計(jì)算數(shù)量環(huán)節(jié)。程序采用二維數(shù)組“amount”記錄各類型鋼筋的編號(hào)、直徑、單根長(zhǎng)度、合計(jì)長(zhǎng)度、延米重、總重等參數(shù),數(shù)組的行數(shù)即為鋼筋類型數(shù),數(shù)組列數(shù)在最終鋼筋數(shù)量表的列數(shù)上適當(dāng)增加,增加的列數(shù)用于存儲(chǔ)彎鉤長(zhǎng)度、變長(zhǎng)度鋼筋的最大值、最小值、平均值等過(guò)程計(jì)算變量。之后繪制數(shù)量表的縱橫線,通過(guò)二重嵌套循環(huán)將二維數(shù)組“amount”中的鋼筋編號(hào)、直徑、數(shù)量等數(shù)值轉(zhuǎn)換為CString變量添加到數(shù)量表中的相應(yīng)位置。
通過(guò)“detail”函數(shù)繪制鋼筋大樣,由于四種承臺(tái)的鋼筋大樣形狀存在一定差別,該函數(shù)共包括四種形式,分別對(duì)應(yīng)四種承臺(tái)類型,繪制直線(含半圓彎鉤及直角彎鉤)、矩形、切角矩形等不同鋼筋大樣,二維數(shù)組“amount”作為參數(shù)被引用到“detail”函數(shù)中,大樣函數(shù)“detail”繪制大樣圖形后將“amount”中的鋼筋編號(hào)和長(zhǎng)度添加到大樣附近相應(yīng)位置。
程序設(shè)有繪制墊層和樁基的參數(shù)“pile_onoff”,該參數(shù)為1、2、3時(shí)分別對(duì)應(yīng)行列式、梅花式、自定義布樁等三種樁基布置形式。
另外考慮到部分項(xiàng)目有按含筋量確定豎向架立鋼筋的習(xí)慣。當(dāng)架立鋼筋的直徑參數(shù)輸為0時(shí),即可通過(guò)含筋量(kg/m3)計(jì)列架立鋼筋的數(shù)量,含筋量的數(shù)據(jù)卡位置與原鋼筋間距參數(shù)相同。
程序主要流程圖見(jiàn)圖5。
圖5 承臺(tái)鋼筋圖繪圖程序SDPC流程
本程序能夠繪制常見(jiàn)客貨共線T梁[13-15]對(duì)應(yīng)圓端形橋墩[16-17]的墊石、托盤頂帽、墩身鋼筋圖。墩身箍筋布置可適應(yīng)不同地震烈度,自由輸入鋼筋直徑、間距,可生成布置圖、大樣圖、數(shù)量表等內(nèi)容。同承臺(tái)鋼筋圖繪圖程序一樣,可自動(dòng)判斷圖紙比例尺,也可自定義比例尺,圖紙內(nèi)容均與比例尺對(duì)應(yīng)。軟件出圖后手動(dòng)套用項(xiàng)目圖框后即可成圖。程序主要流程見(jiàn)圖6,繪圖成果見(jiàn)圖7。
圖6 橋墩鋼筋圖繪圖程序SDPR流程
圖7 橋墩鋼筋圖繪圖程序生成的頂帽鋼筋圖(部分)(單位:mm)
橋墩構(gòu)造及布筋原則主要參照通橋[2012]4104、通橋[2017]4104圓端形實(shí)體橋墩,即矩形頂帽、圓端形托盤、圓端形墩身,墩頂不設(shè)過(guò)人洞、墩身不設(shè)泄水管凹槽,地震區(qū)箍筋加密段設(shè)于墩底。后期擬升級(jí)為兼容城際[18]、高速鐵路圓弧托盤、圓端頂帽、設(shè)泄水槽、墩頂檢查槽等多種類型橋墩[19]的鋼筋圖繪圖程序。
本程序同樣采用填數(shù)據(jù)卡模式。使用時(shí)鍵入SDPR命令(該命令為Steel Drawing of Pier的縮寫),激活打開(kāi)文件對(duì)話框,打開(kāi)任意路徑下已經(jīng)填好的TXT數(shù)據(jù)卡文件,瞬間即可完成橋墩鋼筋圖繪制。
圖紙數(shù)量多、打印工作量大是橋梁設(shè)計(jì)的重要特點(diǎn)。目前一般打印流程為:圖紙繪制完畢→編輯圖名圖號(hào)→開(kāi)始打印PLT文件→手動(dòng)逐張框選圖紙打印范圍→選擇打印樣式→針對(duì)不同圖紙輸入縮放比例→按圖號(hào)圖名為PLT文件命名(如鄭濟(jì)施橋-21-01-全橋布置圖第1張共2張.PLT)→選擇保存路徑→印刷硫酸圖及轉(zhuǎn)換DWF或PDF文件匯總歸檔。
打印環(huán)節(jié)大部分是機(jī)械的重復(fù)勞動(dòng),但工作量不可小視。尤其在實(shí)際工作中常常遇到圖名圖號(hào)修改、階段名稱由咨詢稿改正式施工圖等情況時(shí),打印工作量更是成倍增加。
對(duì)于橋梁設(shè)計(jì)者而言,打印是設(shè)計(jì)工作的最后一步,尤其在設(shè)計(jì)周期緊張的情況下,打印占用了有限的設(shè)計(jì)時(shí)間,也耗費(fèi)了設(shè)計(jì)者的精力,成為急需解決的“痛點(diǎn)”。
對(duì)于程序開(kāi)發(fā)者而言,圖紙的打印規(guī)律性很強(qiáng),易于通過(guò)代碼編制相應(yīng)規(guī)則,通過(guò)程序解放勞動(dòng)力,是編程的理想對(duì)象。筆者開(kāi)發(fā)的QPLT程序,可一次性打印多個(gè)DWG文件模型空間中的多張圖紙并生成PLT,可自動(dòng)識(shí)別圖紙內(nèi)容中的圖名圖號(hào)并命名,生成的PLT文件可用于轉(zhuǎn)換DWF、PDF等文件或打印蠟圖。程序界面見(jiàn)圖8。
圖8 批量打印QPLT程序界面
使用前,需要設(shè)置圖紙外框,即將需要打印的每個(gè)DWG文件里的每張需要打印的圖紙外框,采用閉合矩形繪制(使用矩形rec命令或多義線PL命令均可),此圖框可加長(zhǎng)、可自由設(shè)置比例,但需要單獨(dú)放在一個(gè)圖層里。
使用時(shí)加載程序,在AutoCAD中輸入命令“qqq”,回車隨即彈出打印對(duì)話框,在對(duì)話框內(nèi)選擇添加準(zhǔn)備打印的DWG文件、選擇打印機(jī)及紙張、相應(yīng)的打印樣式、填入圖框所在的圖層名,點(diǎn)擊打印。打印出的PLT文件均存放在對(duì)應(yīng)DWG文件所在的文件夾下。
當(dāng)需要在打印的PLT文件名前統(tǒng)一添加前綴時(shí),可使用增加前綴功能,比如使用了外部參照的角標(biāo),模型空間中只有圖號(hào)尾數(shù)的情況(如文件名統(tǒng)一添加前綴“襄常鄭萬(wàn)聯(lián)宜配施(咨)橋-24-”)。如果希望生成的文件名不包含長(zhǎng)串的圖號(hào),可以選擇不包含前綴,程序會(huì)將文件名中最后一個(gè)“-”前面的文字刪除,即只保留圖號(hào)的尾數(shù)。
設(shè)計(jì)人員繪圖時(shí),圖號(hào)、頁(yè)碼按理論位置放置,圖名位置也不要過(guò)分偏離。程序根據(jù)文字相對(duì)于外圖框的位置檢索判斷并獲取圖名、圖號(hào)、頁(yè)碼(頁(yè)碼指“第x張共n張”)。程序主要適用于筆者所在單位使用頻率較高的4種三大類圖簽角標(biāo):工點(diǎn)橋(院審定及專業(yè)審定)、工點(diǎn)橋(集團(tuán)審定)、通用圖[20](設(shè)計(jì)復(fù)核審核)。其中工點(diǎn)橋的圖名都在最下方,圖名文字的下緣(即插入點(diǎn))位置不高于圖9的虛線,也不要低于圖紙內(nèi)框;通用圖主要的圖名在中間,文字的下緣(即插入點(diǎn))不超出圖10兩條橫向虛線的范圍。
程序的主要原理是通過(guò)使用者輸入的圖框所在的圖層名獲得圖層的layerId;之后使用迭代器pBlkTblRcdItr遍歷模型空間塊表記錄,對(duì)于符合layerId的多段線,通過(guò)循環(huán)將圖框多段線的左上和右下角點(diǎn)坐標(biāo)(即打印范圍)分別儲(chǔ)存在2個(gè)二維數(shù)組中。對(duì)于筆者所在單位的幾種典型圖簽角標(biāo)(圖9、圖10),其圖號(hào)、圖名、頁(yè)碼相對(duì)于圖紙外框的位置是固定的。程序結(jié)合使用者選定的圖簽角標(biāo)類型獲取對(duì)應(yīng)位置處的圖號(hào)、圖名、頁(yè)碼,將此信息組合后設(shè)為PLT文件的文件名,從而實(shí)現(xiàn)了通過(guò)程序批量打印文件并自動(dòng)編輯文件名的功能。
圖9 典型圖簽角標(biāo)示意一
圖10 典型圖簽角標(biāo)示意二
與軟件工程師相比,土木工程師從事軟件開(kāi)發(fā)的長(zhǎng)處是問(wèn)題導(dǎo)向性強(qiáng),能準(zhǔn)確把握程序的使用功能,短處是軟件開(kāi)發(fā)經(jīng)驗(yàn)不足、編程語(yǔ)言知識(shí)基礎(chǔ)較弱,二次開(kāi)發(fā)一定程度上彌補(bǔ)了這種不足。
當(dāng)今世界計(jì)算機(jī)技術(shù)高速發(fā)展,依賴于傳統(tǒng)設(shè)計(jì)繪圖手段的鐵路橋梁行業(yè),在計(jì)算機(jī)軟件提升方面大有可為。基于ObjectARX的AutoCAD二次開(kāi)發(fā)技術(shù)是十分實(shí)用的技術(shù),可以有效降低勞動(dòng)強(qiáng)度、提高勞動(dòng)效率。本文涉及的三款程序已在多個(gè)項(xiàng)目中應(yīng)用,反響較好,可為相關(guān)二次開(kāi)發(fā)編程提供借鑒。