胡彥卿 楊揚(yáng)
摘 要:文章介紹了基于AutoCAD2015軟件平臺(tái),在.NET開發(fā)環(huán)境下,采用可視化表格、正則表達(dá)式、ActiveX、模擬動(dòng)態(tài)拖拽等多種編程技術(shù),開發(fā)橋梁輔助繪圖設(shè)計(jì)軟件,有效提高橋梁設(shè)計(jì)的工作效率,為橋梁結(jié)構(gòu)的建筑信息模型設(shè)計(jì)提供軟件開發(fā)思路及探討方向。
關(guān)鍵詞:程序開發(fā);.NET技術(shù);橋梁參數(shù)化設(shè)計(jì)
橋梁結(jié)構(gòu)設(shè)計(jì)專業(yè)性要求較高,在實(shí)際的設(shè)計(jì)工作中,橋梁結(jié)構(gòu)設(shè)計(jì)師的大量精力往往耗費(fèi)在紛繁復(fù)雜的重復(fù)繪圖以及計(jì)算工作上。而隨著計(jì)算機(jī)性能的提升及有限元技術(shù)等軟件技術(shù)的發(fā)展,設(shè)計(jì)人員在橋梁結(jié)構(gòu)分析上難度的大大降低,但簡(jiǎn)單重復(fù)的繪圖工作卻成為了橋梁設(shè)計(jì)工作的巨大障礙,針對(duì)以上問題,國內(nèi)外的專業(yè)軟件公司近年來也推出了一些較大型的軟件解決方案,但是由于積累不夠及技術(shù)所限,這類大型程序也存在一定的局限性,比如輸入?yún)?shù)過多,成圖效果達(dá)不到預(yù)期等等。需要后期大量的改動(dòng),甚至?xí)霈F(xiàn)因圖紙改動(dòng)量過大,不如自行從頭繪制的情況。因而一些基于AutoCAD二次開發(fā)的,使用便捷,針對(duì)性強(qiáng)的“輕程序”,對(duì)于解放設(shè)計(jì)人員的重復(fù)勞動(dòng),提高計(jì)算繪圖效率,有著非常重要的意義。
1 開發(fā)環(huán)境
ObjectARX.net開發(fā)包,是基于微軟.NET框架的二次開發(fā)平臺(tái),作為Autodesk二次開發(fā)工具中最新且最具潛力的產(chǎn)品,其發(fā)展經(jīng)歷了從AutoCAD2005版本開始,經(jīng)歷了多個(gè)版本的升級(jí)完善,已經(jīng)相當(dāng)成熟可靠。.NET語言開發(fā)同時(shí)具有很多優(yōu)點(diǎn),如語言選擇的多樣性,易用性,開發(fā)的成果具有良好的獨(dú)立性和繼承性,強(qiáng)大的可視化功能等等。
2 開發(fā)內(nèi)容
基于輔助設(shè)計(jì)的工具應(yīng)用的定位,本程序主要實(shí)現(xiàn)了以下功能:
(1)鋼筋混凝土結(jié)構(gòu)的鋼筋自動(dòng)統(tǒng)計(jì)及繪圖。(2)鋼結(jié)構(gòu)程序的參數(shù)表繪圖。(3)基于AutoCAD文字圖形的數(shù)學(xué)工具,文本操作工具。(4)基于規(guī)范公式的結(jié)構(gòu)構(gòu)件的計(jì)算工具。(5)可視窗體的類Excel表格的實(shí)現(xiàn),結(jié)合與Excel表格的通訊功能,及生成AutoCAD圖紙的表格功能。(6)常用AutoCAD操作的擴(kuò)展功能,繪圖的參數(shù)化,標(biāo)準(zhǔn)化設(shè)計(jì)功能。
基于.NET語言的面向?qū)ο蠹澳K化的特性,以上功能可以相互進(jìn)行配合,如程序Excel通訊的功能就集成在鋼筋混凝土結(jié)構(gòu)鋼筋參數(shù)表程序及鋼結(jié)構(gòu)設(shè)計(jì)程序內(nèi),提供更加強(qiáng)大的綜合能力。
3 開發(fā)技術(shù)
(1)通過對(duì)表格控件“DataGridView”的再開發(fā),進(jìn)行Excel功能的模擬及功能強(qiáng)化。(2)后綁定技術(shù)調(diào)用Excel及與Excel的通訊功能。(3)通過.NET開發(fā)中的jig(動(dòng)態(tài)輸入)方式實(shí)現(xiàn)動(dòng)態(tài)繪圖功能。(4)所有功能可視化,配合AutoCAD命令,實(shí)現(xiàn)直觀快速的輸入及輔助設(shè)計(jì)功能。(5)基于ObjectARX.net,實(shí)現(xiàn)AutoCAD中的繪圖操作。(6)運(yùn)用正則表達(dá)式實(shí)現(xiàn)公式的計(jì)算,參數(shù)分解等功能。(7)方便設(shè)計(jì)的“庫”功能,實(shí)現(xiàn)常用和固定數(shù)據(jù)的直接調(diào)用。(8)基于.NET的程序架構(gòu)及功能實(shí)現(xiàn)。
4 程序功能的實(shí)現(xiàn)
本程序采用最新的AutoCAD2015作為運(yùn)行的基礎(chǔ)平臺(tái),在.NET Framworks 4.5框架下進(jìn)行開發(fā)。
(1)基于可視化技術(shù)的鋼筋混凝土結(jié)構(gòu)、鋼結(jié)構(gòu)的自動(dòng)繪制及統(tǒng)計(jì)功能。鋼筋數(shù)量表的統(tǒng)計(jì)是橋梁結(jié)構(gòu)設(shè)計(jì)中一個(gè)重復(fù)輸入的典型環(huán)節(jié),設(shè)計(jì)人員不但需要計(jì)算鋼筋數(shù)量及長(zhǎng)度,還需要在數(shù)量表中反復(fù)進(jìn)行四則運(yùn)算計(jì)算總量,費(fèi)時(shí)費(fèi)力,橋梁鋼結(jié)構(gòu)因較少使用型材而大量運(yùn)用鋼板,統(tǒng)計(jì)工作也非常繁復(fù),容易出錯(cuò)。
本程序運(yùn)用BlockReference圖元的Tag功能,提供了快速生成鋼筋標(biāo)注的功能。程序界面如圖1所示。
圖1 鋼筋標(biāo)注工具界面
通過對(duì)“DataGridView”表格控件的再開發(fā),程序插入的標(biāo)注自動(dòng)計(jì)入表格,并根據(jù)標(biāo)注自動(dòng)計(jì)算共長(zhǎng)、單位重、共重等信息(如圖2),并可以通過增加判斷子程序,實(shí)現(xiàn)括號(hào)內(nèi)外數(shù)量分別統(tǒng)計(jì)等更多擴(kuò)展功能。表格窗體的DataGridView1_CellEndEdit事件,可獲取表格的編輯操作,可以實(shí)現(xiàn)表格參數(shù)變化后的實(shí)時(shí)刷新,實(shí)現(xiàn)像Excel表格一樣的實(shí)時(shí)計(jì)算功能。另外可以在表格的DataGridView1_Keydown事件,捕捉并實(shí)現(xiàn)“Ctrl+C”(復(fù)制),“Ctrl+V”(粘貼)等快捷鍵操作,實(shí)現(xiàn)功能擴(kuò)展。
圖2 鋼筋明細(xì)表工具界面
通過ObjectARX.net在AutoCAD的繪圖功能,即可在AutoCAD模型(或圖紙)空間中繪制參數(shù)表。
鋼結(jié)構(gòu)的參數(shù)表原理與鋼筋參數(shù)表類似,但傳統(tǒng)鋼結(jié)構(gòu)圖紙繪制一般并不包含標(biāo)注,且常見鋼結(jié)構(gòu)包含鋼板,鋼管,型鋼三種類型,因而需要基于“DataGridView”表格控件中開發(fā)更多的判斷功能,結(jié)合正則表達(dá)式或直接對(duì)圖元面積的測(cè)量,對(duì)輸入的鋼板、鋼管等鋼構(gòu)件進(jìn)行直接統(tǒng)計(jì)并輸出鋼結(jié)構(gòu)數(shù)量表。對(duì)于型鋼,程序提供型鋼輸入器,具有近500種型材的“庫”功能,供直接調(diào)用選取并輸出統(tǒng)計(jì)結(jié)果。
(2)后綁定調(diào)用Excel功能,及Excel參數(shù)表繪制功能。Excel是目前最為流行的表格工具,在設(shè)計(jì)中經(jīng)常會(huì)與Excel進(jìn)行數(shù)據(jù)相互調(diào)用的問題。常用的調(diào)用方法均不夠理想,無法做到完美的兼容。
采用通過.NET調(diào)用ActiveX方式對(duì)Excel實(shí)現(xiàn)后綁定,我們可以實(shí)現(xiàn)表格實(shí)時(shí)導(dǎo)入、導(dǎo)出Excel功能,調(diào)用Excel方法為:Dim objExcel As New Object objExcel=GetObject(,“Excel.Application”)。在此基礎(chǔ)上,針對(duì)原Excel表格中的合并單元格,上、下標(biāo)等的判斷,可以完美實(shí)現(xiàn)AutoCAD中插入Excel表格功能,生成對(duì)象為文本、線對(duì)象或AutoCAD表格對(duì)象。
(3)jig(動(dòng)態(tài)輸入)方式的實(shí)現(xiàn)及應(yīng)用。ObjectARX.net提供了動(dòng)態(tài)拖拽功能,可以生動(dòng)形象的在圖上拉拽出橡皮線一樣的動(dòng)態(tài)效果,可以方便設(shè)計(jì)人員方便直觀的輸入特定的構(gòu)件[1]。從Editor命名空間的Drawjig類派生一個(gè)新類,并用來表達(dá)所要?jiǎng)?chuàng)建的對(duì)象,自動(dòng)重載Sample函數(shù)及WorldDraw函數(shù),實(shí)現(xiàn)動(dòng)態(tài)效果,最后將派生類加入到圖形數(shù)據(jù)庫中,完成圖形創(chuàng)建。
(4)公式計(jì)算正則表達(dá)式的運(yùn)用。正則表達(dá)式是指在計(jì)算機(jī)科學(xué)中,一個(gè)用來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串。在很多文本編輯器或其他工具里,正則表達(dá)式通常被用來檢索和替換符合某個(gè)模式的文本內(nèi)容。通過對(duì)正則表達(dá)式運(yùn)用,程序可以實(shí)現(xiàn)自動(dòng)判別公式并計(jì)算的功能。如判斷公式中的加、減法的正則表達(dá)式為“\s*([-+])s*”,而常用的函數(shù)正則表達(dá)式為“(exp|log|log10|abs|sqr|sqrt|sin|cos|tan|asin|acos|atan)”。這樣通過建立一個(gè)Function過程匹配正則表達(dá)式,可以在程序中實(shí)現(xiàn)常用的公式自動(dòng)計(jì)算功能,為程序使用者提供更大的便利。
(5)基于規(guī)范公式的快速計(jì)算工具。設(shè)計(jì)人員經(jīng)常需要面對(duì)一些基于規(guī)范公式的構(gòu)件計(jì)算,如結(jié)構(gòu)承載能力驗(yàn)算,裂縫驗(yàn)算等等,若采用手算方式,每次計(jì)算時(shí)均要根據(jù)規(guī)范公式的規(guī)定逐條擬定相關(guān)參數(shù),并代入相對(duì)固定的公式進(jìn)行計(jì)算,造成重復(fù)勞動(dòng),因而在AutoCAD中通過二次開發(fā)編制基于規(guī)范公式的快速計(jì)算工具,就成為一個(gè)較為合理的選擇。
如沿周邊均勻配筋的圓截面鋼筋混凝土偏心受壓承載能力計(jì)算,程序采用牛頓迭代法,以0.0001為步長(zhǎng)試算確定合理的ζ數(shù)值,并計(jì)算A、B、C、D參數(shù),驗(yàn)算結(jié)構(gòu)抗力值[2]。程序界面如圖3所示。
圖3 承載能力驗(yàn)算工具界面
(6)ObjectARX.net實(shí)現(xiàn)AutoCAD的繪圖、編輯等功能。運(yùn)用ObjectARX.net在AutoCAD中繪圖過程如下:創(chuàng)建對(duì)象的圖形數(shù)據(jù)庫;在內(nèi)存中創(chuàng)建實(shí)體類的一個(gè)對(duì)象;打開圖形數(shù)據(jù)庫的塊表;打開存儲(chǔ)實(shí)體的塊表記錄;將對(duì)象添加到塊表記錄中。
5 結(jié)束語
通過基于.NET的開發(fā)技術(shù),結(jié)合可視化表格窗體,Excel的后綁定調(diào)用、動(dòng)態(tài)圖元拖拽功能、正則表達(dá)式等多種程序開發(fā),我們可以實(shí)現(xiàn)對(duì)橋梁結(jié)構(gòu)的動(dòng)態(tài)繪圖、參數(shù)化及自動(dòng)化設(shè)計(jì)、輔助計(jì)算等功能,本系列程序在橋梁設(shè)計(jì)工作中可以大幅度提高設(shè)計(jì)人員的工作效率,減少設(shè)計(jì)中的重復(fù)工作。鑒于.NET程序的優(yōu)秀性能,我們可以通過更深入的開發(fā),在AutoCAD環(huán)境下,編制功能更為強(qiáng)大的設(shè)計(jì)程序,為橋梁的參數(shù)化、標(biāo)準(zhǔn)化設(shè)計(jì)甚至BIM設(shè)計(jì)提供更為廣泛的應(yīng)用前景。
參考文獻(xiàn)
[1]曾紅飛,張帆,盧擇臨.AutoCAD VBA&VB.net開發(fā)基礎(chǔ)與實(shí)例教程[M].中國電力出版社,2008.
[2]JTG D62-2004.公路鋼筋混凝土及預(yù)應(yīng)力混凝土橋涵設(shè)計(jì)規(guī)范[S].
[3]JTJ 025-86.公路橋涵鋼結(jié)構(gòu)及木結(jié)構(gòu)設(shè)計(jì)規(guī)范[S].