fmcad.docx
- 文档编号:29920665
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:56
- 大小:323.98KB
fmcad.docx
《fmcad.docx》由会员分享,可在线阅读,更多相关《fmcad.docx(56页珍藏版)》请在冰豆网上搜索。
fmcad
机械CAD课程设计报告
学号:
07010417
姓名:
冯明
组员:
指导老师:
彭霏张雪秋宇江
张乃龙
学院:
机械工程与应用电子技术学院
专业方向:
机械设计及理论
日期:
2010年12月
北京工业大学
机械工程与应用电子技术学院
机械CAD设计作业带传动设计
1.1系统目标
(1)在以下带传动类型中任选一种进行设计:
普通V带传动、窄V带传动、平带传动、多楔带传动和同步齿形带传动;
(2)系统分为设计计算模块和结构设计模块;
(3)自动绘制零件图。
1.2系统要求
启动AutoCAD,在工具栏的工具选项中选择宏加载,即可调出带传动类型选择对话框。
依照逐步提示完成设计。
1.3设计过程
图1带传动设计主界面
用户选择要设计的带的类型,【单击“设计计算”按钮】,进入设计计算界面,如图2所示。
图2带传动设计计算
在设计计算界面中,用户可在下拉列表和文本框中选择所要求的工作性能指标。
【单击“上一步”按钮】返回类型选择界面
【单击“下一步”按钮】确认输入参数,进入带型选择界面,如图3示。
图3带型选择
带型选型图中的十字交叉线指示出已知条件主动轮转速和设计功率在选型图中的位置。
在参数选择面板中根据交叉线的交点在参数选择栏中选取合适的带型及主动轮直径。
【单击“上一步”按钮】返回“设计计算”界面。
【单击“下一步”按钮】进入“中心距、带长、包角的确认”界面,如图4所示。
图4中心距、带长、包角确认
【键盘输入“初定中心距”】根据参考参数的最大,最小参数进行选择。
【单击“计算带长”按钮】软件计算各参数。
【单击“上一步”按钮】返回“带型选择”界面
【单击“下一步”按钮】确认输入参数,进入“带轮选择”界面,
如图6所示。
选择一种带轮,进入“绘图”界面,如图7所示。
【键盘输入“初定中心距”】根据参考参数的最大,最小参数进行选择。
【单击“计算带长”按钮】软件计算各参数。
【单击“上一步”按钮】返回“带型选择”界面
【单击“结构设计”按钮】确认输入参数,进入“中心孔直径”界面,
如图5所示。
图5中心孔直径
【键盘输入“中心孔直径”】输入中心孔直径。
【单击“上一步”按钮】返回“中心距、带长、包角的确认”界面
【单击“绘图”按钮】软件进行绘图,图形如6
图六中心孔为55的齿轮
1.4代码
1.4.1模块声明代码
OptionExplicit
DimadoConAsADODB.Connection'连接对象
DimadoRsAsADODB.Recordset'记录集对象
DimstrPathAsString'路径
PublicpAsSingle'传递功率
PublicPdAsSingle'设计功率
PublicratioAsSingle'传动比
PubliccalratioAsSingle'实际传动比
Publicn1AsSingle'小带轮转速
Publicn2AsSingle'大带轮转速
PublicKaAsSingle'工况系数
PublicBeltNoAsInteger'带的型号
PublicBT(6)AsString'带型
Publicdd1AsLong'小带轮基准直径
Publicdd2AsLong'大带轮基准直径
PublicbeltzAsInteger'带数
PublicDAsDouble'中心孔径userform5输入孔径
PublicdailunAsInteger'绘制带轮选择
PublicdaiAsInteger
PublicddiAsInteger
PublicVbeltData(6)AsVariant
PublicVsizeAsVariant
PublicVbdAsDouble,VhaAsDouble,VhfAsDouble,VeAsDouble,VfAsDouble,VdeltaAsDouble
PublicBAsDouble,Vda1AsDouble,Vphi1AsDouble,Vda2AsDouble,Vphi2AsDouble
Publicpt0(0To2)AsDouble'绘制V槽曲线起点
Publicpt1(0To2)AsDouble,pt2(0To2)AsDouble'V槽曲线的左右端点
PublicFunctionBeltDesign()
Debug.Print"带传动设计计算系统开始运行"
'Debug.Asserth'表达式值为False则停止
'V带基本数据赋值(书145)(节宽bp,顶宽b,高度h,横截面积A,单位长度质量)
VbeltData(0)=Array(5.3,6,4,18,1.6,0.02)
VbeltData
(1)=Array(8.5,10,6,47,2#,0.06)
VbeltData
(2)=Array(11#,13,8,81,2.75,0.1)
VbeltData(3)=Array(14#,17,11,138,3.5,0.17)
VbeltData(4)=Array(19#,22,14,230,4.8,0.3)
VbeltData(5)=Array(27#,32,19,476,8.1,0.62)
VbeltData(6)=Array(32#,38,23,692,9.6,0.9)
EndFunction
PublicFunctionConDB()AsBoolean
OnErrorGoToERRORHANDLER
strPath=ThisDrawing.Application.VBE.ActiveVBProject.FileName
IfadoConIsNothingThen
SetadoCon=NewADODB.Connection
adoCon.CursorLocation=adUseClient
adoCon.Provider="Microsoft.ACE.OLEDB.12.0;"
strPath=Left(strPath,Len(strPath)-15)&"fm07010411db.accdb"
adoCon.OpenstrPath
EndIf
ConDB=True
ExitFunction
ERRORHANDLER:
SetadoCon=Nothing
MsgBox"Erroroccuredinprocedure'EnsureBackendIsConnected'"&vbCrLf&vbCrLf&_
"ErrorNumber:
"&Err.Number&vbCrLf&_
"Description:
"&Err.Description
EndFunction
PublicSubreadRecordset(RstAsADODB.Recordset,strSQlAsString,_
OptionalLockTypeAsLockTypeEnum=adLockOptimistic,_
OptionalCursorTypeAsCursorTypeEnum=adOpenKeyset)
OnErrorGoToERRORHANDLER
IfConDB()=TrueThen
SetadoRs=NewADODB.Recordset
WithadoRs
Set.ActiveConnection=adoCon
.Source=strSQl
.LockType=LockType
.CursorType=CursorType
.Open
EndWith
SetRst=adoRs
Else
MsgBox"readRecordseterror:
ADObackendconnectionfailed"
EndIf
ExitSub
ERRORHANDLER:
SetadoRs=Nothing
MsgBox"Erroroccuredinprocedure'readRecordset'"&vbCrLf&vbCrLf&_
"ErrorNumber:
"&Err.Number&vbCrLf&_
"Description:
"&Err.Description
EndSub
PublicFunctionGetVWheelData()
'Vbd,Vha,Vhf,Ve,Ve+,Vf,Vf+,Vdelta
SelectCase(BeltNo)
Case0'Y
Vsize=Array(5.3,1.6,4.7,8,0.3,7,1,5)'V带轮槽尺寸(书161)(Vbd,Vha,Vhf,Ve,Ve+,Vf,Vf+,Vdelta)基准宽度,基准线上的槽宽,基准线下的槽深,槽间距,第一槽对称面至端面的距离,最小轮缘厚
Case1'Z
Vsize=Array(8.5,2#,7#,12,0.3,8,1,5.5)
Case2'A
Vsize=Array(11#,2.75,8.7,15,0.3,10,2,6)
Case3'B
Vsize=Array(14#,3.5,10.8,19,0.4,12.5,2,7.5)
Case4'C
Vsize=Array(18#,4.8,14.3,22.5,0.5,17,2,10)
Case5'D
Vsize=Array(27#,8.1,18.9,37,0.6,23,2,12)
CaseElse'E
Vsize=Array(32#,8.6,23.4,44.5,0.7,29,2,15)
EndSelect
Vbd=Vsize(0)'基准宽度
Vha=Vsize
(1)'基准线上的槽宽
Vhf=Vsize
(2)'基准线下的槽深
Ve=Vsize(3)'槽间距
Vf=Vsize(5)'第一槽对称面至端面的距离
Vdelta=Vsize(7)'最小轮缘厚
B=(beltz-1)*Ve+2*Vf'带轮宽
Vda1=dd1+2*Vha'小带轮外径
Vda2=dd2+2*Vha'大带轮外径
SelectCaseBeltNo
Case0
Ifdd1<=80Then
Vphi1=34
Else
Vphi1=38
EndIf
Ifdd2<=80Then
Vphi2=34
Else
Vphi2=38
EndIf
Case1
Ifdd1<=118Then
Vphi1=34
Else
Vphi1=38
EndIf
Ifdd2<=118Then
Vphi2=34
Else
Vphi2=38
EndIf
Case2
Ifdd1<=190Then
Vphi1=34
Else
Vphi1=38
EndIf
Ifdd2<=190Then
Vphi2=34
Else
Vphi2=38
EndIf
Case3
Ifdd1<=315Then
Vphi1=34
Else
Vphi1=38
EndIf
Ifdd2<=315Then
Vphi2=34
Else
Vphi2=38
EndIf
Case4
Ifdd1<=475Then
Vphi1=36
Else
Vphi1=38
EndIf
Ifdd2<=475Then
Vphi2=36
Else
Vphi2=38
EndIf
Case5
Ifdd1<=600Then
Vphi1=36
Else
Vphi1=38
EndIf
Ifdd2<=600Then
Vphi2=36
Else
Vphi2=38
EndIf
EndSelect
EndFunction
'Ptx,Pty为起始点x,y坐标,nz为槽数
PublicFunctiondrawV(ptxAsDouble,ptyAsDouble,nzAsInteger,VphiAsDouble)AsAcadEntity
DimLineObjectAsAcadLine
DimNumAsInteger
Dimptx0AsDouble
Num=4*nz*2-1'V槽曲线所含的点数
Dimp()AsDouble'定义点坐标
ReDimp(Num)
DimiAsInteger
Fori=0ToNumStep8
ptx0=ptx+Ve*i/8'与外径在同一直线上
p(i)=ptx0-Vbd/2-Tan(Vphi*3.14/360)*Vha'左上x
p(i+1)=pty'左上y
p(i+2)=ptx0-Vbd/2+Tan(Vphi*3.14/360)*Vhf'左下x
p(i+3)=pty-Vha-Vhf'左下y
p(i+4)=ptx0+Vbd/2-Tan(Vphi*3.14/360)*Vhf'右下x
p(i+5)=pty-Vha-Vhf'右下y
p(i+6)=ptx0+Vbd/2+Tan(Vphi*3.14/360)*Vha'右上x
p(i+7)=pty'右上y
Nexti
SetdrawV=ThisDrawing.ModelSpace.AddLightWeightPolyline(p)'画多段线(V槽线)
pt1(0)=p(0):
pt1
(1)=p
(1)'V槽曲线的左端点
pt2(0)=p(Num-1):
pt2
(1)=p(Num)'V槽曲线的右端点
EndFunction
'绘制带轮
PublicSubDrawWheel()
Dimp1
(2)AsDouble,p2
(2)AsDouble
DimLn(10)AsAcadLine
DimlinAsAcadEntity
DimhatchObjectAsAcadHatch
Dimouterloop(11)AsAcadEntity
Dimouterloop1(9)AsAcadEntity
Dimouterloop2(9)AsAcadEntity
GetVWheelData'读取数据'
Ifdailun=0Then
dai=Vda1
ddi=dd1
Else
dai=Vda2
ddi=dd2
EndIf
User_CreateLayers
ThisDrawing.ActiveLayer=ThisDrawing.Layers.Item("粗实线层")
pt0(0)=0:
pt0
(1)=dai/2:
pt0
(2)=0'原点为左端面中点
Setlin=drawV(pt0(0)+Vf,pt0
(1),beltz,Vphi1)'V槽
Setouterloop(0)=lin'定义V槽
p1(0)=0:
p1
(1)=pt1
(1):
p1
(2)=pt1
(2)
Setlin=ThisDrawing.ModelSpace.AddLine(p1,pt1)'—\横线与V槽左斜线相连
Setouterloop
(1)=lin'定义横线
p1(0)=B:
p1
(1)=pt0
(1)'V槽右端点
Setlin=ThisDrawing.ModelSpace.AddLine(pt2,p1)'/-横线与V槽右斜线相连
Setouterloop
(2)=lin'定义横线
p2(0)=p1(0):
p2
(1)=dai/2-19
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)'-|
Setouterloop(3)=lin
p1(0)=B-2:
p1
(1)=dai/2-21
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(4)=lin
p2(0)=B/2+5:
p2
(1)=p1
(1)
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(5)=lin
p1(0)=p2(0)-1:
p1
(1)=p2
(1)-5
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(6)=lin
p2(0)=p1(0)-8:
p2
(1)=p1
(1)
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(7)=lin
p1(0)=p2(0)-1:
p1
(1)=p2
(1)+5
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(8)=lin
p2(0)=2:
p2
(1)=p1
(1)
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(9)=lin
p1(0)=0:
p1
(1)=dai/2-19
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(10)=lin
p2(0)=0:
p2
(1)=pt1
(1)
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop(11)=lin
ThisDrawing.ActiveLayer=ThisDrawing.Layers.Item("剖面线层")
SethatchObject=ThisDrawing.ModelSpace.AddHatch(0,"ansi31",True)
hatchObject.AppendOuterLoop(outerloop)
hatchObject.PatternScale=1.5
hatchObject.Evaluate
'图形镜像
p1(0)=0:
p1
(1)=0
p2(0)=100:
p2
(1)=0
DimiAsInteger
Fori=0To11
outerloop(i).Mirrorp1,p2
Next
DimhatObjAsAcadHatch
SethatObj=hatchObject.Mirror(p1,p2)
'改变镜像后剖面线的角度
hatObj.PatternAngle=0
'内环
User_CreateLayers
ThisDrawing.ActiveLayer=ThisDrawing.Layers.Item("粗实线层")
p1(0)=6:
p1
(1)=D/2:
p2(0)=4:
p2
(1)=D/2+2
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1(0)=lin
p1(0)=4:
p1
(1)=D*0.6
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1
(1)=lin
p2(0)=B/2-5:
p2
(1)=D*0.6+1
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1
(2)=lin
p1(0)=p2(0)+1:
p1
(1)=p2
(1)+5
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1(3)=lin
p2(0)=B/2+4:
p2
(1)=p1
(1)
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1(4)=lin
p1(0)=B/2+5:
p1
(1)=D*0.6+1
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1(5)=lin
p2(0)=B-4:
p2
(1)=D*0.6
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1(6)=lin
p1(0)=p2(0):
p1
(1)=D/2+2
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1(7)=lin
p2(0)=B-6:
p2
(1)=D/2
Setlin=ThisDrawing.ModelSpace.AddLine(p1,p2)
Setouterloop1(8)=lin
p1(0)=6:
p1
(1)=D/2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fm cad