基于AutoLisp的加工中心滚珠丝杠副CAD二次开发.doc_第1页
基于AutoLisp的加工中心滚珠丝杠副CAD二次开发.doc_第2页
基于AutoLisp的加工中心滚珠丝杠副CAD二次开发.doc_第3页
基于AutoLisp的加工中心滚珠丝杠副CAD二次开发.doc_第4页
基于AutoLisp的加工中心滚珠丝杠副CAD二次开发.doc_第5页
免费预览已结束,剩余46页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录摘 要.1 AutoCAD的二次开发概述. 11.1 CAD二次开发研究现状. 11.2 AutoLISP语言简介 .21.3 课题研究的目标及意义 .32 图形及参数分析. 42.1 图形分析. 42.2 参数分析. 43 编程过程. 63.1 菜单设计. 63.2 螺母对话框. 73.3 画螺母主视图和左视图函数. 113.3.1 AutoLISP函数介绍. 113.3.2 画螺母主视图和左视图. 133.4 标注函数. 153.4.1 AutoLISP几何计算函数介绍. 153.4.2 螺母图尺寸标注. 163.5 画图框. 183.5.1 定义字样. 183.5.2 编制画图框程序. 194 结果分析. 255 总 结. 25致谢语. 26参考文献. 27Abstract. 28附 录. 29基于AutoLisp的加工中心滚珠丝杠副CAD二次开发摘 要 随着制造业信息化的深入,AutoCAD 的二次开发越来越多的受到人们广泛的应用。用户通过对AutoCAD系统的定制开发,可以结合自己的专业特点,开发属于自己的专用型CAD系统。目前,国内开发的工程制图软件大多采用AutoCAD作为其软件支撑平台,进行二次开发而成,为工程设计和制图行业创造了巨大的经济效益和社会效益。本课题以AutoCAD为工具,利用Autolisp语言对机械加工设备进行参数化绘图,实现人机对话,加强了人性化的交互方式设计。本课题主要选用数控加工中心滚珠丝杠螺母副的零件图作为研究对象,通过AutoLISP语言编程,生成独立的菜单,弹出对话框,接受用户输入的不同型号零件的参数,自动运算,自动绘图,使繁琐的绘图标注与复杂的分析计算由程序来完成,快捷方便,实现图形参数化及智能化,分析计算与绘图一体化,提高产品的自动化。 关键词 AutoLISP AutoCAD 滚珠丝杠副 加工中心 2010届机械设计制造及其自动化专业毕业设计(论文) 1 AutoCAD的二次开发概述1.1 CAD二次开发研究现状2000年,中国制造业总产值已达35000亿元,制造业增加值在国内生产总值(GDP)中所占的比重多年来一直保持在40%左右;从1980年到 1998年,我国GDP年均增长率为9.94%,而同期制造业的年均增长率达12.65%,制造业成为中国经济增长的”发动机”。设计是制造业中重要的一环,据统计,制造业中有80的企业在使用CAD软件。近年来,伴随着我国制造业的产业升级,设计在制造业中的地位愈显突出。这对于设计软件厂商来说是一个无比巨大的蛋糕。中国CAD软件市场规模将非常巨大,且在不断增长。所以也就不难理解国际数字设计软件领导厂商AutoDesk将在华的销售预期从现在的2亿元/年调整到2006年的8亿元/年。另一巨头Micro Station也宣布大举进入中国市场。然而如此之大的市场上却鲜有国产软件的身影。国内CAD联盟正是为打造健康,安全,和谐的CAD生态圈而生。自去年5月成立以来,联盟成员通力合作,终于取得重大突破,基于国产中望CAD平台研发的斯威尔建筑,鸿业给排水,鸿业暖通,博超电器,探索者结构等系列专业应用软件已经郑爽面向市场,这意味着国产CAD迎来了质的飞跃,国内用户终于可以逐步摆脱对国外CAD平台软件的技术羁绊,彻底解决底层平台的软件正版化问题。CAD技术作为现代信息技术领域中设计及相关部门使用最广泛的技术之一,几乎推动着一切领域的设计革命。经过10多年的发展,目前我国的机械、电子、航空航天、船舶、轻工、纺织和建筑乃至冶金、煤炭、水电等行业,CAD技术的应用都已经非常普遍,并且达到了相当高的水平,当中,以中望CAD等为代表的国产二维CAD支撑平台软件占据了较大的市场份额。但在二次开发软件中,以国外CAD作为开发平台的状况一直没有改变。中望CAD和斯维尔、鸿业、博超、探索者等国内一流专业应用软件厂商的结盟,终于在近期打破了国外软件多年的技术藩篱。CAD的二次开发,就是用户使用AutoCAD提供的相关编程软件,按照自己的需要,通过编程的方式,去组合一些相对简单或者基本的命令,使之成为一个相对复杂的由简单命令构成的”命令集合”。通过运行该”命令集合”,可以实现快速自动的作图,这样一来,节省了作图时间,提高了作图效率。基本AUTOCAD系统的二次开发基本有两种模式,一是取得AC授权的商业开发,二是”民间”私自开发。经过许多年的积累和成熟后,前者如天正等也得到茁壮成长,而后者即连同用户一起陷入了”非法”的陷阱中、欲说难言。 正式的开发商,因为急于追求市场利润,软件毛糙,更新缓慢。加上写程序的人不懂专业,结果造成二次开发的许多局限。 民间的程序开发者,是对自己的专业设计做的,效果很好。但是极其缺乏市场运作和资金,东西存在手中,别人用不上。而且软件工程概念淡薄,程序和数据结构不合理,很难继续完善。其实现在二次开发的很多,简单功能的增加已经没有出路,但是,专业化的功能开发应该还是很有前途。现在专家系统越来越受到社会的追捧,但发展现状不容乐观。AutoLISP是一种程序开发语言,Visual LISP是为加速AutoLISP程序开发而设计的软件开发工具,是一个完整的集成开发环境,在Visual LISP环境下可以便捷高效地开发AutoLISP程序,利用AutoLISP可以进行各种工作的分析计算,自动绘制复杂的图形,驱动对话框,控制菜单,定义新的命令,为AutoCAD扩充智能化、参数化的功能。1.2 AutoLISP语言简介大多数用户在使用AutoCAD时,基本只是使用了其手动二维绘图功能,AutoCAD难道不能绘制复杂曲线,曲面,三维造型吗?其实不然,AutoCAD之所以不提供这些功能,不是技术不许可,而是受到了两个限制。首先,Autodesk认为AutoCAD是一个提供基本功能和可以进行再次开发的软件平台,它应该使用于包括机械在内的各个行业,诸如建筑,土木,服装,电子,装修等。如果各个行业需要什么特殊功能,由使用者自行开发即可;其次,AutoCAD软件只是运行在计算机上的一个应用软件而已,运行速度不快,占用计算机资源太多,执行绘制复杂图形的任务效率不高。因此,AutoCAD不主动提供这些功能,但是提供了开发这些功能的工具。AutoLISP是AutoCAD二次开发的一种,是一种针对扩充及自订AutoCAD函数机能而产生,以LISP为基础的程序设计言。LISP本身于50年代末期出现,是一种擅于处理串行文字(List of Processing),属第四代人工智能(Artificial Intelligence)的计算机语言。它能够绘制各种曲线,曲面,以满足广大工程设计人员的要求。AutoLISP语言最经典的应用之一是实现参数化绘图程序设计,包括尺寸驱动程序、鼠标拖动程序等。尺寸驱动是指通过改变实体标注的尺寸值来实现图形的自动修改;鼠标拖动即利用AutoLISP语言提供的(GRREAD)函数,让用户直接读取AutoCAD的输入设备(如鼠标),任选项追踪光标移动存在且为真时,通过鼠标移动光标,调整所需的参数值而达到自动改变屏幕图形的大小和形状。打开AutoCAD软件,可以在命令提示下输入vlisp或在AutoCAD菜单中选择”工具”AutoLISP”Visual LISP编辑器”。AutoLISP编辑器界面如图11所示。图11 AutoLISP编辑器界面1.3 课题研究的目标及意义本课题选用数控加工中心滚珠丝杠螺母副的零件图和装配图作为研究对象,通过AutoLISP编程,生成独立的菜单,弹出对话框,接受用户输入的数据,自动运算,自动绘图,使繁琐的绘图标注与复杂的分析计算由程序来完成,快捷方便,实现图形参数化及智能化,分析计算与绘图一体化,提高产品的自动化,研究对AutoCAD的二次开发。编程是一个系统的过程,需要开发人员的逻辑设计,使结构优化,滚珠丝杠零件图参数可以根据用户自行设定,调用AutoCAD本身具有的工具命令,同时在定位零件图的点线中加入参数,使计算机完成自动计算数据,生成有带参数化的完整零件图,用户可自行改变各视图中图形尺寸,实现制图的自动化。2 图形及参数分析2.1 图形分析图21所示是本课题研究对象滚珠丝杠螺母副装配图。图2-1 滚珠丝杠螺母副装配图分析:滚珠丝杠螺母副由丝杠和螺母组成,其中主要元素包括线、圆、圆弧、图案填充等构成,长度标注、直径标注,因此编程的主要内容就是针对这些元素,用相应的AutoLISP命令编写程序,完成作图。初步想法是通过定位图中各种元素,用Command函数组织定点,连接点构成直线,计算图中圆的中心位置,连接圆弧,使画图在操作中可行。因为图中会涉及到图案填充和各种尺寸标注,在画图过程中应该设计至少三个图层,方便应用程序语言来进行逐步作图。图形由主视图、俯视图,左视图组成,由于螺母和丝杠的主视图和俯视图相同,故可以省略它们的俯视图。在编程过程中,会设置图层,颜色,线型等相关项。主要运用到line(画线命令),arc(画圆弧命令),circle(画圆命令),在此之前,会用到相应参数去计算出点、直线、圆的尺寸和位置。在自己的草稿图纸上先标注一些基本点,再运用基本点去计算其他点与基本点的位置关系。本课题只是以螺母为例,详细介绍其参数化绘图的每一个步骤。2.2 参数分析下图22是滚珠丝杆螺母的参数图。图2-2 滚珠丝杠螺母参数图表21是滚珠丝杠螺母零件图中的各参数明细。序号参数名含义初始值1Cpx螺母起始点x坐标100 mm2Cpy螺母起始点y坐标100 mm3l螺母全长66 mm4ld螺母大径52 mm5lz螺母的中径28 mm6lj螺母节圆直径40 mm7lx螺母内孔直径18 mm8lzk螺母端盖厚度10 mm9lyk螺母右边宽度27 mm10Kz圆孔直径5 mm11Ksh圆孔数目6个12angle第一个螺母的起始角度0度表2-1 滚珠丝杠螺母零件图中的各参数明细结合以上参数,选取不变参数为基准,再确定直线,圆,圆弧的位置时通过所给尺寸计算,分析,其中会用到相应的AutoLISP命令,比如setq(表处理函数),list(创建表),atof(类型转换函数)。当然会直接利用AutoLISP的数学运算命令加、减、乘、除。AutoCAD允许在数学表达式中使用AutoLISP变量,但是可以使用的变量类型将被限制为:Real实数、Integer整数、2D(两维)或者3D(三维)点(矢量),而且不使用AutoLISPsetq函数定义变量,只在表达式中直接给出。如果使用一个AutoLISP变量名包括了CAL命令的一个特殊字符,例如:+,-,*,或者/,该变量名后应空一个字符予以隔开。将一个表达式的值赋予一个AutoLISP变量应当使用一个符号。将一个表达式的值赋予一个AutoLISP变量后,可以将该变量的值用于别的计算。AutoLISP提供了大量的内部函数,应用变量的目的就是快速地进行各种计算工作。根据参数,就可以设计对话框,并将对话框中的参数传输至相对应的代码。代码中的参数为具体值所取代,即可计算点、圆弧圆心的位置,设置图层、颜色、字体;并能够根据参数要求完成标注,实现用相关函数自动计算所选直线的长度、所选角度的大小等。3 编程过程由于本课题涉及到滚珠丝杠螺母副的零件图和装配图,所以在编程时分别将丝杠,螺母和装配图分开编程。编程思路可以用图31表示。设计菜单设计对话框画主视图标 注画坐标画侧视图开 始结 束 图31 编程流程图3.1 菜单设计为了能够实现利用菜单绘图并实现隐藏对话框进行交互式操作,所以我们首先需要设计一个下拉式菜单。:(mnu文件)为菜单文件在加载时用,以下是本文所使用的菜单文件,文件名为(cd.mnu)*pop 11*draw参数化绘图数控加工中心螺母图cc(loadload_lm) -数控加工中心丝杠图cc(loadload_sg) -数控加工中心丝杠螺母副装配图cc(loadload_zp) - 图框cc(loadload_tk) -使用帮助cchelp -取消c程序说明:Pop11代表第一个下拉菜单的区域标签,说明”绘图”菜单是本菜单的第十一个菜单;三个星号*是区域标签的开头,这是个惯例。绘图是菜单栏标题,当鼠标指针移到该菜单区域内,它就被激活,单击它可展开整个菜单。代码(loadload_lm)的功能是在用户单击本项目后载入相应的程序,其中的load_lm是文件名,分好后的load_lm的功能是执行该程序,这两个有前后关联的命令之间用”;”隔开。-的作用是画一横线,区分上下两组命令。菜单装载后,该线条横亘这个菜单宽度。在文本编辑器中输入以上代码,保存为cd.mnu.再在cad的命令行输入menuload,选着刚刚保存的cd.mnu,加载,则在cad的工具栏新增“参数化绘图”这一选项。在菜单的装载过程中,系统自动生成另外三个名称相同,后缀名分别为.mnc, .mns, .mnr的文件,其中,.mnc文件是一个编译后的菜单文件, .mnr文件包含菜单中使用的位图,而.mns文件是一个ASC文件,每次改变该文件的内容时,AtuoCAD就在.mns文件中记录下变化。新增用户菜单后的AUTOCAD菜单如图32所示。图32 新增用户菜单后的AUTOCAD菜单3.2 螺母对话框对话框是一种便捷固定的窗口,也是一种先进的、流行的人机交互界面。运用对话框可以方便而直观地实现程序设计时的数据传输和信息传输。AutoCAD有自己的一套对话框设计语言,成为对话框控制语言(DCL)。该语言以ASC文件形式定义对话框,对话框中的各种元素(如按钮和编辑框)又称为控件,控件的尺寸和功能由控件的属性控制。用户只需提供最基本的位置信息,AutoCAD就可以自动确定对话框的大小和部件的布局。Visual LISP提供了查看对话框的工具,同时还提供了从应用程序中控制对话框的函数。对话框由其自身的框架以及其中的控件组成。可编程对话框(PDB)功能模块已经预定义了控件类型。通过将控件编组到行和列中,选择是否在这些成组控件周围添加封闭的框架和边框,可以创建复杂的控件,即组件。在滚珠丝杆零件图的绘制过程中,对话框应包含参数图中各个参数的内容,我们可以称这些为控件组。控件的布局、外观和动作由控件的属性指定。根据滚珠丝杆的参数分析,我们可以确定由这些控件组成我们需要的对话框:丝杠直径、公称直径等如表2-1中的可变参数,各个参数与之对应的代码可用作程序中的参数定义。下面是对话框话框函数以及函数各个部分的相关作用,文件名为sg.dcl文件,文件必须保存在安装程序的support目录下。程序代码:;对话框输入;(1) 先编制一个对话框的框架,并将该对话框命名为c_lm。c_lm:dialog (2) 添加对话框标题label=螺母正视图绘制器; (3) 添加提示性语句,提示用户怎样使用对话框:textlabel=先输入数据,然后单击开始;(4) 因为所输入的数据类型可以分类,应该把项目相同的编辑框摆放在一起。使用一个行框准备在其中添加输入位置的坐标数据编辑框,并编写该框内的编辑框类代码。:boxed_rowlabel=输入螺母的起始点;(5) 在行框代码内添加第一个编辑框,其标题为”X轴坐标”,键值设置为cpx,宽度为5,居中布置。:edit_boxlabel=X轴坐标(单位:mm);key=cpx;fixed_width=true;width=5;alignment=centered;(6) 在行框代码内再添加一个编辑框,其标题为”y轴坐标”,键值设置为cpx,宽度为5,居中布置。:edit_boxlabel=y轴坐标(单位:mm);key=cpy;fixed_width=true;width=5;alignment=centered;(7) 下面编写输入轮廓尺寸的编辑框的代码。为了把这些代码放置一起,可以设置为一个行框。:boxed_rowlabel=轮廓尺寸参数;(8) 参考输入起始点坐标代码的编写,在这个行框内编写输入螺母长度,大径等的代码,注意各个编辑框的键值设置。:edit_boxlabel=螺母长度(单位:mm);key=l;edit_limit=20;edit_width=5;:edit_boxlabel=螺母大径(单位:mm);key=ld;edit_limit=20;edit_width=5;:edit_boxlabel=螺母中径(单位:mm);key=lz;edit_limit=20;edit_width=5;:edit_boxlabel=螺母节圆直径(单位:mm);key=lj;edit_limit=20;edit_width=5;:boxed_row:edit_boxlabel=螺母内孔直径(单位:mm);key=lx;edit_limit=20;edit_width=5;:edit_boxlabel=螺母端盖厚度(单位:mm);key=lzk;edit_limit=20;edit_width=5;:edit_boxlabel=螺母右宽(单位:mm);key=lyk;edit_limit=20;edit_width=5;(9) 下面设置一个行框,把输入螺母孔数据的编辑框添加进去。:boxed_rowlabel=圆孔参数;:edit_boxlabel=圆孔直径(单位:mm);key=kz;fixed_limit=20;fixed_width=5;:edit_boxlabel=圆孔数量(单位:个);key=ksh;fixed_limit=20;fixed_width=5;:edit_boxlabel=第一个圆孔的起始角度(单位:度); 设置第一个小圆孔的起始角度key=angle;fixed_limit=20;fixed_width=5;(10) 再用一个行框,把新这种的”开始”按钮和”确定”按钮框起来:boxed_row:buttonlabel=开始;key=begin;fixed_width=true;width=5;ok_only;编制完DCL程序保存,打开AutoLISP工具栏的工具加载编辑器中中的文字后点击界面预览编辑器中的DCL,即可得到如图33所示的对话框。图3-3 参数输入对话框3.3 画螺母主视图和左视图函数为了节省参数化自动绘图的时间,我们可以考虑一次编写程序将螺母的主视图和左视图绘出,图中有很多的直线、圆、圆弧和中心线。这些会用到AutoLISP的相关函数,下面介绍一些在编程中会用到的函数。3.3.1 AutoLISP函数介绍(1) 赋值函数:SETQ函数函数格式:(setq)将一个值赋给一个符号或将一个表达式赋给一个符号。本函数是AutoLISP中一个基本的赋值函数。Setq函数也可以在一次调用中给多个变量赋值,但它仅返回最后那个表达式的值。将变量 a的值设置为5.0,以后无论何时当对变量a进行求值时,它都会返回实型数5.0。在AutoLISP程序中作为参数的任何符号都必须事先赋值。例如: 命令:(setq a 125); 把125赋值给a,返回125。 (setq b 125 c 12); 把125赋值给b,把12赋值给c,返回12。 (setq s to); 为字符串变量,返回to。AutoLISP使用setq函数建立内存变量时,函数至少需要两个参数,第一个参数为内存变量名,第二个参数是内存变量将要限定的值。在编程过程中,如果变量的数据改变时,AutoLISP程序也要重新修改。Setq函数可以建立或修改全局变量,也可以在defun函数内给内存变量赋值。全局变量可由任何函数访问和修改,或者在任一表达式中使用局部变量仅在定义它们的函数值求值期间(即函数调用期间)有意义。当全局变量作为局部变量使用时,定义他们的函数能改变他们的值。但当该函数退出时,全局变量恢复原值。(2) 函数处理函数:DEFUN函数函数格式:(defun(变量表/局部变量) (表达式1) (表达式2) )Defun函数为AutoCAD新开发的命令,就是在本次设计中用到的命令,方法是:采用defun函数定义一个新函数时,函数名必须采用C:XXX的形式,其中XXX是要增加的新命令的名称,只要它不与AutoCAD原有的命令同名即可。所定义的函数必须不带变量表,但可以带局部变量。例如定义一个画三角形的函数,其功能是给定三个点,自动画出一个三角形,程序清单如下:(defun C:triang()(setq p1(getpoint NO.1 point)(terpri)(setq p2(getpoint NO.2 point)(terpri)(setq p3(getpoint NO.3 point)(terpri)(commandline p1 p2 p3 C)(command REDRAW))结果画出以p1 p2 p3为定点的三角形。(3) 交流函数COMMAND函数格式:(command命令参数或子命令)本函数在AutoLISP 内部执行AutoCAD命令,并总是返回nill。函数后的命令参数或子命令即是在AutoCAD图形编辑状态的提示符command下输入的命令,数据及选择项(子命令)等。具体传送的参数应根据调用的AutoCAD命令序列的要求来决定,其中,AutoCAD的命令及选择项等都是作为字符串来传送的。此函数在调用末尾即遇到右括号时,自动加上一个回车符,一个空字符串(“ ”)相当于回车。如果这样调用:(command) 相当于按一次【Ctrl+C】组合键,它将取消大多数AutoCAD的命令,而会使AutoCAD重新出现command:提示符,例如:设(setq cp(7.0 8.0))(setq r 5)则(setq “circle”cp r )执行该函数的结果是在屏幕画出一个以cp点为圆心,r为半径的圆。注意AutoLISP的command函数不能用于执行AutoCAD的下列命令:DTEXT、PLOT、PRPLOT、SKETCH。(4)输出函数PRINC函数格式:(princ)该函数在屏幕上打印的值,并返回这个值。如果是一个含有控制符的字符串,那么princ能够实现这些控制字符的控制功能。(princ tello!)打印ello!3.3.2 画螺母主视图和左视图(1) 编制主程序只要调入前面的载入的螺母DCL程序,然后在适当位置插入动作处理函数即可。在图形上标出轮廓点,在文本编辑器中输入以下代码,保存.lsp文件。程序代码如下:(defun c:load_lm(/ dcl_id)(setq dcl_id(load_dialog c_lm.dcl)(if(not(new_dialog c_lm dcl_id)(exit)(action_tile begin (date_manage);当用户单击”开始”按钮时,就调入子程序date_manage进行计算(start_dialog);启动对话框(unload_dialog dcl_id);卸载对话框(drawl);执行绘制螺母的子程序(princ);将程序绘制的图形在屏幕上打印出来)(2) 编制处理数据的子程序由于用户输入的数据其实全是字符串,所以在本程序中,首先要把它们全部转换成数字,然后进行运算。用户可根据螺母参数明细表和参数图理解下面各个参数的几何意义。注意用户输入的角度值是按照角度理解的,需要另编写代码转换成弧度。程序代码如下:(defun date_manage()(setq x (atof(get_tilecpx);将字符型的参数cpx转换成实型数(setq y (atof(get_tilecpy)(setq cp (list x y);构造螺母的起始点 (setq l(atof(get_tilelc) (setq d1(atof(get_tileld) (setq n (float nl);把圆孔个数值转换成浮点数 (setq al (atof(get_tile angle ) (setq k (* pi(/ al 180);将角度转换成弧度 (setq pt (polar pt15 k d2) (setq p1(list x (+ y(- (/ d1 2)2);p1点至p24点均是以螺母起始点cp为基准点,通过与cp点的x坐标和y坐标的位置关系作比较,得到其位置坐标。 (setq p2(list (+ x 2)(+ y(/ d1 2) (setq p3(list (+ x(- k1 2)(+ y(/ d1 2) (setq p4(list(+ x k1)(+ y(-(/ d1 2) 2) (setq p22(list(+ x(- l 2)(- y(/ d3 2) (setq p25(list(+ x(+ l 50)y); (setq p26(list(+ x(+(+ l 100)d1)y) (setq p27(list(+ x(+ l 300)(+ (+ y (/ d1 2)50) (setq p28(list(+ x(+ l 300)(- (- y (/ d1 2)50) (setq pl (list(- x 50) y);建立主视图的中心线左端点 (setq pr (list(+ 50 (+ x l) y);建立主视图的中心线左端点 (setq b -270)在建立好各个点以后,接下来的工作就是将各相关点连接起来绘制成直线,或者是某一点为中心,某一参数为半径绘制圆或圆弧; (defun drawl() (command layer m 1 c );指定当前图层为第一层,线条颜色为默认颜色 (command lweight 0.3);设置当前线宽为0.3,画粗实线 (command line cp p1 ) (command line p1 pt ) (command line p5 p10 ) (command line pt6 pt9 ) (command lweight 0);设置当前线宽为0 (command layer m 2 c 6 );指定当前图层为第二层,线条颜色为洋红色(command line pl pr );画中心线 (command line p25 p26 );画左视图坐标轴 (command line p27 p28 ) (command layer m 1 c );回复图层1和默认颜色(command lweight 0.3)以下程序为绘制螺母左视图程序: (command circle p15 D d1);以p15点为中心,d1为直径作圆 (command circle p15 D (setq f (- d1 2);绘制端盖倒圆角后左视图形成的圆 (command circle p D d);在螺母的节圆半径上绘制一个小圆 (command array l p p15 nl y);小圆环形分布 (command lweight 0);设置当前线宽为0,画细实线 (command arc p16 c p15 a b);画圆弧 )程序编制完毕,保存在support目录下。选择“工具”“加载应用程序”选项,载入上面的lsp程序,输入相应的数值,单击确定可得到如图34所示的主视图和左视图。图3-4 螺母主视图和左视图3.4 标注函数一幅完整的CAD制图肯定是不能少标注的,下面的工作就是对已经作好的图形进行尺寸标注。首先介绍几个几何计算函数,用于自动计算需要标注的尺寸。3.4.1 AutoLISP几何计算函数介绍AutoLISP函数提供了几何计算函数,其主要作用有角度和距离计算。(1) ANGLE函数函数格式:(angle)该函数返回由两点确定的一条直线与X轴的夹角,单位为弧度。返回的角度是从现行构造平面的X轴算起,按逆时针方向计算。如果指定的点(p1和p2)是3D点,在计算角度时先将它们投影到现行构造平面上,然后再计算。例如:命令:(angle(0.0 1.0)(3.0 5.0))5(angle(5.0 1.33)(2.4 1.33)3.14159(2) DISTANCE函数函数格式:(distance)该函数返回两个点之间的3D距离。在调用distance函数时,如果提供的变元有一个或两个2D点,distance函数就会忽略所提供的任何3D点的Z坐标,而返回将这些点投影到现行构造平面上面得到的2D距离。例如:命令:(distance(1.0 2.5 3.0)(7.7 2.5 3.0))6.7命令:(distance(1.0 2.5 0.5)(3.0 4.0 5.0))2.53.4.2 螺母图尺寸标注滚珠丝杆螺母副的图形主要有直线和圆构成,所以我们需要长度型尺寸标注和直径型尺寸标注。(1) 长度型尺寸标注长度型尺寸标注需要确定尺寸线是水平,垂直还是指定的方向,如果默认尺寸测量值即为尺寸文本,关键是确定第一条尺寸界线起点的位置第二条尺寸界线起点的位置和尺寸线的位置。尺寸界线的起点通常与确定图形对象的点重合,因此该尺寸界线的起点是已知的,于是剩余的工作就是确定尺寸线的位置。长度型尺寸标注主要分为对齐型尺寸标注和非对齐型尺寸标注,我们主要用到的是对齐型尺寸标注,其格式如下例所示:例:(setq p1(0 10) p2(50 10) p3(40 15)(command line p1 p2 ) 标注方式有以下三种,以下每个表达式都能生成图35所示图形。 (command dimaligned p1 p2 p3) (command dimalignedp1 p2 30,25) (command dimalignedp1 p2 -10, 5)上述表达式的说明如下:Dimaligneds 是command函数调用标注对齐型尺寸的命令;p1,p2时第一和第二条尺寸界线起点的位置;p3点用来确定尺寸线的位置点。可以是一个变量,例如用p3表示;可以是一个字符串,例如“30,25”;也可以用相对于第二条尺寸界线的起点p2的位置来确定它,“-10,5”表示p3点相对p2点的x坐标的增量是-10,相对与y坐标在增量是5.图3-5 对齐型长度尺寸标注图例(2) 直径型尺寸标注直径型尺寸标注需要首先选择被标注的圆或圆弧,然后却确定尺寸线的位置,如果默认尺寸测量值为文本,用作默认的选择即可。直径型尺寸标注与对齐型尺寸标注基本相同,只是command函数调用标注直径型尺寸的命令与对齐型尺寸标注不相同,用的是dimdiameter命令。(setq pc (100,100) r 12.5 p2(polar pc 0 12.5) p1(105,105))(command circle pc r)以下每个表达式都能生成图36所示图形。(command dimdiameter p2 p1)(command dimdiameter p2 105,105)(command dimdiameter p2 -7.5,5)图3-6 直径型尺寸标注图例(3) 螺母尺寸标注程序在文本编辑器中输入以下代码:;标注(defun mark();标注(command layer m 3 c 1 ) ;调用图层3,线条颜色为红色(command dimalignedp1 p4 10,10);自动计算两点之间的长度并标注(command dimalignedp2 p7 10,22) (command dimdiameter p29 -7.5,5);标注圆弧(command dimdiameter p33 -7.5,5)加载并运行程序,得到标注尺寸后的螺母图如图37所示。图3-7 标注尺寸后的螺母图3.5 画图框3.5.1 定义字样Style命令以AutoCAD提供的shx类型的形文件或windows等提供的ttf类型的字体文件为圆形定义字样。新图开始时,只有一种字样,名字为standard,是以AutoCAD提供的形文件txt,shx为原型定义的。如果不演绎standard字样或者需要书写汉字,就必须自己定义字样。(1) 以AutoCAD提供的形文件为原型定义字样 命令格式:(commandstile ziyang1 complex 0.0 1.0 0.0 N N N)各项定义如下:Stile:定义字样的命令。ziyang1:字样的名称。Complex:AutoCAD提供的形文件名,文件的全名是Comple.shx。0.0:字的固定高度,若该值为0,表示没有固定的高度,每次调用text命令时,临时指定字高。1.0:宽度因子,为1.0时的高宽比约为3:2.0.0:字的倾斜角度(oblique angle)。N:不反写,若为Y,则为反字(左右颠倒)。N:不倒写,若为Y,则为倒字(上下颠倒)。N:不垂直书写。由于字体原型文件名之后的选项都是默认值,因此上述表达式可以简化表示:(commandstile ziyang1 complex )(2) 以windows提供的字体文件stfangso.ttf为原型定义名字为hanzil的字样命令格式:(commandstile hanzi1 stfangso.ttf )由于可以用字体名代替字体文件名,因此上述表达式可以表示为:(commandstile hanzi2 华文仿宋 )(3) 以一个打字体形文件为原型定义汉字字样以windows提供的字体文件为原型定义的字样,可以很好的解决汉字书写的问题,但是常用的几个字符“ ”“”等不能用AutoCAD规定的“%d”“%p”转义输入,用大字体形文件为原型定义的汉字可以很好的解决这个问题。普通形文件用一个字节存放形编号,所以它所定义的字符数量不超过256.大字体形文件用两个字节存放形编号,所以可以定义65000多个字符。大字体形文件用于定义汉字,其表达式如下:(command style hanzi3 gbcbig )其中gbcbig是定义汉字的大字体,文件的全名是gbcbig.shx。(4) 普通形文件与大字体形文件组合,定义汉字字样西文字符用普通的形文件为原型,汉字部分用大字体形文件为原型,从两种形文件中各选一个满意的形文件定义字样。其表达式如下:(command style hanzi4 complex,gbcbig )3.5.2 编制画图框程序在文本编辑器中输入以下代码:(defun c:tk()(command layer c 9 0 lw 0.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论