机械CADCAM课程论文.docx
- 文档编号:21040776
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:12
- 大小:76.03KB
机械CADCAM课程论文.docx
《机械CADCAM课程论文.docx》由会员分享,可在线阅读,更多相关《机械CADCAM课程论文.docx(12页珍藏版)》请在冰豆网上搜索。
机械CADCAM课程论文
东莞理工学院
机械CAD/CAM课程论文
题目:
基于CAD二次开发的六角螺母库模块
姓名:
.........
学号:
系别:
机械工程学院
专业班级:
机械设计本2011-01
指导教师:
...........
起止日期:
2014年12月15日至2015年1月4日
目录
二次开发概述及总体要求……………1
方案设计………………………………1
1,方案总体思路…………………………………1
2,流程图…………………………………………2
3,程序功能说明…………………………………3
程序开发模块、函数说明……………3
总结……………………………………4
代码附录………………………………4
二次开发概述及总体要求
在日常的设计中,通常是采用AutoCAD等设计软件进行,但是在复杂CAD问题或特殊用途的设计中,只通过原有软件的功能是无法解决问题的,所以根据客户的特殊用途进行软件的客户化定制和二次开发可以大大提高设计的效率和技术水平。
六角螺母的画法和和数据具有固定性,对于六角螺母的标准,需要通过查阅设计手册才能获取,所以通过CAD等设计软件来进行绘制时效率极低,因此基于CAD二次开发的六角螺母库模块可以大大地降低绘制的难度,提高绘制效率。
在基于CAD二次开发的六角螺母库模块中,总体的要求是:
1.六角螺母数据库的录入
2.自定义尺寸的六角螺母在CAD中绘制
3.六角螺母库数据的读取
方案设计
1,方案总体要求
为了提高程序的方便性和简洁,通过把六角螺母库的功能要求集合在一个项目中,项目中添加一个类来定义三个CAD指令的程序设计,以及通过添加三个windows窗体来满足在不同指令下数据的录入、输出。
2,流程图
3,程序功能说明
AddNutPara指令:
弹出添加窗口,添加公称直径D和对边宽S(S必须在最大和最小范围内),链表进行保存;
PlaceNut指令:
弹出放置窗口,根据公称直径D选择螺母,可在界面上调整放置位置、角度和X、Y切变量;
PrintPara指令:
有序打印所有螺母参数;
程序开发模块及函数说明
开发模块:
类:
集合程序中的对象以及相关操作程序,实现操作的内部处理
Window窗体:
程序的对象,
函数说明:
CDbl(expression):
转换表达式为Double型态
WriteMessage(“&&”):
内容输出
Line():
直线
Point3d():
建立三维坐标
Write():
写入内容,不换行
WriteLine():
写入内容,自动换行
StreamWriter(path,boolean):
将制定内容写入path位置的文本中,如果没有该文本则建立,如果boolean为true则追加,如果为false则替换
AddToModelSpace():
自定义的函数,用于显示所画的图案
Dir(“路径\文件名“):
检索路径中是否存在改文件
My.Computer.FileSystem.WriteAllText("路径","内容",追加或写入,使用的编码):
用于在规定位置建立带有一定内容的指定文件
MsgBox(Prompt[,Buttons][,Title][,Helpfile,Context]):
弹出对话框
总结
这次的大作业使用进行CAD六角螺母库模块的开发,由于之前没学习过,所以在软件的操作和编程语言的使用上有较大的困难,但是通过多尝试,多查资料,能顺利地完成了部分模块功能,经历艰辛后的获得是甘甜的。
在这次模块开发中,无论是检索文件是否存在,文件的建立还是文件的写入,都很值得我们以后深入学习的,因为在现代的工作中,我们常常会遇到一些日常处理的问题和繁琐,但我们掌握这样的技能的时候,可以更有效率地去完成我们的任务,用周边的资源去简化我们的工作。
在这次的大作业中,由于自身的基础不够扎实,所以在编程的优化性上还是缺少的,但是只要我们多尝试,多学习,一定能克服困难,做出满意的作品。
代码附录
ImportsAutodesk.AutoCAD.DatabaseServices
ImportsAutodesk.AutoCAD.Geometry
ImportsAutodesk.AutoCAD.Runtime
ImportsAutodesk.AutoCAD.EditorInput
ImportsAutodesk.AutoCAD.ApplicationServices
ImportsSystem.IO
ImportsMicrosoft.VisualBasic.CompilerServices
PublicClassproject
PublicSubPlaceNut()
DimdbAsDatabase=HostApplicationServices.WorkingDatabase
DimtransAsTransaction=db.TransactionManager.StartTransaction
DimedAsEditor=Application.DocumentManager.MdiActiveDocument.Editor
Try
DimDiamAsDouble
DimAngleAsDouble
DimAcrossFAsDouble
DimCenterAsNewPoint3d()
DimplaAsNewPlaceNut
Ifpla.ShowDialog=Windows.Forms.DialogResult.OKThen
Diam=CDbl(pla.Diam.Text)
Angle=CDbl(pla.Angle.Text)
AcrossF=CDbl(pla.AcrossF.Text)
Center=NewPoint3d(CDbl(pla.CenX.Text),CDbl(pla.CenY.Text),0)
EndIf
ed.WriteMessage("公称直径D:
"&Diam&",对边宽S:
"&AcrossF&",旋转角度¨¨A:
"&Angle&vbCrLf)
DimeAsDouble=AcrossF/(2*(Math.Cos(30*Math.PI/180)))
Dimcir1AsNewCircle(Center,NewVector3d(0,0,1),AcrossF/2)
Dimcir2AsNewCircle(Center,NewVector3d(0,0,1),(Diam*0.85)/2)
Dimarc5AsNewArc(Center,Diam/2,(Angle-90)*Math.PI/180,(Angle+180)*Math.PI/180)
DimPoint1AsNewPoint3d(Center.X+e*Math.Cos(Angle*Math.PI/180),Center.Y+e*Math.Sin(Angle*Math.PI/180),0)
DimPoint2AsNewPoint3d(Center.X+e*Math.Cos((Angle+60)*Math.PI/180),Center.Y+e*Math.Sin((Angle+60)*Math.PI/180),0)
DimPoint3AsNewPoint3d(Center.X+e*Math.Cos((Angle+120)*Math.PI/180),Center.Y+e*Math.Sin((Angle+120)*Math.PI/180),0)
DimPoint4AsNewPoint3d(Center.X+e*Math.Cos((Angle+180)*Math.PI/180),Center.Y+e*Math.Sin((Angle+180)*Math.PI/180),0)
DimPoint5AsNewPoint3d(Center.X+e*Math.Cos((Angle+240)*Math.PI/180),Center.Y+e*Math.Sin((Angle+240)*Math.PI/180),0)
DimPoint6AsNewPoint3d(Center.X+e*Math.Cos((Angle+300)*Math.PI/180),Center.Y+e*Math.Sin((Angle+300)*Math.PI/180),0)
ed.WriteMessage("Pt1:
("&Center.X+e*Math.Cos(Angle*Math.PI/180)&","&Center.Y+e*Math.Sin(Angle*Math.PI/180)&")")
ed.WriteMessage("Pt2:
("&Center.X+e*Math.Cos((Angle+60)*Math.PI/180)&","&Center.Y+e*Math.Sin((Angle+60)*Math.PI/180)&")")
ed.WriteMessage("Pt3:
("&Center.X+e*Math.Cos((Angle+120)*Math.PI/180)&","&Center.Y+e*Math.Sin((Angle+120)*Math.PI/180)&")")
ed.WriteMessage("Pt4:
("&Center.X+e*Math.Cos((Angle+180)*Math.PI/180)&","&Center.Y+e*Math.Sin((Angle+180)*Math.PI/180)&")")
ed.WriteMessage("Pt5:
("&Center.X+e*Math.Cos((Angle+240)*Math.PI/180)&","&Center.Y+e*Math.Sin((Angle+240)*Math.PI/180)&")")
ed.WriteMessage("Pt6:
("&Center.X+e*Math.Cos((Angle+300)*Math.PI/180)&","&Center.Y+e*Math.Sin((Angle+300)*Math.PI/180)&")")
DimLine1AsNewLine(Point1,Point2)
DimLine2AsNewLine(Point2,Point3)
DimLine3AsNewLine(Point3,Point4)
DimLine4AsNewLine(Point4,Point5)
DimLine5AsNewLine(Point5,Point6)
DimLine6AsNewLine(Point6,Point1)
AddToModelSpace(db,cir1,cir2,arc5,Line1,Line2,Line3,Line4,Line5,Line6)
trans.Commit()
pla.Dispose()
CatchexAsException
MsgBox(ex.Message)
Finally
trans.Dispose()
EndTry
EndSub
PublicSubAddNutPara()
Try
IfDir("D:
\testfile.txt")=""Then
My.Computer.FileSystem.WriteAllText("D:
\testfile.txt","",False,System.Text.Encoding.Default)
EndIf
DimsrAsSystem.IO.StreamReader=NewSystem.IO.StreamReader("D:
\TestFile.txt")
DimstrAsString
str=sr.ReadLine()
sr.Close()
DimDAsDouble
DimAAsDouble
DimaddAsNewAddNutPara
Ifadd.ShowDialog=Windows.Forms.DialogResult.OKThen
D=CDbl(add.DiamA.Text)
A=CDbl(add.AcrossFA.Text)
EndIf
IfstrIsNothingThen
DimwAsStreamWriter=NewStreamWriter("D:
\TestFile.txt",False)
w.Write("公称直径D:
")
w.WriteLine(D)
w.Write("对边宽S:
")
w.WriteLine(A)
w.Close()
Else
DimswAsStreamWriter=NewStreamWriter("D:
\TestFile.txt",True)
sw.Write("公称直径D:
")
sw.WriteLine(D)
sw.Write("对边宽S:
")
sw.WriteLine(A)
sw.Close()
EndIf
add.Dispose()
CatchexAsException
MsgBox(ex.Message)
EndTry
EndSub
PublicSubPrintNut()
Try
DimfpAsStreamReader
DimsAsString
DimpriAsNewPrintNut
Ifpri.ShowDialog=Windows.Forms.DialogResult.OKThen
fp=File.OpenText("D:
\TestFile.txt")
s=fp.ReadToEnd
EndIf
pri.Dispose()
CatchexAsException
MsgBox(ex.Message)
EndTry
EndSub
PublicOverloadsFunctionAddToModelSpace(ByRefdbAsDatabase,ByValParamArrayents()AsEntity)AsObjectIdCollection
DimretIDsAsNewObjectIdCollection
DimtransAsTransaction=db.TransactionManager.StartTransaction
Try
DimbtAsBlockTable=trans.GetObject(db.BlockTableId,OpenMode.ForRead)
DimbtrAsBlockTableRecord=trans.GetObject(bt(BlockTableRecord.ModelSpace),OpenMode.ForWrite)
ForEachentAsEntityInents
retIDs.Add(btr.AppendEntity(ent))
trans.AddNewlyCreatedDBObject(ent,True)
Next
trans.Commit()
ReturnretIDs
CatchexAsException
Throwex
Finally
trans.Dispose()
EndTry
EndFunction
PublicPropertyiniFilePathAsString
PrivateDeclareFunctionGetPrivateProfileStringLib"kernel32"Alias"GetPrivateProfileStringA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsInt32,ByVallpFileNameAsString)AsInt32
EndClass
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 CADCAM 课程 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)