ObjectARX技术在电网CAD应用中的研究
>邱新福,陈刚
(重庆大学电气学院,重庆 400044) 随着电力系统分析软件朝着图形化方向发展,图形系统在各分析软件中发挥着越来越重要的作用。过去电力系统图形系统的开发大都是借助ADS或AutoLisp编程接口在AutoCAD基础上进行二次开发的。而ADS和AutoLisp都是面向过程的开发接口,开发的程序不仅可读性差,而且条件稍作更改,程序要作很大变动,可扩充性及可维护性差。并且它们大都没有与外部数据库进行数据交换。利用AutoCAD二次开发技术ObjectARX将面向对象的方法及与外部数据库进行数据交换的技术应用于电网CAD的研究和开发。
1 面向对象的电力CAD建模分析
将面向对象技术应用于电力系统网络的建模领域,是要从问题空间出发,以对象作为基本概念,通过对象的确定、分解和分类,建立能用来进行面向对象系统分析的电力网络关系图。通过数据结构的抽象和行为抽象,描述系统的静态属性和动态属性的分析,得到由对象所构成的层次结构模型,形成对问题域完整的语义描述,完成电网CAD系统的模型设计。
2 AutoCAD和ObjectARX
开发的环境和平台软件选用了国际上先进的面向对象的CAD开发平台AutoCAD2000的ObjectARX。
AutoDesk公司推出的ObjectARX是一个基于面向对象的CAD开发平台,为基于AutoCAD的各种应用开发提供了强大的面向对象开发工具。ObjectARX提供了C++为基础的开发环境及应用程序接口,具有面向对象编程方式的数据可封装性,可继承性等特点。由于利用了面向对象的技术,可以将描述特征和变化关系的智能性设计对象变成AutoCAD图形数据库中的一级对象,AutoCAD的编辑命令能够直接对其操作,AutoCAD还可以基于他们的内在显示予以相应的屏幕显示。
3 电网结构的知识特点
电力系统结构知识的一大特点是具有层次性,即:第一层为网络层,电力系统模型由相互间通过输电线路连接在一起的发电厂和变电站组成。如图1示。第二层为厂站层,厂站由开关、各种电气设备(出线、母线、发电机、变压器等)组成。
在整个网络结构中,厂站是核心。二维模型要描述的元件主要有输电线路及厂站所拥有的开关、母线、发电机、变压器、出线等。从这些元件关系中,首先可以建立如下知识概念:
(1)“元件”是指电力系统中具有特定功能的设备单位,如发电机、变压器等。
(2)“厂站”与普通的电力系统中的发电厂、变电站概念相对应,其中包括厂站的元件。
4 PWCAD软件中的对象模型
以实际的物理系统为模板确定对象类。在电力系统厂站中的开关、变压器、发电机、母线等元件其电气功能比较独立,它们在厂站中的共性是都属于电气设备,因此,首先抽象出一个元件类CElememt(设备元件)来作为各元件的基类。由于每种元件又都有自己的属性、行为和功能要求,如形状特征、功能特点,因此,需要从元件基类CElement派生出各元件类。所以依据厂站所属设备类型如发电机、变压器、母线、开关、线路等分别确定为子类,于是便得到派生而来的类有CBreak(开关)、CTransmisson(变压器)、CBus(母线)、CGenerator(发电机)、电容CCapacitor、CLine(线路)等。电力网络中的每个厂站是一个整体,它有自己的属性如厂站名称、厂站编号、所属单位等及功能,可以定义一个厂站类CPlant。每个厂站有开关、母线、变压器、发电机等元件,厂站与这些元件是引用与被引用的关系。因此,在类CPlant中,要引用CBreak(开关)、CBus(母线)、CTransformer(变压器)等对象。
在ObjectARX的对象模型中,AcRxObject类是所有图形类的基类。AcDbObject类是从AcRxObject根类继承而来的,它是所有需要存入图形文件对象的基类。因此选用它作为CPlant类的基类。而AcDbEntity类是从AcDbObject派生出来的,是所有具有图形表示类的基础类。它的功能包括:图形的显示与变换、图形捕捉点的获取与设置、与其它对象的求交、显示本图形信息、撤散本图形为最基本的图形元素等,因此,AcDbEntity类提供了常用的修改及操作对象的函数,通过最后派生的元件类就可以Override(重载)这些函数,因而就会具有对本元件的常用的修改交互等操作,如母线元件,就可以实施拷贝、旋转、拉伸等操作。所以选用AcDbEntity类作为CElement的基类。
4.1 元件类
4.1.1 元件基类
元件基类的属性包括颜色、线形、线形比例、可见性以及设备索引号、设备名称等。这些公共属性的操作函数见下列定义。
4.1.2 元件类
在派生的元件类中都有自己的属性与方法。
(1)开关类CBreak
①自定义属性:开关状态、所在厂站、所连母线、电压等级等。
②方法:AcDbEntity类提供了许多功能函数,只要override这些函数就可以实现开关类元件的相应功能。其实现方法如下:
重载intersectWith():用于修剪(trim)、延伸(ex-tend)、倒角(chamfer)、打断(break)和对象捕捉的操作中。
重载transformBy():用于在AutoCAD环境下对几何图元类进行拉伸、旋转和缩放等操作。
重载GetGirpPoints()、getOsnapPoints()、getStretch-Points()、moveStretchPoints()、intersectWith()等函数,这些函数使对元件的交互操作变得方便。
重载worldDraw()、viewDraw():支持图形显示功能。
重载draw():实现绘图。
重载getTransformedCopy():创建对象的副本。
重载dwgInField()、dwgOutField():用于图形dwg文件的序列化操作。
自定义的方法有开关类对象的创建、删除、修改以及接口函数和其他函数等。这样扩充,使派生的元件可以实现强大的功能。
(2)变压器类CTransformer
①自定义属性:变压器类型、所在厂站、所连开关、中心点刀闸、中心点刀闸状态等。
②方法:其方法的实现同开关类相似。这里不再叙述。
(3)线路类CLine
①自定义属性:供电端、供电开关、负荷端、负荷开关、归属单位等。
②方法:其方法的实现同开关类相似。这里不再叙述。
(4)母线类CBus
①自定义属性:电压等级、所在厂站等。
②方法:其方法的实现同开关类相似。这里不再叙述。
(5)发电机类CGenerator
①自定义属性:所连母线、所在厂站等。
②方法:其方法的实现同开关类相似。这里不再叙述。
(6)电容类CCapacitor
①自定义属性:所在厂站、所连开关等。
②方法:其方法的实现同开关类相似。这里不再叙述。
4.2 厂站类
①自定义属性表:索引号、厂站名称、电压等级、主接线方式(高)、主接线方式(中)、主接线方式(低)、所述单位等。
②方法:自定义的方法有厂站类对象的创建、删除、修改以及接口函数和其他函数等。后面给出了厂站类部分定义代码。
4.3 厂站类与元件类之间的引用与被引用关系
在ObjectARX中,利用AcDbObje[1][2]下一页
来源:中国电力资料网