哈工大材料力学上机编程报告.docx

上传人:b****6 文档编号:5949864 上传时间:2023-01-02 格式:DOCX 页数:17 大小:188.71KB
下载 相关 举报
哈工大材料力学上机编程报告.docx_第1页
第1页 / 共17页
哈工大材料力学上机编程报告.docx_第2页
第2页 / 共17页
哈工大材料力学上机编程报告.docx_第3页
第3页 / 共17页
哈工大材料力学上机编程报告.docx_第4页
第4页 / 共17页
哈工大材料力学上机编程报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

哈工大材料力学上机编程报告.docx

《哈工大材料力学上机编程报告.docx》由会员分享,可在线阅读,更多相关《哈工大材料力学上机编程报告.docx(17页珍藏版)》请在冰豆网上搜索。

哈工大材料力学上机编程报告.docx

哈工大材料力学上机编程报告

 

材料力学电算实验

平面应力状态分析及简支梁挠度计算

院系:

机电工程学院

班级:

设计者:

学号:

指导教师:

软件要求:

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编程之后在多次计算过程中难免出现纰漏,该程序还有很多需要修缮之处。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1