梁凱旋,韓首都
(新疆水利水電勘測設(shè)計(jì)研究院,烏魯木齊 830000)
文章編號(hào):1006—2610(2015)05—0079—04
AutoCAD的二次開發(fā)在鋼筋統(tǒng)計(jì)工作中的應(yīng)用
梁凱旋,韓首都
(新疆水利水電勘測設(shè)計(jì)研究院,烏魯木齊 830000)
利用內(nèi)嵌于AutoCAD軟件平臺(tái)的VBA技術(shù)對(duì)鋼筋統(tǒng)計(jì)程序進(jìn)行二次開發(fā),介紹如何給對(duì)象添加自定義擴(kuò)展數(shù)據(jù)以及如何提取對(duì)象的擴(kuò)展數(shù)據(jù);從而通過使用擴(kuò)展數(shù)據(jù),實(shí)現(xiàn)CAD本身無法實(shí)現(xiàn)的特定功能,應(yīng)用于實(shí)際工作中可進(jìn)一步提高工作效率,減少出錯(cuò)的概率和繁瑣的繪圖統(tǒng)計(jì)工作。
CAD;二次開發(fā);鋼筋統(tǒng)計(jì);擴(kuò)展數(shù)據(jù);VBA;插件
AutoCAD是目前使用廣泛的通用交互式計(jì)算機(jī)輔助繪圖與設(shè)計(jì)軟件包,其特點(diǎn)是通用性強(qiáng),具有多種工業(yè)標(biāo)準(zhǔn)和開放的體系結(jié)構(gòu),具有強(qiáng)大的二次開發(fā)功能。VBA(Visual Basic for Application)是AutoCAD內(nèi)嵌的一種程序語言,它基于Visual Basic語言的,有著與VB幾乎相同的開發(fā)環(huán)境和語法。在實(shí)際工程項(xiàng)目中,鋼筋統(tǒng)計(jì)是一項(xiàng)繁瑣而又要求嚴(yán)謹(jǐn)?shù)墓ぷ鳌1疚睦脙?nèi)嵌于AutoCAD軟件平臺(tái)的VBA技術(shù)進(jìn)行二次開發(fā)編寫鋼筋統(tǒng)計(jì)程序(見圖1),通過程序?qū)摻罹幪?hào)、直徑、長度、根數(shù)等自定義屬性數(shù)據(jù)添加給對(duì)象,使之具有擴(kuò)展屬性,可以形象的稱之為數(shù)據(jù)尾巴,即不論圖形如何拷貝,鋼筋數(shù)據(jù)始終都會(huì)像尾巴一樣跟隨圖形,隨時(shí)可提取對(duì)象的擴(kuò)展屬性,進(jìn)行相應(yīng)的修改、統(tǒng)計(jì)操作,并自動(dòng)繪出鋼筋統(tǒng)計(jì)表和鋼筋材料表,提高工作效率。
1.1 程序主界面預(yù)覽
程序主要功能包括:拾取并判斷鋼筋形式、讀取分段長度、鋼筋編號(hào)、修改鋼筋屬性、圖中尋找鋼筋、生成鋼筋統(tǒng)計(jì)表和材料統(tǒng)計(jì)表等,見圖1。
圖1 鋼筋統(tǒng)計(jì)窗口圖
1.2 報(bào)表生成
程序自動(dòng)生成的鋼筋統(tǒng)計(jì)表和鋼筋材料表見圖2和3。
圖2 鋼筋統(tǒng)計(jì)表
圖3 鋼筋材料統(tǒng)計(jì)表
2.1 鋼筋自定義數(shù)據(jù)結(jié)構(gòu)
首先自定義一個(gè)鋼筋數(shù)據(jù)結(jié)構(gòu),再定義一個(gè)用來存儲(chǔ)鋼筋數(shù)據(jù)的動(dòng)態(tài)數(shù)組,這樣做的好處,可以對(duì)鋼筋數(shù)組進(jìn)行批量操作,比如排序,刪除等。
Public Type zdygangjin '創(chuàng)建自定義鋼筋類型,包含鋼筋的各種屬性
buweimingcheng As String '鋼筋部位名稱
bianhao As String '鋼筋編號(hào)
bianma As String '鋼筋編碼
l1 As String '輸入格式為:1987,1987-2014
l2 As String
l3 As String
l4 As String
l5 As String
xinghao As String '鋼筋型號(hào)
zhijing As Integer '鋼筋直徑
genshu As Integer '鋼筋根數(shù)
zushu As Integer '鋼筋組數(shù)
shifoutongji As Boolean '布爾型 ,是否參與統(tǒng)計(jì)數(shù)組
wangoubeishu As Double '定義彎鉤倍數(shù)
objid As Double '定義對(duì)象ID號(hào)
gangjinjianju As Integer '定義鋼筋的間距,單位為mm
End Type
'定義一個(gè)動(dòng)態(tài)數(shù)組,為全局變量,存儲(chǔ)鋼筋的自定義擴(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 位有符號(hào)整數(shù)
1071 表示 32 位有符號(hào)長整數(shù)
向?qū)ο筇砑訑U(kuò)展數(shù)據(jù)的方法是使用對(duì)象的SetXData方法,下面給出定義鋼筋擴(kuò)展數(shù)據(jù)結(jié)構(gòu),并添加給對(duì)象的部分代碼:
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ū)ο筇砑右粋€(gè)擴(kuò)展數(shù)據(jù)組
atatype(0) = 1001: xdata(0) =“genshu”
datatype(1) = 1070: xdata(1) = gangjintongji(i).genshu
gangjinObj.SetXData xdatatype, xdata '向?qū)ο筇砑右粋€(gè)擴(kuò)展數(shù)據(jù)組
……
擴(kuò)展數(shù)據(jù)是以組碼“1001”開始后面緊跟若干個(gè)擴(kuò)展組碼構(gòu)成的一個(gè)單獨(dú)的編組,給對(duì)象添加擴(kuò)展數(shù)據(jù)就是將這樣的一個(gè)或多個(gè)編組賦給對(duì)象的,添加完之后,不管是移動(dòng)復(fù)制還是粘貼,擴(kuò)展數(shù)據(jù)都始終跟隨對(duì)象,就像吸鐵石一樣緊緊地附著于對(duì)象之上。
2.3 提取擴(kuò)展數(shù)據(jù)
提取對(duì)象擴(kuò)展數(shù)據(jù)的方法是使用對(duì)象的GetXData方法,下面給出提取鋼筋擴(kuò)展屬性的部分代碼:
Dim xtypeout As Variant
Dim xdataout As Variant
gangjinObj.getxdata “bianhao”, xtypeout, xdataout '應(yīng)用程序名稱:鋼筋編號(hào)
gangjintongji(i).bianhao = xdataout(1) '提取編號(hào)數(shù)據(jù)
gangjinObj.getxdata “zhijing”, xtypeout, xdataout '應(yīng)用程序名稱:鋼筋直徑
gangjintongji(i).zhijing = xdataout(1) '提取直徑數(shù)據(jù)
……
可以批量提取對(duì)象的擴(kuò)展數(shù)據(jù),并存入到自定義的鋼筋數(shù)組gangjintongji()中,這樣就可以方便地對(duì)數(shù)組進(jìn)行操作,比如合并、刪除、排序等操作,也為以后再次進(jìn)行鋼筋統(tǒng)計(jì)提供方便。
2.4 應(yīng)用擴(kuò)展數(shù)據(jù)
根據(jù)提取的擴(kuò)展數(shù)據(jù),利用VBA的選擇過濾器的功能可以輕松的選取同一類型的鋼筋,然后進(jìn)行批量的修改,比如直徑、根數(shù)的修改等等,在修改的同時(shí),鋼筋標(biāo)注也同步更新,這樣就會(huì)省去很多修改的麻煩。
以某水庫工程的導(dǎo)流兼泄洪洞工作閘井為例,說明如何生成鋼筋統(tǒng)計(jì)表和材料表。
(1) 根據(jù)結(jié)構(gòu)圖繪制鋼筋對(duì)象,保證線鋼筋為多段線(pline線),點(diǎn)鋼筋為圓(circle)。
(2) 打開程序主界面,點(diǎn)擊“單選鋼筋”按鈕,在cad模型空間中拾取前面繪制好的鋼筋對(duì)象后,
程序自動(dòng)判斷鋼筋型式,并將鋼筋對(duì)象的各個(gè)分段值按照比例換算成實(shí)際值填入到對(duì)應(yīng)的文本框中,以便進(jìn)行修改,接著在主界面中再填入其他的屬性(部位名稱、直徑、根數(shù)等),最后點(diǎn)擊“鋼筋編號(hào)”按鈕進(jìn)行鋼筋編號(hào),每進(jìn)行一次編號(hào),鋼筋列表區(qū)內(nèi)都會(huì)增加一行數(shù)據(jù)(見圖4),同時(shí)模型空間中也會(huì)自動(dòng)添加鋼筋編號(hào)文本,如此步驟再進(jìn)行其他鋼筋的編號(hào),最后整理的效果見圖5。
圖4 程序界面中顯示的鋼筋列表圖
圖5 鋼筋編號(hào)成果圖——工作閘井縱剖面鋼筋圖(1∶100) 單位:mm
(3) 在編號(hào)的過程中,如果想讓某一個(gè)鋼筋的編號(hào)提前,比如把10號(hào)鋼筋提前到6號(hào),可以在鋼筋列表區(qū)中選中10號(hào)鋼筋,然后點(diǎn)擊“上移”按鈕,程序就會(huì)將10號(hào)鋼筋提到6號(hào),其他鋼筋編號(hào)會(huì)自動(dòng)順延,同時(shí)模型空間中的鋼筋編號(hào)文本也會(huì)自動(dòng)更改,不需要手動(dòng)去改。
(4) 所有鋼筋編號(hào)完成之后,就可以出鋼筋統(tǒng)計(jì)表和鋼筋材料表了。首先點(diǎn)擊“鋼筋統(tǒng)計(jì)表輸出”按鈕后,程序會(huì)自動(dòng)將鋼筋列表區(qū)內(nèi)的數(shù)據(jù)按照預(yù)先設(shè)定好的鋼筋表格式插入到模型空間中,然后再點(diǎn)擊“鋼筋材料表輸出”按鈕,在模型空間中框選前面生成的鋼筋統(tǒng)計(jì)表,程序會(huì)自動(dòng)計(jì)算材料用量并生成鋼筋材料表(見圖6)。
(5) 此外在模型空間中雙擊鋼筋統(tǒng)計(jì)表中的編號(hào)文本時(shí),程序會(huì)自動(dòng)尋找該編號(hào)對(duì)應(yīng)的鋼筋對(duì)象,并以橡皮線指示,方便用戶的查看(見圖7)。
圖6 生成的鋼筋統(tǒng)計(jì)表和材料表
圖7 雙擊編號(hào)文本自動(dòng)尋找鋼筋位置圖 單位:mm
利用VBA對(duì)AutoCAD程序進(jìn)行二次開發(fā),借助于擴(kuò)展數(shù)據(jù)向鋼筋對(duì)象添加自定義屬性,從而實(shí)現(xiàn)程序自動(dòng)統(tǒng)計(jì)、自動(dòng)繪制鋼筋表的功能,最終提高工作效率,減少出錯(cuò)概率。
另外還可以借助擴(kuò)展數(shù)據(jù),將具有關(guān)聯(lián)性的若干個(gè)對(duì)象賦予同一組擴(kuò)展數(shù)據(jù),這樣就能在對(duì)象之間傳遞信息,進(jìn)而實(shí)現(xiàn)對(duì)象的關(guān)聯(lián)性操作,使得圖形對(duì)象便于管理和統(tǒng)計(jì)。
[1] 張帆,鄭立楷,王華杰.AutoCAD VBA開發(fā)精彩實(shí)例教程[M].北京:清華大學(xué)出版社,2004.
[2] 張帆,鄭立楷,盧擇臨,王成煌.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學(xué)出版社,2006.
[3] 曾洪飛,張帆,盧擇臨.AutoCAD VBA&VB.NET開發(fā)基礎(chǔ)與實(shí)例教程[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è)計(jì)工作.
TP391.7
A
10.3969/j.issn.1006-2610.2015.05.023