哈工大材料力学上机编程报告.docx
- 文档编号:5949864
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:17
- 大小:188.71KB
哈工大材料力学上机编程报告.docx
《哈工大材料力学上机编程报告.docx》由会员分享,可在线阅读,更多相关《哈工大材料力学上机编程报告.docx(17页珍藏版)》请在冰豆网上搜索。
哈工大材料力学上机编程报告
材料力学电算实验
平面应力状态分析及简支梁挠度计算
院系:
机电工程学院
班级:
设计者:
学号:
指导教师:
软件要求:
VisualBasic6.0
设计时间:
2013年6月13日
一.概述:
本程序使用MicrosoftVisualBasic编写,分为两个部分。
第一部分是平面应力状态分析,由输入平面应力状态,实现了平面应力状态分析,可输出主应力,最大剪应力,输出应力圆图形,方位角
斜截面上的应力及主方向角。
能进行简单计算平面应力状态各应力及角度的大小,并利用平面应力圆来求解主应力和切应力。
第二部分是简支梁的转角挠度计算,由输入的简支梁的受力情况和各种力和力矩的位置,可进行简支梁转角和挠度的计算。
二、所用到的相关公式:
1.平面应力状态:
σmax
=
σmin=
τmax=
τmin=
(主平面的方位角)
tan2
=
(主切平面的方位角)
2.简支梁转角挠度计算
用到了简支梁受集中力、均布载荷和集中力偶情况下的挠曲线方程。
三、VB程序源代码
1.主界面
PrivateSubCommand1_Click()(与平面应力状态分析窗口连接)
Form2.Show
Form1.Hide
EndSub
PrivateSubCommand2_Click()(与简支梁转角挠度计算窗口连接)
Form3.Show
Form1.Hide
EndSub
PrivateSubForm_Load()(保证开始时只有主界面出现,隐藏其它窗口)
Form1.Show
Form2.Hide
Form3.Hide
EndSub
2.平面应力分析
PrivateSubComman()(定义变量)
DimXAsSingle,YAsSingle,WAsSingle,ZAsSingle,AAsSingle,BAsSingle
EndSub
PrivateSubCommand1_Click()
DimXAsSingle,YAsSingle,WAsSingle,ZAsSingle,AAsSingle,BAsSingle,CAsDouble
X=Val(Text1.Text)
Y=Val(Text2.Text)
W=Val(Text3.Text)
Z=Val(Text4.Text)
C=Sqr(((X-Y)/2)^2+W^2)
A=(X+Y)/2+C(主应力计算)
B=(X+Y)/2-C
IfA>OThen(比较各主应力大小)
Text11.Text=A
Else
Text12.Text=A
Text11.Text=0
EndIf
IfB>0Then
Text12.Text=B
Text13.Text=0
Else
Text13.Text=B
Text12.Text=0
EndIf
Text14.Text=C
Text15.Text=(X+Y)/2+0.5*(X-Y)*Cos(2*Z*3.1415/180)+W*Sin(2*Z*3.1415/180)(计算任意角度的正应力)
Text16.Text=-0.5*(X-Y)*Sin(2*Z*3.14159/180)+W*Cos(2*Z*3.1415/180)(计算任意角度的切应力)
IfX=YThen
Text17.Text=45
Else
Text17.Text=0.5*Atn(2*W/(X-Y))*180/3.1415(主应力角)
EndIf
Text18.Text=Text17.Text+45(切应力角)
EndSub
PrivateSubCommand2_Click()(回主目录)
Form1.Show
Form2.Hide
EndSub
PrivateSubCommand4_Click()(测绘应力圆)
DimCAsSingle,RAsSingle,lAsSingle,XAsSingle,YAsSingle,WAsSingle,ZAsSingle,AAsSingle,BAsSingle,DAsSingle,EAsSingle
X=Val(Text1.Text)
Y=Val(Text2.Text)
W=Val(Text3.Text)
Z=Val(Text4.Text)
C=Sqr(((X-Y)/2)^2+W^2)
A=(X+Y)/2+C
B=(X+Y)/2-C
IfA<0Then
D=-1*A
Else
D=A
EndIf
IfB<0Then
E=-1*B
Else
E=B
EndIf
l=D+E
Picture1.Scale(-l,-l)-(l,l)(建立坐标系)
Picture1.Line(-l,0)-(l,0)
Picture1.Line(0,-l)-(0,l)
Picture1.CurrentX=0
Picture1.CurrentY=0
Picture1.Print"O(0,0)"
Picture1.DrawWidth=2
C=(Val(Text1.Text)+Val(Text2.Text))/2
R=Sqr(((Val(Text1.Text)-Val(Text2.Text))^2)/4+Val(Text3.Text)^2)
Picture1.Circle(C,0),R(画应力圆)
Picture1.Print"C(";C;",0)"
A=(X+Y)/2+Sqr(((X-Y)/2)^2+W^2)
B=(X+Y)/2-Sqr(((X-Y)/2)^2+W^2)
Text14.Text=Sqr(((X-Y)/2)^2+W^2)
Text15.Text=(X+Y)/2+0.5*(X-Y)*Cos(2*Z*3.1415/180)+W*Sin(2*Z*3.1415/180)
Text16.Text=-0.5*(X-Y)*Sin(2*Z*3.14159/180)+W*Cos(2*Z*3.1415/180)
IfX=YThen
Text17.Text=45
Else
Text17.Text=0.5*Atn(2*W/(X-Y))*180/3.1415
EndIf
Text18.Text=Text17.Text+90
Picture1.Print"σmin=";B;""
Picture1.Print"σmax=";A;""
Picture1.Print"τmax=";Text14.Text;""
Picture1.Print"σα=";Text15.Text;""
Picture1.Print"τα=";Text16.Text;"";
Picture1.Print"ασ1=";Text17.Text;""
Picture1.Print"ασ2=";Text18.Text;""
EndSub
3.简支梁转角挠度计算
PrivateSubcmdOk_Click()
l=Val(tetL.Text)/1000(单位换算)
E=Val(tetE.Text)*10^9
i=Val(tetI.Text)/10^12
X=Val(tetX.Text)/1000
Ifl<0OrX<0OrX>lOri<=0OrE<=0Then(输入检验)
MsgBox"您的输入参数有误,请重新输入!
"
ExitSub
EndIf
Module1.X=X
CallModule1.fmqin
zi=Module1.zj
nd=Module1.nd
zj=zj*180/3.1415926'转化成角度值
nd=nd*1000
ForX=0TolStepl/1000
i=i+1
Module1.X=X
CallModule1.fmqin
zjM(i)=Module1.zj
ndM(i)=Module1.nd
zjM(i)=zjM(i)*180/3.1415926'转化成角度值
IfzjM(i)>zjMMThen
zjMM=zjM(i)
EndIf
IfndM(i)>ndMMThen
ndMM=ndM(i)
EndIf
NextX
tetZJm.Text=zjMM
tetNDm.Text=ndMM
IfAbs(zj)<1Then
Ifzj<0Then
tetZj.Text="-0"&(-Round(zj,4))
Else
tetZj.Text="0"&zj
EndIf
Else
tetZj.Text=Round(zj,4)'四舍五入取小数点后两位
EndIf
IfAbs(nd)<1Then
Ifnd<0Then
tetNd.Text="-0"&(-Round(nd,4))
Else
tetNd.Text="0"&(Round(nd,4))
EndIf
Else
tetNd.Text=Round(nd,4)
EndIf
EndSub
PrivateSubcmdSecond_Click()'点重新输入时清空所有参数文本框
tetL.Text=""
tetE.Text=""
tetI.Text=""
cboF.Text="请选择集中力F,输入后点确定!
"
cboF.Text="请选择集中力偶M,输入后点确定!
"
cboF.Text="请选择均布力Q,输入后点确定!
"
tetFn.Text=""
tetFnx.Text=""
tetMn.Text=""
tetMnx.Text=""
tetQn.Text=""
tetC.Text=""
tetD.Text=""
tetX.Text=""
tetZj.Text=""
tetNd.Text=""
EndSub
PrivateSubcmdUload_Click()'点取消时关闭窗口
UnloadMe
EndSub
PrivateSubCommand1_Click()
IfVal(tetFnx.Text)>Val(tetL.Text)Then
MsgBox"您输入的集中力作用位置不正确,请重新输入!
"
ExitSub
EndIf
SelectCasecboF.Text
Case"F1"
fn(1,0)=Val(tetFn.Text)
fn(1,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F2"
fn(2,0)=Val(tetFn.Text)
fn(2,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F3"
fn(3,0)=Val(tetFn.Text)
fn(3,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F4"
fn(4,0)=Val(tetFn.Text)
fn(4,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F5"
fn(5,0)=Val(tetFn.Text)
fn(5,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F6"
fn(6,0)=Val(tetFn.Text)
fn(6,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F7"
fn(7,0)=Val(tetFn.Text)
fn(7,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F8"
fn(8,0)=Val(tetFn.Text)
fn(8,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F9"
fn(9,0)=Val(tetFn.Text)
fn(9,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F10"
fn(10,0)=Val(tetFn.Text)
fn(10,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
Case"F11"
fn(11,0)=Val(tetFn.Text)
fn(11,1)=Val(tetFnx.Text)
cboF.Text="记录完毕,选择下一个F输入!
"
EndSelect
tetFn.Text=""
tetFnx.Text=""
EndSub
PrivateSubCommand2_Click()
IfVal(tetMnx.Text)>Val(tetL.Text)Then
MsgBox"您输入的集中力作用位置不正确,请重新输入!
"
ExitSub
EndIf
SelectCasecboM.Text
Case"M1"
mn(1,0)=Val(tetMn.Text)
mn(1,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M2"
mn(2,0)=Val(tetMn.Text)
mn(2,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M3"
mn(3,0)=Val(tetMn.Text)
mn(3,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M4"
mn(4,0)=Val(tetMn.Text)
mn(4,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M5"
mn(5,0)=Val(tetMn.Text)
mn(5,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M6"
mn(6,0)=Val(tetMn.Text)
mn(6,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M7"
mn(7,0)=Val(tetMn.Text)
mn(7,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M8"
mn(8,0)=Val(tetMn.Text)
mn(8,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M9"
mn(9,0)=Val(tetMn.Text)
mn(9,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M10"
mn(10,0)=Val(tetMn.Text)
mn(10,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
Case"M11"
mn(11,0)=Val(tetMn.Text)
mn(11,1)=Val(tetMnx.Text)
cboM.Text="记录完毕,选择下一个M输入!
"
EndSelect
tetMn.Text=""
tetMnx.Text=""
EndSub
PrivateSubCommand3_Click()
SelectCasecboQ.Text
Case"Q1"
qn(1,0)=Val(tetQ.Text)
qn(1,1)=Val(tetC.Text)
qn(1,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q2"
qn(2,0)=Val(tetQ.Text)
qn(2,1)=Val(tetC.Text)
qn(2,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q3"
qn(3,0)=Val(tetQ.Text)
qn(3,1)=Val(tetC.Text)
qn(3,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q4"
qn(4,0)=Val(tetQ.Text)
qn(4,1)=Val(tetC.Text)
qn(4,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q5"
qn(5,0)=Val(tetQ.Text)
qn(5,1)=Val(tetC.Text)
qn(5,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q6"
qn(6,0)=Val(tetQ.Text)
qn(6,1)=Val(tetC.Text)
qn(6,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q7"
qn(7,0)=Val(tetQ.Text)
qn(7,1)=Val(tetC.Text)
qn(7,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q8"
qn(8,0)=Val(tetQ.Text)
qn(8,1)=Val(tetC.Text)
qn(8,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q9"
qn(9,0)=Val(tetQ.Text)
qn(9,1)=Val(tetC.Text)
qn(9,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q10"
qn(10,0)=Val(tetQ.Text)
qn(10,1)=Val(tetC.Text)
qn(10,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
Case"Q11"
qn(11,0)=Val(tetQ.Text)
qn(11,1)=Val(tetC.Text)
qn(11,2)=Val(tetD.Text)
cboQ.Text="记录完毕,选择下一个q输入!
"
EndSelect
tetQ.Text=""
tetC.Text=""
tetD.Text=""
EndSub
PrivateSubCommand4_Click()
Form1.Show
Form3.Hide
EndSub
四、程序应用截图:
1.主目录:
2.平面应力状态分析
3.简支梁转角挠度计算
五:
实验结果分析:
平面应力状态的计算结果正确,并且可以做出应力圆。
简支梁转角挠度计算可以输入足够多的力或力偶,能计算出正确结果。
但考虑VB编程之后在多次计算过程中难免出现纰漏,该程序还有很多需要修缮之处。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 材料力学 上机 编程 报告