机械CAD论文.docx
- 文档编号:4100168
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:9
- 大小:40.58KB
机械CAD论文.docx
《机械CAD论文.docx》由会员分享,可在线阅读,更多相关《机械CAD论文.docx(9页珍藏版)》请在冰豆网上搜索。
机械CAD论文
xxxx大学
研究生课程论文
课程名称:
机械CAD技术
课程代号:
任课教师:
论文/研究报告题目:
利用AutoCAD二次
开发技术实现对平面图形的参数化设计
完成日期:
年月日
学科:
学号:
姓名:
成绩:
利用AutoCAD二次开发技术实现对平面图形的参数化设计
摘要
AutoLisp是一个附加在CAD软件内的程序语言,是一种可让人们将其专业设计条件转化成图形的自动画图方式,这种通过执行一个程序就可以自动将图画出的方式,对绘图者来说,不但可以大幅度的提高绘图效率,同时还提高了绘图的精确度。
本文通过几个小例子介绍了利用AutoLisp语言画图的步骤以及说明可以通过AutoLisp语言实现对AutoCAD软件的二次开发。
关键词:
AutoCAD二次开发,VisualLISP编程,图形参数化
Abstract
AutoLispisanadd-inprogramminglanguagewithinaCADsoftware,whichisaservicethatallowspeopletotranslatetheirprofessionalgraphicdesignconditionsintotheautomaticdrawingmode.thewaythatcanautomaticallydrawingbyexecutingaprogram,tothemapmaker,notonlycangreatlyimprovetheefficiencyofthedrawing,butalsoimprovetheaccuracyofthedrawing.ThispaperintroducesAutoLisplanguagedrawingstepsbydescribingafewsmallexamplesandthereforeexplainscanAutoLispdescriptionlanguageforAutoCADsecondarydevelopmentofsoftware.
KeyWords:
AutoCADseconddevelopment,VisualLISPprogramming,Graphicalparameterization
几何参数化建模
1.图形参数化概述:
图形参数化,是指对于几何形状类似的图形,定义一组参数与主要的形状尺寸相对应,当对参数赋不同的数值时,能够获得尺寸不同但形状相似的一类图形。
用参数约束图形,改变参数的值,图形就随之改变,这样的图形就是参数化的图形。
参数化绘图适用于结构形状比较定型,并可以用一组参数来约定尺寸关系的系列化或标准化的图形绘制。
参数化绘图有两大类型:
程序参数化和交互参数化绘图。
本文主要讲解程序参数化绘图。
程序参数化绘图的基本原理是以图形的坐标值为变量,用一组参数来约定图形的尺寸关系(称这组参数为尺寸约束参数),根据图形顶点的连接关系,可方便地确定变量和尺寸约束参数之间的数学关系。
程序参数化绘图的实质,就是把图形信息记录在程序中,用一组变量定义尺寸约束参数,用赋值语句表达图形变量和尺寸约束参数的关系式,并调用一系列的绘图命令绘制图形。
在运行时,只需输人尺寸约束参数,就可以自动地绘制一幅符合结构形状的图形。
但是,程序参数化绘图需要编制相应的程序,编程工作量大、柔性差、直观性差,实际应用受到一定限制。
2.图形参数化原理:
图形是由图形元素构成的。
传统的CAD系统只记录图形元素本身的几何信息和图层、颜色、线型等非几何信息,并不记录图形元素之间的拓扑关系和约束关系。
因此,所生成的图形只是图形元素的简单堆叠,不存在几何图形的组织关系。
在这种情况下,标注的尺寸与被标注的对象未必是相关的,即使相关,也只是和单个图形元素相关,不能实现几何图形随着尺寸的修改而更新。
利用程序实现图形参数化的原理是:
以零件的结构尺寸作为参数,图形结构的拓扑关系和约束关系体现在程序的内部语句里。
具有图形参数化功能的CAD系统最根本的改进是它能够记录和识别几何图形的拓扑关系和几何约束关系。
拓扑关系确定了几何图形的构成规则,几何约束关系确定了图形元素之间特殊的相对位置,如水平、铅垂、平行、垂直、相切、共点、共线、对称等。
结构相同的图形只是图形元素的大小改变,其拓扑关系和几何约束关系不变。
工程图中的尺寸是几何图形的一个直接和自然的描述者,可以通过尺寸约束图形元素的大小。
图形参数化的原理就是通过图形的拓扑关系和几何约束关系确定图形的形状结构,通过尺寸数值约束图形各部分结构的大小。
3.图形参数化步骤:
(1)确定参数;
(2)通过已定义参数确定构成图形的几何对象的参数;
(3)通过图形函数或者图形命令绘制图形。
4.图形参数化的编程实现
下文中编写的一段LISP程序可以实现与大圆内切小圆外切的封闭曲线。
也就是说,在AutoCAD中通过加载并运行此段程序,就可以画出此封闭曲线。
展示出了运用VisualLISP对该软件进行二次开发之后,参数化的图形所具有的显著优点:
绘图效率更高,标准化程度更好,批处理能力加强,精度、公差统一等等。
下面是以fbqx为命令名的源程序:
(defunc:
fbqx(/abscalex0y0rdrabthetathetadnaoverbnoiphixy)
(setvar"cmdecho"0)
(setvar"blipmode"0)
(setqpc(getpoint"\nCenterpoint:
"))
(initget7)
(setqa(getint"\nRadiusofoutercircle:
"))
(initget7)
(setqb(getint"\nRsdiusofintercircle:
"))
(setqscale(getreal"\nScalingfactor:
"))
(setqx0(carpc))
(setqy0(carpc))
(setqrd(*bscale))
(setqrab(*(-ab)scale))
(setqtheta0.0)
(setqthetad(*pi0.02))
(setqaoverb(/(floata)(floatb)))
(setqn(/b(gcdab)))
(setqno(*100n))
(command"pline"(list(+x0rabrd)y0))
(setqi1)
(while(<=ino)
(setqtheta(+thetathetad))
(setqphi(*thetaaoverb))
(setqx(+x0(*rab(costheta))(*rd(cosphi))))
(setqy(+y0(-(*rab(sintheta))(*rd(sinphi)))))
(command(listxy))
(setqi(1+i))
)
(command"")
(princ)
)
上述程序以圆心,外圆半径内圆半径为参数,通过一系列拓扑关系和几何约束关系,将此封闭曲线参数化,即给出不同的中心点坐标和内外圆半径,就能生成尺寸不同但形状相似的封闭曲线。
下图为程序运行结果,在AutoCAD中加载上面的程序,调试通过后返回AutoCAD环境,在命令栏输入:
fbqx,按照提示选取中心点,输入内外圆半径,即可生成封闭曲线:
下文中编写的一段LISP程序可以实现带有中心线的圆。
也就是说,在AutoCAD中通过加载并运行此段程序,就可以画出带有中心线的圆。
下面是以yx为命令名的源程序:
(defunc:
yx(/p0p1p2p3p4rjiaocmdos)
(setqr(getdist"\n输入半径:
"))
(if(=jiaodunil)
(setqjiaodu0))
(princ"\n输入角度:
")(princjiaodu)(princ"\n")
(setqshuru(getreal""))
(if(/=shurunil)
(setqjiaodushuru))
(setqjiao(*pi(/jiaodu180)))
(setqp0(getpoint"\n指定圆心"))
(while(/=p0nil)
(setqcmd(getvar"cmdecho"))
(setvar"cmdecho"0)
(setqos(getvar"osmode"))
(setvar"osmode"0)
(command"circle"p0r)
(setqp1(polarp0jiao(+r2)))
(setqp2(polarp0(+jiaopi)(+r2)))
(setqp3(polarp0(+jiao(/pi2))(+r2)))
(setqp4(polarp0(-jiao(/pi2))(+r2)))
(command"layer""m"5"l""center"5"c"15"")
(command"color""bylayer")
(command"line"p1p2"")
(command"line"p3p4"")
(command"layer""s"0"")
(command"color""bylayer")
(setvar"osmode"os)
(setvar"cmdecho"cmd)
(setqp0(getpoint"\n指定圆心"))
)
(princ)
)
下图为程序运行的结果:
下文中编写的一段LISP程序可以实现对多个圆生成内接五角星,也就是说,在AutoCAD中如果画出很多大小不一的圆,那么通过加载并运行此段程序,就可以对选中的多个圆生成各自的内接五角星。
下面是以wjx为命令名的源程序以及注释:
(defunc:
wjx(/oceosangbangdenIen_dataen_typecenptrado1o2o3o4o5i1i2i3i4i5rad1)
(setqoce(getvar"cmdecho"));命令行回显状态
(setvar"cmdecho"0);命令行不回显
(setqos(getvar"osmode"));捕捉方式
(setvar"osmode"0);取消捕捉,如果不取消,图形会显示不正确
(setqangb(getvar"angbase"));取角度起始方向
(setqangd(getvar"angdir"));取角度旋转方向
(setvar"angbase"0.0);x轴(正向)为0
(setvar"angdir"0);逆时针为正
(setqen(entsel"\n选取内部生成五角星的圆:
"))
(setqI0);记数器
(whileen
(setqen_data(entget(caren)));选对象
(setqen_type(cdr(assoc0en_data))
);群码0为参数类别
(if(=en_type"CIRCLE");如果选取的对象是圆
(progn
(setqcenpt(cdr(assoc10en_data)));取得中心点
(setqrad(cdr(assoc40en_data)));取得半径
(setqo1(polarcenpt(/pi2)rad));外部五个点
(setqo2(polarcenpt(/(*18pi)180)rad))
(setqo3(polarcenpt(/(*-54pi)180)rad))
(setqo4(polarcenpt(/(*-126pi)180)rad))
(setqo5(polarcenpt(/(*162pi)180)rad))
(setqrad1(*rad(-(sin(/(*54pi)180));内部五个点距离圆心距离为rad1
(*(cos(/(*54pi)180))
(/(sin(/(*36pi)180));这行及下行是求36度的正切值
(cos(/(*36pi)180))
)
)
)
)
);rad赋值完毕
(setqi1(polarcenpt(/(*54pi)180)rad1));内部五个点
(setqi2(polarcenpt(/(*-18pi)180)rad1))
(setqi3(polarcenpt(/pi-2)rad1))
(setqi4(polarcenpt(/(*-162pi)180)rad1))
(setqi5(polarcenpt(/(*126pi)180)rad1));五角形外形,调用pline使之成为整体
(command"pline"o1"w"00i1o2i2o3i3o4i4o5i5"c")
(command"line"o1i3"");五角内部五条直线
(command"line"o2i4"")
(command"line"o3i5"")
(command"line"o4i1"")
(command"line"o5i2"")
(setqI(1+I));每完成一个,记数器加1
)
(alert"该对象不是圆,请重新选取圆");如果选取的对象不是圆
);endif
(setqen(entsel"\n选取下一个内部生成五角星的圆:
"));提示重新选取
)
(princ(strcat"\n共绘制了"(itoai)"个圆内接五角星"))
(setvar"osmode"os);回原捕捉模式
(setvar"cmdecho"oce);回命令行回显示状态
(setvar"angbase"angb);返回角度初始
(setvar"angdir"angd);返回角度旋转方向
(princ)
)
(prompt"\n<
(prin1)
上述程序以所选取的圆的圆心位置和半径为参数,通过一系列拓扑关系和几何约束关系,将内接五角星参数化,即给出不同的中心点坐标和外接圆半径,就能生成尺寸不同但形状相似的正五角星;同时,为了能一次性对多个圆进行操作,程序中加入了条件函数if和循环函数while,能够实现运行一次命令即可对多个圆生成内接五角星的操作;此外,为了防止因所选图形不是圆而造成程序输出错误,程序末端还加入了错误处理函数alert。
下图为程序运行结果,在AutoCAD中先画三个不同圆心位置不同半径的圆,然后加载上面的程序,调试通过后返回AutoCAD环境,在命令栏输入:
wjx,按照提示选取目标圆,即可生成各自的内接五角星:
学习体会
通过利用VisualLISP对AutoCAD进行二次开发,我学习到了三方面知识:
第一,学会了把能够标准化的二维图形通过编程的方式参数化。
在目前的机械设计领域,绝大部分的机械零部件都属于标准件,即尺寸大小可能不一样,但是形状特征相似,对于这类图形的画法,如果能使用参数化绘图,不仅画起来效率高,改动起来也非常方便。
在今后的研究中,应该多留意能够参数化的一些实例,正所谓“授人以鱼,不如授人以渔”,学会一段并不长的程序,就能够生成无数个类似的图形。
第二,加深了编程的思想。
目前的设计软件都是用程序写出来的,当然,如果要对这些软件进行二次开发,也得靠编程,现在编程的目的不仅是要完成某一项操作,而且还要考虑到对程序的优化,尤其是对AutoLISP语言,由于采用的是表结构,在表达复杂程序时比较冗长,会影响计算机的反应速度甚至可能和其它程序表达冲突,因此,现在的编程不仅要把程序调试成功,而且要力求简单明了,结构清晰。
第三,明确了参数化设计的未来发展。
一些著名的三维实体造型软件中已经能够很好地对实体进行参数化设计,然而在AutoCAD环境下,虽然对二维图形的参数化编程基本被做空,但是三维空间实体的参数化编程还是有很大的研究空间,可以考虑在这方面进行深入的研究。
参考文献
[1]童秉枢等.机械CAD技术基础(第三版).北京:
清华大学出版社,2008
[2]周乐来,马婧.AutoCAD2008VisualLISP二次开发入门到精通.北京:
机械工业出版社,2008
[3]胡仁喜等.AutoLISP机械设计高级应用实例.北京:
机械工业出版社,2005
[4]田斌等.机械CAD技术教程.武汉:
武汉工业大学出版社,2007
[5]肖刚等.机械CAD原理与实践(第三版).清华大学出版社,2008
[6]FaridAmirouche.PrinciplesofComputer-AidedDesignandManufacturing(SecondEdition).清华大学出版社,2006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 CAD 论文