趙志清
(呼和浩特鐵路局 建設管理處,呼和浩特 010010)
AutoCAD VBA辦公自動化程序應用實例
——排水流向標注程序
趙志清
(呼和浩特鐵路局 建設管理處,呼和浩特 010010)
本文介紹AutoCAD VBA辦公自動化應用實例—排水流向標注程序的設計思想、設計過程以及使用說明等相關內容。對創建形文件、創建線形、自動標注等內容進行了詳細描述。
AutoCAD VBA;辦公自動化;線形;形文件
線路路基應有一個完整、暢通的排水系統。設計者要綜合平面圖、縱斷面圖、橫斷面圖的設計,配合橋梁、涵洞、站場的排水設施,考慮地質、地形、氣候等因素,設計排水系統。排水系統圖的設計是在線路平面圖的基礎上,利用排水線勾畫出排水系統中水溝的位置、長度,并標注坡度和標高。
排水系統設計完成后,生成排水表。排水表中包括水溝的起訖里程、長度、最小坡度、起止點高程等內容。將排水表的數據體現在平面圖中即排水系統平面圖。此項工作含量較低卻十分繁瑣,浪費設計者大量的時間,且容易出錯。
現在,使用排水流向標注程序可以解決這一問題。它可以自動標注水溝長度和坡度、流向箭頭、起訖里程處的高程,便捷高效。
1.1 線型
排水系統圖的慣例要求排水線既要標示水溝的起訖歷程、長度,還要標示水流的流向。通常采用單側箭頭作為線型的單元,如圖1所示。

圖1 線型單元示意圖
實現上述線型的方法有3種:
(1)復制法
這種方法簡單但是繁瑣,用戶需畫出一個箭頭并不斷復制完成排水線的繪制。直線段還較為容易,但對于曲線段尤其是小半徑曲線就很不方便,每次只能復制很短的一段。所以這種方法不推薦。
(2)ME法
作者從繪制軌道圖例引伸出ME法,此方法使用MEASURE命令。原理是用塊來定距等分多段線。
用戶需先創建兩個塊,分別代表兩個方向的箭頭,塊的參照點要選在箭頭反方向端點一定距離的位置,這樣才能生成上面的間隔線型。這種方法可以方便地等分直線、多段線、圓弧,但是它不能使用VBA編輯,也無法自動標注,所以只做參考。
(3)形文件法
本文重點介紹形文件法,它不但可以應用在本程序中,還可以應用在其它不同設計領域。
形文件顧名思義就是定義一個簡單的圖形存為一個形文件。在常用的線型文件*.Lin中創建新的線型來重復引用這個形文件從而完成復雜線型的定義。
下面,簡述本插件中所使用形文件的定義過程,也可作為定義其它復雜線型的參考。
新建一個文本文檔保存為.shp文件,這個文件是形定義文件,在這個文件中輸入如下文字:
*230,3,PAISHUI
060,027,0
保存并退出編輯。
首行中:*為開始符;230為形編號;3表示下一行的參數個數;PAISHUI為形名稱。
第2行每個參數中:第1個字符必須為 0,用于指示 AutoCAD 將后面的兩個字符解釋為16進制值。第2個字符指定矢量的長度。有效的16進制值的范圍是從 1(1 個單位長度)到 F(15 個單位長度)。第3個字符指定矢量的方向。方向代碼如圖2所示。

圖2 方向代碼示意圖
第2行第3個參數0表示形定義結束,用在第2行圖形定義的結尾處。形定義文件定義完成,對應圖形如圖3所示。

圖3 形定義文件定義完成對應圖形示例
在CAD中使用compile命令,選擇剛定義的.shp文件,經由CAD編譯生成同名的.shx文件,.shx文件即為編譯好的形文件。
新建一個新的文本文檔保存為.lin文件,這個文件是線型定義文件,在這個文件中輸入如下文字:

保存并退出編輯。
首行中:*為開始符;PAISHUIZUO為線型名稱;______>為線型圖例。
第2行必須以字母 A開頭;0.0001表示落筆長度;[ ]中的文字用來引用形文件;-20表示提筆長度。
復雜線型定義完成。
注:簡單線型的定義也很有實用價值,具體方法參照CAD幫助文件。
1.2 開發平臺
目前主流圖形輔助設計軟件為AutoCAD 平臺。AutoCAD 二次開發接口提供了種類豐富的編程語言如基于C#的ARX、基于VB的VBA、基于腳本的Lisp等。本文采用AutoCAD VBA (Visual Basic for Applications)編程。VBA是新一代標準宏語言,基于VB(Visual Basic for Windows)發展而來,具有面向對象的程序設計概念和方法,不但繼承了VB簡便、可視化的開發機制,而且還具有與VB相似的語言結構,它們的集成開發環境(IDE,Intergrated Development Environment)也幾乎相同。但VBA專門針對AutoCAD、Office 等應用程序進行優化,可輕松訪問AutoCAD 、Excel內部數據,尤其善于在兩種程序間進行交互開發。VBA編程效率非常高,是理想的輔助設計軟件開發工具。
1.3 軟件流程
根據《用地與排水系統圖》的繪制特點,結合繪圖人員實際使用,軟件流程如圖4所示。

圖4 軟件流程圖
1.4 人機交互
為了方便設計人員完成工作,程序通過Lisp宏文件實現了透明命令。用戶可在繪圖界面命令行輸入PSX呼出程序,通過空格鍵快速的重復調用。
本程序需要用戶拾取很多位置的點,比如排水溝起終點、標高插入點等。所以在命令行設置了幾種提示: “拾取排水溝起點” 、“拾取途經點” 、“拾取標高插入位置”,引導設計人正確拾取目標點。
為了使程序更加人性化,每個標注都可以單獨更改內容、字體、顏色,方便不同設計人的習慣和不同圖紙的規范化要求。
2.1 用戶界面
程序界面如圖5所示,起點高程和終點高程處按排水表輸入相應數值,排水坡度處輸入最小允許排水坡度,流水方向箭頭偏向處選擇偏左或偏右。點擊“拾取起點”開始繪制排水線,點擊“取消”退出繪制過程。

圖5 程序界面圖
本程序需標注的位置分為兩類。
(1)兩端標注
兩端標注起、終點高程(),需要在兩端點位置繪制標高三角,在標高三角上方標示標高,圖紙標注方式如圖6所示。
(2)中間標注
中間需要標注排水溝的長度和最小坡度,程序提示用戶拾取插入標注的位置,圖紙標注方式如圖7所示。

圖6 圖紙標注方式(兩端標注)

圖7 圖紙標注方式(中間標注)
2.2 使用說明
程序的使用方法很簡單,按界面上的提示輸入即可。這里主要說明排水箭頭方向的選擇方法。
(1)箭頭斜線在水流方向的左側,如圖8所示。

圖8 箭頭斜線在水流方向左側示意圖
(2)箭頭斜線在水流方向的右側,如圖9所示。

圖9 箭頭斜線在水流方向右側示意圖
2.3 使用技巧
(1)排水線可以由直線、多段線、或者PE合并的多段線(不能包含圓弧)組成。(2)由于排水線的箭頭是一種新定義的復雜線型,故箭頭的大小可以靠線型比例來控制。在排水系統圖設計完成后,根據設計人和圖紙的要求可統一修改。(3)在設計排水線時最好新建一個圖層,方便統一修改線型、字體和顏色。(4) 在曲線段的排水線設計時,可用多段線模擬曲線,但段落長度盡量相等。(5)由于考慮布局和折圖的因素,兩端的標注都是以水平X軸為基準標注的,折圖完成后需設計人自行旋轉。(6)程序標注的水溝長度為多段線實際長度,不考慮水溝的縱坡或者橫向偏移產生的長度誤差。
從《用地與排水系統圖》的繪制流程來講,屬于漸進式設計,通過平面和橫斷面排水圖的不斷對照和修改,最終完成圖紙。對于這種設計流程,最佳的軟件方案即為計算機輔助設計:由設計人主導設計思路,計算機完成繪圖及輔助計算,最大程度地簡化繁瑣的繪圖和計算流程,配合設計人完成圖紙繪制。具體標注樣例如圖10、11、12、13、14所示。
圖中,如果排水溝位于曲線位置,可用等長多段線擬合曲線。

圖10 輸入相應標高和坡度,選擇水流方向

圖11 拾取起點位置

圖12 拾取途經點位置

圖13 拾取終點位置

圖14 拾取長度和坡度插入位置
排水流向標注程序可以把設計者從簡單的重復勞動中解脫出來。其操作更加簡單,標注更加準確,能可靠地完成設計任務。
[1]高光來,李 平.計算機應用基礎[M].呼和浩特:內蒙古大學出版社,2002.
[2]曾洪飛.CAD VBA基礎與實例教程[M].北京:中國電力出版社,2008.
責任編輯 王 浩
Example of AutoCAD VBA—drainage fow direction annotation
ZHAO Zhiqing
( Department of Construction Management,Hohhot Railway Administration,Hohhot 010010,China)
This paper introduced AutoCAD VBA offce automation applications example that was the design ideas for the program of drainage fow direction annotation,the design process and the introduction,described the establishment of shape fle,linear and automatic marking.
AutoCAD VBA;offce automation;linear;shape fle
U216.4∶TP39
A
1005-8451(2016)02-0046-04
2015-06-12
趙志清,高級工程師。