梁凱旋,韓首都
(新疆水利水電勘測設(shè)計研究院,烏魯木齊 830000)
文章編號:1006—2610(2015)05—0079—04
AutoCAD的二次開發(fā)在鋼筋統(tǒng)計工作中的應(yīng)用
梁凱旋,韓首都
(新疆水利水電勘測設(shè)計研究院,烏魯木齊 830000)
利用內(nèi)嵌于AutoCAD軟件平臺的VBA技術(shù)對鋼筋統(tǒng)計程序進(jìn)行二次開發(fā),介紹如何給對象添加自定義擴(kuò)展數(shù)據(jù)以及如何提取對象的擴(kuò)展數(shù)據(jù);從而通過使用擴(kuò)展數(shù)據(jù),實現(xiàn)CAD本身無法實現(xiàn)的特定功能,應(yīng)用于實際工作中可進(jìn)一步提高工作效率,減少出錯的概率和繁瑣的繪圖統(tǒng)計工作。
CAD;二次開發(fā);鋼筋統(tǒng)計;擴(kuò)展數(shù)據(jù);VBA;插件
AutoCAD是目前使用廣泛的通用交互式計算機輔助繪圖與設(shè)計軟件包,其特點是通用性強,具有多種工業(yè)標(biāo)準(zhǔn)和開放的體系結(jié)構(gòu),具有強大的二次開發(fā)功能。VBA(Visual Basic for Application)是AutoCAD內(nèi)嵌的一種程序語言,它基于Visual Basic語言的,有著與VB幾乎相同的開發(fā)環(huán)境和語法。在實際工程項目中,鋼筋統(tǒng)計是一項繁瑣而又要求嚴(yán)謹(jǐn)?shù)墓ぷ鳌1疚睦脙?nèi)嵌于AutoCAD軟件平臺的VBA技術(shù)進(jìn)行二次開發(fā)編寫鋼筋統(tǒng)計程序(見圖1),通過程序?qū)摻罹幪枴⒅睆健㈤L度、根數(shù)等自定義屬性數(shù)據(jù)添加給對象,使之具有擴(kuò)展屬性,可以形象的稱之為數(shù)據(jù)尾巴,即不論圖形如何拷貝,鋼筋數(shù)據(jù)始終都會像尾巴一樣跟隨圖形,隨時可提取對象的擴(kuò)展屬性,進(jìn)行相應(yīng)的修改、統(tǒng)計操作,并自動繪出鋼筋統(tǒng)計表和鋼筋材料表,提高工作效率。
1.1 程序主界面預(yù)覽
程序主要功能包括:拾取并判斷鋼筋形式、讀取分段長度、鋼筋編號、修改鋼筋屬性、圖中尋找鋼筋、生成鋼筋統(tǒng)計表和材料統(tǒng)計表等,見圖1。

圖1 鋼筋統(tǒng)計窗口圖
1.2 報表生成
程序自動生成的鋼筋統(tǒng)計表和鋼筋材料表見圖2和3。

圖2 鋼筋統(tǒng)計表

圖3 鋼筋材料統(tǒng)計表
2.1 鋼筋自定義數(shù)據(jù)結(jié)構(gòu)
首先自定義一個鋼筋數(shù)據(jù)結(jié)構(gòu),再定義一個用來存儲鋼筋數(shù)據(jù)的動態(tài)數(shù)組,這樣做的好處,可以對鋼筋數(shù)組進(jìn)行批量操作,比如排序,刪除等。
Public Type zdygangjin '創(chuàng)建自定義鋼筋類型,包含鋼筋的各種屬性
buweimingcheng As String '鋼筋部位名稱
bianhao As String '鋼筋編號
bianma As String '鋼筋編碼
l1 As String '輸入格式為:1987,1987-2014
l2 As String
l3 As String
l4 As String
l5 As String
xinghao As String '鋼筋型號
zhijing As Integer '鋼筋直徑
genshu As Integer '鋼筋根數(shù)
zushu As Integer '鋼筋組數(shù)
shifoutongji As Boolean '布爾型 ,是否參與統(tǒng)計數(shù)組
wangoubeishu As Double '定義彎鉤倍數(shù)
objid As Double '定義對象ID號
gangjinjianju As Integer '定義鋼筋的間距,單位為mm
End Type
'定義一個動態(tài)數(shù)組,為全局變量,存儲鋼筋的自定義擴(kuò)展屬性
Public gangjintongji() As zdygangjin
2.2 添加擴(kuò)展數(shù)據(jù)
擴(kuò)展數(shù)據(jù)中常用的組碼說明如下:
1001 應(yīng)用程序名稱,數(shù)據(jù)類型為string
1000 數(shù)據(jù)類型為string
1003 表示圖層,類型為string
1040 數(shù)據(jù)類型為 double
1041 表示距離值,數(shù)據(jù)類型為Single
1042 表示縮放比,數(shù)據(jù)類型為Single
1070 表示16 位有符號整數(shù)
1071 表示 32 位有符號長整數(shù)
向?qū)ο筇砑訑U(kuò)展數(shù)據(jù)的方法是使用對象的SetXData方法,下面給出定義鋼筋擴(kuò)展數(shù)據(jù)結(jié)構(gòu),并添加給對象的部分代碼:
Dim xdatatype(0 To 1) As Integer
Dim xdata(0 To 1) As Variant
atatype(0) = 1001: xdata(0) = “bianhao”
datatype(1) = 1000: xdata(1) = gangjintongji(i).bianhao
gangjinObj.SetXData xdatatype, xdata '向?qū)ο筇砑右粋€擴(kuò)展數(shù)據(jù)組
atatype(0) = 1001: xdata(0) =“genshu”
datatype(1) = 1070: xdata(1) = gangjintongji(i).genshu
gangjinObj.SetXData xdatatype, xdata '向?qū)ο筇砑右粋€擴(kuò)展數(shù)據(jù)組
……
擴(kuò)展數(shù)據(jù)是以組碼“1001”開始后面緊跟若干個擴(kuò)展組碼構(gòu)成的一個單獨的編組,給對象添加擴(kuò)展數(shù)據(jù)就是將這樣的一個或多個編組賦給對象的,添加完之后,不管是移動復(fù)制還是粘貼,擴(kuò)展數(shù)據(jù)都始終跟隨對象,就像吸鐵石一樣緊緊地附著于對象之上。
2.3 提取擴(kuò)展數(shù)據(jù)
提取對象擴(kuò)展數(shù)據(jù)的方法是使用對象的GetXData方法,下面給出提取鋼筋擴(kuò)展屬性的部分代碼:
Dim xtypeout As Variant
Dim xdataout As Variant
gangjinObj.getxdata “bianhao”, xtypeout, xdataout '應(yīng)用程序名稱:鋼筋編號
gangjintongji(i).bianhao = xdataout(1) '提取編號數(shù)據(jù)
gangjinObj.getxdata “zhijing”, xtypeout, xdataout '應(yīng)用程序名稱:鋼筋直徑
gangjintongji(i).zhijing = xdataout(1) '提取直徑數(shù)據(jù)
……
可以批量提取對象的擴(kuò)展數(shù)據(jù),并存入到自定義的鋼筋數(shù)組gangjintongji()中,這樣就可以方便地對數(shù)組進(jìn)行操作,比如合并、刪除、排序等操作,也為以后再次進(jìn)行鋼筋統(tǒng)計提供方便。
2.4 應(yīng)用擴(kuò)展數(shù)據(jù)
根據(jù)提取的擴(kuò)展數(shù)據(jù),利用VBA的選擇過濾器的功能可以輕松的選取同一類型的鋼筋,然后進(jìn)行批量的修改,比如直徑、根數(shù)的修改等等,在修改的同時,鋼筋標(biāo)注也同步更新,這樣就會省去很多修改的麻煩。
以某水庫工程的導(dǎo)流兼泄洪洞工作閘井為例,說明如何生成鋼筋統(tǒng)計表和材料表。
(1) 根據(jù)結(jié)構(gòu)圖繪制鋼筋對象,保證線鋼筋為多段線(pline線),點鋼筋為圓(circle)。
(2) 打開程序主界面,點擊“單選鋼筋”按鈕,在cad模型空間中拾取前面繪制好的鋼筋對象后,
程序自動判斷鋼筋型式,并將鋼筋對象的各個分段值按照比例換算成實際值填入到對應(yīng)的文本框中,以便進(jìn)行修改,接著在主界面中再填入其他的屬性(部位名稱、直徑、根數(shù)等),最后點擊“鋼筋編號”按鈕進(jìn)行鋼筋編號,每進(jìn)行一次編號,鋼筋列表區(qū)內(nèi)都會增加一行數(shù)據(jù)(見圖4),同時模型空間中也會自動添加鋼筋編號文本,如此步驟再進(jìn)行其他鋼筋的編號,最后整理的效果見圖5。

圖4 程序界面中顯示的鋼筋列表圖

圖5 鋼筋編號成果圖——工作閘井縱剖面鋼筋圖(1∶100) 單位:mm
(3) 在編號的過程中,如果想讓某一個鋼筋的編號提前,比如把10號鋼筋提前到6號,可以在鋼筋列表區(qū)中選中10號鋼筋,然后點擊“上移”按鈕,程序就會將10號鋼筋提到6號,其他鋼筋編號會自動順延,同時模型空間中的鋼筋編號文本也會自動更改,不需要手動去改。
(4) 所有鋼筋編號完成之后,就可以出鋼筋統(tǒng)計表和鋼筋材料表了。首先點擊“鋼筋統(tǒng)計表輸出”按鈕后,程序會自動將鋼筋列表區(qū)內(nèi)的數(shù)據(jù)按照預(yù)先設(shè)定好的鋼筋表格式插入到模型空間中,然后再點擊“鋼筋材料表輸出”按鈕,在模型空間中框選前面生成的鋼筋統(tǒng)計表,程序會自動計算材料用量并生成鋼筋材料表(見圖6)。
(5) 此外在模型空間中雙擊鋼筋統(tǒng)計表中的編號文本時,程序會自動尋找該編號對應(yīng)的鋼筋對象,并以橡皮線指示,方便用戶的查看(見圖7)。

圖6 生成的鋼筋統(tǒng)計表和材料表

圖7 雙擊編號文本自動尋找鋼筋位置圖 單位:mm
利用VBA對AutoCAD程序進(jìn)行二次開發(fā),借助于擴(kuò)展數(shù)據(jù)向鋼筋對象添加自定義屬性,從而實現(xiàn)程序自動統(tǒng)計、自動繪制鋼筋表的功能,最終提高工作效率,減少出錯概率。
另外還可以借助擴(kuò)展數(shù)據(jù),將具有關(guān)聯(lián)性的若干個對象賦予同一組擴(kuò)展數(shù)據(jù),這樣就能在對象之間傳遞信息,進(jìn)而實現(xiàn)對象的關(guān)聯(lián)性操作,使得圖形對象便于管理和統(tǒng)計。
[1] 張帆,鄭立楷,王華杰.AutoCAD VBA開發(fā)精彩實例教程[M].北京:清華大學(xué)出版社,2004.
[2] 張帆,鄭立楷,盧擇臨,王成煌.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學(xué)出版社,2006.
[3] 曾洪飛,張帆,盧擇臨.AutoCAD VBA&VB.NET開發(fā)基礎(chǔ)與實例教程[M].北京:中國電力出版社,2008.
Application of Re-developed AutoCAD in Reinforcement Statistics
LIANG Kai-xuan, HAN Shou-du
(Xinjiang Water Resources and Hydropower Investigation Design and Research Institute, Urumqi 830000,China)
The reinforcement statistic program is re-developed by application of VBA technology which is built in AutoCAD. Furthermore, how to add the self-defined extended data to object and how to abstract the extended data from object are introduced. The special functions which cannot be realized by CAD itself can be utilized by application of the extended data. In practice, their application can help with improvement of work efficiency, reduction of mistaking probability and simplification of complicated statistics. Key words:CAD; re-developed; reinforcement statistics; extended data; VBA; plug-in
2015-03-12
梁凱旋(1987- ),男,河南省許昌市鄢陵縣人,助理工程師,從事水利工程設(shè)計工作.
TP391.7
A
10.3969/j.issn.1006-2610.2015.05.023