版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
利用AutoCAD的VBA實(shí)現(xiàn)城市給水管網(wǎng)繪圖自動(dòng)化
摘要:城市給水管網(wǎng)的平差、優(yōu)化計(jì)算的結(jié)果圖的繪制是一項(xiàng)較為繁瑣的工作,文章介紹了由管網(wǎng)的基本數(shù)據(jù)自動(dòng)繪制管網(wǎng)圖的方法,重點(diǎn)介紹了由管網(wǎng)的一個(gè)基本關(guān)系矩陣經(jīng)過(guò)轉(zhuǎn)換,派生成相應(yīng)的一系列銜接矩陣的方法,并由此完成管網(wǎng)圖的繪制和標(biāo)注工作,大幅度地提高了工作效率,改善了出圖的質(zhì)量。
關(guān)鍵字:給水管網(wǎng)基本關(guān)系矩陣銜接矩陣?yán)L圖標(biāo)注0引言目前,在給排水工程設(shè)計(jì)工作中,已經(jīng)有不少城市管網(wǎng)的專業(yè)設(shè)計(jì)軟件,但許多軟件仍然存在不少問(wèn)題,譬如界面使用不習(xí)慣,數(shù)據(jù)輸入經(jīng)常出錯(cuò)等等,因此,使用率不高。AutoCAD是工程界使用頻率最高,同時(shí)也是最基本的繪圖軟件。不少設(shè)計(jì)人員通常習(xí)慣于自己利用AutoCAD的二次開(kāi)發(fā)工具,編制一些實(shí)用、方便的程序。由于在城市給水管網(wǎng)優(yōu)化計(jì)算中,繪圖也是一項(xiàng)比較繁瑣的工作,它涉及到大量數(shù)據(jù)的標(biāo)注。因此,不少給排水設(shè)計(jì)工作人員都在努力開(kāi)發(fā)更適合人們思維習(xí)慣的軟件,減少像標(biāo)注數(shù)據(jù)這樣的重復(fù)性工作。本文正是著眼于這一思想,利用AutoCAD2000中的VBA編制了一個(gè)非常實(shí)用的繪圖程序,使給水管網(wǎng)繪圖工作基本上到達(dá)自動(dòng)化。所謂VBA就是VisualBasicforApplication的簡(jiǎn)稱,它不僅可以執(zhí)行并存取AutoCAD環(huán)境的所有資源,還可以整合其他具有VBA能力的應(yīng)用程序。VBA通過(guò)AutoCADActiveXAutomation接口把信息傳送給AutoCAD,而AutoCADVBA也允許VBA環(huán)境與AutoCAD同時(shí)執(zhí)行并通過(guò)ActiveXAutomation接口提供AutoCAD的程序。由于AutoCAD、ActiveXAutomation與VBA的結(jié)合方式提供了功能強(qiáng)大的接口,不僅可以操作AutoCAD的內(nèi)部對(duì)象件,更可以在其他的應(yīng)用程序之間傳送或接受數(shù)據(jù)[1]。文中介紹的方法是:先用VisualFORTRAN編寫(xiě)程序進(jìn)行管網(wǎng)的優(yōu)化計(jì)算,把計(jì)算結(jié)果生成一個(gè)數(shù)據(jù)文件,再在AutoCAD中,利用VBA編寫(xiě)程序,直接調(diào)用該數(shù)據(jù)文件,自動(dòng)進(jìn)行繪圖、標(biāo)注。1繪圖繪制管網(wǎng)圖的方法有兩種思路:一是以節(jié)點(diǎn)為主的繪圖方法,二是以管段為主的繪圖方法。1.1以節(jié)點(diǎn)為主的繪圖方法由于管網(wǎng)的各個(gè)節(jié)點(diǎn)之間的關(guān)系可以用管網(wǎng)的基本關(guān)系矩陣環(huán)—節(jié)點(diǎn)矩陣表示出來(lái)。因此,可以利用環(huán)—節(jié)點(diǎn)矩陣?yán)L制給水工程的管網(wǎng)圖。如果直接利用繪制管網(wǎng)圖,在環(huán)與環(huán)之間的公共管段處就會(huì)重復(fù)繪制。因此,必須把環(huán)—節(jié)點(diǎn)矩陣進(jìn)行一系列數(shù)據(jù)轉(zhuǎn)換,以保證公共管段不重復(fù)調(diào)用繪圖和標(biāo)注命令。利用環(huán)—節(jié)點(diǎn)矩陣,其中I表示管網(wǎng)的環(huán),J表示該環(huán)的節(jié)點(diǎn)標(biāo)號(hào),經(jīng)過(guò)轉(zhuǎn)換生成一系列用于繪圖的下三角矩陣:節(jié)點(diǎn)識(shí)別銜接矩陣、管長(zhǎng)銜接矩陣、管徑銜接矩陣、管段流量銜接矩陣和管段水頭損失銜接矩陣,N表示管網(wǎng)的節(jié)點(diǎn)數(shù)。1.1.1基本關(guān)系矩陣基本關(guān)系矩陣表示以環(huán)號(hào)為行,以最大環(huán)的節(jié)點(diǎn)數(shù)為列構(gòu)成的矩陣,寫(xiě)成計(jì)算機(jī)語(yǔ)言(FORTRAN)就是一個(gè)二維數(shù)組,即KL(I,J),其中M就是基本關(guān)系矩陣的行號(hào),也即是管段所在的環(huán)號(hào)I,N就是基本關(guān)系矩陣的列,即環(huán)的節(jié)點(diǎn)數(shù)。KL(I,J)的值就等于管網(wǎng)的節(jié)點(diǎn)號(hào)。由于環(huán)是一個(gè)封閉的環(huán),所以各個(gè)環(huán)的首節(jié)點(diǎn)號(hào)等于尾節(jié)點(diǎn)[2][3][4]。圖11.1.2數(shù)據(jù)轉(zhuǎn)換給水管網(wǎng)基本上都是由線段構(gòu)成,通常情況下,繪制直線都是以點(diǎn)為基礎(chǔ),從直線的起點(diǎn)開(kāi)始繪圖。只要輸入各點(diǎn)的坐標(biāo),在循環(huán)語(yǔ)句中調(diào)用VBA中的繪制直線命令就可以自動(dòng)繪圖。因此,繪制管網(wǎng)圖的思路是:輸入各點(diǎn)的坐標(biāo),根據(jù)各節(jié)點(diǎn)之間的銜接關(guān)系,自動(dòng)繪制管網(wǎng)圖。要保證繪圖時(shí)各管段,特別是公共管段做到不重不漏,關(guān)鍵就是要保證節(jié)點(diǎn)識(shí)別銜接矩陣完全正確,銜接矩陣不僅在繪圖時(shí)使用,而且在計(jì)算標(biāo)注優(yōu)化計(jì)算結(jié)果的起點(diǎn)坐標(biāo)、旋轉(zhuǎn)角度時(shí)都需要用到。由基本關(guān)系矩陣自動(dòng)生成節(jié)點(diǎn)識(shí)別銜接矩陣的方法是:先由基本關(guān)系矩陣生成一個(gè)過(guò)渡矩陣,再由生成一個(gè)下三角矩陣銜接矩陣(也可以生成一個(gè)上三角銜接矩陣,其它的銜接矩陣一定也要是上三角矩陣)。其具體做法是先假設(shè),這樣,節(jié)點(diǎn)K,L就表示相鄰的兩個(gè)節(jié)點(diǎn),再令,若節(jié)點(diǎn)K,L不相鄰,令,這樣就得到一個(gè)對(duì)稱矩陣,對(duì)角線元素全部等于0。再由生成一個(gè)下三角節(jié)點(diǎn)識(shí)別銜接矩陣(本文介紹的都是生成的下三角矩陣)[5][6]。以圖1為例,如下所示:例如:B(1,1)=0,就表示節(jié)點(diǎn)1,B(1,2)=1,表示節(jié)點(diǎn)1,2為相鄰節(jié)點(diǎn),1—2管段需要繪制。B(1,3)=0,表示1,3節(jié)點(diǎn)不相鄰,就不需要繪制。2—1管段與1—2管段表示同一管段,在繪圖時(shí)只能繪一根管段。為了排除多余的一根管段,就必須用一個(gè)下三角(或上三角)矩陣來(lái)識(shí)別節(jié)點(diǎn)是否為相鄰節(jié)點(diǎn)。圖1的下三角節(jié)點(diǎn)識(shí)別銜接矩陣各元素的值等于矩陣對(duì)角線以下對(duì)應(yīng)的各元素的值,矩陣的值如上所示。用同樣的方法,將管段的管長(zhǎng)、管徑、管段流量、管段水頭損失轉(zhuǎn)換為下三角矩陣。這里限于篇幅,管長(zhǎng)銜接矩陣、管徑銜接矩陣、管段流量銜接矩陣和管段水頭損失銜接矩陣就不再列出。判斷這些銜接矩陣不為0時(shí),將它們分別按同樣的順序,只輸出一列到一個(gè)數(shù)據(jù)文件里,在標(biāo)注時(shí)調(diào)用。數(shù)據(jù)的轉(zhuǎn)換既可以在優(yōu)化程序里完成,也可以在VBA繪圖程序里完成。但在VBA繪圖程序里,還需要將二維數(shù)組轉(zhuǎn)換為一維數(shù)組,不如在優(yōu)化程序里簡(jiǎn)捷方便,因?yàn)槿绻趦?yōu)化程序里完成這步工作,在VBA的繪圖程序中只需設(shè)置一維數(shù)組,直接讀入這些數(shù)據(jù)就可以了。1.2以管段為主的繪圖方法以管段為主的繪圖方法就是先對(duì)管網(wǎng)的各個(gè)管段和節(jié)點(diǎn)進(jìn)行編號(hào),然后根據(jù)管網(wǎng)的各個(gè)管段的編號(hào),寫(xiě)出由管段的起點(diǎn)號(hào)和終點(diǎn)號(hào)構(gòu)成的一維矩陣,,表示管段的起點(diǎn)號(hào),表示管段的終點(diǎn)號(hào)。以圖1為例。,的值為以管段為循環(huán)單位,,作為方法的兩個(gè)參數(shù)。1.3繪圖繪圖是調(diào)用VBA中的方法來(lái)繪制直線,的調(diào)用形式是,即它有兩個(gè)接口參數(shù),一個(gè)是起始點(diǎn)的坐標(biāo)(),另一個(gè)是終止點(diǎn)的坐標(biāo)()。因?yàn)榉椒ㄖ豢梢岳L制三維線,所以它的兩個(gè)參數(shù)是兩個(gè)三維坐標(biāo)矩陣。在VBA中,定義數(shù)組時(shí)通常寫(xiě)成(0to2),其中表示x軸方向的坐標(biāo)值,表示y軸方向的坐標(biāo)值,表示z軸方向的坐標(biāo)值。定義同一樣。在這里,我們把所有節(jié)點(diǎn)的x軸坐標(biāo)定義為一個(gè)一維數(shù)組,y軸坐標(biāo)定義為一個(gè)一維數(shù)組,z軸坐標(biāo)定義為一個(gè)一維數(shù)組,表示管網(wǎng)的節(jié)點(diǎn)。繪圖坐標(biāo)賦值時(shí),設(shè)置一個(gè)循環(huán)語(yǔ)句,直接把x軸的坐標(biāo)賦給(0),y軸的坐標(biāo)賦給(1),z軸的坐標(biāo)賦給(2),這里把z軸的坐標(biāo)全部賦為0就可以了。然后再根據(jù)節(jié)點(diǎn)識(shí)別銜接矩陣,在時(shí),調(diào)用VBA中的方法,繪制節(jié)點(diǎn)i—j之間的直線,并設(shè)置直線的線寬、顏色和圖層等。表示節(jié)點(diǎn)流量的小箭頭和標(biāo)注節(jié)點(diǎn)流量等的小圖標(biāo)可以采用插入塊參照或插入外部參照兩種方法來(lái)完成,需要強(qiáng)調(diào)的是,在制作塊或外部圖形文件時(shí),把小箭頭和標(biāo)注小圖標(biāo)放在地起,一定要使箭頭的底部端點(diǎn)和小圖標(biāo)的底部端點(diǎn)的坐標(biāo)值為,這樣,在插入塊或外部參照時(shí),才能準(zhǔn)確地插入到指定點(diǎn)的位置。2管段的數(shù)據(jù)標(biāo)注通常繪制管網(wǎng)圖時(shí),標(biāo)注數(shù)據(jù)要占用三分之二以上的時(shí)間?,F(xiàn)在利用程序設(shè)計(jì)完全可以達(dá)到自動(dòng)完成標(biāo)注。因?yàn)閿?shù)據(jù)文件有一部分是自動(dòng)生成的,如標(biāo)注文字的起始點(diǎn)坐標(biāo)、角度等等。所以標(biāo)注前首先要整理、檢查數(shù)據(jù)文件。數(shù)據(jù)文件通常由以下幾部分組成:一是管網(wǎng)的環(huán)數(shù)、節(jié)點(diǎn)數(shù)、管段數(shù)、最大的環(huán)的管段數(shù),以及各個(gè)環(huán)的局部管段數(shù),基本關(guān)系矩陣的列就等于,基本關(guān)系矩陣的列就等于。利用它可以減少輸入部分不必輸入的數(shù)據(jù)。二是基本關(guān)系矩陣和的值。三是各個(gè)節(jié)點(diǎn)的三個(gè)軸向坐標(biāo)值。四是各個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)流量、節(jié)點(diǎn)的相對(duì)水壓和節(jié)點(diǎn)的地面標(biāo)高。五是優(yōu)化計(jì)算的最終結(jié)果。標(biāo)注文字的起始點(diǎn)的坐標(biāo),既可以在繪圖程序中計(jì)算,也可以在優(yōu)化計(jì)算程序中算出,輸出到數(shù)據(jù)文件中。其中,優(yōu)化計(jì)算的結(jié)果,管長(zhǎng)、管徑、管段流量和管段的水頭損失在數(shù)據(jù)文件輸入時(shí),是作為字符串形式輸入的。在編制數(shù)據(jù)文件時(shí),通常將管長(zhǎng)和管徑分為一組,按“管長(zhǎng)—管徑”的格式輸出一列,將管段流量和管段水頭損失分為一組,按“流量—水頭損失”的格式接著在“管長(zhǎng)—管徑”的末尾輸出一列。例如,1—2管段的管長(zhǎng)為1270m,管徑為300mm,管段流量為62.24/m3,水頭損失為5.32m,在數(shù)據(jù)文件中的存放方式為“1270—300”,“62.24—5.32”。需要強(qiáng)調(diào)的是,“1270—300”在讀入時(shí)是作為字符串讀入的,中間不能留有空格,否則“1270—300”將不是作為一個(gè)字符串讀入?!傲髁俊^損失”的標(biāo)注同“管長(zhǎng)—管徑”的標(biāo)注。為了繪圖的美觀,通常把它們分別標(biāo)注在管段的兩側(cè)時(shí)。其中,標(biāo)注管段流量和水頭損失時(shí),不考慮流向,標(biāo)注的是它們的絕對(duì)值,流向單獨(dú)標(biāo)注[8]。流向一般用一個(gè)箭頭在管段上表示,位于管段的中點(diǎn),箭頭指向與管段流量的方向一致。標(biāo)注數(shù)據(jù)的起始點(diǎn)的坐標(biāo)、數(shù)據(jù)的旋轉(zhuǎn)方向需要根據(jù)節(jié)點(diǎn)識(shí)別銜接矩陣和管段的兩個(gè)節(jié)點(diǎn)的坐標(biāo)值計(jì)算得出。節(jié)點(diǎn)流量標(biāo)注時(shí),起始點(diǎn)的坐標(biāo)也是在節(jié)點(diǎn)坐標(biāo)的基礎(chǔ)上計(jì)算得出。同樣管段的節(jié)點(diǎn)號(hào)、環(huán)號(hào)的標(biāo)注也均自動(dòng)完成。其中,標(biāo)注環(huán)號(hào)時(shí),還需要用基本關(guān)系矩陣計(jì)算出標(biāo)注點(diǎn)的坐標(biāo),注意此時(shí)只能取基本關(guān)系矩陣的列。繪圖、標(biāo)注最終結(jié)果見(jiàn)圖2圖2在繪圖和標(biāo)注完成后,局部可能有重疊的地方,再手工稍微調(diào)整即可。3結(jié)束語(yǔ)利用上述介紹的方法,只需輸入管網(wǎng)的基本數(shù)據(jù)后,就可以完成繪圖和標(biāo)注的自動(dòng)化生,再作局部就可以獲得滿意的圖形。這種方法容易掌握,編程的思路與大多數(shù)人的工作思路的一致。利用這種方法編寫(xiě)的程序,不僅可以大幅度提高給水工程設(shè)計(jì)人員的工作效率,還可以改善繪圖的質(zhì)量。參考文獻(xiàn)[1]二代龍震工作室.AutoCAD程序設(shè)計(jì)實(shí)作[M].北京:電子工業(yè)出版社.2002,5[2]王國(guó)明.城鎮(zhèn)給排水工程程序設(shè)計(jì)[M].合肥:合肥工業(yè)大學(xué)出版社.2002,125—129[3]王國(guó)明,顏高鋒.環(huán)狀給水管網(wǎng)計(jì)算的一種數(shù)據(jù)轉(zhuǎn)換方法[J].合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),200
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保安培訓(xùn)教案
- 食品安全專業(yè)知識(shí)
- 服裝批發(fā)市場(chǎng)房產(chǎn)轉(zhuǎn)讓協(xié)議模板
- 流行病怎預(yù)防
- 玩具公司法務(wù)聘用合同
- 挖掘機(jī)港口物流協(xié)議
- 酒店總經(jīng)理任職合同及條款
- 私人影棚建造合同
- 礦山安全清罐施工協(xié)議
- 糖尿病分娩護(hù)理
- 重點(diǎn)關(guān)愛(ài)學(xué)生幫扶活動(dòng)記錄表
- 分層抽樣設(shè)計(jì)案例分析
- 2023年-2024年食品安全快速檢測(cè)考試題庫(kù)及答案
- 幼兒園大班健康繪本《牙齒旅行記》課件
- GB/T 31384-2024旅游景區(qū)公共信息導(dǎo)向系統(tǒng)設(shè)置規(guī)范
- 2024年榆林能源集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 母語(yǔ)為英語(yǔ)的漢語(yǔ)學(xué)習(xí)者習(xí)得漢語(yǔ)語(yǔ)音的偏誤分析及教學(xué)對(duì)策
- 一病一品糖尿病
- 2024海上風(fēng)電無(wú)人機(jī)巡檢技術(shù)規(guī)范
- 無(wú)人機(jī)生涯規(guī)劃
- 出行方式綠色出行
評(píng)論
0/150
提交評(píng)論