面向?qū)ο蟮碾娏D形系統(tǒng)的分析和設計
其工作過程如下:
a.編輯:在工作區(qū)間點擊相應的電氣元件的位圖或按鈕控件;
b.增加:在相應的電氣元件的集合管理類增加一個元件對象并得到指向該元件的對象指針;
c.繪制:利用該對象指針調(diào)用繪制函數(shù)進行該類圖元的繪制;
d.獲取圖層和顏色:獲取圖元的圖層和顏色以完成繪制;
e.將圖元顯示在客戶區(qū)。
2 圖形系統(tǒng)的設計
基于以上對圖形系統(tǒng)的分析以及所建的OOA模型,可對圖形系統(tǒng)設計如下:
2.1 圖形界面的設計
圖形系統(tǒng)作為人機交互的主要渠道,除了要能實現(xiàn)強大的繪圖與交互功能外,還要顯示美觀,結(jié)構(gòu)清晰,與用戶交互過程要簡單方便。本圖形系統(tǒng)設計了具有Windows風格的界面,創(chuàng)建了一個工作區(qū)間窗口,以進行圖元編輯及圖層管理,并設計工具條以及一系列界面美觀、交互方便的對話框。具體界面可參看本文所附例圖3。
2.2電氣圖元數(shù)據(jù)結(jié)構(gòu)的設計
對于圖形系統(tǒng)而言,最基礎也是最重要的功能,是對不同類型電力系統(tǒng)元件的繪制和編輯操作。采用面向對象思想把數(shù)據(jù)和功能合為一個單元,具體設計為每種元件都定義一個類,具體一個元件對應一個對象。每種元件都具有自己各種屬性和數(shù)據(jù),如大小、形狀、位置等,也具有自己的各種行為,如繪制、移動、旋轉(zhuǎn)、復制、刪除等,利用面向對象技術(shù)把數(shù)據(jù)和操作封裝在一起,從而實現(xiàn)圖形系統(tǒng)的各種功能和操作。同時,各種元件除具有自己特殊的屬性和行為外,還有一些共同的地方,如顏色、畫筆寬度等屬性。這樣就可以利用C++類繼承和派生的特點,建立不同元件的公共抽象基類,其他元件類在此基礎上派生而成,這樣極大的減輕了編程量,消除了冗余的代碼,又增強了程序的可讀性。
2.3電氣圖元管理的設計
在電力系統(tǒng)圖形編輯過程中,所涉及的圖元眾多,如何把它們有序的組織起來,一直是比較困難的問題。在本圖形系統(tǒng)中由于數(shù)據(jù)類型比較多且交換頻繁,所以采用了基于C++類模板CTypedPtrArray來實現(xiàn)對指向圖形元素對象的指針的組織和管理。每個圖形元素是圖形元素類創(chuàng)建的一個對象,在創(chuàng)建這個對象時得到指向這個對象的指針,通過類模板CTypedPtrArray建立對象指針數(shù)組來管理這些指針,實現(xiàn)圖元對象的增加、刪除等操作,進而達到管理所有圖元對象的目的。
2.4圖形信息管理的設計
為了能靈活的對圖元的顏色以及對圖層的管理,本圖形系統(tǒng)設計了一個圖層結(jié)構(gòu)和一個圖形信息類。圖層結(jié)構(gòu)包含了圖層的名稱、圖層的唯一識別號以及圖層的顯示狀態(tài)(布爾型變量)。圖形信息類的屬性包括一個存儲顏色列表的數(shù)組和一個存儲圖層列表的圖層結(jié)構(gòu)數(shù)組,服務包括獲取顏色以及獲取圖層的顯示狀態(tài)。在創(chuàng)建完一個圖元對象,并請求該對象的“繪制”服務時,首先向圖形信息類請求“獲取圖層的顯示狀態(tài)”服務,判斷該對象所屬圖層的顯示狀態(tài),如果處于不顯示的狀態(tài)則返回,服務不再繼續(xù),否則,向圖形信息管理類請求“獲取顏色”服務來創(chuàng)建畫筆,進行圖元的繪制。基于以上的服務流程以及圖形系統(tǒng)的重繪機制,只需設計出圖形信息管理交互界面,對圖形信息類的顏色列表數(shù)組和圖層結(jié)構(gòu)數(shù)組進行相應的操作即可實現(xiàn)圖形顏色和圖層的管理。
2.5圖形方式下參數(shù)錄入的設計
本圖形系統(tǒng)設計了一系列元件參數(shù)對話框,并編寫了相應的代碼。用戶能夠在網(wǎng)絡接線圖上方便迅速的進行數(shù)據(jù)處理。只要雙擊接線圖上某種類型的元件,應用程序便會彈出同該類元件相對應的元件參數(shù)對話框,用戶通過填寫對話框各項參數(shù),即可完成對某一圖元的建模,或?qū)σ呀D元的參數(shù)的修改。這種圖形化的參數(shù)錄入方式既直觀又明了,后臺數(shù)據(jù)庫的讀寫由應用程序完成,對普通用戶完全屏蔽,用戶不用再去擔心文件格式的正確與否,所要做的僅僅是鼠標的點擊和參數(shù)對話框的填寫,從而大大提高了數(shù)據(jù)處理的效率。
2.6數(shù)據(jù)庫的設計
圖形系統(tǒng)是作為一個獨立的模塊鑲嵌在電力系統(tǒng)分析軟件中的,最終圖形中的各設備圖元的參數(shù)和拓撲信息要傳送給其它的各分析功能模塊,一個好的數(shù)據(jù)接口最能體現(xiàn)模塊的獨立性、易用性和通用性?;趫D形系統(tǒng)的特點采用Microsoft Access進行數(shù)據(jù)庫開發(fā),在數(shù)據(jù)庫結(jié)構(gòu)上,采用按元器件分類列表的關(guān)系數(shù)據(jù)庫結(jié)構(gòu)。
在創(chuàng)建完系統(tǒng)接線圖對圖元進行參數(shù)錄入后,也就把圖元的圖形類參數(shù)以及系統(tǒng)類參數(shù)存入數(shù)據(jù)庫,此時的數(shù)據(jù)庫里存放的圖形類參數(shù)包括圖元的坐標、長度以及放置方向等基本圖形信息,我們稱之為“生數(shù)據(jù)庫”。但是,圖形系統(tǒng)的數(shù)據(jù)庫最終是面向各種電力系統(tǒng)分析軟件的,而這些分析軟件需求的往往不是這些基本的圖形信息,而是進行分析所必需的拓撲信息。所以本圖形系統(tǒng)對數(shù)據(jù)庫進行了轉(zhuǎn)換,在“生數(shù)據(jù)庫”建立后,由嵌入SQL語句的主程序?qū)?ldquo;生數(shù)據(jù)庫”進行查詢和轉(zhuǎn)換,生成包含電網(wǎng)拓撲信息的通用數(shù)據(jù)庫——“熟數(shù)據(jù)庫”。
3 圖形系統(tǒng)的特點
?。?) 能夠方便、快捷的繪制出各種電力系統(tǒng)常用元件,如發(fā)電機、變壓器、母線、刀閘等,并且能夠?qū)D中的元件進行任意移動和刪除。
?。?) 具有強大的編輯功能。能夠?qū)D中的一個或多個元件進行選擇、復制、拷貝、粘貼、旋轉(zhuǎn)、撤銷等工作。為了區(qū)別不同的電壓等級和其他屬性,用戶在繪制接線圖時能夠任意指定當前繪制的線型、線寬、顏色,文字標注的字體和字號,對已繪制的圖元,也能隨意改變上述屬性。
?。?) 能對圖形進行分層管理。能動態(tài)創(chuàng)建圖層,圖層創(chuàng)建的同時,工作區(qū)間圖層視圖的樹結(jié)構(gòu)自動增加一條樹的分支,圖層創(chuàng)建完后只要雙擊某一樹支即可對該樹支對應的圖層進行瀏覽。每個圖元都屬于特定的圖層,若用戶選擇了當前活動圖層,則僅顯示屬于此圖層的圖元。這種圖層的概念可以用來標示不同電壓等級的圖元。
?。?) 在網(wǎng)絡接線圖上實現(xiàn)了可視化操作。能通過鼠標點觸相應元件,即可實現(xiàn)變壓器分接頭的切換、刀閘和開關(guān)的開合以及電容的投切。
(5) 本圖形系統(tǒng)采用了面向?qū)ο蠹夹g(shù),
對各種電氣元件設備有統(tǒng)一的操作模式,能很方便的將新的元件引入編輯系統(tǒng)以及擴充新的功能模塊,具有一定的可拓展性和開放性。
4 結(jié)論
本圖形系統(tǒng)利用Visual C++和Microsoft Access混合編程的方法進行開發(fā),基本做到了人機交互良好、操作方便,并且與數(shù)據(jù)庫緊密相連。由于采用了面向?qū)ο蟮姆椒?,圖形系統(tǒng)的擴充和維護都比較方便。目前本圖形系統(tǒng)在操作票系統(tǒng)以及繼保整定方面得到了應用,實踐證明,該圖形系統(tǒng)具有很高的實用性和推廣價值。
電氣符號相關(guān)文章:電氣符號大全
c++相關(guān)文章:c++教程
評論