AutoCAD二次開發(fā)在電力系統(tǒng)運(yùn)行模擬輸出電站工作位置圖中的應(yīng)用
時(shí)間:2007-02-08 10:34:00來源:wangsl
導(dǎo)語:?將Visual Basic語言在AutoCAD上的二次開發(fā)應(yīng)用于電力系統(tǒng)運(yùn)行模擬繪制電站工作位置圖。
【摘 要】 將Visual Basic語言在AutoCAD上的二次開發(fā)應(yīng)用于電力系統(tǒng)運(yùn)行模擬繪制電站工作位置圖。該方法在對(duì)系統(tǒng)進(jìn)行運(yùn)行模擬,計(jì)算出各電站在系統(tǒng)逐月典型日24h負(fù)荷曲線上的工作位置和工作容量后,通過編寫接口程序啟動(dòng)AutoCAD軟件,根據(jù)已得出的工作位置和工作容量,啟動(dòng)AutoCAD繪制出電站工作位置圖。該方法采用VB可視化界面對(duì)AutoCAD進(jìn)行操作,使繪圖更便捷,效率更高。實(shí)例計(jì)算表明了該方法的有效性和適用性。
關(guān)鍵詞 電力系統(tǒng)運(yùn)行模擬 電站工作位置圖 Visual Basic語言 二次開發(fā)
1 引言
隨著國民經(jīng)濟(jì)的發(fā)展,電力系統(tǒng)用戶對(duì)電力和電能的需要不斷增加,必須新建電源??墒菓?yīng)該在何時(shí)、何地、建何種電廠、規(guī)模多大才最為經(jīng)濟(jì)合理,這便是電源規(guī)劃所要解決的問題。規(guī)劃的合理與否,直接影響系統(tǒng)運(yùn)行的可靠性、經(jīng)濟(jì)性、電能質(zhì)量,網(wǎng)絡(luò)結(jié)構(gòu)和今后的發(fā)展。因此電源規(guī)劃是電力系統(tǒng)電源布局的戰(zhàn)略決策,在電力系統(tǒng)規(guī)劃中處于十分重要的地位。而電力系統(tǒng)運(yùn)行模擬是對(duì)電力系統(tǒng)規(guī)劃設(shè)計(jì)中常用的電力電量平衡分析的發(fā)展,是電力系統(tǒng)規(guī)劃設(shè)計(jì)中的一項(xiàng)經(jīng)常而重要的工作。電力系統(tǒng)運(yùn)行模擬的基本任務(wù)是:從電力系統(tǒng)整體的實(shí)際出發(fā),充分考慮電力系統(tǒng)中各類電站(包括水電、火電、核電、抽水蓄能以及調(diào)峰電站等)的特點(diǎn),充分利用水電等“限能電站”(這里的所謂限能電站是指那些發(fā)電用能有一定限制的電站)的容量和電量,模擬系統(tǒng)全年逐月的運(yùn)行方式,以校驗(yàn)系統(tǒng)的裝機(jī)容量是否滿足系統(tǒng)負(fù)荷的需求,并確定各電站在系統(tǒng)逐月典型日24h負(fù)荷曲線上的工作位置和工作容量。為了從圖形上能夠清楚地看出各類型電站所處的工作位置以及最關(guān)心的電站(即指定電站)工作位置以利于對(duì)電站的運(yùn)行和控制,需要將系統(tǒng)逐月典型日24h負(fù)荷曲線通過軟件繪制出來。并將各類型電站的工作位置在圖形上面用不同的圖例區(qū)別。而AutoCAD軟件是一種得到普遍應(yīng)用的工程制圖軟件,具有很多優(yōu)越性。為了把AutoCAD的二次開發(fā)應(yīng)用到電力系統(tǒng)運(yùn)行模擬輸出電站工作位置圖中,需要首先編寫接口程序啟動(dòng)AutoCAD軟件,然后進(jìn)行圖形繪制工作。
為了達(dá)到上述目的,本文著重討論在Windows操作平臺(tái)上,利用基于Visual Basic語言的AutoCAD二次開發(fā)將電力系統(tǒng)運(yùn)行模擬后在日負(fù)荷曲線上確定的各水電、火電、核電、抽水蓄能以及調(diào)峰電站等的工作位置(即各個(gè)電站在日負(fù)荷曲線上的位置上、下限)通過接口程序繪制成電站工作位置圖。
2 ViSual Basic與AutoCAD概述
Visual Basic(簡(jiǎn)稱VB)是美國微軟(Microsoft)公司推出的Windows環(huán)境下的軟件開發(fā)工具,它是一種可視化編程軟件。在VB中引入了控件的概念,如各種各樣的按鈕、文本框、復(fù)選框等等。VB把這些控件模式化,并且每個(gè)控件都由若干屬性來控制其外觀、工作方法。這樣,采用VB軟件無需編寫大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的控件加到屏幕上。VB提供動(dòng)態(tài)數(shù)據(jù)交換編程技術(shù),可以在應(yīng)用程序中實(shí)現(xiàn)與其他應(yīng)用程序之間進(jìn)行通信的功能,例如本文要討論的VB和AutoCAD之間的接口通信。VB還具有很強(qiáng)的數(shù)據(jù)庫管理功能,不僅可以管理MS Access格式數(shù)據(jù)庫,還能訪問其他外部數(shù)據(jù)庫。使用VB可以感受到Windows帶來的新技術(shù)、新概念和新的開發(fā)方法,因?yàn)樗悄壳氨姸郬indows軟件開發(fā)工具中效率最高的一個(gè),可以既快又簡(jiǎn)單地開發(fā)Windows應(yīng)用軟件。
AutoCAD是美國Autodesk公司開發(fā)的人機(jī)對(duì)話式的圖形軟件,它被用來進(jìn)行計(jì)算機(jī)輔助設(shè)計(jì)與繪圖,并且在機(jī)械設(shè)計(jì)、土木建筑、電子線路、動(dòng)畫制作、城市規(guī)劃等領(lǐng)域得到廣泛的應(yīng)用。AutoCAD軟件是一種功能很強(qiáng)、在微機(jī)中應(yīng)用比較廣泛的繪圖軟件。它提供了豐富的作圖功能,操作方便,用戶通過操作能迅速、準(zhǔn)確地繪出圖形;它具有很強(qiáng)的手工繪圖無法實(shí)現(xiàn)的圖形編輯功能,能使用戶對(duì)現(xiàn)有圖形進(jìn)行編輯。它還有編程功能,利用內(nèi)部嵌有的Auto Lisp語言使繪圖工作程序化、自動(dòng)化;它還有執(zhí)行DOS命令的接口、與高級(jí)語言的接口(例如VB語言),因而處理圖形的功能大大增強(qiáng)。
3 應(yīng)用ActiveX Automation技術(shù)進(jìn)行AutoCAD的二次開發(fā)
眾所周知,AutoCAD是一種極其靈活的應(yīng)用系統(tǒng),用戶可以通過編程的方式對(duì)其進(jìn)行定制。在以往的AutoCAD系統(tǒng)開發(fā)中,最常用的是AutoLisp和ADS,但AutoLisp不如編程語言方便,在開發(fā)較大項(xiàng)目時(shí)力不從心,而ADS雖由功能強(qiáng)大的C語言編制,但較為復(fù)雜,不適應(yīng)當(dāng)前可視化編程的需要。幸運(yùn)的是,在最新推出的AutoCAD r14版本中,Autodesk公司對(duì)AutoCAD本身加入了ActiveX自動(dòng)化服務(wù)功能(ActiveX Automation Server Capabilities),使得用戶可以通過可視化編程工具,如VB、Delphi等對(duì)AutoCAD進(jìn)行系統(tǒng)開發(fā),極大地提高了工作效率。
4 程序的工作步驟和模塊設(shè)計(jì)
4.1 工作步驟
圖1給出了繪制電力系統(tǒng)運(yùn)行模擬電站工作位置圖的程序工作步驟。
本程序采用VB6.0語言作為開發(fā)工具,因?yàn)檫@種工具簡(jiǎn)單易學(xué),編程界面友好,而且還比較容易開發(fā)出基于Windows的高質(zhì)量軟件。軟件界面采用菜單式結(jié)構(gòu)設(shè)計(jì),且具有操作方便的工具條和中文對(duì)話功能,操作簡(jiǎn)單,結(jié)合該語言對(duì)AutoCAD進(jìn)行二次開發(fā),通過編寫接口程序?qū)崿F(xiàn)數(shù)據(jù)對(duì)AutoCAD的圖形輸出,提高了數(shù)據(jù)的直觀性。本文著重討論二次開發(fā)繪制電站工作位置圖部分的開發(fā)和實(shí)現(xiàn)。主要分三大模塊,即數(shù)據(jù)輸入模塊、軟件接口模塊、圖形繪制模塊。
4.2 各模塊功能和實(shí)現(xiàn)方法
?。?)數(shù)據(jù)輸入模塊 該模塊的制作參見文獻(xiàn)。數(shù)據(jù)輸入模塊窗口的主界面如圖2所示。該模塊需要選擇一些選項(xiàng)例如:分區(qū)、月份、圖名、備注、單位、彩色,并可以選擇查看用戶最關(guān)心的電站工作位置,即指定電站,程序設(shè)置最多指定5個(gè)電站,其中每種電站最多指定3個(gè),各類電站和各個(gè)指定電站都用不同的圖例進(jìn)行區(qū)分,以便于觀察,選擇“確定”按鈕后程序就根據(jù)運(yùn)行模擬后的電站工作位置數(shù)據(jù)自動(dòng)啟動(dòng)AutoCAD軟件,并將圖形繪出,此部分內(nèi)容參見文獻(xiàn)。若需要打印成紙張形式也可由Windows默認(rèn)打印機(jī)打印輸出屏幕上模擬顯示的電站工作位置圖。
(2)軟件接口模塊 編寫接口程序即實(shí)現(xiàn)在VB中連接AutoCAD。具體步驟如下:
1)啟動(dòng)VB,引用AutoCAD類型庫。從“工程”菜單中選擇“引用”選項(xiàng),啟動(dòng)“引用”對(duì)話框。在“引用”對(duì)話框中,選擇AutoCAD類型庫,然后單擊“確定”。
2)定義模塊級(jí)變量AutoCAD應(yīng)用程序(acadApp)和當(dāng)前的文檔(acadDoc)。如果AutoCAD正在運(yùn)行,使用GetObject函數(shù)將檢索AutoCADApplication對(duì)象。如果AutoCAD沒有運(yùn)行,使用CreateObject函數(shù)試圖創(chuàng)建一個(gè)AutoCAD Application對(duì)象。如果創(chuàng)建成功,會(huì)啟動(dòng)AutoCAD;如果失敗,則會(huì)發(fā)生錯(cuò)誤。如果同時(shí)運(yùn)行有多個(gè)AutoCAD任務(wù),GetObject函數(shù)會(huì)返回Windows運(yùn)行對(duì)象表中的第一個(gè)AutoCAD實(shí)例。如果要顯示AutoCAD圖形窗口,需要將AutoCAD應(yīng)用程序的Visible特性設(shè)置為TRUE,否則設(shè)置為FALSE,在本程序開始階段把AutoCAD應(yīng)用程序的Visible特性設(shè)置為FALSE,即只啟動(dòng)AutoCAD而不顯示出來,在繪圖完畢后再將AutoCAD應(yīng)用程序的Visible特性設(shè)置為TRUE,即顯示圖形,目的是避免過多地占用計(jì)算機(jī)的內(nèi)存。接口程序示例如下:
Dim acadApp As AcadApplication
Dim acadDoc as AcadDocument
Sub ConnectToAcad ()
On Error Resume Next
Set acadApp=GetObject (,” AutoCAD.Application”)
If Err Then
Err. Clear
Set acadApp=CreateObject (” AutoCAD.Application”)
If Err Then End
End If
acadApp. Visible=FALSE
Set acadDoc=acadApp.ActiveDocument
End Sub
(3)圖形繪制模塊 在VB與AutoCAD的二次開發(fā)中,進(jìn)行圖形繪制即需要對(duì)AutoCAD的對(duì)象模型(AutoCAD Object Model)進(jìn)行操作。對(duì)象本身包含自己的方法和屬性。通過方法可以實(shí)現(xiàn)對(duì)象的一些操作,而對(duì)象狀態(tài)信息的收集或改變則是通過屬性完成的。例如,線段是AutoCAD中的一個(gè)對(duì)象,它的屬性可以是線形、起始點(diǎn)坐標(biāo)、所在層等性質(zhì),方法則有復(fù)制、鏡像等操作。Model Space是當(dāng)前圖形文件中圖形實(shí)體,如線段、圓、多義線等的集合,每個(gè)實(shí)體即是一個(gè)對(duì)象,可通過屬性和方法改變實(shí)體或生成新實(shí)體,可以通過該對(duì)象實(shí)現(xiàn)圖形的繪制工作。例如,在定義了兩點(diǎn)dot1和dot2以及線段lineObj并給定這兩點(diǎn)的位置坐標(biāo)之后可以繪制出一條線段,基本編程語句為:
Set lineObj=acadapp.ActiveDocument.ModelSpace.AddLine(dot1,dot2)
坐標(biāo)系是由一條條線段構(gòu)成的,通過對(duì)線段兩個(gè)端點(diǎn)坐標(biāo)的設(shè)置可以繪出所需位置的線段,本文基于這個(gè)思想實(shí)現(xiàn)了對(duì)坐標(biāo)子程序的編寫。
而安排各類電站在圖形中的工作位置(即填充陰影)則也是對(duì)AutoCAD的對(duì)象模型進(jìn)行操作。陰影為用圖案填充圖形中的指定區(qū)域。當(dāng)創(chuàng)建陰影時(shí),最先操作不是指定填充的區(qū)域。首先用戶必須創(chuàng)建Hatch對(duì)象,做完這一步后,用戶可指定外部的封閉回路,也就是陰影的最外邊界。所以首先定義矩形邊界對(duì)象outerLoopobj(1)~outerLoopobj(4)和陰影對(duì)象hatchobj以及矩形邊角的四個(gè)點(diǎn)pointl~point4并給定這四個(gè)點(diǎn)的位置坐標(biāo),再根據(jù)四個(gè)點(diǎn)來確定需填充陰影矩形的四條邊界線段,然后根據(jù)不同類型電站對(duì)矩形填充不同的陰影圖案(通過設(shè)置陰影對(duì)象hatchobj的屬性值實(shí)現(xiàn)),基本編程語句為:
Set outerLoop (1) = acadapp.ActiveDocument
ModelS-pace.AddLine(point1, point2)
Set outerLoop (2) = acadapp.ActiveDocument
ModelS-pace.AddLine (point2, point3)
Set outerLoop (3) = acadapp.ActiveDocument
ModelS-pace.AddLine (point3,point4)
Set outerLoop (4) = acadapp.ActiveDocument
ModelS-pace.AddLine (point4,pointl)
hatchobj.AppendOuterLoop (outerLoop)
hatchobj.PatternSpace=0.5
hatchobj.PatternAngle=0
hatchobj.Linetype=“Hidden2”
hatchobj.LinetypeScale=0.2
hatchobj.Evaluate
acadapp. ActiveDocument. Regen True
根據(jù)這個(gè)思想可以依次將各類型電站(例如:核電站、水電站、火電站等等,指定電站也可采用同樣方法)在日負(fù)荷曲線上用不同陰影圖案填充,這樣就基本完成了圖形繪制工作。
5 算例分析
本文以2010年某地區(qū)枯水年為例,利用本文方法對(duì)其進(jìn)行運(yùn)行模擬并輸出電站工作位置圖。整個(gè)地區(qū)水電站有58臺(tái),火電站有74臺(tái),核電站有5臺(tái),調(diào)峰電站有13臺(tái),抽水蓄能電站有10臺(tái),其中選取某省6月份進(jìn)行模擬計(jì)算輸出電站工作位置圖。
最終打印輸出AutoCAD圖形如圖3所示,部分電站數(shù)據(jù)列于下表,火電和指定電站數(shù)據(jù)未列出,其中虛線為分區(qū)潮流。

通過算例分析計(jì)算可知,在對(duì)基本數(shù)據(jù)運(yùn)行模擬后,本文方法能夠迅速繪制出坐標(biāo)系統(tǒng)(包括橫坐標(biāo)、縱坐標(biāo)、刻度以及標(biāo)注)、系統(tǒng)典型日負(fù)荷曲線、各電站工作位置區(qū)域和圖例,負(fù)荷曲線對(duì)電力系統(tǒng)的規(guī)劃設(shè)計(jì)和運(yùn)行十分有用,電力系統(tǒng)的計(jì)劃生產(chǎn)主要是建立在預(yù)測(cè)的負(fù)荷曲線基礎(chǔ)上的。繪制電站工作位置圖的作用也很明顯,從中能夠清楚地看出各類型負(fù)荷所處的工作位置以及最關(guān)心的電站(即指定電站)工作位置,以利于電站的運(yùn)行和控制。

6 結(jié)束語
本文將VB語言在AutoCAD上的二次開發(fā)應(yīng)用于電力系統(tǒng)運(yùn)行模擬繪制電站工作位置圖。該方法用V B語言編程,軟件界面采用菜單式結(jié)構(gòu)設(shè)計(jì),且具有操作方便的工具條和中文對(duì)話功能,操作簡(jiǎn)單,結(jié)合該語言對(duì)AutoCAD進(jìn)行二次開發(fā),通過編寫接口程序?qū)崿F(xiàn)數(shù)據(jù)對(duì)AutoCAD的圖形輸出,提高了數(shù)據(jù)的直觀性,使繪圖更便捷,效率更高。該方法在繪圖完畢后生成dwg格式文件,它是AutoCAD圖形文件,具有很強(qiáng)的通用性,能方便地進(jìn)行工程制圖、打印等操作,而且該方法所繪制的圖形效果優(yōu)于用VB軟件直接繪圖。在圖形上能夠清楚地看出各類型負(fù)荷所處的工作位置以及最關(guān)心的電站(即指定電站)工作位置,以利于電站的運(yùn)行和控制。實(shí)例計(jì)算表明了該方法的有效性。