《边坡变形监测曲线.ppt》由会员分享,可在线阅读,更多相关《边坡变形监测曲线.ppt(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、边坡变形监测曲线自动成图系统的开发项目的提出:近10多年来,我国因崩塌、滑坡、泥石流而死亡的人数达近万人,每年因滑坡造成的损失高达250400亿元。另外,高层建筑、大坝、桥梁等的变形也给人民的生命财产带来严重的威胁。对滑坡的变化趋势进行预测是减灾防灾的基础,地质勘察和分析是滑坡评价预测的基本方法和手段,变形位移监测作为辅助性手段,在分析滑坡体结构、成因,评价预测滑坡稳定性及发展趋势等方面具有重要意义。边坡位移监测曲线能够更直观的反映边坡的发展和变形规律,而传统的绘图方式精度差、效率低。为了提高绘图的精度及效率,我们基于内嵌于AutoCAD的VBA语言二次开发出了位移监测曲线自动生成系统。只要把
2、变监测数据按一定的格式输入到外部数据文件中,利用该系统就可自动生成曲线,大大提高了监测数据的处理速度,提高了绘图精度及质量。设计原理与基础:设计原理与基础:VisualBasicforApplicationVisualBasicforApplication(VBAVBA)是)是MicrosoftMicrosoft面向最终用面向最终用户的应用软件编程语言。它最早出现于户的应用软件编程语言。它最早出现于MicrosoftMicrosoft的的ExcelExcel和和ProjectProject中,如今中,如今VBAVBA已成为已成为VBVB和所有和所有OfficeOffice产品的组件。常产品的组
3、件。常用的绘图软件用的绘图软件AutoCADAutoCAD也已支持也已支持VBAVBA作为二次开发工具。作为二次开发工具。VBAVBA最大特点和最大优点是利用面向对象(最大特点和最大优点是利用面向对象(OOPOOP)的)的ActiveXActiveXAutomationAutomation技术,使语言的引擎在技术上与开发环境分离。技术,使语言的引擎在技术上与开发环境分离。它的功能在很大程度上依赖于它的客户显露的它的功能在很大程度上依赖于它的客户显露的AutomationAutomation接接口。同时,由于口。同时,由于VBAVBA是基于是基于ActiveXAutomationActiveXA
4、utomation技术,它可以技术,它可以使用任何使用任何AutomationAutomation技术的应用程序共同工作。技术的应用程序共同工作。基于基于AutoCADAutoCAD的的VBAVBA应用程序就是高级程序语言的计算功能应用程序就是高级程序语言的计算功能与与AutoCADAutoCAD的绘图功能结合,使用的绘图功能结合,使用VBAVBA程序语句来控制对程序语句来控制对AutoCADAutoCAD图形的操作。图形的操作。VBAVBA作为一个集成的开发环境,它提供了高质量的用户化编作为一个集成的开发环境,它提供了高质量的用户化编程能力,能够使程能力,能够使AutoCADAutoCAD数
5、据与其它的数据与其它的VBAVBA应用程序,如应用程序,如MicrosoftExcelMicrosoftExcel软件,直接共享,实现无缝连接,交换数据软件,直接共享,实现无缝连接,交换数据非常方便。非常方便。在在MicrosoftExcelMicrosoftExcel中,与表对应的对象是工作表(中,与表对应的对象是工作表(SheetSheet或或WorksheetWorksheet),与每一个表格方格对应的对象是单元格区),与每一个表格方格对应的对象是单元格区域(域(rangerange),它可以仅包括一个单元格(),它可以仅包括一个单元格(cellcell),也可以),也可以由多个单元格合
6、并而成。工作表对象中的由多个单元格合并而成。工作表对象中的cellscells属性,在单属性,在单元格的选择方面可以达到与元格的选择方面可以达到与rangerange相同的效果,它是以行相同的效果,它是以行(rowrow)和列()和列(golgol)作为参数的,对于行和列的选择可以)作为参数的,对于行和列的选择可以采用变量的形式。在本例中,可设定工作表采用变量的形式。在本例中,可设定工作表(WorksheetWorksheet)的每一行第一列()的每一行第一列(cellscells(i,1i,1)为时间累)为时间累积量,每一行第二列(积量,每一行第二列(cellscells(i,2i,2)为对
7、应的水平位移累)为对应的水平位移累积量,每一行第三列(积量,每一行第三列(cellscells(i,3i,3)为对应的垂直位移累)为对应的垂直位移累积量。积量。在在AutoCADAutoCAD中,没有与表对应的对象,但可以根据表中时中,没有与表对应的对象,但可以根据表中时间间隔定义水平距离,根据水平与垂直累积量定义垂直距间间隔定义水平距离,根据水平与垂直累积量定义垂直距离,将表中数据理解为线条与文字对象的集合。这样,通离,将表中数据理解为线条与文字对象的集合。这样,通过读取过读取MicrosoftExcelMicrosoftExcel文件中的最小对象文件中的最小对象单元格区域单元格区域(cel
8、lscells(i,ji,j)的主要信息,利用)的主要信息,利用VBAVBA建立建立AutoCADAutoCAD与与ExcelExcel的通信,然后在的通信,然后在AutoCADAutoCAD文件里指定的图层、位置画文件里指定的图层、位置画线条,书写文字。通过循环,遍历所有单元格区域线条,书写文字。通过循环,遍历所有单元格区域(cellscells(i,ji,j),边读边写,最终完成边坡位移曲线的绘),边读边写,最终完成边坡位移曲线的绘制。制。工作过程:1.1.在在AutoCADAutoCAD中创建中创建ExcelExcel应用程序应用程序 要编写存取要编写存取ExcelExcel的应用程序,
9、必须通过的应用程序,必须通过VBAVBA将将ExcelExcel中的对象能够让中的对象能够让用户使用,这就需要参考用户使用,这就需要参考 ExcelExcel对象的数据库。其步骤如下:对象的数据库。其步骤如下:(1 1)打开打开AutoCADAutoCAD的的VBAVBA编辑器(命令:编辑器(命令:VBAIDEVBAIDE););(2 2)选择选择“工具工具”“引用引用”项,在弹出的项,在弹出的“引用引用”对话对话框的框的“可使用的引用可使用的引用”列表框内,选择列表框内,选择“MicrosoftExcel11.0MicrosoftExcel11.0ObjectLibrary”ObjectLi
10、brary”项;项;(33)单击单击“确定确定”按钮;按钮;(4 4)接下来使用下列代码可创建完整的应用程序对象实例:接下来使用下列代码可创建完整的应用程序对象实例:DimExcelAsDimExcelAsExcel.ApplicationExcel.Application 激活要与之通信的激活要与之通信的ExcelExcel应用程序应用程序 OnErrorResumeNextOnErrorResumeNext SetExcel=SetExcel=GetObjectGetObject(,(,Excel.ApplicationExcel.Application)IfErr0ThenIfErr0T
11、hen SetExcel=SetExcel=CreateObject(Excel.ApplicationCreateObject(Excel.Application)EndIfEndIf2.读入坐标点画位移曲线(1 1)设定工作表(设定工作表(WorksheetWorksheet)的每一行第一列()的每一行第一列(cellscells(i,1i,1)为时间,每一行第二列()为时间,每一行第二列(cellscells(i,2i,2)为水平位移累积量,每一行第三列(为水平位移累积量,每一行第三列(cellscells(i,3i,3)为对应的垂直位移累积量。由于时间的值远小于位移)为对应的垂直位移累
12、积量。由于时间的值远小于位移值,因此将时间值乘以值,因此将时间值乘以1010。(2 2)以(以(0 0,0 0,0 0)为原点,以时间累积量乘以)为原点,以时间累积量乘以1010为为x x坐标,对应的水平或垂直累积量为坐标,对应的水平或垂直累积量为y y坐标,坐标,0 0为为z z坐标,分别绘制出水平移动累计图,与垂直移动累计图。进而完成边坡位移图形的绘制。坐标,分别绘制出水平移动累计图,与垂直移动累计图。进而完成边坡位移图形的绘制。(3 3)下述代码可读入下述代码可读入ExcelExcel数据信息画位移曲线数据信息画位移曲线DimiAsIntegerDimiAsIntegerDimlineo
13、bjAsAcadLineDimlineobjAsAcadLineDimsPt(0To2)AsDoubleDimsPt(0To2)AsDoubleDimePt(0To2)AsDoubleDimePt(0To2)AsDouble 读入坐标画位移曲线读入坐标画位移曲线Worksheets(“sheet1”).ActivateWorksheets(“sheet1”).Activatei=2i=2由第二行起由第二行起DoUntilcells(i,1).Value=DoUntilcells(i,1).Value=Ifcells(i+1,1)=0ThenIfcells(i+1,1)=0ThenExitDoE
14、xitDoEndIfEndIfsPnt(0)=cells(i,1).ValuesPnt(0)=cells(i,1).ValuesPnt(1)=10*cells(i,2).ValuesPnt(1)=10*cells(i,2).ValuesPnt(2)=0sPnt(2)=0ePnt(0)=cells(i+1,1).ValueePnt(0)=cells(i+1,1).ValueePnt(1)=10*cells(i+1,2).ValueePnt(1)=10*cells(i+1,2).ValueePnt(2)=0ePnt(2)=0Setlineobj=ThisDrawing.ModelSpace.Add
15、Line(sPnt,ePnt)Setlineobj=ThisDrawing.ModelSpace.AddLine(sPnt,ePnt)i=i+1i=i+1LoopLoop演示结果:系统的推广:运用此程序可以精确而简便的绘制边坡位移曲线,运用此程序可以精确而简便的绘制边坡位移曲线,避免了大量的重复劳动,节省了人力物力。避免了大量的重复劳动,节省了人力物力。边坡位移曲线绘制中,经常遇到许多类似的大量边坡位移曲线绘制中,经常遇到许多类似的大量的、重复的、有逻辑性的操作,只要合理利用的、重复的、有逻辑性的操作,只要合理利用VBAVBA,发挥其强大的功能,实现,发挥其强大的功能,实现AutoCADAutoCAD与与ExcelExcel应用程序的无缝连接,快速交换数据,就可以在应用程序的无缝连接,快速交换数据,就可以在短时间内完成所需的设计工作,达到事半功倍的短时间内完成所需的设计工作,达到事半功倍的效果。效果。
限制150内