1、沈阳理工大学学士学位论文1前言毕业设计是对我们大学四年的一个总结,也是对我们综合实力的一个检验。本次毕业设计是AUTOCAD系列标准零件参数化设计,它涉及到AUTOCAD,机械制图,VISUALLISP,AUTOLISP等知识,是对以前知识的在学习过程,也是对新知识灵活应用的过程。通过本次毕业设计锻炼了我分析问题,解决问题的能力,使我再一次充分认识到所学知识的重要性和严谨性,为我将来参加工作打下了良好的基础。在本次毕业设计过程中我得到了姜增辉老师和同组同学的大力帮助支持和指导,在此谨表示衷心的感谢。由于本人能力有限,设计中的不足之处和错误地方在所难免还望各位老师批评指正。沈阳理工大学学士学位论
2、文2第一章绪论LISP(LISTPROCESSINGLANGUAGE)是人工智能领域中广泛采用的一种程序设计语言。主要用于人工智能、机器人、专家系统、博弈、定理证明等领域。LISP也被称为符号式语言,因为它处理的对象是符号表达式。LISP语言的程序和数据都以符号表达式的形式来表示,即一个LISP程序可以把另一个LISP程序作为它的数据来处理。LISP在它10多年的发展过程中产生了多种版本,比如MACLISP,INTERLISP,ZETALISP,COMMONLISP等。其中COMMNLISP是近几年美国的几所大学(比如MIT,STANFORD,CMU,RUTGERS等)和工业界(如BELL实验
3、室、DEC公司、HP公司等)的人工智能研究人员协同推出的,它概括了MACLISP、INTERLISP、ZETALISP等版本的特点,因而功能较强且拥有其他版本的一些优点,是目前LISP语言比较完整的版本。AUTOLISP语言是嵌套在AUTOCAD内部、将LISP语言与AUTOCAD有机结合的产物。使用AUTOLISP可以直接调用几乎所有的AUTOCAD命令。AUTOLISP语言既具备一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大图形处理功能,是当今世界上CAD软件中被广泛采用的语言之一。美国AUTODESK公司在AUTOCAD内部嵌入AUTOLISP语言的目的是使用户充分利用AU
4、TOCAD进行二次开发,实现直接增加和修改AUTOCAD命令,随意扩大图形编辑功能,建立图形库和数据库并对当前图形进行直接访问和修改,开发CAD软件包等。AUTOLISP语言最典型的应用之一就是实现参数化绘图程序设计,包括尺寸驱动程序和鼠标拖动程序等。尺寸驱动是指通过改变实体标注的尺寸值来实现图形的自动修改,鼠标拖动即利用AUTOLISP语言提供的(GRREADTRACK)函数,让用户直接读取AUTOCAD为输入设备(通常为鼠标),任选项追踪光标移动存在且为真时,调整所需的参数值而达到自动改变屏幕图形的属性。到目前为止,大多数参数化程序都是针对二维平面图编制的。实际上,立体图同样可以实现参数化
5、绘图。另一个AUTOLISP的典型应用就是驱动利用AUTOCAD提供的PDB模板构成DCL(DIALOGCONTROLLANGUAGE一文件创建自己的对话框。自从AUTOLISP嵌入AUTOCAD之后,使仅仅作为交互式图形编辑软件的AUTOCAD编程能真正进行计算机辅助设计、绘图的CAD软件。由于LISP灵活多变、易于学习和使用,因而使AUTOCAD成为功能很强大的工具性软件。AUTOLISP具有如下的特点沈阳理工大学学士学位论文3AUTOLISP语言是在普通LISP语言基础上,扩充了许多适用于CAD应用的特殊功能而形成的,是一种仅能以解释方式运行于AUTOCAD内部的解释型程序设计语言。AU
6、TOLISP语言中的一切成分都是以函数的形式给出的,它没有语句概念和其他语法结构。执行AUTOLISP程序就是执行一些函数,再调用其他函数。AUTOLISP把数据和程序统一表达为表结构,即S一表达式,因此可以把程序当作数据来处理,也可以把数据当作程序来执行。AUTOLISP语言中的程序运行过程就是对函数求值的过程,是在对函数求值的过程中实现函数的功能。AUTOLISP语言的主要控制结构是采用速归方式。递归方式的使用,使得程序设计简单易懂。沈阳理工大学学士学位论文4第二章AUTOLISP语言概述21AUTOLISP的程序结构与一般的程序语言不同的是,AUTOLISP语言没有“语句”这一概念,AU
7、TOLISP程序是由一个或者一系列按照特定顺序排列的标准表组成的。那么什么是所谓的标准表呢先来看几个标准表的例子。例11(SETQX100)(SETQY100)(SETQZ(XY)(SETQA“HELLOWORLD”)(COMMAND“LINE”“00”“1010”)(COMMAND“CIRCLE”“100,100”“50”)读者不妨在AUTOCAD2004环境中试着运行以上的几个例子。比如,在命令行中COMMAND提示符下输入(SETQX100)按回车,就能看到程序运行的结果100这也就是程序运行完毕之后变量X的值。类似地,其余几条语句运行之后的结果分别为100200(也就是X和Y相加之后的
8、值)”HELLOWORLD”;在坐标分别为(0,0)和(10,10)的2个点之间画一条线段;以坐标为(100,100)的点为圆心,50为半径画了一个圆。到这里可以得到标准表的基本概念标准表由左右2个括号组成,其功能由括号中的代码实现;标准表的第征个元素(如SETQ、十、COMMAND)均为操作符或者函数名,其余的元素都是相应函数的参数。其一般格式为(函数名参数1参数2参数N)沈阳理工大学学士学位论文5在这里需要强调的是,标准表中可能包含着别的表,这是允许的,就像上面的(SETQZ(XY)一样。将例11中的6个标准表组合在一起,就可以看作是一个AUTOLISP程序了。这个程序所实现的功能就是其中
9、每个标准表所实现功能的总和。同样地,只要将希望程序实现的功能不断地分解,分别用不同的标准表来实现,然后再组合在一起,就能实现读者所期望的任何功能。AUTOLISP程序的书写格式有着如下的特点。AUTOLISP程序是由标准表组成的,因此程序中所有的括号都必须左右匹配。AUTOLISP程序阅读函数时,按照从左到右的规则进行。操作符(也可以理解称为函数名,比如赋值函数,十相加函数等等)必须放在标准表中第1个元素的位置。标准表中的函数与参数、参数与参数之间至少要用一个空格来分开。2个标准表之间和表内的多余空格和回车都是不需要的,因此一个表可以占多行,一行内也可以写下很多表。比如,例11中的程序可以写成
10、下面的形式。(SETQX100)(SETQY100)(SETQZ(XY)(SETQA“HELLOWORLD”)(CORNMAND“LINE”“0,0”“10,10”)(COMMAND“CIRCLE”100,100”“50”)很明显,处于程序可读性的考虑,应该采取前一种格式书写程序,一行内只写一个标准表。当标准表的长度过长,可以从表中任意位置按回车断开,然后再继续书写,以保持程序源代码的整洁。AUTOLISP程序中使用分号“;”作注释。AUTOLISP执行程序的时候会自动跳过每一行中分号以后的部分。注释可以放在程序中的任何地方。AUTOLISP程序的扩展名为(LSP),并以ASCLL码文本文件的
11、形式表达,因此可以使用WNDOWS操作系统自带的NOTEPAD或者ULTREEDIT32TEXTEDITOR等文本编辑软件打开已有的LSP文件并进行编辑。AUTOLISP哪程序就是对一个个AUTOLISP函数的调用。函数是AUTOLISP语言处理数的工具,学习掌握AUTOLISP语言,核心就是要掌握AUTOLISP函数。AUTOLISP函数分为内部函数和外部函数。其中内部函数是AUTOCAD系统自带的,外部函数是用户自行定义的。AUTOLISP提供了大量的系统内部函数,读者可以在AUTOCAD2004中按FI键查看帮助文沈阳理工大学学士学位论文6档,如图21所示。图21按F1键查看AUTOCA
12、D2004帮助文件在CUSTOMIZATIONGUIDEAUTOLISP,VISUALLISPANDDXF中查看AUTOLISPREFERENCE,里面包含了所有AUTOLISP所提供的系统内部函数,按照英文字母AZ顺排列。如图22所示。图22按字母顺序查看AUTOLISP系统内部函数沈阳理工大学学士学位论文7充分了解并利用这些函数,是编写高质量AUTOLISP程序的基本条件,读者应该养成经常翻阅帮助文件的良好习惯。在学习AUTOLISP的系统内部函数时,必须掌握以下基本内容。函数调用格式即函数名、函数要求的参数个数和类型。函数功能即该函数的作用,它对其参数如何进行处理。函数的求值情况即哪些参
13、数要求值,哪些不要求值。函数求值返回结果的类型。22AUTOLISP程序的执行过程对子很短的AUTOLISP程序(只有1至2个表组成,比如简单的数值函数的运算可以直接在AUTOCAD环境中COMMAND命令提示符下输入,返回的结果立即显示在文本屏幕上。例如在COMMAND命令提示行下键入(SETQSTRING”PROGRAMMINGWITHAUTOLISPISGREATFUN”)接回车。则立“PROGRAMMINGWITHAUTOLISPISGREATFUN”。也就是赋予STRING的值。如果读者认为命令行的显示范围过于狭小,可以按FZ键弹出AUTOCADTEXTWINDOW查着所有命令的历史
14、记录,如图L4所示。对于一般的AUTOLISP应用程序,需要采用文本编辑器进行编辑,否则一行行地输入语句,一旦出现错误,将很难处理。一般情况下,在安装了AUTOCAD2004之后,就可以利用软件自带的文本编辑器进行LSP文件的编写和调试。如果由于某种特殊原因,使得用户程序编制环境与AUTOCAD环境相分离,我们就要采取其他的文本编辑器来编辑程序。在这里推荐使用ULTRAEDIT9。0,这是一款相当不错的文本编辑软件,支持多种格式的文本格式。下面的例子将示范如何利用ULTRAEDIT90编写LSP程序文件,再用LOAD函数装载并运行。例12(1)打开ULTRAEDIT90,在文本编辑环境中输入如
15、下代码。(PRINC“NWELCOME”)DEFUNCWELCOMEPRINT“AUTOLISPWELCOMESYOU”(2)将上面的程序保存为D“LISPMYAUTOLISPLSP”。(3)启动AUTOCAD,在COMMAND命令提示符下键入LOAD“LISPMYAUTOLISPLSP”)沈阳理工大学学士学位论文8(注意这里用的是除号,读者可以试试看用反斜杠号会发生什么结果)回车后,即执行第1句并返回最后一个DEFUN函数定义的函数名WELCOMECWELCOME程序文件装载完毕。(4)运行DEFUN定义的函数,在COMMAND命令提示符下键入WELCOME按回车,命令行中就显示”ANTOL
16、ISPWELCOMESYOU”23VISUALLISP编程环境自AUTOCADR1401开始,出现了VISUALLISP语言,它是AUTODESK公司为了增强AUTOLISP程序开发能力而设计的软件工具。VISUALLISP为AUTOLISP增加了许多新的函数,扩展了AUTOLISP的能力。在对AUTOCAD进行专业设计的应用范围内,已经比较接近ARX程序的能力VISUALLISP是设计用来加速AUTOLISP程序开发的软件工具。VISUALLISP成开发环境提供了很多特性,使用户创建和修改原代码、测试和调试程序更加方便。此外,VISUALLISP还提供了用于传递AUTOLISP中特殊应用的方
17、法。在VISUALLIS中用户可以在一个单独的环境中执行大部分必要的操作,包括文本编辑、程序调试AUTOCAD和其他应用程序的交互。以下是VISUALLISP集成开发环境的组成部分。语法检查器可以识别错误的AUTOLISP结构和内部函数调用中不合适的参数。文件编译器可以改善程序的执行速度并提供一个安全有效的发布平台。资源调试器允许用户在一个窗口中一步步地执行AUTOLISP程序源代码,并在AUTOCAD图形窗口中显示代码执行的结果。文本编辑器使用AUTOLISP和DCL颜色编码对程序源代码进行编辑。AUTOLISP格式工具可以重新安排程序的格式,增强程序可读性。检查和观察工具可以方便地访问变量
18、和表达式的值,还可以划览AUTOCAD图形实体的各项属性值。上下文相关菜单提供有关AUTOLISP函数的信息以及对符号名的搜索。项目管理系统使用户可以更容易地管理多文件应用程序。编译过的AUTOLISP文件将被封装为一个单独的模块。窗口的保护和恢复功能使用户可以保护并再次使用任一VISUALLISP情景的窗口沈阳理工大学学士学位论文9环境。智能化的控制台窗口为AUTOLISP用户提供了更多的便利和更高的效率。控制台的基本功能对应于AUTOCAD文本屏幕的功能,同时还提供了一些交互特性。VISUALLISP拥有自己的窗口和菜单,它们与AUTOCAD的其他窗口是不同的。但是VISUALLISP不能
19、离开AUTOCAD而单独运行。用户如果要使用VISUALLISP,必须首先运行AUTOCAD;当用户在VISUALLISP集成开发环境中执行AUTOLISP程序时,也需要与AUTOCAD中的图形和命令窗口进行交互来相应程序的提示。231VISUALLISP的特点VISUALLISP(简称VLISP)是为加速AUTOLISP程序开发而设计的软件工具,它提供一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具。VISUALLISP可以显著地提高自定义AUTOCAD的效率。VLISP提供的主要工具有文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文本编译器、工程管理系统、
20、上下文相关帮助与自动匹配功能和智能控制台等。在VLISP集成环境下开发AUTOLISP程序,不再像以前那样用其他系统的文本编辑程序编写代码;调试程序需要用户自己决定在程序的什么位置加入打印语句,以便查看这些变量的内容,要像查看变量的内容还必须在AUTOCAD中加载并运行源程序代码如果没有足够的信息来诊断错误,就不得不返回文本编辑器程序并再次修改代码,以加入更多的调试点;在程序运行正确之后,还必须将加入的调试代码删除或者注释掉。在VLISP集成环境下可以便捷、高效地开发AUTOLISP程序,可以得到运行效率更高、代码更加紧凑、源代码收到保护的应用程序。VLISP是新一代AUTOLISP语言,它对
21、AUTOLISP语言进行了扩展,可以通过MICROSOFTACTIVEXAUTOMATION接回与对象交互,可以通过反应器函数扩展AUTOLISP响应事件的能力。如果使用VLISP对AUTOLISP的扩展功能,必须调用VL一LOADCOM函数,或者将对该函数调用包括在ACAD2004DOCLIP文件内。VLISP的用户界面良好,用过MICROSOFT软件的用户只需要很短的时间就可以掌握它。232启动VISUALLISPVISUALLISP是运行在AUTOCAD之外的一套窗口中的。启动VISUALLISP步骤如下(1)启动AUTOCAD2004。(2)在AUTOCAD的菜单中,执行TOOLSAU
22、TOLISPVISUALLISPEDITOR命令,或者在命令提示符下输入命令沈阳理工大学学士学位论文10COMMANDVLISP这时就会弹出VISUALLISPFORAUTOCAD窗口,如图23所示。图23VISUALLISP界面当加载VISUALLISP时,一个或者多个VISUALLISP的窗口就会暂时显示在屏幕上。VISUALLISP可以存储上一次退出时正在打开的窗口。在下一次运行时,VISUALLISP会自动打开并恢复这些窗口里的内容。用户在任何时候都可以通过使用菜单命令或者VLISP命令从AUTOCAD返回到VISUALLIS集成开发环境中。233VISUALLISP环境界面VISUA
23、LLIS的环境界面由下面几个部分组成。菜单项用户可以通过选择各种各样的菜单项来调用VISUALLISP的命令。如果某个菜单项高亮显示,VISUALLISP就会在屏幕底部的状态栏上显示关于此命令的说明文字。工具栏通过单击工具栏按钮,用户可以快速调用VISUALLISP命令。在VISUALLISP具栏中调用。如果移动鼠标指针到某一个工具栏按钮的上方,停留2秒钟,VISUALLISP会显示该按钮的提示文字,表明这个按钮的功能;同时一个比较详细的描述会出现在VISUALLISP屏幕底部的状态栏上。沈阳理工大学学士学位论文11控制台窗口这是一个在主VISUALLISP窗口界面上独立的窗口。在控制台窗口中
24、,用户可以输入AUTOLISP命令,这与在AUTOCAD的命令行中输入的效果是一样的。此外,用户还可以在这个窗口中输入消VISUALLISP命令,以代替使用菜单和工具栏命令。状态栏位于屏幕的底部,显示当前VISUALLISP的状态信息。信息的内容会根据当前在VISUALLISP中所作的工作的不同而不同。跟踪窗口在启动VISUALLISP时,还可以看到一个最小化了的跟踪(TRACE)窗口。这个窗口包含了一些关于VISUALLISP当前版本的信息,以及当启动VISUALLISP遇到错误时的其他一些信息。文本编辑器VISUALLISP本身包括一个集成的文本编辑器,可以用来编辑AUTOLISP代码。用
25、户只要打开一个朋VISUALLISP源程序,就可以看到文本编辑器的全貌。在VISUALLISP中打开一个源程序,VISUALLISP提供了一些例子程序,这些例子程序放在AUTOCAD安装目录下的SAMPLES于目录里。按照下面的步骤操作,读者可以打开一个名为DRAWLINELSP的源程序。(1)在VISUALLISP菜单下,执行FILEOPENFILE命令。(2)把目录改变到AUTOCAD2004SAMPLEVISUALLISP下。(3)双击DRAWLINELSP文件。VISUALLISP会在一个新的文本编辑窗口中打开此文件,并在窗口的状态栏上显示此文件名。如果在编辑框中对代码做了改动,或者增
26、加了新的文本,VISUALLISP就会在文件名的后面显示一个星号(),对应的文本编辑器的标题符号处会添加一只笔的图形。只有在存储或者关闭了该文件之后,星号和笔的图形才会被去掉。用户可以在VISUALLISP中同时打开多个文件,每打开一个文件,VISUALLISP都会生成一个新的窗口来显示这个文件。其他VISUALLISP窗口VISUALLISP可以在控制台中显示一些输出信息,但是有几个VSUALLISP功能可用来生成它们自己的窗口来显示运行结果。例如,当用户在AUTOCAD程序运行过程中跟踪一系列事件时,跟踪功能就会打开一个窗口显示程序事件、在这些窗口中不能用键盘输入文本,但是可以复制其中的文
27、本并在沈阳理工大学学士学位论文12编辑器窗日或者控制台窗口粘贴这些文本。234菜单概述用户可以通过选择各种各样的菜单项来调用VISUALLISP命令。例如,在FILE菜单可以生成一个新的VISUALLISP程序文件,选择一个已有的程序文件来编辑并打印正在编辑的文件。如图24所示。图24VISUALLISP菜单菜单的内容不是固定不变的。当前激活的VISUALLISP窗口不同(例如,文本编辑)窗口和控制台),菜单内容也不一样。单击一个窗口的标题栏,或者单击那个窗口中任何一个空白区域,就可以激活这个窗口。例如,单击包含程序的文本编辑器窗口,然后在VISUALLISP菜单中执行EDIT命令,显示的就是
28、EDIT菜单的内容。然后激活VISUALLISP的控制台窗口,再次执行菜单中的EDIT命令,则菜单内容就改变了。表2L介绍了每一个菜单项的功能,这对充分使用VISUALLISP的各种菜单命令功能有很大的帮助。EDIT提供对程序代码的编辑命令,可以用来复制、粘贴文本恢复对程序所做的改动(或恢复在控制台窗日执行的命令)、在文本编辑器或控制台窗口中选择文本、在表达式中进行括号匹配以及重新显示在控制台窗日提示符下输入的上一个命令沈阳理工大学学士学位论文13SEARCH提供查询功能,可以用来查找和替换文本字符串、设置书签以及通过书签在程序中定位VIEW提供视图功能,包含一些在VISUALLISP程序中查
29、找和替换变量及符号值的命令PROJECT提供应用程序工程功能,包含一些用来管理项目和编译程序的命令DEBUG提供程序调试功能,允许用户在程序中设置和删除断点,以及在程序运行时单步执行程序,还可以检查变量的状态和表达式的结果TOOL提供设置巧VISUALLISP选项文本格式、环境变量的工具,例如窗口和工具栏的位置WINDOW提供管理窗口功能,允许用户组织在当前VISUALLISP进程中的窗口显示,以及激活AUTOCAD窗口菜单中执行EDIT命令,235控制台窗口控制台窗口是用户用命令进行操作的地方。用户可以在控制台窗口中输入并运行VISUALLISP和AUTOLISP命令,并能看到这些命令运行的
30、结果,这种方式和AUTOCAD中的命令窗口是一样的,但是VISUALLISP用的是自己的命令解释器来运行命令。因此在不同的环境中运行相同的任务时会有一些不同之处,有时候会产生很微妙的差别。例如,为了在VISUALLISP中显示一个AUTOLISP变量的当前值,只要简单地在控制台窗口中输入变量名即可。要想在AUTOCAD命令窗口中观察一个变量的值,在命令窗口中输入变量名之前必须先输入一个惊叹号()。控制台窗口也是VISUALLISP显示AUTOLISP的诊断信息和显示AUTOLISP函数运行结果的地方。例如,用PRINT和PRINC函数输入的结果就显示在控制台窗口中。用户可以通过滚动控制台窗口的
31、方式来观察先前的输入文本和输出结果。除了运行AUTOLISP命令和显示信息之外,VISUALLISP解释器还支持许多VISUALLISP独有的调试特征。在控制台窗口的任一地方单击鼠标右键,或者按SHIFTF10组合键,会显示一个如图所示的关联菜单。这个菜单包含了部分VISUALLISP命令。用户可以利用这个特征在控制台窗口的命令行上复制、粘贴和查找文本,以及初始化VISUALLISP的调试特征。沈阳理工大学学士学位论文14图25关联菜单236文本编辑器概述VISUALLISP的文本编辑器如图所示。它不只是一个书写工具,而且是VISUALLISP编程环境的核心元素。VISUALLISP文本编辑器
32、的主要功能如表22所示。功能名称内容介绍彩色代码显示VISUALLISP的文本编辑器可以区分出AUTOLISP程序的不同部分,为这些部分指定不同的、便于区分的颜色,这就使得用户可以很方便地查找程序元素(例如函数调用和变量名),并能帮助用户查找输入程序时的拼写错误文本格式化消VISUALLISP文本编辑器能够自动对AUTOLISP程序代码进行格式化,增强可读性。用户可以自由选择具体格式化代码的样式括号匹配AUTOLISP程序中包含着许多括号,VISUALLISP的文本编辑器可以帮助用户查找闭合的括号,并帮助检查是否丢失了符号执行AUTOLISP表达式可以帮助用户在离开文本编辑器的情况下,运行一个
33、表达式或者几行程序代码,以得到它们的运行结果在多文件中进行查找可以帮助用户在只运行一个命令的情况下,在多个文件中查找一个字一个表达式语法检查VISUALLISP的文本编辑器具有语法检查的功沈阳理工大学学士学位论文15237加载并运行AUTOLISP应用程序用户一旦在VISUALLISP的文本编辑器中打开了AUTOLISP程序文件,就可以加载并运行它。所谓加载就是把一个文件中的程序提供给VISUALLISP的程序解释器的过程。加载AUTOLISP应用程序的方法如下。(1)激活要加载的文本窗口。(2)在菜单栏中执行TOOLSLOADTEXTINEDITOR命令(或者在工具栏中单击相应的按钮)。VI
34、SUALLISP会在控制台窗口中通过显示信息来作出回应,表明程序加载是否成功。(3)如果加载成功,用户就可以在控制台命令行上运行这个程序。只需要在提示符上输入括号括起来的函数名,按ENTER键就可以了。(4)当对所有的提示都作出了反应后,控制又返回到了VISUALLISP,并且用户可以再次看到VISUALLISP窗口。当用户在控制台富日中输入了一个命令来运行从文本编辑器中加载的程序时,也许需要在VISUALLISP和AUTOCAD窗口反复进行切换。除了在菜单项中执行WINDOW命令进行应用程序之间的切换之外,VISUALLISP还提供了2种切换的方法。在VISUALLISP窗口中激活AUTOC
35、AD窗口,从菜单项中执行WINDOWACTIVEAUTOCAD命令,或者单击工具栏中的相应按钮。在AUTOCAD命令行提示符下,输入”VLIDE”命令,可以从AUTOCAD窗口返回到VISUALLISP环境。VISUALLISP还允许在文本编辑窗口中选中几行代码,然后只运行这选中的几行,不是整个程序。用ACAD2004DOCLSP程序作为一个例子,高亮选中其中的几行代码,在菜单栏中执行TOOLSLOADSELECTION命令,或者单击工具栏中相应的按钮,VISUALLISP就会通过命令解释器立即执行这几行代码。238加载AUTOLISP扩展函数VISUALLISP提供了一些AUTOLISP的扩
36、展函数,这些函数在启动AUTOCAD的时候并不会自动加载。这些函数所具有的前缀名及相关功能如表23所示。表23AUTOLISP扩展函数前缀名以及函数功能函数前缀名函数功能VIA一实现在AUTOLISP中对ACTIVEX的支持沈阳理工大学学士学位论文16VLAXACTIVEX使用函数,可以进行数据转换、词典操作和曲线测量VLR提供对AUTOCAD中反应器的支持在应用其中任何一个函数之前,需要加载AUTOLISP扩展。用户可以通过调用下面的函数来实现这个目的。这个函数首先检查AUTOLISP是否已经被加载了。如果已经被加载,此函数不作任何操作,否则就加载AUTOLISP扩展函数。当正在应用VISU
37、ALLISP的交互开发环境编制代码时,如果想要使用AUTOLISP扩展函数,最好在加载VISUALLISP之前先运行VL一LOAD一COM函数,或者在ACAD2004DOCLSP文件中调用这个函数,这样就可以自动加载了。但是,如果用户想要在程序中使用任何一个扩字函数,就需要在程序中加入一行代码来调用VL一LOAD一COM函数。239退出VISUALLISP环境如果用户想要结束VISUALLISP的使用,从菜单栏中执行FILEEXIT命令,或者单击窗口上的关闭按钮就可以了。如果已经在文本编辑窗口中做了修改,但是还没有保存VISUALLISP会询问是否要保存修改过的帮助,就像很多其他软件一样。如果
38、在退出VISUALLISP时仍然有VISUALLISP源程序窗口处于打开的状态,下一次启动VISUALLISP进程时这些程序就会自动打开。沈阳理工大学学士学位论文17第三章AUTOCAD的二次开发设计31用AUTOLISP生成零件图AUTOCAD参数化程序从用户取得参数或外部文件,然后在AUTOCAD图形中生成图象。这些参数可以是基于AUTOCAD,AUTOLISP或ADS。一个参数程序可以画一个公共零件的许多不同尺寸,不同形状的图。通过参数化,可以画出一系列复杂的物体,他们共享公共的参数关系。如果只改变比例,块是最好的解决方法。但如果这种变动需要大规模的相似块的库时,采用参数化可以提供柔性,
39、减少错误,并产生巨大的效益。本章从一个参数化绘图实例出发,说明什么是参数化,以及如何规划和设计一个参数化的系统。311参数化绘图实例六角头螺杆带孔螺栓GB31188LBKD图31编程示意图绘制一个六角头螺杆带孔螺栓,如图31所示,我们所需要的几个要素(1)螺栓的公称长度L(MM)(2)螺纹长度B(MM)沈阳理工大学学士学位论文18(3)螺纹直径D(MM)(4)六角螺栓头厚度K(MM)(5)螺杆孔直径D1(MM)用户与程序进行交互的方式有很多种。最方便的是通过对话框来与用户进行交互,这也是目前几乎所有的程序进行交互的基本方式了。接下来,我们根据需求来设计对话框以及主程序。(1)设计对话框。为了方
40、便和直观,我在对话框中用图块的方式显示一些参数的几何意义。设计的对话框如图32所示。图32对话框用户可以自己在对话框的下方输入坐标,也可以通过鼠标在屏幕上进行选取,如图32所示。选择视图,螺纹规格,公称长度,螺栓级别,按“确定”按钮,即可在屏幕上画出一个给定参数的六角头螺杆带孔螺栓。(2)编制AUTOLISP程序。对话框已经设计好了,AUTOLISP程序是提供对话框的调用,没有AUTOLISP程序,对话框就没有实际的意义,所以,AUTOLISP程序是实现参数化最重要的基础。对于沈阳理工大学学士学位论文19AUTOLISP软件的介绍和开发环境,前几章已经作了很详细的介绍,在这里,我主要介绍本实例
41、的AUTOLISP程序的详细编制运行过程。程序见副本。32调试并运行程序由于程序并不总是按照设计者的意愿执行,有时会出现执行错误,甚至会发生程序崩溃,而且很难找到程序的错误之处;因此,VISP提供了一些调试程序的工具,可以帮助用户迅速查找并改正程序中的错误。VISP的调试工具有很多,下面,我以图片的方式进行演示,方便直观,并且容易理解,如图33所示。图33调试工具栏调试程序举例如图34图34调试程序栏如果程序中没有语法错误,则显示如下图35沈阳理工大学学士学位论文20图35调试成功如果程序中有错误,则显示如图36图36程序出错如果调试成功,则在AUTOCAD界面加载菜单样板MNU,然后把相应的
42、AUTOLISP程序和对话框程序保存到菜单样板所显示的硬盘文件目录里,然后运行程序,也就是实现参数化的最终结果生成图象具体操作步骤如下1加载菜单样板。如图37图37加载菜单样板沈阳理工大学学士学位论文212在标准件中运行对话框。如图38图38查找标准件3生成图象。如图39图39钢结构用高强度大六角头螺栓(GB122884)33主要设计成果1六角头螺栓细杆B级(GB578486),主视图,旋转角度75螺栓规格M3,公称长度20,如图310沈阳理工大学学士学位论文22图310六角头螺栓细杆B级(GB578486)2六角头螺杆带孔螺栓(GB31188),主视图,旋转角度0螺栓规格M24,公称长度80
43、,如图311图311六角头螺杆带孔螺栓(GB31188)3沉头方颈螺栓(GB1088),主视图,旋转角度15螺栓规格M6,公称长度30,如图312沈阳理工大学学士学位论文23图312沉头方颈螺栓(GB1088)4T型槽用螺栓(GB3788),主视图,旋转角度0螺栓规格M5,公称长度25,如图313图313T型槽用螺栓(GB3788)5沉头双榫螺栓(GB80088),主视图,旋转角度15螺栓规格M6,公称长度35,如图314沈阳理工大学学士学位论文24图314沉头双榫螺栓(GB80088)6钢结构用扭剪型高强度螺栓(GB363283),主视图,旋转角度90螺栓规格M16,公称长度40,如图315
44、图315钢结构用扭剪型高强度螺栓(GB363283)7六角头头部带孔螺栓(GB32188),主视图,旋转角度0螺栓规格M6,公称长度30,如图316沈阳理工大学学士学位论文25图316六角头头部带孔螺栓(GB32188)8六角头铰制孔螺栓(GB2788),主视图,旋转角度30螺栓规格M6,公称长度25,如图317图317六角头铰制孔螺栓(GB2788)沈阳理工大学学士学位论文26结束语到此,本次毕业设计已经接近尾声,从刚开始课题的选择到确定,经过收集资料,查看各种相关课题到自己设计方案的初步确定,到正式进入设计阶段,修改,再修改,逐步完善这么一系列过程,我真正体会到了一个产品从构思到问世这个期
45、间的艰辛和愉悦。一个从无到有的全过程。也让我在大学的最后阶段深切感受到了师生之间的情谊,以及老师那种无私奉献的精神。在这次设计就要结束是我在这里深深感谢我的指导老师对我的指导和帮助,同时同组同学也对我给予了很多帮助,我对他们也表示由衷的感谢。沈阳理工大学学士学位论文27致谢在指导教师姜增辉的大力指导下,历时两个多月的时间,终于完成了这次重要的毕业设计。通过这次的毕业设计,使我更加深入的认识到毕业设计的重要性,它对我四年来所学知识的一个总结和鉴定,是检验我们将所学理论知识与生产实践相结合的极好机会,也是接受机械工程师初步基本训练的必要过程,为我们将来走向工作岗位打下了良好的基础。在这次毕业设计过
46、程中,我真正体会到了一名设计人员由一个题目到通过收集资料阶段,方案设计,结构设计阶段到最终完成产品的独立设计全过程所要具备的能力,我不仅学习了不少以前从来未涉及的知识,开阔了视野,更多的是从指导教师姜增辉老师身上学到了严谨的治学态度以及诲人不倦的优秀品质。姜老师在指导我毕业设计的过程中,给我提供了很多的帮助,使我能够在规定时间内更好的完成了毕业设计的任务,达到了要求。当然由于经验不足和设计时间紧迫,所以在设计中难免会存在着一些错误和不足,这些将会激励我更加努力的去学习提高。在此由衷感谢姜老师给予我的指导和帮助,感谢在这次毕业设计中给予我无私帮助的老师和同学。对于这次毕业设计中的错误和不足,恳请
47、各位老师和同学批评指正,在此谨表谢意。2005年6月29日沈阳理工大学学士学位论文28参考文献1徐灏等编,机械设计手册(第3册),机械工业出版社,19912蓝屹生主编,学习指导,中国铁道出版社,20023胡仁喜等编,AUTOLISP机械设计高级应用实例,机械工业出版社,20054赵景亮等编,用VISUALLISP开发AUTOCAD2004应用程序,科学出版社,2003沈阳理工大学学士学位论文29AUNIFIEDAPPROACHTOKINEMATICSYNTHESISOFMECHANISMBYADAPTIVECURVEFITTINGWANGDELUNIBRISTHEITHPOSITIONVECT
48、OROFTHEORIGINALREFERENCEPOINTBOFTHEMOVINGBODY,BOTHAREEXAMNEDINTHEFIXEDREFERENCEFRAME,MARISTHEPOSITIONVECTOROFTHEPOINTAINTHEREFERENCEFRAMEOFTHEMOVINGBODYIRISAROTATIONMATRIXFROMTHE沈阳理工大学学士学位论文31REFERENCEFRAMEOFTHEMOVINGBODYATITHPOSITIONTOTHEFIXEDREFERENCEFRAMETHEDISPLACEMENTOFALINEMLOFAMOVINGBODYCANBE
49、DESCRIBEDINTHESAMEWAY,IMLIARMILTR,MLSINCOS,SINSIN,TCOS2WHEREIMLISTHEPOSITIONVECTOROFLINEML,INCLUDINGTHEPOINTANDTHEDIRECTIONOFTHELINE,IARANDIRARETHESAMEASINEQL,TISTHEPARAMETEROFLINEML,ANDANDARETHEDIRECTIONANGLESOFTHE1INEMLINTHEMOVINGFRAMETHEREFORE,THETRAJECTORYOFANYPOINTORLINEEITHERINPLANARORINSPATIALMOTIONCANBEDESCRIBEDBYDISCRETEPOINTSUSINGEQSLAND2IFTHEPOINTORLINEISGIVENINTHEMOVINGBODYANDTHEMOTIONISNOTDEGENERATED2PLANARMECHANISMSYNTHESISBYADAPTIVECURVEFITTINGMETHODINTRADITIONALWAY,THEDISTANCEBETWEENTHETRACERPOINT