VBA在拱坝三维自动绘图程序中的应用

2008-04-09 04:14:39来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

摘要:由于拱坝存在经济、合理和充分利用混凝土抗压强度,节约钢材等优点,在地质地形条件允许的前提下,应用越来越广泛,特别是双曲拱坝,受力条件好,而双曲拱坝计算工作量大,作为设计单位不可能提供很细致的诸如弧长、拱厚、面积、体积等坐标和参数,这就必须利用计算机语言编程进行计算,进行计算的计算机语言有很多种,而用集成在AutoCAD中的 VB程序编程实现自动绘制双曲拱坝具有数形结合、方便、直观等优点。

关键词:拱坝 程序 数形结合

一、VBA简介

1、VBA是AutoCAD Visual Basic for Application的简写,VBA 通过 AutoCAD ActiveX Automation 接口将消息发送到 AutoCAD。 AutoCAD VBA 允许 VBA 环境与 AutoCAD 同时运行,并通过 ActiveX Automation 接口对 AutoCAD 进行编程控制。 AutoCAD、ActiveX Automation 和 VBA 的这种结合方式不仅为操作 AutoCAD 对象,而且为向其他应用程序发送或检索数据提供了功能极为强大的接口。VBA 是一个面向对象的编程环境,可提供类似 Visual Basic 6 (VB) 的丰富开发功能。 VBA 和 VB 的主要差别是 VBA 和 AutoCAD 在同一进程空间中运行,提供的是具有 AutoCAD 智能的、非常快速的编程环境。实际上就是在Visual Basic中把AutoCAD作为像文本框、图像框等对象一样调用,只是先要将变量定义为AutoCAD有关属性。如:
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double

2、进入VBA的方法简单,在AutoCAD命令行输入:VBAMAN即可进入界面,然后新建一个工程,再点击编辑器按钮即可进入编程界面。

3、VBA的编程语法规则类似于Visual Basic语言,也可在Visual Basic中编好程序,再略加修改即可成为VBA的程序。

4、VBA的程序编写调试好后,利用VBARUN命令生成宏,下次要调用时在AutoCAD命令行输入:VBALOAD加载该文件启用宏,然后在VBA窗口中运行宏,即可完成自动绘图工作。

二、峡口电站双曲拱坝基本特征参数及方程

1、峡口电站双曲拱坝为抛物线型双曲拱坝,基本方程如下:

局部坐标系原点的大地坐标:Xd=877019.07,Yd=511513.24, X轴平行水流,正北向到Y轴正向为顺时针118。83965637°
纵坐标:Y = H -183
拱冠梁厚:TC = 0.0000107335 * Y ^ 3 - 0.00266013 * Y ^ 2 0.018677 * Y 16
拱冠梁上游曲线:ZU = -0.0000160053 * Y ^ 3 0.00616417 * Y ^ 2 - 0.286869 * Y - 0.000000260181
拱冠梁中心曲线:ZC = ZU TC / 2
拱冠梁下游曲线:ZD = ZU TC
拱冠梁左拱圈半径:RCL = -0.0000346075 * Y ^ 3 0.0104832 * Y ^ 2 - 0.190765 * Y 43.6974
拱冠梁右拱圈半径:RCR = -0.0000565776 * Y ^ 3 0.0115757 * Y ^ 2 - 0.125049 * Y 44.3004
左拱端拱厚:TAL = -0.00000546155 * Y ^ 3 - 0.000513576 * Y ^ 2 - 0.0630213 * Y 17.3678
右拱端拱厚:TAR = -0.000000557906 * Y ^ 3 - 0.00166013 * Y ^ 2 0.0137281 * Y 16.4431
任意角度处的拱厚:T= TC (TA - TC) * (C / ALPHA) ^ 1.7948
拱轴线横坐标:X= RC * Tan(C * 3.1415926 / 180)
拱轴线纵坐标:Y= ZC 0.5 * RC * (Tan(C * 3.1415926 / 180)) ^ 2

2、横缝各直线方程的一般表达式为A*X B*Y C=0,共10条横缝分成11个坝段,输入常量A、B、C后,调用FengFeng子函数求出某一高程各分缝对应的角度值,如下:

K1=180/3.1415926*FengFeng(3.0096098016331, -2.63468880113214, 331.678023696261, ZC, RC)
K2=180/3.1415926*FengFeng(3.25641545921098, -2.32275508437306, 267.936570943845, ZC, RC)
K3=180/3.1415926*FengFeng(3.53500312718097, -1.87168469675817, 198.414675230696, ZC, RC)
K4=180/3.1415926*FengFeng(3.80306162842316, -1.22102171264123, 120.5868207, ZC, RC)
K5=180/3.1415926*FengFeng(3.97261928283842, -0.389506309322314, 36.97894121, ZC, RC)
KC = 0(为拱冠梁处)
K6=180/3.1415926*FengFeng(3.98705082532251, 0.390937561896863, -37.3627768568153, ZC, RC)
K7=180/3.1415926*FengFeng(3.75985125539591, 1.20716611767421, -120.022525108203, ZC, RC)
K8=180/3.1415926*FengFeng(3.55150513828266, 1.85666274372488, -197.628568273104, ZC, RC)
K9=180/3.1415926*FengFeng(3.41489235090668, 2.39114698511548, -275.903027902181, ZC, RC)
K10=180/3.1415926*FengFeng(3.21250286023133, 2.73405251931399, -341.843563455373, ZC, RC)

三、程序过程

1、先编写两个有用的子程序和子函数

(1)、求某一确定高程H上横缝直线对应的中心角的子函数FengFeng。
要知道,确定某一高程H后,某坝块的左右横缝直线的中心角值是唯一确定的。这就考虑要建立一个求某一高程H上横缝直线的中心角的子函数。根据设计给出的坝顶横缝直线方程A*X B*Y C=0,
与拱轴线的坐标参数方程:X= RC * Tan(C * 3.1415926 / 180)
Y= ZC 0.5 * RC * (Tan(C * 3.1415926 / 180)) ^ 2
联立,即可解得φ=arctg[(-A/B)-sqrt((-A/B)^2-2*Zc/Rc-2*C/B/Rc],
即φ是H、A、B、C、ZC 和 RC的函数。

(2)、绘制某一确定高程H上两横缝之间的拱圈子程序GongquanDraw
A、程序逻辑分析 图一:H高程某坝块拱圈示意图
先假设几个符号变量, H为某一确定高程,用α1、α2分别表示左右横缝对应的中心角,M为一个常数变量。这里要用到微分原理,将α1、α2对应横缝之间的弧长以M段短小的直线弦长代替,为减少误差,可以将M设置为40、50或60甚至更大,如图一。利用特征方程求出上、下游弧上各微分点的二维坐标值,再分别以上、下游微分点画出上游多段线弧UpPolyline和下游多段线弧DownPolyline,再把上、下游多段线弧合并成一条多段线Pline,即可利用UpPolyline和DownPolyline的Length属性和Pline的Area属性求出上、下游弧长及坝块面积。自动绘制图形后也可用尺寸标注等查询相关属性,也可以编写在图形中写入以属性值为字符串的文本的程序,在指定位置显示这些属性值文本。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:项目管理在启动阶段的工作意义

下一篇:峡口电站拱坝施工技术