AutoCAD二次开发在电力系统运行模拟输出电站工作位置图中
【摘 要】 将Visual Basic语言在AutoCAD上的二次开发应用于电力系统运行模拟绘制电站工作位置图。该方法在对系统进行运行模拟,计算出各电站在系统逐月典型日24h负荷曲线上的工作位置和工作容量后,通过编写接口程序启动AutoCAD软件,根据已得出的工作位置和工作容量,启动AutoCAD绘制出电站工作位置图。该方法采用VB可视化界面对AutoCAD进行操作,使绘图更便捷,效率更高。实例计算表明了该方法的有效性和适用性。
关键词 电力系统运行模拟 电站工作位置图 Visual Basic语言 二次开发
1 引言
随着国民经济的发展,电力系统用户对电力和电能的需要不断增加,必须新建电源。可是应该在何时、何地、建何种电厂、规模多大才最为经济合理,这便是电源规划所要解决的问题。规划的合理与否,直接影响系统运行的可靠性、经济性、电能质量,网络结构和今后的发展。因此电源规划是电力系统电源布局的战略决策,在电力系统规划中处于十分重要的地位。而电力系统运行模拟是对电力系统规划设计中常用的电力电量平衡分析的发展,是电力系统规划设计中的一项经常而重要的工作。电力系统运行模拟的基本任务是:从电力系统整体的实际出发,充分考虑电力系统中各类电站(包括水电、火电、核电、抽水蓄能以及调峰电站等)的特点,充分利用水电等“限能电站”(这里的所谓限能电站是指那些发电用能有一定限制的电站)的容量和电量,模拟系统全年逐月的运行方式,以校验系统的装机容量是否满足系统负荷的需求,并确定各电站在系统逐月典型日24h负荷曲线上的工作位置和工作容量。为了从图形上能够清楚地看出各类型电站所处的工作位置以及最关心的电站(即指定电站)工作位置以利于对电站的运行和控制,需要将系统逐月典型日24h负荷曲线通过软件绘制出来。并将各类型电站的工作位置在图形上面用不同的图例区别。而AutoCAD软件是一种得到普遍应用的工程制图软件,具有很多优越性。为了把AutoCAD的二次开发应用到电力系统运行模拟输出电站工作位置图中,需要首先编写接口程序启动AutoCAD软件,然后进行图形绘制工作。
为了达到上述目的,本文着重讨论在Windows操作平台上,利用基于Visual Basic语言的AutoCAD二次开发将电力系统运行模拟后在日负荷曲线上确定的各水电、火电、核电、抽水蓄能以及调峰电站等的工作位置(即各个电站在日负荷曲线上的位置上、下限)通过接口程序绘制成电站工作位置图。
2 ViSual Basic与AutoCAD概述
Visual Basic(简称VB)是美国微软(Microsoft)公司推出的Windows环境下的软件开发工具,它是一种可视化编程软件。在VB中引入了控件的概念,如各种各样的按钮、文本框、复选框等等。VB把这些控件模式化,并且每个控件都由若干属性来控制其外观、工作方法。这样,采用VB软件无需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的控件加到屏幕上。VB提供动态数据交换编程技术,可以在应用程序中实现与其他应用程序之间进行通信的功能,例如本文要讨论的VB和AutoCAD之间的接口通信。VB还具有很强的数据库管理功能,不仅可以管理MS Access格式数据库,还能访问其他外部数据库。使用VB可以感受到Windows带来的新技术、新概念和新的开发方法,因为它是目前众多Windows软件开发工具中效率最高的一个,可以既快又简单地开发Windows应用软件。
AutoCAD是美国Autodesk公司开发的人机对话式的图形软件,它被用来进行计算机辅助设计与绘图,并且在机械设计、土木建筑、电子线路、动画制作、城市规划等领域得到广泛的应用。AutoCAD软件是一种功能很强、在微机中应用比较广泛的绘图软件。它提供了丰富的作图功能,操作方便,用户通过操作能迅速、准确地绘出图形;它具有很强的手工绘图无法实现的图形编辑功能,能使用户对现有图形进行编辑。它还有编程功能,利用内部嵌有的Auto Lisp语言使绘图工作程序化、自动化;它还有执行DOS命令的接口、与高级语言的接口(例如VB语言),因而处理图形的功能大大增强。
3 应用ActiveX Automation技术进行AutoCAD的二次开发
众所周知,AutoCAD是一种极其灵活的应用系统,用户可以通过编程的方式对其进行定制。在以往的AutoCAD系统开发中,最常用的是AutoLisp和ADS,但AutoLisp不如编程语言方便,在开发较大项目时力不从心,而ADS虽由功能强大的C语言编制,但较为复杂,不适应当前可视化编程的需要。幸运的是,在最新推出的AutoCAD r14版本中,Autodesk公司对AutoCAD本身加入了ActiveX自动化服务功能(ActiveX Automation Server Capabilities),使得用户可以通过可视化编程工具,如VB、Delphi等对AutoCAD进行系统开发,极大地提高了工作效率。
4 程序的工作步骤和模块设计
4.1 工作步骤
图1给出了绘制电力系统运行模拟电站工作位置图的程序工作步骤。
本程序采用VB6.0语言作为开发工具,因为这种工具简单易学,编程界面友好,而且还比较容易开发出基于Windows的高质量软件。软件界面采用菜单式结构设计,且具有操作方便的工具条和中文对话功能,操作简单,结合该语言对AutoCAD进行二次开发,通过编写接口程序实现数据对AutoCAD的图形输出,提高了数据的直观性。本文着重讨论二次开发绘制电站工作位置图部分的开发和实现。主要分三大模块,即数据输入模块、软件接口模块、图形绘制模块。
关键词 电力系统运行模拟 电站工作位置图 Visual Basic语言 二次开发
1 引言
随着国民经济的发展,电力系统用户对电力和电能的需要不断增加,必须新建电源。可是应该在何时、何地、建何种电厂、规模多大才最为经济合理,这便是电源规划所要解决的问题。规划的合理与否,直接影响系统运行的可靠性、经济性、电能质量,网络结构和今后的发展。因此电源规划是电力系统电源布局的战略决策,在电力系统规划中处于十分重要的地位。而电力系统运行模拟是对电力系统规划设计中常用的电力电量平衡分析的发展,是电力系统规划设计中的一项经常而重要的工作。电力系统运行模拟的基本任务是:从电力系统整体的实际出发,充分考虑电力系统中各类电站(包括水电、火电、核电、抽水蓄能以及调峰电站等)的特点,充分利用水电等“限能电站”(这里的所谓限能电站是指那些发电用能有一定限制的电站)的容量和电量,模拟系统全年逐月的运行方式,以校验系统的装机容量是否满足系统负荷的需求,并确定各电站在系统逐月典型日24h负荷曲线上的工作位置和工作容量。为了从图形上能够清楚地看出各类型电站所处的工作位置以及最关心的电站(即指定电站)工作位置以利于对电站的运行和控制,需要将系统逐月典型日24h负荷曲线通过软件绘制出来。并将各类型电站的工作位置在图形上面用不同的图例区别。而AutoCAD软件是一种得到普遍应用的工程制图软件,具有很多优越性。为了把AutoCAD的二次开发应用到电力系统运行模拟输出电站工作位置图中,需要首先编写接口程序启动AutoCAD软件,然后进行图形绘制工作。
为了达到上述目的,本文着重讨论在Windows操作平台上,利用基于Visual Basic语言的AutoCAD二次开发将电力系统运行模拟后在日负荷曲线上确定的各水电、火电、核电、抽水蓄能以及调峰电站等的工作位置(即各个电站在日负荷曲线上的位置上、下限)通过接口程序绘制成电站工作位置图。
2 ViSual Basic与AutoCAD概述
Visual Basic(简称VB)是美国微软(Microsoft)公司推出的Windows环境下的软件开发工具,它是一种可视化编程软件。在VB中引入了控件的概念,如各种各样的按钮、文本框、复选框等等。VB把这些控件模式化,并且每个控件都由若干属性来控制其外观、工作方法。这样,采用VB软件无需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的控件加到屏幕上。VB提供动态数据交换编程技术,可以在应用程序中实现与其他应用程序之间进行通信的功能,例如本文要讨论的VB和AutoCAD之间的接口通信。VB还具有很强的数据库管理功能,不仅可以管理MS Access格式数据库,还能访问其他外部数据库。使用VB可以感受到Windows带来的新技术、新概念和新的开发方法,因为它是目前众多Windows软件开发工具中效率最高的一个,可以既快又简单地开发Windows应用软件。
AutoCAD是美国Autodesk公司开发的人机对话式的图形软件,它被用来进行计算机辅助设计与绘图,并且在机械设计、土木建筑、电子线路、动画制作、城市规划等领域得到广泛的应用。AutoCAD软件是一种功能很强、在微机中应用比较广泛的绘图软件。它提供了丰富的作图功能,操作方便,用户通过操作能迅速、准确地绘出图形;它具有很强的手工绘图无法实现的图形编辑功能,能使用户对现有图形进行编辑。它还有编程功能,利用内部嵌有的Auto Lisp语言使绘图工作程序化、自动化;它还有执行DOS命令的接口、与高级语言的接口(例如VB语言),因而处理图形的功能大大增强。
3 应用ActiveX Automation技术进行AutoCAD的二次开发
众所周知,AutoCAD是一种极其灵活的应用系统,用户可以通过编程的方式对其进行定制。在以往的AutoCAD系统开发中,最常用的是AutoLisp和ADS,但AutoLisp不如编程语言方便,在开发较大项目时力不从心,而ADS虽由功能强大的C语言编制,但较为复杂,不适应当前可视化编程的需要。幸运的是,在最新推出的AutoCAD r14版本中,Autodesk公司对AutoCAD本身加入了ActiveX自动化服务功能(ActiveX Automation Server Capabilities),使得用户可以通过可视化编程工具,如VB、Delphi等对AutoCAD进行系统开发,极大地提高了工作效率。
4 程序的工作步骤和模块设计
4.1 工作步骤
图1给出了绘制电力系统运行模拟电站工作位置图的程序工作步骤。
本程序采用VB6.0语言作为开发工具,因为这种工具简单易学,编程界面友好,而且还比较容易开发出基于Windows的高质量软件。软件界面采用菜单式结构设计,且具有操作方便的工具条和中文对话功能,操作简单,结合该语言对AutoCAD进行二次开发,通过编写接口程序实现数据对AutoCAD的图形输出,提高了数据的直观性。本文着重讨论二次开发绘制电站工作位置图部分的开发和实现。主要分三大模块,即数据输入模块、软件接口模块、图形绘制模块。
4.2 各模块功能和实现方法
(1)数据输入模块 该模块的制作参见文献。数据输入模块窗口的主界面如图2所示。该模块需要选择一些选项例如:分区、月份、图名、备注、单位、彩色,并可以选择查看用户最关心的电站工作位置,即指定电站,程序设置最多指定5个电站,其中每种电站最多指定3个,各类电站和各个指定电站都用不同的图例进行区分,以便于观察,选择“确定”按钮后程序就根据运行模拟后的电站工作位置数据自动启动AutoCAD软件,并将图形绘出,此部分内容参见文献。若需要打印成纸张形式也可由Windows默认打印机打印输出屏幕上模拟显示的电站工作位置图。
(2)软件接口模块 编写接口程序即实现在VB中连接AutoCAD。具体步骤如下:
1)启动VB,引用AutoCAD类型库。从“工程”菜单中选择“引用”选项,启动“引用”对话框。在“引用”对话框中,选择AutoCAD类型库,然后单击“确定”。
2)定义模块级变量AutoCAD应用程序(acadApp)和当前的文档(acadDoc)。如果AutoCAD正在运行,使用GetObject函数将检索AutoCADApplication对象。如果AutoCAD没有运行,使用CreateObject函数试图创建一个AutoCAD Application对象。如果创建成功,会启动AutoCAD;如果失败,则会发生错误。如果同时运行有多个AutoCAD任务,GetObject函数会返回Windows运行对象表中的第一个AutoCAD实例。如果要显示AutoCAD图形窗口,需要将AutoCAD应用程序的Visible特性设置为TRUE,否则设置为FALSE,在本程序开始阶段把AutoCAD应用程序的Visible特性设置为FALSE,即只启动AutoCAD而不显示出来,在绘图完毕后再将AutoCAD应用程序的Visible特性设置为TRUE,即显示图形,目的是避免过多地占用计算机的内存。接口程序示例如下:
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的二次开发中,进行图形绘制即需要对AutoCAD的对象模型(AutoCAD Object Model)进行操作。对象本身包含自己的方法和属性。通过方法可以实现对象的一些操作,而对象状态信息的收集或改变则是通过属性完成的。例如,线段是AutoCAD中的一个对象,它的属性可以是线形、起始点坐标、所在层等性质,方法则有复制、镜像等操作。Model Space是当前图形文件中图形实体,如线段、圆、多义线等的集合,每个实体即是一个对象,可通过属性和方法改变实体或生成新实体,可以通过该对象实现图形的绘制工作。例如,在定义了两点dot1和dot2以及线段lineObj并给定这两点的位置坐标之后可以绘制出一条线段,基本编程语句为:
Set lineObj=acadapp.ActiveDocument.ModelSpace.AddLine(dot1,dot2)
坐标系是由一条条线段构成的,通过对线段两个端点坐标的设置可以绘出所需位置的线段,本文基于这个思想实现了对坐标子程序的编写。
而安排各类电站在图形中的工作位置(即填充阴影)则也是对AutoCAD的对象模型进行操作。阴影为用图案填充图形中的指定区域。当创建阴影时,最先操作不是指定填充的区域。首先用户必须创建Hatch对象,做完这一步后,用户可指定外部的封闭回路,也就是阴影的最外边界。所以首先定义矩形边界对象outerLoopobj(1)~outerLoopobj(4)和阴影对象hatchobj以及矩形边角的四个点pointl~point4并给定这四个点的位置坐标,再根据四个点来确定需填充阴影矩形的四条边界线段,然后根据不同类型电站对矩形填充不同的阴影图案(通过设置阴影对象hatchobj的属性值实现),基本编程语句为:
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
根据这个思想可以依次将各类型电站(例如:核电站、水电站、火电站等等,指定电站也可采用同样方法)在日负荷曲线上用不同阴影图案填充,这样就基本完成了图形绘制工作。
5 算例分析
本文以2010年某地区枯水年为例,利用本文方法对其进行运行模拟并输出电站工作位置图。整个地区水电站有58台,火电站有74台,核电站有5台,调峰电站有13台,抽水蓄能电站有10台,其中选取某省6月份进行模拟计算输出电站工作位置图。
最终打印输出AutoCAD图形如图3所示,部分电站数据列于下表,火电和指定电站数据未列出,其中虚线为分区潮流。
通过算例分析计算可知,在对基本数据运行模拟后,本文方法能够迅速绘制出坐标系统(包括横坐标、纵坐标、刻度以及标注)、系统典型日负荷曲线、各电站工作位置区域和图例,负荷曲线对电力系统的规划设计和运行十分有用,电力系统的计划生产主要是建立在预测的负荷曲线基础上的。绘制电站工作位置图的作用也很明显,从中能够清楚地看出各类型负荷所处的工作位置以及最关心的电站(即指定电站)工作位置,以利于电站的运行和控制。
6 结束语
本文将VB语言在AutoCAD上的二次开发应用于电力系统运行模拟绘制电站工作位置图。该方法用V B语言编程,软件界面采用菜单式结构设计,且具有操作方便的工具条和中文对话功能,操作简单,结合该语言对AutoCAD进行二次开发,通过编写接口程序实现数据对AutoCAD的图形输出,提高了数据的直观性,使绘图更便捷,效率更高。该方法在绘图完毕后生成dwg格式文件,它是AutoCAD图形文件,具有很强的通用性,能方便地进行工程制图、打印等操作,而且该方法所绘制的图形效果优于用VB软件直接绘图。在图形上能够清楚地看出各类型负荷所处的工作位置以及最关心的电站(即指定电站)工作位置,以利于电站的运行和控制。实例计算表明了该方法的有效性。
文章版权归西部工控xbgk所有,未经许可不得转载。