CAD CAM大作业.docx
- 文档编号:23042350
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:19
- 大小:296.45KB
CAD CAM大作业.docx
《CAD CAM大作业.docx》由会员分享,可在线阅读,更多相关《CAD CAM大作业.docx(19页珍藏版)》请在冰豆网上搜索。
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曲线截图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAD CAM大作业 CAM 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)