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

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

圖2 鋼筋統計表

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

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

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

圖6 生成的鋼筋統計表和材料表

圖7 雙擊編號文本自動尋找鋼筋位置圖 單位:mm
利用VBA對AutoCAD程序進行二次開發,借助于擴展數據向鋼筋對象添加自定義屬性,從而實現程序自動統計、自動繪制鋼筋表的功能,最終提高工作效率,減少出錯概率。
另外還可以借助擴展數據,將具有關聯性的若干個對象賦予同一組擴展數據,這樣就能在對象之間傳遞信息,進而實現對象的關聯性操作,使得圖形對象便于管理和統計。
[1] 張帆,鄭立楷,王華杰.AutoCAD VBA開發精彩實例教程[M].北京:清華大學出版社,2004.
[2] 張帆,鄭立楷,盧擇臨,王成煌.AutoCAD VBA二次開發教程[M].北京:清華大學出版社,2006.
[3] 曾洪飛,張帆,盧擇臨.AutoCAD VBA&VB.NET開發基礎與實例教程[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- ),男,河南省許昌市鄢陵縣人,助理工程師,從事水利工程設計工作.
TP391.7
A
10.3969/j.issn.1006-2610.2015.05.023