摘要:以AutoCAD為平臺,采用VB二次開發技術實現燃氣管網管段節點坐標的讀取,自動生成燃氣管網水力計算圖;采用VC++可視化編程語言,編制了城市燃氣管網水力計算軟件。
關鍵詞:燃氣管網;水力計算;軟件
Development of Hydraulic Calculation Software for City Gas Network
DING Guo-yu,TIAN Guan-san,AN Jun-qing,WANG Lei
Abstract:Based on AutoCAD,the reading of section node coordinates of gas network is realized by VB secondary development technology,and the hydraulic calculation drawing of gas network is automatically generated. The hydraulic calculation software for city gas network is programmed by VC++ visual programming language.
Key words:gas network;hydraulic calculation;software
隨著城市的發展,燃氣管網的規模越來越大,結構越來越復雜,水力計算需要處理的數據越來越多,準確、快速地生成水力計算圖,實現水力計算與AutoCAD圖形的無縫結合成為提高燃氣管網水力計算效率的重要途徑。本文以AutoCAD為平臺,采用VB二次開發技術,采用Vc++6.0可視化編程語言編制了燃氣管網水力計算軟件,大大減小了燃氣管網水力計算的工作量,提高了工作效率。
1 AutoCAD的VB二次開發機理
AutoCAD作為一種具有高度開放結構的CAD平臺軟件,提供了強大的二次開發環境。目前,AutoCAD二次開發工具主要有Object ARX、Visual LISP、VB等編程語言[1],考慮到程序的易用性、普及性以及與其他圖形軟件的接口等因素,本文采用vB對AutoCAD進行二次開發,實現燃氣管網水力計算圖的自動生成。
① ActiveX Object技術
ActiveX是微軟的一項技術標準,在Windows系統的統一管理下協調不同的應用程序,實現程序間的相互通信、相互控制,VB通過引用應用程序提供的ActiveX Object,實現應用程序的二次開發[2]。ActiveX Object是由一系列對象按一定的層次組成的一種對象結構,每一個對象代表了AutoCAD中一個明確的功能,如繪制圖形對象、定義塊和屬性等。AetiveX具備的絕大多數AutoCAD功能,均以方法和屬性的方式被封裝在ActiveX對象中,通過引用各種對象的方法、屬性,實現對AutoCAD的二次開發。
② ActiveX對象模型
AutoCAD ActiveX提供了各種封裝有AutoCAD功能的對象,所有的對象都具有一定的層次關系,根據其在AutoCAD中的功能,可以采用樹形結構表示,稱之為對象模型(Object Model),本文在AutoCAD二次開發中所用的主要對象模型見圖1。

Application對象:AutoCAD ActiveX中的根對象,是所有對象的基礎,處于最高層。為了得到一個特定對象必須從Application對象進行逐級引用。
Documents對象:AutoCAD控制圖形文件的直接對象,可以通過Application的Active Documents的屬性返回。在Documents對象中AutoCAD引入了集合的概念,與VB中的集合一樣,這些集合都支持Add、Item方法與Count屬性。Add方法可以向該集合中添加一個對象,Item(x)可以得到該集合中的第x個對象,Count屬性可以得到該集合中對象的個數等。
Documents對象下面有Model Space(模型空間)及Layers(圖層)等一系列對象集合。Model Space是圖形文件中的圖形實體集合,如Line(直線),每個實體均可通過相應對象的屬性進行操作,改變或得到相應的參數,如直線坐標。Layers是圖層集合,通過對Layers對象的引用可以得到圖層集合的子對象,如Layer。
2 管段節點坐標的提取
在AutoCAD繪圖前期,建立一個名為“GasNet”的圖層,所有燃氣管網的繪制都在這個圖層中進行;管網繪制完成后,遍歷圖層集合,得到“GasNet”圖層;遍歷“GasNet”圖層中所有圖形實體,得到管段對象(Line),讀取管段節點坐標,并將管段節點坐標存入管段鏈表口1中。其開發步驟如下:
① 啟動VB,建立項目文件,引入AtuoCAD對象庫:在VB編程環境中,選擇“工程”\&;引用”命令,打開“引用”對話框,選擇AutoCAD2004 TypeLibrary復選框。
② 在項目中添加窗體、控件等,并編寫相應程序代碼。
a. 引入AtuoCAD應用程序對象。AutoCAD ActiveX中對象的引用是通過對象變量完成的,首先聲明變量類型,然后用Set語句將對象引用賦給變量,部分代碼如下:
Dim Acadapp as AcadApplication’聲明AutoCAD應用程序對象
Set Acadapp 2 CreateObject(”AutoCAD.Application”)’啟動AutoCAD
b. 引用AutoCAD應用程序對象的下級對象。通過AutoCAD應用程序對象(Application)的屬性和方法,逐級訪問下級對象,如下面語句通過AutoCAD應用程序對象變量(Acadapp)的ActiveDocument屬性訪問Model Space,再通過Model Space對象的Add方法,得到所有模型空間中所有直線的集合。
Dim SSline As AcadSelectionSet’定義選擇集
Set SSline=Acadapp.ActiveDocument.SelectionSets.Add(”Line”)
C.遍歷所有直線,得到“GasNet”圖層中的管段(Line)坐標。
Dim retpt As Variant,retep As Variant’定義兩個變體數據用以存放起點、終點坐標
Dim retobj As AcadLine’定義直線對象
For Each retobj In SSline’遍歷所有直線
If retobj.Layer=“GasNet”Then’判斷直線是否在“GasNet”圖層中
retpt=retobj.StartPoint’得到起點坐標
txtfile.write retpt(0)’輸出起點x軸坐標
txtfile.write(””)’輸出空格
txtfile.write retpt(1)’輸出起點Y軸坐標
retep=retobj.EndPoint’得到終點坐標
txtfile.wrine(””)’輸出空格
txtfile.write retep(0)’輸出終點x軸坐標
txtfile.write(””)’輸出空格
txtfile.writeline retep(1)’輸出終點Y軸坐標
End If
Next
d. 釋放AutoCAD對象。當不再使用被引用的對象時,要將其設置為Nothing,及時釋放該對象所占有的系統資源。
Set Acadapp=Nothing
3 燃氣管網水力計算圖的自動生成
① 函數設計
首先將數據文件中的管段節點坐標讀入數據鏈表中[3],然后設計2個函數,1個函數計算當前需要標注的管段節點與已標注的管段節點(如節點③)間的距離,若其滿足要求,則返回相應管段節點的編號(節點③);另1個函數用來計算管段鏈表中已標注的管段節點編號的最大值。
② 基本思路[3]
計算管段鏈表中已標注的管段節點編號的最大值。對管段鏈表進行遍歷,求得當前需要標注的管段節點與已標注的管段節點的距離,若滿足要求,則當前管段節點編號等于相應的管段節點編號;若不滿足要求,則當前管段節點編號等于已標注的管段節點編號的最大值加1。水力計算圖自動生成過程見圖2。

4 城市燃氣管網水力計算軟件設計
本軟件采用VC++6.0可視化編程語言基于模塊化設計,由管網輸入、管網編輯、參數輸入、管網計算和結果輸出等模塊組成。本軟件具有以下特點:
① 管網輸入支持鼠標繪圖、AutoCAD導入和多種格式的航拍圖的導入,可以準確、快速地生成水力計算圖。
② 管網計算的核心程序是基于節點法[4~6]法編制的,保證了計算的穩定性,加快了收斂速度,提高了計算精度。
③ 實現了計算結果的Excel、AutoCAD輸出[7、8],方便了水力計算書的生成,減少了水力計算的工作量,提高了燃氣管網水力計算的效率。
參考文獻:
[1] 張帆,鄭立楷,王華杰.AutoCAD VBA開發精彩實例教程[M].北京:清華大學出版社,2004.
[2] 李榮廷,王秀玲,張水弟.Active Automation在AutoCAD二次開發中的應用[J].河北工業科技,2002,13(2):12-15.
[3] 彭繼軍,田貫三,劉燕.燃氣管網水力計算圖的計算機生成[J].山東建筑工程學院學報,2003,18(1):58-62.
[4] 田貫三,張增剛,江億.城鎮天然氣管網水力分析數學模型與計算方法[J].天然氣工業,2002,(5):96-97.
[5] 謝偉光.牛頓法在燃氣管網節點壓力計算中的應用[J].煤氣與熱力,1998,18(6):24-25.
[6] 嚴銘卿.城市燃氣管網的計算機輔助設計[J].煤氣與熱力,1998,18(1):15-19.
[7] 魯國文,馮良.基于AutoCAD的燃氣管網水力計算和自動繪圖系統的研究[J].上海煤氣,2006,(1):26-29.
[8] 王蕾,李帆.AutoCAD在燃氣工程制圖中的開發應用[J].煤氣與熱力,2004,24(11):614-616.
(本文作者:丁國玉1 田貫三2 安俊卿3 王磊2 1.北京市城市規劃設計研究院 北京 100045;2.山東建筑大學熱能工程學院 山東濟南 250101;3.德州市建筑規劃勘察設計研究院 山東濟南 250101)
贊 賞 分享
您可以選擇一種方式贊助本站
支付寶轉賬贊助
微信轉賬贊助