|
|
摘 要:介紹了面向?qū)ο蟮脑O(shè)計(jì)思想和對(duì)象的抽象機(jī)理在電網(wǎng)CAD(PWCAD)系統(tǒng)中的應(yīng)用以及ObjectARX編程技術(shù)。闡述了通過(guò)利用AutoCAD核心數(shù)據(jù)庫(kù)的開(kāi)放結(jié)構(gòu)和ObjectARX提供的基類(lèi)及類(lèi)的繼承、派生機(jī)制定義專(zhuān)業(yè)對(duì)象的過(guò)程以及建模系統(tǒng)的數(shù)據(jù)交換技術(shù),并由此建立了PWCAD的對(duì)象模型。 關(guān)鍵詞:面向?qū)ο;繼承;ObjectARXCAD
隨著電力系統(tǒng)分析軟件朝著圖形化方向發(fā)展,圖形系統(tǒng)在各分析軟件中發(fā)揮著越來(lái)越重要的作用。過(guò)去電力系統(tǒng)圖形系統(tǒng)的開(kāi)發(fā)大都是借助ADS或AutoLisp編程接口在AutoCAD基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)的。而ADS和AutoLisp都是面向過(guò)程的開(kāi)發(fā)接口,開(kāi)發(fā)的程序不僅可讀性差,而且條件稍作更改,程序要作很大變動(dòng),可擴(kuò)充性及可維護(hù)性差。并且它們大都沒(méi)有與外部數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交換。利用AutoCAD二次開(kāi)發(fā)技術(shù)ObjectARX將面向?qū)ο蟮姆椒芭c外部數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交換的技術(shù)應(yīng)用于電網(wǎng)CAD的研究和開(kāi)發(fā)。
1 面向?qū)ο蟮碾娏AD建模分析
將面向?qū)ο蠹夹g(shù)應(yīng)用于電力系統(tǒng)網(wǎng)絡(luò)的建模領(lǐng)域,是要從問(wèn)題空間出發(fā),以對(duì)象作為基本概念,通過(guò)對(duì)象的確定、分解和分類(lèi),建立能用來(lái)進(jìn)行面向?qū)ο笙到y(tǒng)分析的電力網(wǎng)絡(luò)關(guān)系圖。通過(guò)數(shù)據(jù)結(jié)構(gòu)的抽象和行為抽象,描述系統(tǒng)的靜態(tài)屬性和動(dòng)態(tài)屬性的分析,得到由對(duì)象所構(gòu)成的層次結(jié)構(gòu)模型,形成對(duì)問(wèn)題域完整的語(yǔ)義描述,完成電網(wǎng)CAD系統(tǒng)的模型設(shè)計(jì)。
2 AutoCAD和ObjectARX
開(kāi)發(fā)的環(huán)境和平臺(tái)軟件選用了國(guó)際上先進(jìn)的面向?qū)ο蟮腃AD開(kāi)發(fā)平臺(tái)AutoCAD2000的ObjectARX。
AutoDesk公司推出的ObjectARX是一個(gè)基于面向?qū)ο蟮腃AD開(kāi)發(fā)平臺(tái),為基于AutoCAD的各種應(yīng)用開(kāi)發(fā)提供了強(qiáng)大的面向?qū)ο箝_(kāi)發(fā)工具。ObjectARX提供了C++為基礎(chǔ)的開(kāi)發(fā)環(huán)境及應(yīng)用程序接口,具有面向?qū)ο缶幊谭绞降臄?shù)據(jù)可封裝性,可繼承性等特點(diǎn)。由于利用了面向?qū)ο蟮募夹g(shù),可以將描述特征和變化關(guān)系的智能性設(shè)計(jì)對(duì)象變成AutoCAD圖形數(shù)據(jù)庫(kù)中的一級(jí)對(duì)象,AutoCAD的編輯命令能夠直接對(duì)其操作,AutoCAD還可以基于他們的內(nèi)在顯示予以相應(yīng)的屏幕顯示。
3 電網(wǎng)結(jié)構(gòu)的知識(shí)特點(diǎn)
電力系統(tǒng)結(jié)構(gòu)知識(shí)的一大特點(diǎn)是具有層次性,即:第一層為網(wǎng)絡(luò)層,電力系統(tǒng)模型由相互間通過(guò)輸電線路連接在一起的發(fā)電廠和變電站組成。如圖1示。第二層為廠站層,廠站由開(kāi)關(guān)、各種電氣設(shè)備(出線、母線、發(fā)電機(jī)、變壓器等)組成。
在整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中,廠站是核心。二維模型要描述的元件主要有輸電線路及廠站所擁有的開(kāi)關(guān)、母線、發(fā)電機(jī)、變壓器、出線等。從這些元件關(guān)系中,首先可以建立如下知識(shí)概念:
。1)“元件”是指電力系統(tǒng)中具有特定功能的設(shè)備單位,如發(fā)電機(jī)、變壓器等。 。2)“廠站”與普通的電力系統(tǒng)中的發(fā)電廠、變電站概念相對(duì)應(yīng),其中包括廠站的元件。
4 PWCAD軟件中的對(duì)象模型 以實(shí)際的物理系統(tǒng)為模板確定對(duì)象類(lèi)。在電力系統(tǒng)廠站中的開(kāi)關(guān)、變壓器、發(fā)電機(jī)、母線等元件其電氣功能比較獨(dú)立,它們?cè)趶S站中的共性是都屬于電氣設(shè)備,因此,首先抽象出一個(gè)元件類(lèi)CElememt(設(shè)備元件)來(lái)作為各元件的基類(lèi)。由于每種元件又都有自己的屬性、行為和功能要求,如形狀特征、功能特點(diǎn),因此,需要從元件基類(lèi)CElement派生出各元件類(lèi)。所以依據(jù)廠站所屬設(shè)備類(lèi)型如發(fā)電機(jī)、變壓器、母線、開(kāi)關(guān)、線路等分別確定為子類(lèi),于是便得到派生而來(lái)的類(lèi)有CBreak(開(kāi)關(guān))、CTransmisson(變壓器)、CBus(母線)、CGenerator(發(fā)電機(jī))、電容CCapacitor、CLine(線路)等。電力網(wǎng)絡(luò)中的每個(gè)廠站是一個(gè)整體,它有自己的屬性如廠站名稱(chēng)、廠站編號(hào)、所屬單位等及功能,可以定義一個(gè)廠站類(lèi)CPlant。每個(gè)廠站有開(kāi)關(guān)、母線、變壓器、發(fā)電機(jī)等元件,廠站與這些元件是引用與被引用的關(guān)系。因此,在類(lèi)CPlant中,要引用CBreak(開(kāi)關(guān))、CBus(母線)、CTransformer(變壓器)等對(duì)象。
在ObjectARX的對(duì)象模型中,AcRxObject類(lèi)是所有圖形類(lèi)的基類(lèi)。AcDbObject類(lèi)是從AcRxObject根類(lèi)繼承而來(lái)的,它是所有需要存入圖形文件對(duì)象的基類(lèi)。因此選用它作為CPlant類(lèi)的基類(lèi)。而AcDbEntity類(lèi)是從AcDbObject派生出來(lái)的,是所有具有圖形表示類(lèi)的基礎(chǔ)類(lèi)。它的功能包括:圖形的顯示與變換、圖形捕捉點(diǎn)的獲取與設(shè)置、與其它對(duì)象的求交、顯示本圖形信息、撤散本圖形為最基本的圖形元素等,因此,AcDbEntity類(lèi)提供了常用的修改及操作對(duì)象的函數(shù),通過(guò)最后派生的元件類(lèi)就可以O(shè)verride(重載)這些函數(shù),因而就會(huì)具有對(duì)本元件的常用的修改交互等操作,如母線元件,就可以實(shí)施拷貝、旋轉(zhuǎn)、拉伸等操作。所以選用AcDbEntity類(lèi)作為CElement的基類(lèi)。
4.1 元件類(lèi)
4.1.1 元件基類(lèi)
元件基類(lèi)的屬性包括顏色、線形、線形比例、可見(jiàn)性以及設(shè)備索引號(hào)、設(shè)備名稱(chēng)等。這些公共屬性的操作函數(shù)見(jiàn)下列定義。
4.1.2 元件類(lèi) 在派生的元件類(lèi)中都有自己的屬性與方法。
。1)開(kāi)關(guān)類(lèi)CBreak ①自定義屬性:開(kāi)關(guān)狀態(tài)、所在廠站、所連母線、電壓等級(jí)等。 ②方法:AcDbEntity類(lèi)提供了許多功能函數(shù),只要override這些函數(shù)就可以實(shí)現(xiàn)開(kāi)關(guān)類(lèi)元件的相應(yīng)功能。其實(shí)現(xiàn)方法如下: 重載intersectWith():用于修剪(trim)、延伸(ex-tend)、倒角(chamfer)、打斷(break)和對(duì)象捕捉的操作中。 重載transformBy():用于在AutoCAD環(huán)境下對(duì)幾何圖元類(lèi)進(jìn)行拉伸、旋轉(zhuǎn)和縮放等操作。 重載GetGirpPoints()、getOsnapPoints()、getStretch-Points()、moveStretchPoints()、intersectWith()等函數(shù), 這些函數(shù)使對(duì)元件的交互操作變得方便。 重載worldDraw()、viewDraw():支持圖形顯示功能。 重載draw():實(shí)現(xiàn)繪圖。 重載getTransformedCopy():創(chuàng)建對(duì)象的副本。 重載dwgInField()、dwgOutField():用于圖形dwg文件的序列化操作。 自定義的方法有開(kāi)關(guān)類(lèi)對(duì)象的創(chuàng)建、刪除、修改以及接口函數(shù)和其他函數(shù)等。 這樣擴(kuò)充,使派生的元件可以實(shí)現(xiàn)強(qiáng)大的功能。
|
|
|