水利工程斷面圖的應(yīng)用論文
VBA是建立在Office97中的宏語(yǔ)言,現(xiàn)在Autocad2000版內(nèi)置了VBA開(kāi)發(fā)工具。由于VBA具有VB的語(yǔ)言特點(diǎn),語(yǔ)言結(jié)構(gòu)簡(jiǎn)潔,適合工程技術(shù)人員開(kāi)發(fā)。
在河道整治、海塘建設(shè)、土地整理等大型項(xiàng)目的測(cè)量之后,都有一個(gè)十分繁瑣的過(guò)程:畫(huà)原始縱、橫斷面圖。原始的方法是在測(cè)量過(guò)后,按照測(cè)量的數(shù)據(jù),把原始縱橫斷面畫(huà)在方格紙上,此種方法既慢,又不規(guī)范。現(xiàn)在隨著計(jì)算機(jī)軟件的發(fā)展,要求測(cè)量單位把原始縱橫斷面圖用AUTOCAD表示出來(lái)。如果縱橫斷面圖少的話,還可以,如果有大量的原始縱橫斷面圖的話,在測(cè)量的同時(shí),就需要有很多人來(lái)一筆一劃的畫(huà)。這種方法有很多缺點(diǎn):
1.需要浪費(fèi)大量的人力資源,效率低下。
2.容易出錯(cuò),長(zhǎng)時(shí)間的重復(fù)同一件事情(制圖),很容易產(chǎn)生疲倦。
3.出錯(cuò)后不易檢查修改。整個(gè)原始縱橫斷面圖畫(huà)好之后,要檢查每一個(gè)細(xì)節(jié),費(fèi)時(shí)費(fèi)力。
現(xiàn)在,經(jīng)過(guò)我的努力,找到一種畫(huà)原始縱橫斷面圖的好方法。只要測(cè)量人員把測(cè)量的數(shù)據(jù)按照一定的格式輸入到數(shù)據(jù)文件(如txt文本、Excel、數(shù)據(jù)庫(kù)等),輕輕點(diǎn)擊一下鼠標(biāo),整個(gè)工程的縱橫斷面圖就畫(huà)出來(lái)了。
測(cè)量數(shù)據(jù)中有斷面號(hào)、距離、高程等要素,用AUTOLISP和VBA都可以編程讀數(shù)據(jù)、制圖。但是,AUTOLISP的語(yǔ)言不如VBA的直觀,運(yùn)行效率也不如VBA的高;同時(shí),AUTOLISP沒(méi)有很簡(jiǎn)潔明了的界面,對(duì)有些不懂得計(jì)算機(jī)語(yǔ)言的人來(lái)說(shuō),在操作上有些困難。而VBA的界面完全可以達(dá)到智能化,即操作者只需簡(jiǎn)單的電腦知識(shí)即可完成其操作。
整個(gè)制圖過(guò)程分兩步,分別為獨(dú)立的模塊。第一步:創(chuàng)建數(shù)據(jù)庫(kù)。利用DAO創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),內(nèi)容包括:圖號(hào)、中心點(diǎn)的坐標(biāo),各個(gè)測(cè)點(diǎn)的坐標(biāo)。在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,要首先知道整個(gè)工程一個(gè)斷面的測(cè)點(diǎn)最多有多少。數(shù)據(jù)庫(kù)的域只能多,不能少。因?yàn)閿?shù)據(jù)庫(kù)一行就存放一個(gè)斷面的`數(shù)據(jù)。如果數(shù)據(jù)庫(kù)的域少了,則放不下。數(shù)據(jù)庫(kù)的域多了沒(méi)關(guān)系,多的部分可以補(bǔ)零。下面介紹一下創(chuàng)建數(shù)據(jù)庫(kù)的思路與過(guò)程。
使用者打開(kāi)Autocad2000后,在“工具”菜單下“宏”選項(xiàng)下的“visualbasic編輯器”選項(xiàng),打開(kāi)此選項(xiàng)。在添加選項(xiàng)里添加一個(gè)新模塊。程序的流程圖如下:
生成的數(shù)據(jù)文件可以用來(lái)存放一個(gè)工程的全部數(shù)據(jù),也可以把整個(gè)工程的數(shù)據(jù)分成幾大塊,分別存放在不同的數(shù)據(jù)文件。數(shù)據(jù)庫(kù)如圖:
樁號(hào)
第一點(diǎn)距中
心的距離
坐標(biāo)個(gè)數(shù)
x坐標(biāo)0
y坐標(biāo)0
x坐標(biāo)1
y坐標(biāo)1
“第一點(diǎn)距中心的距離”是為了使畫(huà)出的圖形的中心對(duì)齊。坐標(biāo)個(gè)數(shù)是輸入數(shù)據(jù)的點(diǎn)的個(gè)數(shù)。后面的坐標(biāo)從第一點(diǎn)開(kāi)始,依次輸入。默認(rèn)值均為零。
找到生成的數(shù)據(jù)文件,然后用Access打開(kāi),輸入數(shù)據(jù)。也可以在Excel里,按照數(shù)據(jù)庫(kù)同樣的格式把數(shù)據(jù)輸好了,再拷貝到Access數(shù)據(jù)庫(kù)里。其中的數(shù)據(jù)文件用的是DAO數(shù)據(jù)格式。數(shù)據(jù)庫(kù)的連接方式很多,有ODBC,DAO,ADO,OLEDB,RDO等數(shù)據(jù)庫(kù)連接方式。DAO是建立在MicrosoftJet引擎上的。在VBA中,用戶可通過(guò)DAO操作Access數(shù)據(jù)庫(kù),十分方便。并且這種數(shù)據(jù)庫(kù)的穩(wěn)定性很好,而其他的數(shù)據(jù)庫(kù)格式在VBA中則沒(méi)有DAO的數(shù)據(jù)庫(kù)格式方便,可靠性也不如DAO,因?yàn)镈AO在數(shù)據(jù)庫(kù)的應(yīng)用中已經(jīng)大量應(yīng)用,并且性能可靠。
數(shù)據(jù)準(zhǔn)備好之后,保存數(shù)據(jù)文件。
第二步:讀入數(shù)據(jù)及制圖。
畫(huà)圖的過(guò)程中,先是讀入所有的數(shù)據(jù),給各個(gè)變量賦值,然后再按照一定的先后順序畫(huà)。每個(gè)斷面畫(huà)好之后,變成一個(gè)模塊,模塊的插入點(diǎn)在斷面圖的左下角。等所有的圖形都畫(huà)好之后,再插入到圖框中。圖框的大小要先選好。在插入各個(gè)斷面塊體時(shí),要控制插入點(diǎn)的位置,如圖:1區(qū)為已經(jīng)插入圖形的區(qū)域,2、3區(qū)為下一幅圖要放的區(qū)域,4為空白區(qū)域。先畫(huà)好圖框,然后x1=0;x2=圖框長(zhǎng);y1=0;y2=圖框高。
插入第一個(gè)斷面圖,
x1=圖形長(zhǎng)+a,y1=圖形1高+a,
x2=x2-a-x1,y2=y2-a-y1
式中,a為圖形與圖形之間或圖形與圖框之間的距離,可以根據(jù)圖框的大小調(diào)節(jié)。插入點(diǎn)在相對(duì)圖框左上角點(diǎn)(a,-y1)處。插入第一個(gè)斷面圖之后,第二個(gè)斷面圖在插入時(shí),有幾種情況:
(1)圖形大小小于2號(hào)區(qū)域,即第二幅圖形的長(zhǎng)<x2并且高<y1,則插入,插入點(diǎn)在相對(duì)圖框左上角點(diǎn)(x1+a,-y1)處。x1=x1+圖形長(zhǎng)+a,y1=y1,X2=x2-x1,y2=y2。
(2)圖形的高大于2號(hào)區(qū)域,即第二幅圖形的長(zhǎng)
(3)圖形的長(zhǎng)大于2號(hào)區(qū)域,即第二幅圖形的長(zhǎng)>x2,高<y2,則放在3號(hào)區(qū)域,
x1=圖形2長(zhǎng)+a,y1=y1+圖形2高+a
插入點(diǎn)在相對(duì)圖框左上角點(diǎn)(a,-y1)
x2=圖框長(zhǎng)-max(圖形1長(zhǎng)+a,圖形2長(zhǎng)+a)-a
y2=圖框高-y1
式中maxmax(圖形1長(zhǎng)+a,圖形2長(zhǎng)+a)為取兩個(gè)值中的最大值。
(4)圖形太大,在2、3區(qū)域都放不下,則x1、x2、y1、y2恢復(fù)原值,另畫(huà)一個(gè)圖框,按照剛才的方法,依次插入圖形。
圖形畫(huà)好之后,保存圖形,然后仔細(xì)查看,如果有問(wèn)題,要核對(duì)數(shù)據(jù)文件里的數(shù)據(jù)。數(shù)據(jù)確定準(zhǔn)確無(wú)誤后,重新運(yùn)行第二步,生成圖形文件,保存時(shí)覆蓋上一次的錯(cuò)誤的文件。然后就可以出圖。
此種方法有以下優(yōu)點(diǎn):
(1)整個(gè)過(guò)程簡(jiǎn)潔,不需要測(cè)量人員花大量的時(shí)間描繪圖紙。不論工程的大小,測(cè)量數(shù)據(jù)的多少,一個(gè)人即可完成。節(jié)約了大量的寶貴的勞動(dòng)力資源。并且工程量越大,效果越明顯。
(2)由于過(guò)程簡(jiǎn)單,不容易出錯(cuò)。
(3)便于檢查、修改。測(cè)量人員在往數(shù)據(jù)文件輸入數(shù)據(jù)后,只要校核一下原始數(shù)據(jù),即可確認(rèn)畫(huà)出的圖形準(zhǔn)確無(wú)誤。
(4)為以后的發(fā)展奠定基礎(chǔ)。以后的測(cè)量,如果是用全測(cè)儀,測(cè)量數(shù)據(jù)可以保存在磁盤(pán)里,只要往計(jì)算機(jī)里拷貝一下,就可出圖,工作效率極度提高。即便不用全測(cè)儀,也可用掃描儀把數(shù)據(jù)文件掃描下來(lái),然后生成數(shù)據(jù)文件,免去了輸入數(shù)據(jù)的麻煩。工作效率依然很高,并且不易出錯(cuò)。