




免费预览已结束,剩余52页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录摘 要.第一章 绪 论11.1 CAD二次开发国内外研究现状11.2 课题研究的目的及意义21.3 研究的内容和方法2第二章 CAD二次开发方法的理论分析32.1 Autolisp语言简介32.2 Autolisp 语言的数据类型及相关函数32.2.1 Autolisp的数据类型32.2.2 Autolisp的相关函数52.3 加载和运行Autolisp程序7第三章 参数化设计程序编制过程93.1 图形及参数分析93.2 菜单设计103.3 对话框设计113.4 编制Autolisp绘图程序143.5 尺寸标注程序183.6 图框程序20第四章 结果分析25第五章 总 结25参考文献27Abstract28附 录29 基于AutoLisp的数控车床滚珠丝杠螺母副CAD二次开发摘 要 AutoCAD 技术一直处于不断发展和探索中,随着CAD技术的功能不断的完善和强大,已经广泛应用于机械、建筑等各个领域,其二次开发技术也不断受到人们的应用。本文以AutoCAD为平台,利用Autolisp语言对AutoCAD二次开发的基本设计思路和方法对AutoCAD的参数化设计理念加以强化,加强了人性化的交互方式设计。系统研究并开发用于数控车床滚珠丝杠螺母副的参数化自动绘图程序。在本文中,介绍了Autolisp语言,菜单,对话框的制作过程,通过lisp编程语言来完成对对话框参数的调用以及自动分析运算,实现自动绘图功能。从而提高设计效率,减轻技术人员的劳动强度,快速完成多种型号不同参数的数控车床滚珠丝杠螺母副的绘图工作。 关键词 CAD AutoLisp 参数化 滚珠丝杠螺母副 数控车床2010届机械设计制造及其自动化专业毕业设计(论文) 第一章 绪 论1.1 CAD二次开发国内外研究现状CAD技术的发展和形成至今已有50多年的历史了,20世纪50年代在美国诞生了第一台计算机绘图系统,开始出现具有简单绘图输出功能的被动式的计算机辅助设计技术,即CAD技术。CAD软件发展的初期,CAD的含义仅仅是图版的代替品而非现在我们经常讨论的CAD所包含的全部内容。CAD技术以从二维绘图为主要目标的算法一直持续到70年代末期,以后作为CAD技术的一个分支而相对单独、平稳地发展。早期应用较为广泛的是CADAM软件,近十年来占据绘图市场的是AutoDesk公司的AutoCAD软件。60年代出现的三维CAD系统只是极为简单的线框式系统,它只能表达基本的几何信息,不能有效表达几何数据间的拓扑关系。进入70年代,只能采用多截面视图、特征纬线的方式来近似表达所设计的自由曲面。随着计算机的发展,当三维曲面造型系统出现时,标志着计算机辅助设计技术从单纯模仿工程图纸的三视图模式中解放出来,首次实现以计算机完整描述产品零件的主要信息的方式。从70年代末到80年代初,随着计算机技术的前进,同时在CAD技术方面也进行了许多开拓。1979年世界上出现了第一个完全基于实体造型技术的大型CAD软件I-DEAS。由于实体造型技术能够精确表达零件的全部属性,在理论上有助于CAD的模型表达,给设计带来了惊人的方便性,它代表着未来CAD技术的发展方向。在实体造型技术逐渐普及时,CAD技术的研究又有了重大进展。在80年代中期,人们提出了一种比无约束自由造型更新颖、更好的算法参数化实体造型方法。从算法上来说,这是一种很好的设想。它主要的特点是:基于特征、全尺寸约束、全数据相关、尺寸驱动设计修改。当时参数化技术还处于一种发展初级阶段,很多技术难点有待于攻克。进入90年代,参数化技术变得比较成熟起来,充分体现出其在许多通用件、零部件设计上存在的简便易行的优势。技术理论上的认可并非意味着时间上的可行性,考虑到这种参数化的不完整性以及需要很长时间的过渡时期。但是在把线框模型、曲面模型以及实体模型叠加在一起的复合建模却并非完全基于实体,只是主模型技术的雏形,难以全面应用参数化技术。由于参数化技术和非参数化技术的本质不同,用参数化技术造型后进入非参数化系统要进行内部转换,才能被系统接受,而大量的转换极易导致数据丢失和其他不利条件,这样的参数化技术的市场竞争力自然是不高的。全尺寸约束,即设计者在设计初期及全过程中,必须将形状和尺寸联合起来考虑,并且通过尺寸约束来控制形状,通过尺寸的改变来驱动形状的改变,一切以尺寸(即所谓的参数)为出发点。 一旦所设计的零件形状过于复杂时,面对满屏幕的尺寸,如何改变这些尺寸以达到所需要的形状就很不直观。实事上,全约束是对设计者的一种硬性规定。撇开这样全约束的规定,沿着这个思路,在对现有各种造型技术进行了充分地分析和比较以后,一个更新颖大胆的设想产生了。SDRC的开发人员以参数化技术为蓝本,提出了一种比参数化技术更为先进的实体造型技术变量化技术,使得现在的CAD技术和系统都具有良好的开放性。图形接口、图形功能日趋标准化。在CAD系统中,综合应用正文、图形、图像、语音等多媒体技术和人工智能、专家系统等技术大大提高了自动化设计的程度,出现了智能CAD新学科。智能CAD把工程数据库及其管理系统、知识库及其专家系统、拟人化用户接口管理系统集于一体。目前国内实际应用的CAD系统可分为两大类:一类是国产自主版权的CAD软件;另一类是国外商品化的CAD软件,由于国外的CAD软件的功能齐全,性能优良,并完成了商品化和工程化的需求,因此在国内市场上占有很大的份额。然而此类商品化的CAD软件一般是通用化软件,用户在应用时必须依据各行业的特点进行不同程度的二次开发,方能发挥出应有的效益。选择做AutoCAD的二次开发方式也并不容易,二次开发软件厂商必须要紧跟着AutoCAD的步伐进行更新与完善,否则客户将不能使用或出现很多问题。AutoCAD功能越来越强大,用户的使用水平也在不断提升,用户对二次开发工具的依赖性在减小。而且AutoDesk也围绕AutoCAD完善产品线,凭借强大的研发实力,不断推出建筑、规划、机械、GIS等专业应用。使得国内做二次开发专业应用的软件在市场上占有很小一部分。Autolisp是当今世界上应用最为广泛的微机CAD系统软件,它的用途远远多于其他任何系统,究其原因,在于功能齐全,界面友好,易学易用。但它最大的有点莫过于其体系结构的开放性,其内嵌式程序设计语言Autolisp语言是人们对它进行二次开发的最好工具,无论什么专业都可以根据本专业的特点开发出适合本专业的CAD应用软件。特别是随着AutoCAD版本的不断升级,其功能更强、开放性更好,更便于人们二次开发。为人们更好地开发本专业的CAD系统提供了更有利的条件。1.2 课题研究的目的及意义本课题选用数控车床滚珠丝杠螺母副零件图和装配图作为研究对象。通过应用Autolisp语言,编制程序生成的菜单,利用DCL对话框控制语言设计接受用户数据参数的对话框,编制Autolisp程序,调用参数对话框,分析运算,实现图形参数化及智能化,分析计算与绘图一体化,系统完成CAD二次开发自动绘图功能。随着社会各行业的不断发展,行业之间的竞争不断增强,其促进发展技术的科技含量也不断在增高,相应的各种应用软件辅助工具也层出不穷。要适合行业要求满足行业需要则需要对个应用软件进行不同程度的改进或开发来发挥其应有的效益。那么针对本课题而言,便是对AutoCAD二次开发,通过Autolisp编程设计,利用参数化绘图完成满足用户定义参数的各型号数控机床滚珠丝杠螺母副要求的零件图,既提高了工作效率又满足绘图要求。1.3 研究的内容和方法本课题拟用AutoCAD软件以及二次开发语言Autolisp,以数控车床滚珠丝杠螺母副为研究对象,设计完成参数化自动绘图功能的程序。其主要内容和方法包括:针对研究对象对其参数和图形进行详细分析,从而选择绘图程序的编程方式和参数变量的确定;设计制作菜单,对话框以及各部分的lisp程序;根据研究对象的图形结构要求设计编程,完成绘图程序的编制;按照CAD作图标准相应的完成标注、图框等程序。按此设计思路、模型和实现手段,利用Autolisp完成CAD系统二次开发。第二章 CAD二次开发方法的理论分析2.1 Autolisp语言简介 Autolisp是AutoCAD内嵌式编程语言,所谓内嵌式就是指Autolisp已经集成到AutoCAD软件中,是AutoCAD本身支持且能在其中运行的高级语言。使用Autolisp可以直接调用几乎所有的AutoCAD命令。Autolisp语言既具备一般语言的基本结构和功能,又具有一般高级语言所没有的强大图形处理功能,是一种具有赋值能力的解释性语言。在AutoCAD中,用户十分方便地利用Autolisp编程语言对AutoCAD进行二次开发,把自己日常工作中常用的某些操作以命令的形式添加到AutoCAD中,然后用户就可以像使用AutoCAD标准命令一样使用新添加的命令以完成特定的操作。用户还可以直接增加和修改AutoCAD命令,随意扩大图形编辑功能,建立图形库,并对当前图形进行直接访问和修改。Autolisp语言具有如下特点:(1) Autolisp语言中的所有成分都是以函数形式给出的,执行程序就是执行一些函数,再调用其它函数。(2) AutoLisp语言建立在基于普通的LISP语言基础上,并扩充了许多适用于CAD的特殊功能形成。(3) 是一种能以直译方式(不须先行编译)亦可于AutoCAD内部执行的直译性程序语言。(4) 擅长处理具有不同存储量的各类数据对象。(5) 数据及程序均统一以串行 (List)结构表示。(6) AutoLisp语言中的程序主要运行过程结构是采用递归方式。 AutoCAD软件本身是一种非参数化环境,不能实现尺寸驱动的参数化技术,虽然可以调试大量绘图程序确定的可变参数变量后调整可变参数来实现,但工作量大难以实现。而Autolisp可以编制程序驱动AutoCAD的图形数据库,达到尺寸与图形的一致变更,接受鼠标或键盘的屏幕图形信息,修改尺寸相关图形自动按比例改变,从而实现参数化技术。因此,实现参数化绘图程序设计是Autolisp语言最经典的应用之一。AutoLISP是一种程序开发语言,Visual LISP是为加速AutoLISP程序开发而设计的软件开发工具,Visual LISP全面兼容AutoLISP程序,提供一个全新的集成开发环境。通过Visual LISP与AutoCAD命令窗口进行交互来实现相应程序的提示。进而利用AutoLISP进行各种工作的分析计算,自动绘制复杂的图形,控制菜单,驱动对话框,定义新的命令,为AutoCAD扩充智能化、参数化的功能。2.2 Autolisp 语言的数据类型及相关函数2.2.1 Autolisp的数据类型Autolisp语言使用7种类型的数据,它们是整数型、实数型、字符串、文件指针、图元名、表和选择集。下面对在本次设计用得较多的数据类型作一下介绍。(1) 字符串字符串可以被Autolisp语言当作一种数据类型使用,但是必须用双引号引起来。引号内的内容可以传递给AutoCAD当作指令执行,所以在引号包括的字符串中,可以用反斜杠()添加控制字符。字符串在Autolisp程序中常用于文件名、标识符及DCL中的控制名。字符串中的大小写和空格符都是有含义的,同一字母的大小写是不同的字符。而字符串的长度是字符串一对双引号之间的字符个数(不包含双引号)。字符串中可以包括ASCII中的任何字符,通常格式“nnn”,其中nnn是字符的八进制ASCII码,由于反斜杠已经作为字符串的前导转义符,当字符串中要使用反斜杠时,则必须使用“”或“134”的转义符。双引号(“)被替用那个用于字符串定界,所以如果字符串需要包含它时,可以使用“”或“042”来表示。一些常用的控制符:e 表示取消 ESC n 表示换行 LF t表示制表 HT r表示回车 CR 其中e n t r 必须小写。(2) 表 Autolisp存储和处理数据最有效的方式表。鉴于AutoCAD的数据是以链的方式进行存储的,所以Autolisp使用表这一数据类型。表是指在一对相匹配的左右圆括号之间元素的有序集合,表中的每一项成为表的元素,表中的元素可以是整数、实数、字符串、符号,也可以是另一个表。所有的图形都是由点线面组成的,而线面又可以分解成点和点的组合,所以点是最基本的元素。为了处理图形中的点的坐标,Autolisp对二维平面和三维空间的点的坐标的表达如下:平面上的点可以表示为(x y),空间的点可以表示为(x y z)。表就是包含在括号中以空格隔开的一组相关值,例如:(1 2.2 3)、(“a” “sheep” “it”)、(2 “this”)这些都是表。可以通过list函数创建和处理表。 表有两种基本类型:标准表和引用表。标准表是从左括号开始到配对的右括号结束。对于标准表的第一元素(0号元素)必须是一个合法的而且已存在的Autolisp函数。AutoCAD将按照此函数的功能完成其操作。引用表是在左括号前加一撇,表示不对表作求值处理。表的大小用其长度来衡量的,也就是说表的长度要看括号内的元素个数的多少,长度就是指表中顶层元素的个数。例如:(setq a 5) 表的长度为3(setq b (+ c(/ d 2)) 表的长度为3如果表中没有任何元素,则称表为空表,在Autolisp中用nil或()表示。(3) 符号Autolisp中的符号用于存储数据,因此“符号”和“变量”这两个词的意思相同,可以相互交换使用。在Autolisp中,不允许使用数字作为符号名的第一个字符,字符的大小写是等效的,符号的长度不限,所有的字符都有意义,但尽量不要超过6个字符的符号名,否则要占用大量的内存,而且会减慢程序的运行速度,程序的可读性差,不利于对程序的理解。在Autolisp中,当把一个值赋给一个符号时,也就是把这个符号约束为那个值,因此可以将不同类型的数据赋值给同一个符号,使它在不同时刻有不同的值,使得编程十分灵活而简练。值得注意的是:用户在编写程序的时候,程序中定义的符号不能与系统中的函数和符号名相同,从而引起后面的定义取代前面已定义的混乱现象。2.2.2 Autolisp的相关函数函数是许多计算机语言的重要组成部分,在Autolisp语言中,函数也占有非常重要的地位。进行Autolisp语言程序设计时,通过众多函数才能实现赋值、计算、输入输出以及编写条件语句、循环语句和子程序等。Autolisp语言中以表的形式写出所有的函数,每个函数在程序中表现为一条或多条语句,执行特定的功能,最后返回某种Autolisp数据。Autolisp预定义了140多个函数,下面对在本次设计用得较多的函数作一下介绍。(1) 赋值函数赋值函数是Autolisp的基本函数,它将表达式的值赋给符号,并可以同时将多个表达式的值分别赋给多个符号。Set和setq函数用于为一个或多个变量赋值。其格式为:(setq )它将表达式的值赋给符号,并返回最后一个表达式的值。例如:(setq a 125);把125赋给a,返回125。(setq b 26 c 4.7);b值为26,c值为4.7,返回4.7。(setq s “to”);s为字符串变量,其值为to,返回值为to。(setq ab (2 4);ab的值为表(2 4),返回(2 4)。表达式(setq x nil)和(setq y nil)则表示释放变量x和y所占用的内存空间。Setq函数也可以与另一个函数连接为变量赋值。例如:(setq p1(getpoint “enter start point:”))(2) 计算函数在Autolisp中绝大多数编程和数学运算中经常使用计算功能函数,在其中可以使用加、减、乘、除函数,角度的正弦、余弦,反正切等不同功能的计算函数。计算函数的格式为:(运算符 运算数1 运算数2 运算数3)这里运算符一定要放在最前面,这不同于一般数学计算表达式。运算符与运算数之间以及运算数与预算数之间至少要有一个空格。例如:求和函数:(+ 1 3);返回4差函数:(- 10 2 4);返回4 ,在差函数运算中,如果运算数超过两个,则第一个数中减去后面所有数的和。乘函数:(* 0.4 3 -2);返回2.4除函数:(/ 1000 5);返回200求余函数:(rem 7 3);返回1指数函数:(EXP 10);返回2.718282自然对数函数:(log 4.5);返回1.504077平方根函数:(sqrt 4);返回2正弦函数:(sin 1.0);返回0.841471(弧度)余弦函数:(cos 1.0);返回0.540302反正切函数:(atan 1.0);返回0.785398(atan -3.0 2.0);返回0.982793(即返回/的反正切值),反正切函数的返回值弧度范围为-到+。(3) 逻辑函数逻辑函数的返回值只有T(真,即非零)和nil(假,即零)两种。逻辑函数有:(not );返回表达式逻辑非(null );当表达式为nil时返回T,否则返回nil。(or );其中如果至少有一个表达式值为T,则函数的值为T,若个表达式的值均为nil,则函数的值为nil。(and );返回一系列表达式的逻辑“与”,该函数对表达式从左至右求值,如有一个表达式的值为nil,则停止求值并返回nil,当对所有表达式求值的结果都不为nil时才返回T。(4) 条件执行函数条件执行函数有两种,其格式为:第一种:(if)该函数当测试式为T时,执行表达式1,否则执行表达式2,当没有表达式2时,如果测试式为nil,该函数返回nil.否则返回表达式1的值。例如:(if( a b)(setq c 3)(setq c 4));当ab,c值为3,否则c值为4。第二种:(cond ()())该函数接管任意数目的表作为变元,它一次对各测试式进行计算,一旦该式不为nil,则执行后面的表达式而不再测试以后的式子。(5) Autolisp自定义函数用户可以利用defun函数在Autolisp中定义自己的函数。一旦能完成定义,这些函数可以同标准函数一样在AutoCAD命令提示行、Visual lisp控制台提示行或者是其它Autolisp表达式中使用。其语法格式如下:(defun函数名(参数表/局部变量) (表达式1) (表达式2)该函数可以有一个变量表和局部变量表,也可以没有变量而只使用一对空括号。Defun函数本身返回它所定义的函数名称,而调用defun所定义的函数则将返回该定义函数中的最后一个表达式的值。前面表达式不返回值,只是完成预定操作。局部变量用于函数的内部,与本函数之外不发生任何联系。在函数体内部可以改变变量表中的符号或表的值,但是不会改变调用该函数时作为实际参数传递变量表的那些符号或表的值。例如:(defun add 2(x) (+ x 2))这是一个定义加2的函数,调用(add 2 x),返回其加2 的结果。值得注意的是:不能将Autolisp的内部函数名和内部符号名用做用户定义的函数名,因为这将使Autolisp预定义的内部函数不能使用。用户还可以使用defun定义AutoCAD中新的命令。通过定义新的命令,能够用某些特定的命令完成一些特殊工作。其语法格式如下:(defun C:命令名()表认式)其中,“命令名”为所要定义的新命令的名称,它前面的“C:”必须有,命令名后面必须带一个没有形参的变元素。例如,我们定义一个函数画一个圆:(defun c:circle() (setq point (getpoint“enter centerpoint:”) (setq radius (getpoint“enter radius:”) (command circle point radius) )这样,circle就成为AutoCAD的一个新命令。使用时和其它任何AutoCAD的命令一样,只需在命令提示符下键入该命令名circle即可,然后选取一点,再输入半径值,一个圆就可以完成了。2.3 加载和运行Autolisp程序Autolisp程序通常有两个相关的名称:程序文件名和函数名。所有的Autolisp文件都以.lisp为文件扩展名。在一个相同的Autolisp程序文件中可以有一个或多个函数定义。要运行一个函数,定义该函数的Autolisp程序文件必须被加载。在Visual lisp文本编辑器窗口装载一个Autolisp程序以如下操作过程完成:(1) 确保包含.lisp程序的文本编辑器窗口是激活的。(2) 在Visual lisp界面中选择“工具”“加载编辑器中的文字”选项,或者直接在工具栏上点击“加载活动编辑器窗口”按钮。Visual lisp在控制台窗口显示一个程序已被加载的信息。(3) 在控制台里输入带括号的函数名称,并回车或者在AutoCAD窗口界面输入被装载的load函数名,则在图形命令窗口提示数据响应情况。如果用户想要使用Visual LISP,必须首先与AutoCAD中的图形和命令窗口进行交互来响应程序的提示。当Visual LISP将控制权交给AutoCAD时,如果AutoCAD被最小化了,那么用户需要手工来恢复和激活窗口,因为Visual LISP不能自动恢复AutoCAD窗口。打开AutoCAD软件,可以在命令提示下输入vlisp或在AutoCAD菜单中选择“工具”“AutoLISP”“Visual LISP编辑器”。如图2-1所示。图21 AutoLISP编辑器界面第三章 参数化设计程序编制过程3.1 图形及参数分析(1) 图形分析图3-1 滚珠丝杠螺母副装配图图31所示是数控车床滚珠丝杠螺母副的二维视图,由主视图、左视图组成,其中主要元素包括线、圆、圆弧、长度标注、直径标注等构成,那么在用Autolisp编写程序时要涉及到图形的每个细节。绘图时要按照AutoCAD的手工绘图方式一样选择确定图层,颜色以及线型、线宽等。因此依照上面的图形结构可以应用Autolisp 的line(画线命令),arc(画圆弧命令),circle(画圆命令)。无论是线还是圆,在绘图过程中都要涉及到点,那么便可以通过定位点来定位图中各个元素,用Command函数组织定点,连接直线,画圆。左视图的6个10圆均匀环形分布,那么在编程序时可以使用array(列阵)的命令作图,从而减少定点个数,不容易引起点与点之间的混乱,使程序显得简洁明了。(2) 参数分析数控机床的滚珠丝杠螺母副的参数设置见图32和表31所示。 图32 滚珠丝杠螺母副的参数图序号参数名含义初值(mm)1x绘图起点的横坐标5002y绘图起点纵坐标6003d0 滚珠丝杠公称直径324d1滚珠丝杠大径31.15d2滚珠丝杠底径28.9续表316d3轴颈直径257d4滚珠直径2.3818L 滚珠丝杠总长度1709l滚珠丝杠螺纹长度13010l1轴颈长度2011d 7螺母的大径7612d 8螺母节圆直径6313d 9螺母右部分直径5014d 10螺母上螺栓孔直径1015d 11螺栓公称直径616a螺栓孔的其起始角度6017p滚珠丝杠的导程 4表31 滚珠丝杠零件图参数明细结合以上的参数,设计对话框,设计参数名以便将用户输入的数据参数传入AutoLISP程序的相应代码中。在上述参数中以变量形式存在由用户自定义的x、y二维点,把它作为基点,通过对直线、圆、圆弧的变量参数尺寸计算、分析确定点。结合AutoLISP语言的编程命令,如list(创建表)、atof(数据类型转换)、相关的setq(赋值函数)、command函数和加、减、乘、除的计算函数等进行编程。一张完整的图纸当然也少不了图形的尺寸标注和图框的绘制,那么也要结合上述变量参数编制尺寸标注程序和不同型号图框的绘制程序。3.2 菜单设计针对数控车床滚珠丝杠螺母的CAD二次开发,在AutoCAD中的标准菜单中不包含用户使用该项的菜单命令。为了实现菜单与lisp程序连接调用对话框进行交互式操作,那么就要自定义菜单或是在菜单中添加所需的命令。A utoCAD的主控界面菜单都是通过菜单文件来定义的。用户可以修改菜单文件或创建自己的菜单。通过编辑菜单文件中的文本,可以定义菜单项的外观和位置。菜单项可以包含CAD命令或AutoLISP程序。依照该课题的设计要求建立下拉式菜单的具体步骤如下: (1) 决定所要增加的菜单的位置,即决定菜单在屏幕上显示的位置或在图形输入的区域。(2) 用Visual LISP编辑器编辑用户自己的菜单文件,其文件扩展名必须是.mnu,然后存在当前子目录下。(3) 在命令行中输入menuload,将自定义菜单进行装载。(4) 将加载后的自定义菜单插入到AutoCAD中的标准菜单中。在对话框中单击用户要编译的菜单文件名并拾取屏幕上会显示出用户菜单的内容。选择其中的菜单项,“确定”选项,系统开始编译。编译完成后,就可实现用户定义的功能。要实现菜单绘图,则需要将菜单和.lisp程序连接,才能生成符合要求的绘图菜单。设计的菜单程序代码如下:*POP1*USER参数化绘图 绘制丝杠图 CCP(load load_sg);load_sg;P 绘制螺母图 CCP(load load_lm);load_lm;P 绘制螺母副图 CCP(load load_lmf);load_lmf;P绘制图框ccp(load tk);tk;p 取消 C其中,POP1为定义第一个下拉菜单,USER为下拉菜单的主菜单名,CC指连续两次ESC键,P为控制菜单的回显状态。(load load_sg)用于加载load_sg.lsp程序文件。利用上面菜单的定制方法,可对己有的菜单进行添加与删除操作,达到用户操作方便实用的目的。新增用户菜单后的AutoCAD菜单如图33所示。图33 新增用户菜单后的AutoCAD菜单3.3 对话框设计对话框是现在许多软件进行人机交互的常用方法。它简捷、直观,给用户提供了更多的信息和选择,大大的提高了计算机的拟人化程度,方便而直观地实现程序设计时的数据传输和信息传输。在AutoCAD环境下设计的对话框可以采用对话框控制语言DCL编写,DCL以ASCII文件形式定义对话框,是一种非过程的对象描述语言,它以非图形的方式描述对话框的观赏属性和功能属性。设计对话框讲究美观和功效性,用户可以按照自己所希望的任何顺序输入。AutoCAD中的对话框是由自身的框架以及各种控件所组成,对话框控件的属性和布局都是由DCL文件定义的。用户只需提供最基本的位置信息,AutoCAD就可以自动确定对话框的大小和部件的布局。在进行实际设计中,其控件的类型已经被可编程对话框(PDB)功能模块预定义了,那么在编程过程中可以按照其预定义的功能选择控件的编组,进行列分配、添加边框等,这样便可以创建复杂的控件也称组件,使得对话框的布局有序美观。DCL 对话框本身并不能单独运作,它仅仅是用于规划对话框的屏幕画面和接受用户输入数据而已, 本身并不具有数据处理的能力,真正的数据处理功能全部是在 AutoLisp 程序里执行。利用 AutoLisp对话框的驱动程序,实现对话框的装入、显示及卸载等功能。AutoL isp 语言专门提供一个函数action_tile处理用户的动作, 然后载入运行对话框的AutoL isp 程序。本课题是以滚珠丝杠螺母副为研究对象,下面以丝杠为例,根据相关参数确定控件组成需要的对话框。在Visual lisp编辑器中输入如下代码,并保存为c_sg.dcl文件。其程序代码为:c_sg:dialog /定义该对话框的名称c_sglabel=丝杠主视图; /定义该对话框的标题:text /开始定义字符串label=先输入数据,然后单击开始;/添加提示性语句,提醒用户操作顺序:boxed_row /第一个行框label=输入丝杠的起始点; /指定行框的标题:edit_box /输入横作坐标的编辑框label=X轴坐标(单位:mm); /指定编辑框的标题key=cpx; /设置键值fixed_width=true; /启动“使用者自定义宽度”功能width=5; /指定编辑框的宽度alignment=centered;:edit_box /输入纵坐标的编辑框label=y轴坐标(单位:mm);key=cpy;fixed_width=true;width=5;alignment=centered; /结束第一个行框定义:boxed_row /第二个行框label=轮廓尺寸参数;:edit_box /输入丝杠全长的编辑框label=丝杠全长(单位:mm);key=qc;edit_limit=20;edit_width=5; :edit_box /输入丝杠公称直径编辑框label=公称直径(单位:mm);key=zj;edit_limit=20; /指定编辑框可用的最大字符位数edit_width=5; /指定编辑框的宽度:edit_box /输入丝杠导程的编辑框label=基本导程(单位:mm);key=dc;edit_limit=20;edit_width=5; /结束编辑框定义 /结束第二个行框定义:boxed_row /第三个行框:edit_box /输入丝杠外径编辑框label=丝杠外径(单位:mm);key=wj;edit_limit=20;edit_width=5;:edit_box /输入丝杠底径编辑框label=丝杠底径(单位:mm);key=dj;edit_limit=20;edit_width=5;:edit_box /输入滚珠直径编辑框label=滚珠直径(单位:mm);key=gzj;edit_limit=20;edit_width=5;:boxed_row /第四个行框label=轴颈参数;:edit_box /输入轴颈长度编辑框label=轴颈长度(单位:mm);key=zc;edit_limit=20;edit_width=5;:edit_box /输入轴颈直径编辑框label=轴颈直径(单位:mm);key=zz;edit_limit=20; /指定编辑框可用的最大字符位数edit_width=5; /指定编辑框的宽度:boxed_row /第五个行框:button /定义“开始”按钮label=开始;key=begin; /设置键值fixed_width=true; /启动“使用者自定义宽度”功能width=5; /指定编辑框宽度 ok_only; /设置“确定”按钮 /结束第五个行框定义 /结束整个对话框定义将程序加载运行的对话框如图3-4所示。图3-4 滚珠丝杠输入参数对话框3.4 编制Autolisp绘图程序Autolisp程序的编制是整个设计的核心部分,它涉及到菜单的连接、对话框的调用功能的实现,零件图形的完整绘制过程,他们都必须在lisp程序中完成。下面介绍一下在编程中应用较多的函数。(1) command函数函数格式:(command命令参数子命令)功能:直接向AutoCAD的“command”发送命令。本函数在Autolisp内部执行AutoCAD命令,并总返回nil。函数后的命令参数或子命令等即是在AutoCAD图形编辑状态的提示符command下输入的命令、数据及选择项(子命令)等。具体传送的参数应根据调用的AutoCAD命令序列的要求来决定,其中,AutoCAD的命令及选择项等都是作为字符串来传送的。 所执行命令后跟的参数它们可以是字符串、实数型、整数型或点表,但这必须与所要执行的命令所需的参数类型一致。例如:命令:(command ”circle”100 100” 10)Circle指定画圆,100,100指定圆的圆心,10指定圆的半径,执行上面语句就会在以(100,100)坐标为圆心,以10为半径画圆。(2) atof函数该函数是一种参数类型转换函数,结构:atof,该函数的返回将转换成实数型的结果。例如:(atof “50”);返回50.000000(3) princ函数该函数属于输出函数,基本格式为:(princ)。该函功能就是将程序运行的结果输出到AutoCAD界面上。函数princ和prinl基本相同,唯一的差别在于princ能够实现中控制符的控制功能。例如:(prinl “t Hello!”);打印 “t Hello!”,返回“t Hello!”(princ “t Hello!”);打印 返回 “Hello!”(4) polar函数该函数为求值函数,基本格式为:(polar),此函数返回一个点的坐标,该点与之间的距离为,该点和的连线与X轴正方向夹角为,(以弧度为单位,夹角按逆时针方向度量)。(5) 编制丝主视图和侧视图程序在文本编辑器中输入以下代码,保存为文件名load_sg.lsp的文件。;主函数;(defun c:load_sg(/ dcl_id x y l l1 d0 d1 d2 d3 d4 d5 d6 p p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32 pl pr pz px pl1 pl2 pr1 pr2 r);给定变量以及根据丝杠参数进行分析所确定的点的变量(setq dcl_id (load_dialog c_sg.dcl);将c_sg.dcl的程序通过load_dialog来加载这个dcl文件(if (not(new_dialog c_sg dcl_id)(exit);调用new_dialog显示指定对话框(action_tile begin (data_manage);通过设置控件值来初始化对话框,调用action_tile函数来指定与控件相关联的Autolisp表达式(start_dialog);调用该函数将控制权交给对话框,以便用户进行数据输入(unload_dialog dcl_id);结束对话框时,在调用该函数来卸载DCL程序(drawl);调用绘图子程序即主视图和侧视图(princ);输出) (defun data_manage() (setq x (atof(get_tile cpx);将对话框中输入的参数转化成实数型 (setq y (atof(get_tile cpy) (setq p0 (list x y );设置用户绘图起点 (setq l (atof(get_tile qc) (setq l1 (atof(get_tile zc);将对话框中输入的参数转化成实数型 (setq d0 (atof(get_tile zj) (setq p (atof(get_tile dc) (setq p1 (list x (+ y (/ d3 2);通过函数分析,计算确定绘图相关点的位置,以便连接成直线或是确定圆形画圆 (setq p2 (list (- x (- l1 2) (+ y (/ d3 2) (setqp3 (list (- x l1)(+ y(-(/ d3 2)2) (setqp5 (list (- x(- l1 2) (- y(/ d2 2) (setq p6 (list x (- y(/ d3 2) (setq p7 (list x (- y(- (/ d1 2)2) ;设置绘制丝杠主视图的各点 (setq p27 (list (+ x (- l 2)(- y (/ d1 2) (setq p28 (list (+ x (- l 2)(- y (/ d0 2) (setq p29 (list (+ x (* 0.75 l)(+ y (/ d1 2) (setq p30 (list (+ x (+ (* 0.75 l )d4)(+ y (/ d1 2);设置绘制丝杠螺纹及滚珠的点 (setq p31 (list (+ x (+ (* 0.75 l )(* 1.5 d4)(- y (/ d1 2) (setq p32 (list (+ x (+ (* 0.75 l )(* 2.5 d4)(- y (/ d1 2) (setq r (/ d4 2) (setq d5(- d3 4) (setq d6(- d1 4) (setq pl (list (- x(+ l1 5)y);确定主视图中心线位置 (setq pr (list (+ x (+ 5(+ l l1)y) (setq pz (list (+ x (+ 100 (+ l l1)y);确定侧视图的绘制中心 (setq px (polar pz (+ alf (* 0.5 pi)(/ d2 2) (setq pl1 (polar pz (+ alf pi)(+ 5 (/ d0 2);定侧视图中心线位置 (setq pr1 (polar pz alf (+ (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机械工程师职业技术水准考核试卷及答案解析
- 2025年化妆品营销经理职业能力测评试题及答案解析
- 2025年政府会计准则实施能力模拟题农业农村含答案解析
- 哎呀呀拍桌子教学课件
- 2025年广告策划师创意能力考核试题及答案解析
- 2025年乡村旅游服务人员面试题库
- 2025年安全生产责任清单测试题库与解析
- 培训教学课程课件
- 教学课件公众号
- 2025年安全生产应急处理题集
- 未成年人违法犯罪警示教育
- 医疗废物与污水处理培训
- 4S店员工职业卫生培训
- 体检机构礼仪培训
- 《工业机器人技术与应用》高职人工智能技术应用专业全套教学课件
- 院前急救质控标准
- 【公开课】乙醇++说课课件+-2024-2025学年高一下学期化学人教版(2019)必修第二册
- 数字人文资源本体建模-洞察及研究
- 2025年新高考1卷(新课标Ⅰ卷)语文试卷(含答案)
- 捡土豆装车合同协议书
- 国际压力性损伤溃疡预防和治疗临床指南(2025年版)解读
评论
0/150
提交评论