论文部分内容阅读
中图分类号:K826.16 文献标识码:A 文章编号:
1 概述
1.1 溢洪道水力计算
溢洪道水力计算是水库工程设计中的重要内容之一,分为上游明渠段和下游陡坡段。上游明渠段按明渠均匀流计算正常水深,下游陡坡段随着泄洪槽底比降及底宽的变化,通常按断面能量守恒来试算水深,试算工作量较大。本文通过Word程序内置宏语言VBA编制的矩形溢洪道水深计算程序可轻松解决试算工作量大的麻烦,为溢洪道设计方案选型提供了有力的计算工具,计算准确且大大提高工作效率。程序在安装Word2000以上版本的电脑上即可运行,利用Word程序内置宏语言VBA执行程序,在将工程设计数据及溢洪道几何尺寸数据输入后,点击“水力计算”命令按钮,可计算出溢洪道明渠段及各陡坡段(共设5段陡坡)水深、流速、掺气水深等数据,再点击“文本输出”命令按钮可输出溢洪道水深计算的文本及水面线计算表。
关键词:word VBA编制溢洪道 计算程序
1.2 VBA简介
VBA(Visual Basic For Application)是微软公司Office办公软件中内置的宏语言,利用该语言可扩展Word、Excel等程序功能,創建专业程序工具。Word VBA的打开是在Word程序中点击下拉菜单“工具”→“宏”→“Visual Basic编辑器”。若要执行已创建的宏,首先需将下拉菜单“工具”→“宏”→“安全性”设为中或低,确定后关闭Word程序然后启动,再点击下拉菜单“工具”→“宏”→“宏…”,选取所要运行的宏名,点击“运行”命令按钮,即可运行所创建的宏。
2 程序编制
2.1 创建程序界面
打开Word程序,点击下拉菜单“工具”→“宏”→“Visual Basic编辑器”,打开Microsoft Visual Basic文档,点击下拉菜单“插入”→“用户窗体”,出现UserForm窗体及工具箱,点击工具条上“属性窗口”按钮,调出属性窗口。利用工具箱及属性窗口,在UserForm窗体中创建27个标签控件、53个文字框控件、3个框架控件、3个命令按钮控件,创建的程序界面如图1所示。
图1程序界面
创建的主要控件属性见表1。
表1 主要控件属性表
2.2 程序代码编写
①双击用户窗体,进入程序代码编辑器,在“(通用)”中用Private语句声明129个程序变量,数据类型为Single。
②双击命令按钮“水力计算”控件,编写Click事件代码如下:
Private Sub cmdcpu_Click()
t1 = Val(TextBox1.Text)
t2 = Val(TextBox2.Text)
t3 = Val(TextBox3.Text)
t4 = Val(TextBox4.Text)
t5 = Val(TextBox5.Text)
t6 = Val(TextBox6.Text)
t7 = Val(TextBox7.Text)
t8 = Val(TextBox8.Text)
t9 = Val(TextBox9.Text)
t10 = Val(TextBox10.Text)
t11 = Val(TextBox11.Text)
t12 = Val(TextBox12.Text)
t13 = Val(TextBox13.Text)
t14 = Val(TextBox14.Text)
t15 = Val(TextBox15.Text)
t16 = Val(TextBox16.Text)
t17 = Val(TextBox17.Text)
t18 = Val(TextBox18.Text)
t19 = Val(TextBox19.Text)
t20 = Val(TextBox20.Text)
t21 = Val(TextBox21.Text)
t22 = Val(TextBox22.Text)
t23 = Val(TextBox23.Text)
If t4 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
If t5 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
a = 1.05
g = 9.8
If t18 <= 0 Then MsgBox "请正确输入明渠段底宽!", vbExclamation, "警告": Exit Sub
q = t4 / t18
hk = (a * q ^ 2 / g) ^ (1 / 3)
TextBox24.Text = Str(hk)
'计算0-0断面参数及正常水深h0
vk = q / hk
Ek = hk + a * vk ^ 2 / 2 / g
wk = t18 * hk
xk = t18 + 2 * hk
rk = wk / xk
ck = 1 / t5 * rk ^ (1 / 6)
j0 = vk ^ 2 / ck ^ 2 / rk
Dim z0 As Single
For z0 = 1 To 30000
w0 = t18 * z0 / 1000
x0 = t18 + 2 * z0 / 1000
r0 = w0 / x0
c0 = 1 / t5 * r0 ^ (1 / 6)
s0 = (t6 ^ 2 + t12 ^ 2) ^ 0.5
If s0 <= 0 Then MsgBox "请正确输入明渠段水平段长!", vbExclamation, "警告": Exit Sub
i0 = t12 / s0
If Int(w0 * c0 * (r0 * i0) ^ 0.5 * 10 + 5) / 10 = Int(t4 * 10 + 5) / 10 Then Exit For
Next z0
h0 = z0 / 1000
If h0 >= 30 Then MsgBox "h0计算数据溢出错误!", vbExclamation, "警告"
Label30.Caption = "正常水深h0=" + Str(h0) + "m"
'计算1-1断面水力参数
Dim z1 As Single
For z1 = 1 To 30000
If t19 <= 0 Then MsgBox "请正确输入陡坡1底宽!", vbExclamation, "警告": Exit Sub
w1 = t19 * z1 / 1000
v1 = t4 / w1
x1 = t19 + 2 * z1 / 1000
r1 = w1 / x1
c1 = 1 / t5 * r1 ^ (1 / 6)
s1 = (t7 ^ 2 + t13 ^ 2) ^ 0.5
If s1 <= 0 Then MsgBox "请正确输入陡坡1水平段长!", vbExclamation, "警告": Exit Sub
i1 = t13 / s1
E1 = z1 / 1000 + a * v1 ^ 2 / 2 / g
j1 = v1 ^ 2 / c1 ^ 2 / r1
If Int((Ek + i1 * s1) * 10 + 5) / 10 = Int((E1 + (j0 + j1) / 2 * s1) * 10 + 5) / 10 Then Exit For
Next z1
h1 = z1 / 1000
'If h1 >= 30 Then MsgBox "h1計算数据溢出错误!", vbExclamation, "警告": Exit Sub
TextBox25.Text = Str(h1)
(同理,可计算2-2至5-5断面水力参数,计算程序代码略)。
End Sub
③双击命令按钮“文本输出”控件,编写Click事件代码如下:
Private Sub cmdexp_Click()
If t4 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
If t5 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
'计算文本输出
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(4) + "溢洪道水力计算"
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(4) + "一、基本资料"
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(4) + "设计工况下(" + Format(t1) + "年一遇洪水标准)水位:H=" + Format(t2) + "m,泄洪流量" + Format(t4) + "m3/s。"
(此段程序代码略)
'水面线计算表输出
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(35) + "水面线计算表"
插入表格
cmdexp.Enabled = False
End Sub
④双击命令按钮“取消”控件,编写Click事件代码如下:
Private Sub cmdcnl_Click()
Unload frmyhd
End Sub
⑤“插入表格”子程序代码编写如下:
Private Sub 插入表格()
(此段程序代码略)
End Sub
2.3 程序运行结果
程序运行后,先输入设计数据及溢洪道几何尺寸数据,分为明渠段及5个陡坡段的水平段长、底高差、底宽,然后点击“水力计算”命令按钮,即可得计算结果的水深、流速、掺气水深等相关数据,点击“文本输出”按钮,可输出Word计算文本及水面线计算表格,点击“取消”命令按钮,则取消程序计算。
3 结束语
中小型水库除险加固工程中,溢洪道方案设计的水力计算如采用手工计算,每条溢洪道需2天计算时间。若使用本矩形溢洪道水力计算程序计算需时5分钟,且保证了计算的准确性,并可反复改变各段段长、高差、底宽,最后可输出计算文本与表格,大大减少计算时间与劳动强度,显著提高了工作效率。
1 概述
1.1 溢洪道水力计算
溢洪道水力计算是水库工程设计中的重要内容之一,分为上游明渠段和下游陡坡段。上游明渠段按明渠均匀流计算正常水深,下游陡坡段随着泄洪槽底比降及底宽的变化,通常按断面能量守恒来试算水深,试算工作量较大。本文通过Word程序内置宏语言VBA编制的矩形溢洪道水深计算程序可轻松解决试算工作量大的麻烦,为溢洪道设计方案选型提供了有力的计算工具,计算准确且大大提高工作效率。程序在安装Word2000以上版本的电脑上即可运行,利用Word程序内置宏语言VBA执行程序,在将工程设计数据及溢洪道几何尺寸数据输入后,点击“水力计算”命令按钮,可计算出溢洪道明渠段及各陡坡段(共设5段陡坡)水深、流速、掺气水深等数据,再点击“文本输出”命令按钮可输出溢洪道水深计算的文本及水面线计算表。
关键词:word VBA编制溢洪道 计算程序
1.2 VBA简介
VBA(Visual Basic For Application)是微软公司Office办公软件中内置的宏语言,利用该语言可扩展Word、Excel等程序功能,創建专业程序工具。Word VBA的打开是在Word程序中点击下拉菜单“工具”→“宏”→“Visual Basic编辑器”。若要执行已创建的宏,首先需将下拉菜单“工具”→“宏”→“安全性”设为中或低,确定后关闭Word程序然后启动,再点击下拉菜单“工具”→“宏”→“宏…”,选取所要运行的宏名,点击“运行”命令按钮,即可运行所创建的宏。
2 程序编制
2.1 创建程序界面
打开Word程序,点击下拉菜单“工具”→“宏”→“Visual Basic编辑器”,打开Microsoft Visual Basic文档,点击下拉菜单“插入”→“用户窗体”,出现UserForm窗体及工具箱,点击工具条上“属性窗口”按钮,调出属性窗口。利用工具箱及属性窗口,在UserForm窗体中创建27个标签控件、53个文字框控件、3个框架控件、3个命令按钮控件,创建的程序界面如图1所示。
图1程序界面
创建的主要控件属性见表1。
表1 主要控件属性表
2.2 程序代码编写
①双击用户窗体,进入程序代码编辑器,在“(通用)”中用Private语句声明129个程序变量,数据类型为Single。
②双击命令按钮“水力计算”控件,编写Click事件代码如下:
Private Sub cmdcpu_Click()
t1 = Val(TextBox1.Text)
t2 = Val(TextBox2.Text)
t3 = Val(TextBox3.Text)
t4 = Val(TextBox4.Text)
t5 = Val(TextBox5.Text)
t6 = Val(TextBox6.Text)
t7 = Val(TextBox7.Text)
t8 = Val(TextBox8.Text)
t9 = Val(TextBox9.Text)
t10 = Val(TextBox10.Text)
t11 = Val(TextBox11.Text)
t12 = Val(TextBox12.Text)
t13 = Val(TextBox13.Text)
t14 = Val(TextBox14.Text)
t15 = Val(TextBox15.Text)
t16 = Val(TextBox16.Text)
t17 = Val(TextBox17.Text)
t18 = Val(TextBox18.Text)
t19 = Val(TextBox19.Text)
t20 = Val(TextBox20.Text)
t21 = Val(TextBox21.Text)
t22 = Val(TextBox22.Text)
t23 = Val(TextBox23.Text)
If t4 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
If t5 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
a = 1.05
g = 9.8
If t18 <= 0 Then MsgBox "请正确输入明渠段底宽!", vbExclamation, "警告": Exit Sub
q = t4 / t18
hk = (a * q ^ 2 / g) ^ (1 / 3)
TextBox24.Text = Str(hk)
'计算0-0断面参数及正常水深h0
vk = q / hk
Ek = hk + a * vk ^ 2 / 2 / g
wk = t18 * hk
xk = t18 + 2 * hk
rk = wk / xk
ck = 1 / t5 * rk ^ (1 / 6)
j0 = vk ^ 2 / ck ^ 2 / rk
Dim z0 As Single
For z0 = 1 To 30000
w0 = t18 * z0 / 1000
x0 = t18 + 2 * z0 / 1000
r0 = w0 / x0
c0 = 1 / t5 * r0 ^ (1 / 6)
s0 = (t6 ^ 2 + t12 ^ 2) ^ 0.5
If s0 <= 0 Then MsgBox "请正确输入明渠段水平段长!", vbExclamation, "警告": Exit Sub
i0 = t12 / s0
If Int(w0 * c0 * (r0 * i0) ^ 0.5 * 10 + 5) / 10 = Int(t4 * 10 + 5) / 10 Then Exit For
Next z0
h0 = z0 / 1000
If h0 >= 30 Then MsgBox "h0计算数据溢出错误!", vbExclamation, "警告"
Label30.Caption = "正常水深h0=" + Str(h0) + "m"
'计算1-1断面水力参数
Dim z1 As Single
For z1 = 1 To 30000
If t19 <= 0 Then MsgBox "请正确输入陡坡1底宽!", vbExclamation, "警告": Exit Sub
w1 = t19 * z1 / 1000
v1 = t4 / w1
x1 = t19 + 2 * z1 / 1000
r1 = w1 / x1
c1 = 1 / t5 * r1 ^ (1 / 6)
s1 = (t7 ^ 2 + t13 ^ 2) ^ 0.5
If s1 <= 0 Then MsgBox "请正确输入陡坡1水平段长!", vbExclamation, "警告": Exit Sub
i1 = t13 / s1
E1 = z1 / 1000 + a * v1 ^ 2 / 2 / g
j1 = v1 ^ 2 / c1 ^ 2 / r1
If Int((Ek + i1 * s1) * 10 + 5) / 10 = Int((E1 + (j0 + j1) / 2 * s1) * 10 + 5) / 10 Then Exit For
Next z1
h1 = z1 / 1000
'If h1 >= 30 Then MsgBox "h1計算数据溢出错误!", vbExclamation, "警告": Exit Sub
TextBox25.Text = Str(h1)
(同理,可计算2-2至5-5断面水力参数,计算程序代码略)。
End Sub
③双击命令按钮“文本输出”控件,编写Click事件代码如下:
Private Sub cmdexp_Click()
If t4 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
If t5 <= 0 Then MsgBox "计算数据必须输入后再点击计算按钮!", vbExclamation, "警告": Exit Sub
'计算文本输出
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(4) + "溢洪道水力计算"
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(4) + "一、基本资料"
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(4) + "设计工况下(" + Format(t1) + "年一遇洪水标准)水位:H=" + Format(t2) + "m,泄洪流量" + Format(t4) + "m3/s。"
(此段程序代码略)
'水面线计算表输出
ActiveDocument.Content.InsertAfter Text:=Chr(10) + Space(35) + "水面线计算表"
插入表格
cmdexp.Enabled = False
End Sub
④双击命令按钮“取消”控件,编写Click事件代码如下:
Private Sub cmdcnl_Click()
Unload frmyhd
End Sub
⑤“插入表格”子程序代码编写如下:
Private Sub 插入表格()
(此段程序代码略)
End Sub
2.3 程序运行结果
程序运行后,先输入设计数据及溢洪道几何尺寸数据,分为明渠段及5个陡坡段的水平段长、底高差、底宽,然后点击“水力计算”命令按钮,即可得计算结果的水深、流速、掺气水深等相关数据,点击“文本输出”按钮,可输出Word计算文本及水面线计算表格,点击“取消”命令按钮,则取消程序计算。
3 结束语
中小型水库除险加固工程中,溢洪道方案设计的水力计算如采用手工计算,每条溢洪道需2天计算时间。若使用本矩形溢洪道水力计算程序计算需时5分钟,且保证了计算的准确性,并可反复改变各段段长、高差、底宽,最后可输出计算文本与表格,大大减少计算时间与劳动强度,显著提高了工作效率。