机械CAD三次大作业.docx
- 文档编号:30133269
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:19
- 大小:1.02MB
机械CAD三次大作业.docx
《机械CAD三次大作业.docx》由会员分享,可在线阅读,更多相关《机械CAD三次大作业.docx(19页珍藏版)》请在冰豆网上搜索。
机械CAD三次大作业
次数
得分
第一次
第二次
第三次
综合
机械CAD
大作业
姓名刘刚
班级机械11005
学号201003606
序号11
目录
第一次大作业.......................................................................1-6
VC编程程序代码及图片展示.........................1-2
VB编程程序代码图片展示.............................3-5
第一次程序设计心得...................................................6
第二次大作业....................................................................................7-8
程序运行结果及图片展示..........................................7
第二次程序设计心得...................................................8
第三次大作业.................................................................................9-18
VB编程程序代码.................................................9-15
VB编程图片展示...................................................16-17
第三次程序设计心得.................................................18
第一次大作业
V带选型查询
一、程序设计功能:
1.为避免多次翻书查找V带型号,故此程序要求实现多次查找;
2.当输入转速和功率后应用程序能显示所要查找的V带型号;
3.为实现良好的用户体验,故程序界面在设计时附上了V带选型图;
4.当输入数据不完整或不合法时,系统能弹窗提示用户将数据输入完整或修正错误输入数据。
二、程序设计思想:
根据V带选型图可知V带折线图将V带型号分成了O,A,B,C,D,E,F等几个区。
而每个区域都由相应的对数函数曲线所控制。
因此,只需将转速作为Y轴,功率作为X轴,求出各边界曲线在坐标系中的函数表达式即可。
然后根据输入的转速和功率的值来综合判断其落在所在坐标系中的哪个区域。
然后通过程序的运行来显示输出结果。
三、程序代码:
VC编程程序代码
#include
#include
intmain()
{
doublen,c,p;
intR;
printf("请输入所查V带的转速n(r/min)和电动机的功率P(kw)的值:
\n");
scanf("%lf%lf",&n,&p);/*对于double型变量,其输入数的形式只能为%lf(双精度浮点型)型,而不能为f%型(单精度浮点型),切记,在此困惑了好久*/
if(n>6800||p>800||n<0||p<0)
printf("Sorry,thedatasyouinputareerror!
Pleaseinputagain.Thanks!
\n");
else
{c=log10(490.0)+(log10(p)-log10(0.8))*(log10(4900.0)-log10(490.0))/(log10(3.8)-log10(0.8));
if(n>=4900||n>=pow(10,c))/*O型带区域*/
R=0;
else
{c=log10(100.0)+(log10(p)-log10(1.0))*(log10(3400.0)-log10(100.0))/(log10(10.5)-log10(1.0));
if(n>=3400||n>=pow(10,c))/*A型带区域*/
R=1;
else
{c=log10(100.0)+(log10(p)-log10(2.7))*(log10(2400.0)-log10(100.0))/(log10(22.5)-log10(2.7));
if(n>=2400||n>=pow(10,c))/*B型带区域*/
R=2;
else
{c=log10(100.0)+(log10(p)-log10(5.9))*(log10(1500.0)-log10(100.0))/(log10(35.0)-log10(5.9));
if(n>=1500||n>=pow(10,c))/*C型带区域*/
R=3;
else
{c=log10(100.0)+(log10(p)-log10(17.5))*(log10(1200.0)-log10(100.0))/(log10(85.0)-log10(17.5));
if(n>=1200||n>=pow(10,c))/*D型带区域*/
R=4;
else
{c=log10(100.0)+(log10(p)-log10(44.0))*(log10(700.0)-log10(100.0))/(log10(170.0)-log10(44.0));
if(n>=700||n>=pow(10,c))/*E型带区域*/
R=5;
else
{R=6;}/*F型带区域*/}}}}}
if(R==0)printf("您所查的V带属于O型\n");
if(R==1)printf("您所查的V带属于A型\n");
if(R==2)printf("您所查的V带属于B型\n");
if(R==3)printf("您所查的V带属于C型\n");
if(R==4)printf("您所查的V带属于D型\n");
if(R==5)printf("您所查的V带属于E型\n");
if(R==6)printf("您所查的V带属于F型\n");}
return0;}
C语言运行结果图片展示:
VB编程程序代码:
FunctionLog10(X)'定义对数log10函数
Log10=Math.Log(X)/Math.Log(10#)
EndFunction
PrivateSubCommand1_Click()
Dimp,n,cAsDouble
If(NotIsNumeric(Text1)OrNotIsNumeric(Text2))Then
MsgBox"对不起!
您只输入了一个参数,请重新输入。
谢谢配合!
!
!
",,"温馨提示"
Else
n=Text1.Text
p=Text2.Text
If(n>6800Orp>800)Then
MsgBox"对不起!
您输入的转速或功率不合法,请核对后重新输入。
谢谢配合!
!
!
",,"温馨提示"
Else
c=Log10(490#)+(Log10(p)-Log10(0.8))*(Log10(4900#)-Log10(490#))/(Log10(3.8)-Log10(0.8))
If(n>=4900Orn>=10^c)Then
Text3.Text="O型"
Else
c=Log10(100#)+(Log10(p)-Log10(1#))*(Log10(3400#)-Log10(100#))/(Log10(10.5)-Log10(1#))
If(n>=3400Orn>=10^c)Then
Text3.Text="A型"
Else
c=Log10(100#)+(Log10(p)-Log10(2.7))*(Log10(2400#)-Log10(100#))/(Log10(22.5)-Log10(2.7))
If(n>=2400Orn>=10^c)Then
Text3.Text="B型"
Else
c=Log10(100#)+(Log10(p)-Log10(5.9))*(Log10(1500#)-Log10(100#))/(Log10(35#)-Log10(5.9))
If(n>=1500Orn>=10^c)Then
Text3.Text="C型"
Else
c=Log10(100#)+(Log10(p)-Log10(17.5))*(Log10(1200#)-Log10(100#))/(Log10(85#)-Log10(17.5))
If(n>=1200Orn>=10^c)Then
Text3.Text="D型"
Else
c=Log10(100#)+(Log10(p)-Log10(44#))*(Log10(700#)-Log10(100#))/(Log10(170#)-Log10(44#))
If(n>=700Orn>=10^c)Then
Text3.Text="E型"
Else
Text3.Text="F型"
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
EndSub
VB程序运行结果展示:
第一次程序设计心得
在开始看到这个设计题目时,没看明白这个坐标是啥意思,不懂为啥坐标上的间距不等。
后来通过查资料知道了其是以对数的真数为横纵坐标的坐标系,虽然这是一个小的收获,但这让我明白了知识的相通性,没有哪个知识是绝对孤立的,知识的熟练在于不断运用,不断积累,不断学习。
通过第一次V带选型查询器的设计,我学会了C语言多重循环选择的设计思路,学会了VB界面美化的设计。
在用C语言编写该设计程序时,起初困惑了好久,因为始终觉得自己编写的程序没问题,但就在运行时结果始终显示O型带,始终想不明白为什么。
但后来通过仔细研究弄白了问题在哪里,是在scanf函数输入数据时,定义其输入类型定义有误,导致结果异常。
通过该次C程序设计,我明白了C程序的scanf函数对于数据输入类型必须与定义类型一致的含义,而我们往往易于忽略的是对%lf和%f的区别。
如果数据定义的类型为double型,则输入数据类型必须为%lf;若为float型,则输入数据类型必须为%f型。
否则,程序会出现你检查不出原因的错误。
第二次大作业
一、程序设计功能:
1.建立数据库后,在需要查找某个数据时,通过程序查找相应的数据;
2.实现数据库的管理工作。
二、程序设计思想:
通过VFB数据库软件,建立数据库后,通过其指定的语法功能查找相应的数据。
三、程序截屏:
执行命令locatefor=207后,数据的查找结果:
第二次作业心得
通过该次数据库系统的初步学习,初步掌握了数据库的核心思想,其是通过建立数据库后,用指定的查找命令来完成数据的查找工作。
相比于其它程序编写软件,其易于理解和掌握。
但学会该软件的前提仍是掌握基础语言的程序设计思想。
换句话说,任何程序设计软件,其核心思想是一样的,只是在某些细节和语法规则上略显不同。
第三次大作业
三次Bezier曲线
一、程序设计功能:
1.设计绘图窗口,能实现数据的多次输入;
2.具有多次绘图功能,能实现不同数据的绘图;
3.具有清屏功能,在画完该次图形后,清除图像并重建坐标系,
4.具有数据完整性检测功能,当数据输入不完整时,通过弹窗提示用户数据输入不完整。
二、程序设计思想:
先在草稿纸上求出三次Bezier曲线的各坐标参数前的系数表达式:
a1=-px(0)+3*px
(1)-3*px
(2)+px(3)
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)
然后根据三次Bezier曲线的特点来定义为以u为变量的函数,然后根据取点速率的不同来绘制相应四个顶点的曲线。
三、程序代码:
PrivateSubCommand1_Click()
Picture1.DrawWidth=2
Picture1.FontSize=12'此处定义绘制坐标系时的字体大小,因为后面程序要用到字体设置,故此处字体设置要重新声明,不可用系统默认的字体,否则再次绘制图形时,坐标由于字体过大而很难看
Picture1.Scale(-300,300)-(300,-300)'定义PictureBox坐标系
Picture1.Line(-300,0)-(300,0)
Picture1.Line(0,300)-(0,-300)'VB编译系统中,其默认的是在Form(窗体)中画图,当需要在其他属性框中画图时,需要加上其对应的属性框名称
Picture1.CurrentX=270:
Picture1.CurrentY=40:
Picture1.Print"X"
Picture1.CurrentX=15:
Picture1.CurrentY=285:
Picture1.Print"Y"
Picture1.FontSize=9'坐标上的数字字体小一些
Fori=-280To280Step40
Picture1.Line(i,0)-(i,8)
Picture1.CurrentX=i-12:
Picture1.CurrentY=-5:
Picture1.Printi
Nexti
Forj=-280To-40Step40
Picture1.Line(0,j)-(8,j)
Picture1.CurrentX=-28:
Picture1.CurrentY=j+10:
Picture1.Printj
Nextj
Forj=40To280Step40
Picture1.Line(0,j)-(8,j)
Picture1.CurrentX=-28:
Picture1.CurrentY=j+10:
Picture1.Printj
Nextj
Dimpx(4)AsDouble'定义控制点的x坐标的数组
Dimpy(4)AsDouble'定义控制点的y坐标的数组
Dima1,b1,c1,d1AsDouble'定义x系数
Dima2,b2,c2,d2AsDouble'定义y系数
Dimx,y,uAsDouble'定义曲线中的自变量u和变量x,y
If(NotIsNumeric(Text1)OrNotIsNumeric(Text2)OrNotIsNumeric(Text3)OrNotIsNumeric(Text4)_
OrNotIsNumeric(Text5)OrNotIsNumeric(Text6)OrNotIsNumeric(Text7)OrNotIsNumeric(Text8))Then
MsgBox"对不起!
系统检测到数据输入不完整,请您输入完整后绘图。
谢谢配合!
",,"友情提示"
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
Picture1.FontSize=18'设置字体,为显示输入的四个点设置字体大小
Picture1.CurrentX=px(0):
Picture1.CurrentY=py(0):
Picture1.Print"P";0'P0单独打印
Fori=0To2
Picture1.DrawWidth=1.5
Picture1.Line(px(i),py(i))-(px(i+1),py(i+1)),vbGreen:
Picture1.Print"P";i+1'P1,P2,P3用for循环打印
Nexti
Fori=0To3'绘制四个圆点,此处代码可优化,亦可用circle语句画小圆后填充颜色
Picture1.DrawWidth=7
Picture1.Line(px(i),py(i))-(px(i)+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.00001'每当u增加0.00001求一次x和y
x=a1*u^3+b1*u*u+c1*u+d1'求x的值
y=a2*u^3+b2*u*u+c2*u+d2'求y的值
Ifu=0Then
Picture1.CurrentX=x'设置画线起点
Picture1.CurrentY=y
Else
Picture1.DrawWidth=3
Picture1.Line-(x,y),RGB(255,0,0)'连点成线
EndIf
Nextu
EndIf
EndSub
PrivateSubCommand2_Click()'用于清空输入数据
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
Text7.Text=""
Text8.Text=""
EndSub
PrivateSubCommand3_Click()'清屏后再次绘制坐标系
Picture1.Cls
Picture1.DrawWidth=2
Picture1.FontSize=12'此处定义绘制坐标系时的字体大小,因为后面程序要用到字体设置,故此处字体设置要重新声明,不可用系统默认的字体,否则再次绘制图形时,坐标由于字体过大而很难看
Picture1.Scale(-300,300)-(300,-300)'定义PictureBox坐标系
Picture1.Line(-300,0)-(300,0)
Picture1.Line(0,300)-(0,-300)'VB编译系统中,其默认的是在Form(窗体)中画图,当需要在其他属性框中画图时,需要加上其对应的属性框名称
Picture1.CurrentX=270:
Picture1.CurrentY=40:
Picture1.Print"X"
Picture1.CurrentX=15:
Picture1.CurrentY=285:
Picture1.Print"Y"
Picture1.FontSize=9
Fori=-280To280Step40
Picture1.Line(i,0)-(i,8)
Picture1.CurrentX=i-12:
Picture1.CurrentY=-5:
Picture1.Printi
Nexti
Forj=-280To-40Step40
Picture1.Line(0,j)-(8,j)
Picture1.CurrentX=-28:
Picture1.CurrentY=j+10:
Picture1.Printj
Nextj
Forj=40To280Step40
Picture1.Line(0,j)-(8,j)
Picture1.CurrentX=-28:
Picture1.CurrentY=j+10:
Picture1.Printj
Nextj
EndSub
PrivateSubForm_Load()'预输入数据,避免调试时多次输入数据,其随窗体运行而显示
Text1.Text=-260:
Text2.Text=-230'冒号用于多条语句并行书写,以减小代码所占空间
Text3.Text=260:
Text4.Text=-230
Text5.Text=200:
Text6.Text=230
Text7.Text=-260:
Text8.Text=230
EndSub
VB程序运行结果图片展示:
第三次程序设计心得
在三次Bezier曲线的程序设计中,明白了计算机对于图行处理的能力是相当强的。
对于VB而言,其能根据取点速率的不同而精确确定相应图形的图像,能很好的满足人们在日常工作中的图像需求。
在本次程序设计中花费了大量时间在程序优化上,特别是在界面美化上。
因为我始终觉得一个良好的可执行程序不仅要具有精确计算的能力及绘图能力,还应该具有良好的用户体验界面,真正让用户在使用该程序时能有愉悦爽朗的心情。
这是我认为的CAD辅助设计的本质。
在具体界面美化过程中,我查找了大量的背景图片,最后选定了一张自然风景为背景。
因为一张好的背景图片不仅能给人良好的审美愉悦感,而且能让工作者在枯燥的工作中心生美意,同时能给予人心灵的绿意。
这是我在CAD课程中所学到的课外知识。
作为机械工作人员,不仅要具有严谨的工作思维,还要具有良好的审美观。
这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 CAD 三次 作业