基于SQL、VB、AutoCAD,VBA的水库库容计算(陈亮,史长莹,杨浩)
摘要:水库库容计算是水库运行管理的核心工作之一。运用SQL、VB、AutoCAD VBA工具开发出一套用于水库库容计算的程序,其中SQL用来保存管理数据,VB用来计算库容,AutoCAD VBA用来校对数据及绘图。实践证明,此方法科学、高效。应加以推广。
关键词:库容计算;AutoCAD VBA;SQL;Visual Basic6.0
中图分类号:TV697.29 文献标识码:C 文章编号:1004-7328(2007)04-0049-04
闹德海水库是一座防洪、灌溉、城市供水综合利用的大Ⅱ型水库,是柳河干流上唯一的大型控制工程。水库控制流域面积为4 051 km2,占柳河总流域面积的59%。柳河是辽河的支流,是典型的多泥沙河流。出库水文站闹德海水文站多年(1961-1995)平均输沙量1 504万t,多年平均径流量2.626亿m3,多年平均含沙量57 kg/m3。为了保证水库安全稳定的运行,闹德海水库每年都进行一次库容测量。
在水库运行管理中,对水库库容的测量是十分重要的工作,尤其是多泥沙河流上的水库。传统的计算方法是把测量数据用人工计算或用计算机进行简单的辅助运算。随着计算机应用的普及、自动化办公水平的提高,传统的计算方法已逐渐不能满足工程人员的要求,暴露出数据不方便保存查询、数据录入工作量大、校对困难、不能图形化显示等诸多缺点。笔者将基于SQL数据库、VB6.0、AutoCAD VBA3个平台开发出一套水库库容计算程序。它用SQL数据库存储数据、用VB6.0开发的程序计算水库库容、用AutoCAD VBA绘制各个测量断面图形。集成了3个工具的优点,将极大地提高效率、减轻工作量。
1 系统构成
1.1 简介
Microsoft SQL和Microsoft Visual Basic 6.0早被工程人员熟知,Microsoft VBA是AutoCAD的一个二次开发工具,能够高效率地对AutoCAD进行编程控制。
1.2 AutoCAD VBA绘图及校对数据
本程序把测量成果的Excel数据文件读入AutoCAD,自动绘制所有断面图形及测量点的坐标,目的是以图形的方式显示各个断面的情况及数据点的情况,方便工作人员校对数据,以及打印各断面测量成果。
1.2.1 实现步骤
(1)进入AutoCAD14及以上版本并进入AutoCAD VBA的编程环境。
(2)在“Visual Basic编辑器”中添加一个新工程。
(3)在此工程中添加一个窗体,窗体中有:输入数据文件所在路径控件、输入起始断面文件名控件、输入结束断面文件名控件、绘图控件。
(4)定义所使用的主要变量。
(5)建立AutoCAD与Excel之间的通信。读取原始数据并赋值给相应变量。
(6)编写绘制图形的程序段。
(7)在CAD中自定义名为“闹德海水库”的下拉菜单,以方便工作人员调用程序。
1.2.2 代码
Public Sub ExcelCAD()
On Error Resume Next
Dim Excel As Exce1.Application 建立Excel通信
Dim Excelworkbook As Object,Excelsheet As Object
Dim FilePath2 As String,FileName As String 文件路径
Dim XXXX As Single,TempX 1 As Single,TempX2 As Single,
AddY As Single,i As Single,ii As Single 循环变量
Dim LineObject As AcadLine,TextObject As AcadText 画线
Dim StartP(0 To 2)As Double,EndP(0 To 2)As Double 点坐标
Dim b As Single,Coordinate As String 坐标
Dim PNumber As Single,RankNumber As Single 数据点的个数
Dim Title As String 标题
Set Excel=GetObject(,”Exce1.application”)
If Err<> 0 Then
Set Excel=CreateObject(”exce1.Application”)
End If
TempX1=RightS(TextBox2.Value,1)
TempX2=Right$(TextBox3.Value,1)
xxxx=TempX 1
AddY=0
For ii=TempX 1 To TempX2
FileName=Left$(TextBox2.Value,1 XXXX""读取数据
FilePath2=TextBox1.text+FileName+”.xls”
Set Excelworkbook=Exce1.Workbooks.Open(File Path2)
Excelsheet=Excel_ActiveSheet
b=3
StartP(0)=Worksheets(”sheetl”).CeUs(2,4).Value
StartP(1)=Worksheets(”sheetl”).Cells(2,5).Value
StartP(2)=0
StartP(1)=StartP(1)+AddY
PNumbei=2
RankNumbeI=2
While RankNumber<>O’计算点的个数PNumber
R ankNumber =Worksheets fttsheetl”).Cells (PNumber;2).Value
PNumbei=PNumber+l
W end
PNumber=PNumber一4
Label 1.Caption=PNumber
Title=Worksheets(”sheetl”).Cells(1,1).Value 写标题
ThisDrawing.AddText Title,StartP,10
For i=1 To PNumber-4
EndP(0)=(Worksheets(”sheetl”).Cells(b,4).Value)读数
EndP(1)=(Worksheets(”sheetl
EndP(2)=0
).Cells(b,5).Value)
Coordinat~”(”+Str(EndP(O))+ti lt+Str(EndP(1 ”)”
EndP(1)=EndP(1)+AddY
Set TextObject=ThisDrawing.ModelSpace.AddText (Coordinate,EndP,1) 写坐标
Set LineObject=ThisDrawing.ModelSpace.AddLine (StartP.EndP) 画线
StartP(o)=EndP(0):StartP(1)=EndP(1):StartP(2)=EndP(2)
LineObject.coloi=acRed 指定颜色
b=b+ 1
Next i
ZoomExtents
Exce1.Quit
AddY=AddY + 100
XXXX=XXXX + 1
Next ii
End Sub
自定义菜单代码:
Public Sub AddASubMenu0
Dim curMenuGroup As AcadMenuGroup
Set curMenuGroup=ThisDrawing.Application.MenuGroups.Item(0)
Dim newMenu As AcadPopupMenu
Set newMenu=eurMenuGroup.Menus.Add(”闹德海水库”&Chr(Asc(”&”))&”U”)
Dim macro As String
macro=Chr(vbKeyEscape)+Chr(vbKeyEscape)
Dim menuItemOpen As AcadPopupMenuItem
Set menuItemOpen=newMenu.AddMenuItem
newMenu.Count+1,Chr(Asc(”&”))& ”画横断面”,macro &”-vbarun”+Chr (32)+”thisdrawing.singletransect”+Chr(32))
menuItemOpen.HelpString=”输入文件路径及文件名.绘制出横断面”
newMenu.InsertlnMenuBar (ThisDrawing.Application.MenuBar.Count+1)
End Sub
闹德海水库利用AutoCAD VBA绘制的C1断面,如图1所示。
1.3 SQL数据库
本系统的数据库系统采用了Microsoft SQLServer 2000。随着社会的发展,用户对于数据库解决方案的易用性、可靠性和降低管理成本上有着十分强烈的要求。微软的SQL Server作为一种先进的关系数据库管理系统.是一种基于服务器,客户机的数据管理系统.采用客户机/服务器模式时,客户机通过采用标准的SQL语句等方式来访问服务器上的数据库中的数据.相比较其他数据库SQL Server具有如下特点:
(1)Microsoft SQL Server是一个运行在Window环境下的数据库系统,具有与Windows产品系列紧密集成、可方便地支持Internet、高可用性动态数据备份、分布式数据处理等特性。该数据库是一个完全的客户机/服务器体系结构的系统,数据库的查询操作都集中在服务器方进行,在网络上运输的只有用户请求命令和服务器的检索结果,而不是整个数据库文件。
(2)SQL Server简化了SQL Server数据库和Windows文件系统之间的关系,实现了更大的缩放性。数据库存放在操作系统文件中,而不再是逻辑设备中。系统管理员可以利用单个声明或企业管理器(Enterprise Manager)创建数据库及其所有的文件,当数据库删除时,其文件也被同时删除。SQL Server2000允许数据库文件自动扩展,从而消除了手动干预。
(3)在可靠性方面,SQL Server充分利用了硬件性能,使数据库的备份和恢复速度尽可能地快,从而使系统具有高可靠性。在数据库恢复之前无需创建数据库及其相关文件,它们由系统自动重建。这项特性具有许多优点:文件可以重新定位,例如可以避开受损的磁盘驱动器;减少脚本维护和人工干预;大大降低人为失误的潜在威胁。
(4)具有图形化管理工具(Enterprise Manager)功能,使系统管理更为直观方便,利用它可以生成SQL Sewer的配置;而且它具有隐含的并发控制能力,SQL Server用动态锁定功能防止用户在查询和更新操作时相互发生冲突,而动态锁定是隐含的,用户不必操心锁定过程。
(5)SQL Server具有丰富的编程接口工具,它支持ODBC规范,可以使用ODBC访问SQL Server数据库。这样用户只需在后台服务器端安装好SQL Server,前台客户端可使用各种开发工具,调用接口工具提交查询、修改等任务给SQL Server。
基于以上Microsoft SQL Server的优点分析,在本系统中采用Microsoft SQL Server 2000作为系统的后台数据库。
1.4 vB库容计算
库容的计算采用梯形法。本程序利用VB中的SQL查询语句,对SQL数据库中的已存断面数据进行提取。对提取出的数据进行判断后,把相应数据带入相应公式进行计算,算出面积。然后,再利用累加器算出横断面面积。同理,再利用梯形法算出库容体积。
横断面计算中涉及的主要公式如下:
XA =XB一(H—YB),(YA—YB)×(XB—XA):YA=H (1)
XB=XA一(H—YA),(YB—YA)×(XB—XA):YB=H (2)
A=(H—YA+H—YB),2×(XB—XA) (3)
X=X+A (4)
式中:XA表示断面测量数据中的第一点的起点距;XB表示断面测量数据中的第一点的河底高程;YA表示断面测量数据中的第二点的起点距:YB表示断面测量数据中的第二点的河底高程;A表示两点与水位所确定三角形面积;H表示水位。
如:第一点的起点距为0、河底高程为175,第二点的起点距为1O、河底高程为160,水位为170。则因为YA>H且YB 将YA=H,XA=3.23带入式(3)得A=33.35。 同理继续对数据进行提取算得下一个A值,利用累加器X=X+A求得断面面积。 2 工程应用 结果分析表明,计算库容值与资料提供的库容值相同是因为用VB实现的新方法与老方法所用的核心算法相同,在没有资料录入错误的情况下,结果相同。 通过上述对1967年数据的验证,此方法所求得的库容计算结果与老方法计算的结果相同,满足精度要求,可以使用,并且可以提高工作效率数倍。通过SQL建立的数据库随着此方法在闹德海水库的运用会显示出强大的生命力,对今后水库的科学运行管理提供数据保证。 在工程实际应用时,采用并行转换方式实现了新老系统的交接。并行转换指新老系统并行工作一段时间,经过一段时间的考验以后,以新系统正式全面代替老系统。采用这种转换方式,用户一方面可以继续使用习惯的方法处理业务,另一方面也开始使用新系统。这样可以保证业务工作的延续性,两个系统可以进行对比、互相校对结果,以使用户对新系统有一个逐渐认识的过程。并行转换方式是最安全、保险的方式。 3 结论与建议 (1)实践证明,运用SQL、VB、AutoCAD VBA对水库库容进行计算是一种准确、高效的方法,并且便于数据的保存与查询,方便工作人员分析数据、总结规律,应该加以推广。 (2)AutoCAD VBA应用在水库管理运行中还有潜力,许多传统的图解法都可以用VBA精确求解。 (3)此方法所建立的SQL数据库系统与水文预报的数据库系统结合将更具有开发价值。 (4)VB与AutoCAD VBA 的结合有待进一步提高,完全用VB或VBA一种平台实现其功能尚待探讨。 参考文献: [1]尹学良.闹得海水库库区及下游河道的变化[J].水利学报,1997,(7):54—59. [2]陈瑞,沈英浩,张国辉.闹得海水库水沙特性分析[J].水利水电技术.2004.(5):129—130. [3]杨极,于文波,张中明.闹得海水库泥沙冲淤分析[J].东北水利水电,2000,(1 1):37—38. [4]刘炳文.Visual Basic程序设计教程[M].北京:清华大学出版社.2003. [5]张帆,郑立楷,王华杰.AutoCAD VBA开发精彩实例教程[M].北京:清华大学出版社,2004. 作者简介:陈亮(1981-),男,硕士,工程师,主要从事水利工程方面的研究。 来源:《海河水利》2007.4
相关推荐
热门排行
党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件14篇党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件篇1我
2022年五星支部创建实施方案5篇2022年五星支部创建实施方案5篇2022年五星支部创建实施方案篇1为切实提高支部党建工作科学化水平、不断夯实党建基础,挖掘支部党建特色,创新支部党建工作做
七言绝句古诗精选【十首】【 能力训练 导语】七言绝句是中国传统诗歌的一种体裁,简称七绝,属于近体诗范畴。此体全诗四句,每句七
2022年支部党员大会记录内容14篇2022年支部党员大会记录内容14篇2022年支部党员大会记录内容篇120xx年度我校新党员发展工作已经开始。根据学校党委3月21日会议精神,今年新党员发展
统计工作如何为企业管理服务作为企业管理重要组成部分的统计工作,在企业的经济运行中发挥着信息、咨询和监督三大作用,它为企业的经营
乡镇创建无毒社区工作方案一、指导思想以“三个代表”重要思想为指导,认真贯彻落实上级精神,以禁吸戒毒为中心,全面落实禁毒工作责
四年级我家菜园日记500字菜园子,就是种菜的地方。种菜的时候为了防止家禽进入菜地,于是农夫用篱笆或者栅栏将菜地围起来形成的一个
哈尔移动城堡电影观后有感范本在观看完一部作品以后,相信你会有不少感想吧,这时我们很有必要写一篇观后感了。可能你现在毫无头绪吧,下
党支部2022年学习计划14篇党支部2022年学习计划14篇党支部2022年学习计划篇1认真坚持“三会一课”制度,对于加强支部建设,提高党的战斗力、健全党的生活,严格党员管理,充分发挥党