CAD CAM大作业.docx

上传人:b****1 文档编号:23042350 上传时间:2023-04-30 格式:DOCX 页数:19 大小:296.45KB
下载 相关 举报
CAD CAM大作业.docx_第1页
第1页 / 共19页
CAD CAM大作业.docx_第2页
第2页 / 共19页
CAD CAM大作业.docx_第3页
第3页 / 共19页
CAD CAM大作业.docx_第4页
第4页 / 共19页
CAD CAM大作业.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

CAD CAM大作业.docx

《CAD CAM大作业.docx》由会员分享,可在线阅读,更多相关《CAD CAM大作业.docx(19页珍藏版)》请在冰豆网上搜索。

CAD CAM大作业.docx

CADCAM大作业

 

机械CAD课程大作业

 

班级:

姓名:

序号:

任课老师:

学期:

2011-2012学年第2学期

结业时间:

2012.03.20

 

作业一:

V带选型

一.设计要求:

1.输入功率和转速后程序显示所要查找的V带型号。

2.同时在程序中附上V带折线图便于核对输入和输出的对应关系。

3.能够实现多次查找,方便查询。

二.设计思路:

由题可知V带折线图将V带型号分成了O,A,B,C,D,E,F等几个区。

而每个区都由相邻的区的边界所控制。

因此,将转速作为Y轴,功率作为X轴,则只需求出各边界曲线在坐标系中的函数,然后判断输入值中的转速与边界曲线的关系就可判断输入值在那个区。

由于输入值都比较大,故采用对数坐标系。

三.设计过程:

以下是实现以上功能的程序的源代码:

1.用Visual C++制作的源代码:

#include

#include

usingnamespacestd;

voidmain()

{

doublen;//纵坐标值

doublep;//横坐标值

chark,choice;//V带型号

doublec;//c=lgNy=lgN2+(lgPx-lgP2)*(lgN1-lgN2)/(lgpP1-lgP2)既图线上纵坐标对应的对数值

cout<<"********V型带型号选择工具********"<

do

{

cout<<"请输入功率P(kw)和转速N(r/min):

";//提示输入

cin>>p>>n;//输入功率和转速

while(n>6800.0||n<100.0||p>800.0||p<0.8)//保证在输入值在图形范围内

{

cout<

cout<<"输入值不在V型带的型号范围内。

"<

";//重新提示输入

cin>>p>>n;//输入功率和转速

}

cout<<"输入值满足输入要求"<

c=log10(490.0)+(log10(p)-log10(0.8))/(log10(3.8)-log10(0.8))*(log10(4900.0)-log10(490.0));

if(n>=4900||log10(n)>=c)

k='O';//O型带

else

{

c=log10(100.0)+(log10(p)-log10(1.0))/(log10(10.5)-log10(1.0))*(log10(3400.0)-log10(100.0));

if(n>=3400||log10(n)>=c)

k='A';//A型带

else

{

c=log10(100.0)+(log10(p)-log10(2.7))/(log10(22.5)-log10(2.7))*(log10(2400.0)-log10(100.0));

if(n>=2400||log10(n)>=c)

k='B';

else

{

c=log10(100.0)+(log10(p)-log10(5.9))/(log10(35.0)-log10(5.9))*(log10(1500.0)-log10(100.0));

if(n>=1500||log10(n)>=c)

k='C';

else

{

c=log10(100.0)+(log10(p)-log10(17.5))/(log10(85.0)-log10(17.5))*(log10(1200.0)-log10(100.0));

if(n>=1200||log10(n)>=c)

k='D';

else

{

c=log10(100.0)+(log10(p)-log10(44.0))/(log10(170.0)-log10(44.0))*(log10(700.0)-log10(100.0));

if(n>=700||log10(n)>=c)

k='E';

else

{

k='F';

}

}

}

}

}

}

cout<<"********以下是V型带的型号********"<

cout<<"这个V型带的型号是:

"<

cout<<"本次查找完毕,需要继续查找吗?

输入“Y”继续,输入“N”退出"<

cout<<"请输入您的选择(Y/N):

";

cin>>choice;

if(choice=='N')

{break;}

else

{choice='Y';}

}

while(choice=='Y');

}

2.用Visual Basic制作的源代码:

PrivateSubCommand1_Click()

Dimp,n,cAsDouble

If(NotIsNumeric(Text1)OrNotIsNumeric(Text2))Then

Text1.Text=""

Text1.SetFocus

Else

p=Text1.Text

n=Text2.Text

c=Log10(490#)+(Log10(p)-Log10(0.8))/(Log10(3.8)-Log10(0.8))*(Log10(4900#)-Log10(490#))

If(n>=4900OrLog10(n)>=c)Then

型号.Text="O型"

Else

c=Log10(100#)+(Log10(p)-Log10(1#))/(Log10(10.5)-Log10(1#))*(Log10(3400#)-Log10(100#))

If(n>=3400OrLog10(n)>=c)Then

型号.Text="A型"

Else

c=Log10(100#)+(Log10(p)-Log10(2.7))/(Log10(22.5)-Log10(2.7))*(Log10(2400#)-Log10(100#))

If(n>=2400OrLog10(n)>=c)Then

型号.Text="B型"

Else

c=Log10(100#)+(Log10(p)-Log10(5.9))/(Log10(35#)-Log10(5.9))*(Log10(1500#)-Log10(100#))

If(n>=1500OrLog10(n)>=c)Then

型号.Text="C型"

Else

c=Log10(100#)+(Log10(p)-Log10(17.5))/(Log10(85#)-Log10(17.5))*(Log10(1200#)-Log10(100#))

If(n>=1200OrLog10(n)>=c)Then

型号.Text="D型"

Else

c=Log10(100#)+(Log10(p)-Log10(44#))/(Log10(170#)-Log10(44#))*(Log10(700#)-Log10(100#))

If(n>=700OrLog10(n)>=c)Then

型号.Text="E型"

Else

型号.Text="F型"

EndIf

EndIf

EndIf

EndIf

EndIf

EndIf

EndIf

EndSub

PrivateSubCommand2_Click()

Text1.Text=""

Text2.Text=""

型号.Text=""

EndSub

PrivateSubCommand3_Click()

End

EndSub

PrivateSubtext1_lostfocus()

DimiAsInteger

IfNotIsNumeric(Text1)Then

Text1.Text=""

Text1.SetFocus

Else

If(Text1.Text<0.8OrText1.Text>800#)Then

i=MsgBox("输入值超出范围,请重新输入",5+vbExclamation,"输入超出范围")

Ifi=2Then

End

Else

Text1.Text=""

Text1.SetFocus

EndIf

EndIf

EndIf

EndSub

PrivateSubtext2_lostfocus()

DimjAsInteger

IfNotIsNumeric(Text2)Then

Text2.Text=""

Else

If(Text2.Text<100#OrText2.Text>6800#)Then

j=MsgBox("输入值超出范围,请重新输入",5+vbExclamation,"输入超出范围")

Ifj=2Then

End

Else

Text2.Text=""

EndIf

EndIf

EndIf

EndSub

FunctionLog10(X)'定义函数

Log10=Math.Log(X)/Math.Log(10#)

EndFunction

四.程序截图:

 

图一.V带选型截图(VC++)

图二.V带选型截图(VB6.0)

作业二:

VF建数据库

一.设计要求:

1.做一个轴承的数据库,能调用先前已建好的表或数据库。

2.能实现首尾查询、输入设定范围查询、打印、添加数据、修改数据、删除数据。

3.做一个表单方便管理数据库。

二.设计思路:

由于该部分少有涉及代码的问题,故只需简要说明如下:

1.建立项目

2.在项目内新建数据库

3.在数据库内新建数据

4.在“数据”项内新建“表”

5.新建或编辑“表”

三.

设计截图:

图三.作业二(轴承数据库)截图

作业三:

三次Bezier曲线

一.设计要求:

1.在程序窗口中建立坐标系

2.输入控制点,绘制出三次Bezier曲线

3.四个控制点间依次用细线连接

4.在程序窗口显示四个控制点的位置并标出

二.设计思路:

先在草稿纸上算出三次Bezier曲线的函数表达式:

     (0≤u≤1)

=a×

+b×

+c×u+d

其中a、b、c、d的值为:

a=(-

)+3×

-3×

+

b=3×

-6×

+3×

c=(-3)×

+3×

d=

中的(x,y)坐标值分别代入a、b、c、d中得到

则:

×

×

×u+

    (1)

×

×

×u+

    (2)

根据以上结果(1)和(2)编程求得当u取不同值时所得到的点P(u)。

再将各点用线连接起来即可拟合三次Bezier曲。

三.设计过程:

以下是用VB编三次Bezier曲线时的源代码:

其中显示四个控制点的思路是将控制点在x和y方向的坐标值都增大1,然后再与控制点用粗实线连接起来。

这样一来在窗口中显示的即为一个较大的实点。

Functiondrawcs()'此模块为建立坐标系

DimkAsInteger

PictDraw.DrawWidth=1:

PictDraw.FontSize=9'设置线宽和字体

PictDraw.Line(-400,0)-(400,0),RGB(100,100,100)

PictDraw.Line(0,-300)-(0,300),RGB(100,100,100)

Fork=(-360)To360Step40

PictDraw.Line(k,-5)-(k,0):

PictDraw.CurrentX=k-20:

PictDraw.CurrentY=5:

PictDraw.Printk

Nextk

Fork=(-280)To-40Step40

PictDraw.Line(5,k)-(0,k):

PictDraw.CurrentX=-40:

PictDraw.CurrentY=k-10:

PictDraw.Print(-1)*k

Nextk

Fork=(40)To280Step40

PictDraw.Line(5,k)-(0,k):

PictDraw.CurrentX=-40:

PictDraw.CurrentY=k-10:

PictDraw.Print(-1)*k

Nextk

EndFunction

PrivateSubForm_Load()

PictDraw.AutoRedraw=True

PictDraw.ScaleWidth=800

PictDraw.ScaleHeight=600

Text1.Text=-300:

Text2.Text=-250:

Text3.Text=300:

Text4.Text=-250

Text5.Text=-300:

Text6.Text=250:

Text7.Text=300:

Text8.Text=250'作为初始值,便于测试

drawcs

EndSub

PrivateSubcmdCancle_Click()

PictDraw.Cls

drawcs'清除屏幕后,重建坐标系

EndSub

PrivateSubdelet_Click()'此模块为清除输入框中的值

Text1.Text=""

Text2.Text=""

Text3.Text=""

Text4.Text=""

Text5.Text=""

Text6.Text=""

Text7.Text=""

Text8.Text=""

EndSub

PrivateSubcmdDraw_Click()'此模块为画三次Bezier曲线

Dimpx(4)AsDouble'定义控制点的x坐标的数组

Dimpy(4)AsDouble'定义控制点的y坐标的数组

Dima1,b1,c1,d1AsDouble'定义x系数

Dima2,b2,c2,d2AsDouble'定义y系数

Dimx,y,uAsDouble'定义曲线中的自变量u和变量x,y

DimiAsInteger

If(NotIsNumeric(Text1)OrNotIsNumeric(Text2)OrNotIsNumeric(Text3)OrNotIsNumeric(Text4)_

OrNotIsNumeric(Text5)OrNotIsNumeric(Text6)OrNotIsNumeric(Text7)OrNotIsNumeric(Text8))Then

Text1.Text="":

Text2.Text=""

Text3.Text="":

Text4.Text=""

Text5.Text="":

Text6.Text=""

Text7.Text="":

Text8.Text=""

Text1.SetFocus'判断输入框中的字符是否为数字,如果为数字执行else开始画图

Else

px(0)=Text1.Text:

py(0)=Text2.Text

px

(1)=Text3.Text:

py

(1)=Text4.Text

px

(2)=Text5.Text:

py

(2)=Text6.Text

px(3)=Text7.Text:

py(3)=Text8.Text

PictDraw.FontSize=18'设置字体,为显示输入的四个点设置字体大小

PictDraw.CurrentX=px(0):

PictDraw.CurrentY=(-1)*py(0):

PictDraw.Print"P";0

Fori=0To2

PictDraw.DrawWidth=1

PictDraw.Line(px(i),(-1)*py(i))-(px(i+1),(-1)*py(i+1)),RGB(0,0,255):

PictDraw.Print"P";i+1

Nexti

Fori=0To3

PictDraw.DrawWidth=7

PictDraw.Line(px(i),(-1)*py(i))-(px(i)+1,(-1)*py(i)-1)

Nexti

a1=-px(0)+3*px

(1)-3*px

(2)+px(3)'计算x和y的参数

b1=3*px(0)-6*px

(1)+3*px

(2)

c1=-3*px(0)+3*px

(1)

d1=px(0)

a2=-py(0)+3*py

(1)-3*py

(2)+py(3)

b2=3*py(0)-6*py

(1)+3*py

(2)

c2=-3*py(0)+3*py

(1)

d2=py(0)

Foru=0To1Step0.001'每当u增加0.001求一次x和y

x=a1*u*u*u+b1*u*u+c1*u+d1'求x的值

y=(-1)*(a2*u*u*u+b2*u*u+c2*u+d2)'求y的值

Ifu=0Then

PictDraw.CurrentX=x'设置画线起点

PictDraw.CurrentY=y

Else

PictDraw.DrawWidth=2

PictDraw.Line-(x,y),RGB(255,0,0)'连点成线

EndIf

Nextu

EndIf

EndSub

PrivateSubcmdEnd_Click()'退出窗口程序

End

EndSub

四.设计截图:

图四.三次Bezier曲线截图

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

当前位置:首页 > 工程科技 > 能源化工

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

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