• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 读后感 > 正文

    基于SQL、VB、AutoCAD,VBA的水库库容计算(陈亮,史长莹,杨浩)

    时间:2021-01-14 08:07:31 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

     



    摘要:水库库容计算是水库运行管理的核心工作之一。运用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

        
    相关热词搜索: 库容 水库 计算 AUTOCAD SQL

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章