机械振动设计计算与VB编程实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 弹出式菜单

弹出式菜单是一种浮动式的菜单。它可以用户单击鼠标右键来激活,根据右键指针的位置,调整菜单的显示位置。

显示弹出式菜单可以使用PopupMenu方法。

形式:[<窗体名>.] PopupMenu<菜单名>[,Flags[,x[,y[,BoldCommand]]]]

其中,<窗体名>如若省略,将打开当前窗体的菜单。

● <菜单名>是必需项,是通过菜单编辑器设计出的菜单名称(Name)。

● Flags参数为一些常量数值的设置,包含位置及行为两个指定值。

位置常数:

0(默认):菜单的左上角位于 x

4:菜单上框中央角位于 x

8:菜单的右上角位于 x

行为常数:

0:菜单命令只接收右键单击

2:菜单命令可接收左、右键单击

数值计算程序常用菜单,有如下一种下拉菜单,如图2.8所示。

图2.8 数值计算程序常用的菜单

菜单栏中只有两个菜单标题:“文件(F)”和“项目(R)”,在标题“文件”中有两个菜单命令“打印计算(P)”和“退出(X)”,其快捷键分别为Ctrl+P和Ctrl+X,如图2.9所示。

图2.9 在标题“文件(F)”中有两个菜单命令

在标题“项目(R)”中只有一个菜单命令“项目计算(p)”,其快捷键为Ctrl+N,如图2.10所示。

图2.10 在标题“项目(R)”中只有一个菜单命令

以上这些都是通过Visual Basic的菜单编辑器来完成的,其具体操作如2.1节下拉式菜单中所介绍的进行,进行到最后菜单编辑器来完成的情况如图 2.11所示。

图2.11 菜单编辑器的完成情况

在已建立的如图2.8数值计算程序常用的菜单上,单击菜单命令,则在代码编辑窗口中出现如下事件过程名:Private Sub项目计算_Click( )。

End Sub

在这事件过程名中,即可编写任何数值计算程序,无疑这要比先前介绍的两种最简单的界面要好用。现在就在这事件过程名中,编写一个计算程序。

例2.1 用欧拉梁振动频率公式计算简支工字梁固有振动频率(如图2.12所示)

图2.12 梁的模态图

其为10号工字钢梁:钢的弹性模量E=187GPa,钢剪切模量为79GPa,钢密度ρ = 8.8g/cm3,10号工字钢绕x轴惯性矩ix = 245cm4,10号工字钢截面积amj = 14.345cm2。两工字钢梁的长度为5m。计算梁的前5阶固有振动频率。

利用菜单编辑器编制一个数值计算程序常用菜单的界面,并在此菜单下进行简支工字梁固有振动频率的计算程序。

简支梁的自由振动频率为

式中,j为正弦或余弦半波数(j=1,2,…);为梁长;E为弹性模量;I为惯性矩; 为体密度;A 为截面积。此式又称为欧拉梁振动频率公式。

梁固有频率的计算程序编制及其程序代码:

Private Sub 项目计算_Click()
'用欧拉公式求梁前5阶固有频率2014.1.21
 Dim ix As Single                          '显式声明变量q为单精度
 ω = ω!                                   '隐式声明变量ω为单精度
 π = 3.1415926
 la = 5                                        '梁长5m
 eml = 187 * 10 ^ 9                          '钢弹性模量E=187GPa,换算到Pa
 gml = 79 * 10 ^ 9                           '钢剪切模量79GPa,换算到Pa
 ix = 2.45 * 10 ^ -5                         '10号工字钢绕x轴惯性矩245cm^4换算到 m^4
 amj = 14.345 * 10 ^ -4                     '10号工字钢截面积cm^2换算到m^2
 ρ = 8.8 * 10 ^ -3 * 10 ^ 6                '钢体密度g/cm^3,g换算到kg/m^3
 β = Sqr(eml * ix / (ρ * amj))             '影响系数
 r = Sqr(ix / amj)                           '影响系数
 k = 1                                          '截面梁修正系数
 Print "   10号工字钢梁前5阶固有频率计算"
 Print "   梁长="; la
 Print
 For na1 = 1 To 5
 j = na1
 ω01 = ((j * π) / la) ^ 2                   '欧拉公式的ω01
 ω02 = Sqr((eml * ix) / (ρ * amj))        '欧拉公式的ω02
 ω = ω01 * ω02
 Print "   前"; j; " 阶固有频率ω="; ω; " rad/s"
 Next na1
End Sub
Private Sub 退出_Click()
End
End Sub

单击菜单命令,在具有菜单界面的窗体上即出现该程序的计算结果,如图2.13所示。

图2.13 程序的计算结果